Cómo entrené el modelo para la detección y segmentación de focas

¡Hola habr! Hoy quiero compartir mi caso. La detección de sellos automatizaría muchas tareas rutinarias, facilitando el trabajo humano. Para mi tarea, utilizo el modelo Mask R-CNN .





Mask R-CNN es una estructura de dos etapas: en la primera etapa, se escanea una imagen y  se generan  oraciones (áreas que pueden contener un objeto). En el segundo paso, se clasifican las oraciones y se crean cuadros delimitadores y máscaras.





¿Qué es la segmentación?

La segmentación es la tarea de definir los contornos de un objeto a nivel de píxel. En comparación con tareas similares de visión por computadora, esta es una de las tareas de visión más difíciles. Tenga en cuenta las siguientes preguntas:





Clasificación: Hay un gato en esta imagen.





Detección de objetos:  en esta imagen, hay dos gatos, un perro y un pato en estos lugares. Empezamos a considerar la superposición de objetos.





Segmentación: Hay 4 ventanas emergentes en estas ubicaciones y estos son los píxeles que posee cada uno.





Preparar un conjunto de datos para el entrenamiento

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





Puede descargar las escalas previamente entrenadas para detección y segmentación aquí . Para usarlo, agregue el proyecto a la carpeta de muestras en Mask R-CNN. Si es necesario un conjunto de datos, escríbame por correo: galym55010@gmail.com








All Articles