Como treinei o modelo para detecção e segmentação de selos

Hello habr! Hoje quero compartilhar meu caso. A detecção de focas automatizaria muitas tarefas de rotina, tornando o trabalho humano mais fácil. Para minha tarefa, uso o modelo Mask R-CNN .





A máscara R-CNN é uma estrutura de dois estágios: no primeiro estágio, uma imagem é digitalizada e frases  (áreas que podem conter um objeto) são geradas  . Na segunda etapa, as sentenças são classificadas e caixas delimitadoras e máscaras são criadas.





O que é segmentação?

A segmentação é a tarefa de definir os contornos de um objeto no nível do pixel. Em comparação com tarefas semelhantes de visão computacional, esta é uma das tarefas de visão mais difíceis. Observe as seguintes perguntas:





Classificação: Há um gato nesta imagem.





Detecção de objetos:  nesta imagem, há dois gatos, um cachorro e um pato nesses locais. Estamos começando a considerar a sobreposição de objetos.





Segmentação: Existem 4 pop-ups nesses locais e esses são os pixels que cada um possui.





Preparando um conjunto de dados para treinamento

, ( ), . . 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  , .  , .





Você pode baixar as escalas pré-treinadas para detecção e segmentação aqui . Para usar, adicione o projeto à pasta samples no Mask R-CNN. Se houver necessidade de um conjunto de dados, escreva para mim no e-mail: galym55010@gmail.com








All Articles