Bagaimana saya melatih model untuk deteksi dan segmentasi segel

Halo habr! Hari ini saya ingin berbagi kasus saya. Mendeteksi segel akan mengotomatiskan banyak tugas rutin, membuat pekerjaan manusia lebih mudah. Untuk tugas saya, saya menggunakan model Mask R-CNN .





Mask R-CNN adalah struktur dua tahap: pada tahap pertama, gambar dipindai dan kalimat  (area yang mungkin berisi objek) dibuat  . Pada langkah kedua, kalimat diklasifikasikan dan kotak pembatas dan topeng dibuat.





Apa itu segmentasi?

Segmentasi adalah tugas untuk menentukan kontur suatu objek pada tingkat piksel. Dibandingkan dengan tugas serupa dari computer vision, ini adalah salah satu tugas penglihatan yang paling sulit. Harap perhatikan pertanyaan berikut:





Klasifikasi: Ada seekor kucing di gambar ini.





Deteksi Objek:  Pada gambar ini, ada dua kucing, satu anjing dan seekor bebek di lokasi ini. Kami mulai mempertimbangkan objek yang tumpang tindih.





Segmentasi: Ada 4 sembulan di lokasi ini dan ini adalah piksel yang dimiliki masing-masing.





Mempersiapkan set data untuk pelatihan

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





Anda dapat mengunduh timbangan terlatih untuk deteksi dan segmentasi di sini . Untuk menggunakan, tambahkan proyek ke folder sampel di Mask R-CNN. Jika ada kebutuhan untuk kumpulan data, kirim ke saya melalui surat: galym55010@gmail.com








All Articles