Comment j'ai formé le modèle pour la détection et la segmentation des sceaux

Bonjour habr! Aujourd'hui, je veux partager mon cas. La détection des sceaux automatiserait de nombreuses tâches de routine, facilitant ainsi le travail humain. Pour ma tâche, j'utilise le modèle Mask R-CNN .





Le masque R-CNN est une structure en deux Ă©tapes: dans un premier temps, une image est scannĂ©e et des phrases  (zones pouvant contenir un objet) sont gĂ©nĂ©rĂ©es  . Dans la deuxième Ă©tape, les phrases sont classĂ©es et des cadres de dĂ©limitation et des masques sont crĂ©Ă©s.





Qu'est-ce que la segmentation?

La segmentation est la tâche de définir les contours d'un objet au niveau du pixel. Par rapport à des tâches similaires de vision par ordinateur, c'est l'une des tâches de vision les plus difficiles.Veuillez noter les questions suivantes:





Classification: Il y a un chat sur cette image.





DĂ©tection d'objets:  Dans cette image, il y a deux chats, un chien et un canard Ă  ces endroits. Nous commençons Ă  envisager des objets qui se chevauchent.





Segmentation: Il y a 4 popups à ces emplacements et ce sont les pixels que chacun possède.





Préparation d'un ensemble de données pour la formation

, ( ), . . 2 .  .  - .





, , 2 ? , . . , , COCO ( Mask R-CNN ).  COCO   , (~ 120 ), , , .





 VIA (VGG Image Annotator). HTML-, .  , , 20 .





.  PNG, - .  , , .





VIA JSON, .  , , JSON.  , , .





: -  coco.py  .  .  seal.py





SealDataset



:





class SealDataset(utils.Dataset):
    def load_balloons(self, dataset_dir, subset):
        ...
    def load_mask(self, image_id):
        ...
    def image_reference(self, image_id):
        ...
      
      



load_balloons



JSON,  add_class



 add_image



.





load_mask



  .





image_reference



, .  .





, .   load_image



 Dataset



.  .





, ,   Jupyter .  , , , , .  , :





: ,   inspect_data.ipynb , COCO, , Seal.





, COCO, 3 .   Dataset



,  Config



:





class BalloonConfig(Config):
    # Give the configuration a recognizable name
    NAME = "seal"
    # Number of classes (including background)
    NUM_CLASSES = 1 + 1  # Background + seal
    # Number of training steps per epoch
    STEPS_PER_EPOCH = 100
      
      



1024x1024 .  .  , .





R-CNN - . . Quadro M2000 c 4 . 3-4 .





,  seal



.  , COCO.  :





python seal.py train --dataset=/// --model=coco
      
      



, :





python seal.py train --dataset=/// --model=last
      
      



   inspect_seal_model  , .  , .





Vous pouvez télécharger les échelles pour la détection et pré - entraîné la segmentation ici . Pour l'utiliser, ajoutez le projet au dossier des échantillons dans Mask R-CNN. S'il y a un besoin d'un jeu de données, écrivez-moi par mail: galym55010@gmail.com








All Articles