Deteksi Objek Kenali dan aturankan. Bagian 1



Teknologi visi komputer memungkinkan dalam kenyataan hari ini untuk membuat hidup dan bisnis lebih mudah, lebih murah, lebih aman. Menurut untuk berbagai ahli, pasar ini akan bergerak di tahun-tahun mendatang hanya dalam arah pertumbuhan, yang memungkinkan pengembangan teknologi tepat ke arah produktivitas dan kualitas. Salah satu bagian yang paling populer adalah Deteksi Objek (deteksi objek) - definisi objek dalam gambar atau dalam aliran video.

Saat-saat ketika deteksi objek diselesaikan secara eksklusif dengan pembelajaran mesin klasik (kaskade, SVM ...) telah berlalu - sekarang pendekatan yang didasarkan pada pemerintahan Deep Learning di bidang ini. Pada tahun 2014, sebuah pendekatan diusulkan yang secara signifikan mempengaruhi penelitian dan pengembangan selanjutnya di bidang ini - model R-CNN. Perbaikan selanjutnya (dalam bentuk Fast R-CNN dan Faster R-CNN) menjadikannya salah satu yang paling akurat, yang telah menjadi alasan penggunaannya hingga hari ini.

Selain R-CNN, ada banyak lagi pendekatan yang mencari objek: keluarga Yolo, SSD, RetinaNet, CenterNet ... Beberapa dari mereka menawarkan pendekatan alternatif, sementara yang lain mengembangkan pendekatan saat ini dengan tujuan meningkatkan indikator kinerja. Sebuah diskusi tentang masing-masing dari mereka dapat dimasukkan ke dalam artikel yang terpisah, karena banyaknya chip dan trik :)

Untuk belajar, saya mengusulkan satu set artikel dengan analisis model Deteksi Objek dua tahap. Kemampuan untuk memahami perangkat mereka membawa pemahaman tentang ide-ide dasar yang digunakan dalam implementasi lain. Dalam posting ini kami akan mempertimbangkan yang paling mendasar dan, karenanya, yang pertama - R-CNN.

Terminologi


Kotak pembatas - koordinat yang mengikat area tertentu dari suatu gambar - paling sering berbentuk persegi panjang. Itu dapat diwakili oleh 4 koordinat dalam dua format: centered (cx,cy,w,h) dan reguler (xmin,ymin,xmax,ymax)

Hipotesis (Proposal), P - wilayah tertentu dari gambar (ditentukan menggunakan kotak pembatas) di mana objek seharusnya berada.

Pelatihan ujung ke ujung - pelatihan di mana gambar mentah tiba di input jaringan, dan jawaban siap pakai keluar.

IoU (Intersection-over-Union) - metrik tingkat persimpangan antara dua kotak pembatas.

R-CNN


Salah satu pendekatan pertama yang berlaku untuk menentukan lokasi suatu objek dalam gambar adalah R-CNN (Wilayah Konvolusi Neural Network). Arsitekturnya terdiri dari beberapa langkah berturut-turut dan diilustrasikan dalam Gambar 1:

  1. Mendefinisikan seperangkat hipotesis.
  2. Mengekstraksi fitur dari calon daerah menggunakan jaringan saraf convolutional dan mengkodekannya ke dalam vektor.
  3. Klasifikasi objek dalam hipotesis berdasarkan vektor dari langkah 2.
  4. Peningkatan (penyesuaian) dari koordinat hipotesis.
  5. Semuanya berulang dari langkah 2 hingga semua hipotesis dari langkah 1 diproses.

Pertimbangkan setiap langkah lebih terinci.



Pencarian Hipotesis


Memiliki gambar tertentu pada input, hal pertama itu dipecah menjadi hipotesis kecil dengan ukuran berbeda. Para penulis artikel ini menggunakan Pencarian Selektif - tingkat atas, memungkinkan Anda untuk menyusun seperangkat hipotesis (kelas objek belum menjadi masalah), berdasarkan segmentasi untuk menentukan batas objek berdasarkan intensitas piksel, perbedaan warna, kontras, dan tekstur. Pada saat yang sama, penulis mencatat bahwa algoritma yang serupa dapat digunakan. Dengan demikian, sekitar 2.000 daerah berbeda menonjol, yang sebagian tumpang tindih satu sama lain. Untuk pemrosesan selanjutnya yang lebih akurat, setiap hipotesis diperluas lebih lanjut dengan 16 piksel di semua 4 arah - seolah-olah menambahkan konteks .

Total:

  • Input: gambar asli.
  • Keluaran: seperangkat hipotesis dengan berbagai ukuran dan rasio aspek.

Pengkodean gambar


Setiap hipotesis dari langkah sebelumnya secara independen dan terpisah dari satu sama lain memasukkan input dari jaringan saraf convolutional. Karena menggunakan arsitektur AlexNet tanpa softmax-layer terakhir. Tugas utama jaringan adalah untuk menyandikan gambar yang masuk ke representasi vektor yang diekstraksi dari lapisan FC7 yang terhubung penuh terakhir . Jadi outputnya adalah representasi vektor 4096-dimensi.

Anda dapat melihat bahwa input AlexNet memiliki dimensi 3 Γ— 227 Γ— 227, dan ukuran hipotesis dapat hampir semua aspek rasio dan ukuran. Masalah ini dilewati dengan hanya menekan atau meregangkan input ke ukuran yang diinginkan.

Total:

  • Input: setiap hipotesis yang diajukan pada langkah sebelumnya.
  • Output: representasi vektor untuk setiap hipotesis.

Klasifikasi


Setelah memperoleh vektor yang mengkarakterisasi hipotesis, pemrosesan lebih lanjut menjadi mungkin. Untuk menentukan objek yang terletak di wilayah yang dituju, penulis menggunakan metode klasifikasi bidang pemisahan klasik berbasis SVM (Support Vector Machine - mesin vektor dukungan, dapat dimodelkan menggunakan Hinge loss ). Dan itu seharusnyaNc+1 individu (di sini, Ncmenunjukkan jumlah kelas objek yang didefinisikan, dan sebuah unit ditambahkan untuk secara terpisah menentukan latar belakang) model yang dilatih sesuai dengan prinsip OvR (Satu vs Istirahat - satu terhadap semua, salah satu metode klasifikasi multikelas). Bahkan, masalah klasifikasi biner sedang diselesaikan - apakah ada kelas konkret dari suatu objek di dalam wilayah yang diusulkan atau tidak. Jadi jalan keluarnyaNc+1-dimensi vektor yang mewakili kepercayaan pada kelas tertentu dari objek yang terkandung dalam hipotesis (latar belakang secara historis dilambangkan dengan kelas nol,Ci=0)

Total:

  • Input: vektor dari masing-masing hipotesis yang diajukan dari lapisan kedua dari jaringan (dalam kasus AlexNet, ini adalah FC7).
  • Keluaran: setelah secara berurutan meluncurkan setiap hipotesis, kami memperoleh matriks dimensi 2000Γ—Ncmewakili kelas objek untuk setiap hipotesis.

Spesifikasi koordinat hipotesis


Hipotesis yang diperoleh pada langkah 1 tidak selalu mengandung koordinat yang benar (misalnya, suatu objek dapat "dipotong" tidak berhasil), sehingga masuk akal untuk memperbaikinya juga. Menurut penulis, ini membawa tambahan 3-4% ke metrik. Jadi, hipotesis yang mengandung objek (keberadaan objek ditentukan pada langkah klasifikasi) juga diproses dengan regresi linier. Artinya, hipotesis dengan kelas "latar belakang" tidak memerlukan pemrosesan tambahan daerah, karena pada kenyataannya tidak ada objek di sana ...

Setiap objek, khusus untuk kelasnya, memiliki ukuran dan rasio aspek tertentu, oleh karena itu, yang logis, disarankan untuk menggunakan regressor kita sendiri untuk setiap kelas .

Tidak seperti langkah sebelumnya, penulis menggunakan non-vektor dari lapisan FC7 agar input berfungsi dengan baik, dan fitur peta diekstraksi dari lapisan MaxPooling terakhir (di AlexNet, MaxPool5, dimensi 256 Γ— 6 Γ— 6). Penjelasannya adalah sebagai berikut - vektor menyimpan informasi tentang keberadaan objek dengan beberapa detail karakteristik, dan peta fitur terbaik menyimpan informasi tentang lokasi objek.

Total:

  • Input: peta atribut dari lapisan MaxPooling terakhir untuk setiap hipotesis yang berisi objek apa pun kecuali latar belakang.
  • Keluaran: koreksi terhadap koordinat kotak pembatas hipotesis.

Trik Helper


Sebelum melanjutkan ke detail pelatihan model, kami akan mempertimbangkan dua trik yang diperlukan yang akan kami butuhkan nanti.

Penunjukan hipotesis positif dan negatif


Saat mengajar dengan seorang guru, keseimbangan tertentu di antara kelas selalu diperlukan. Kebalikannya dapat menyebabkan akurasi klasifikasi yang buruk. Misalnya, jika dalam sampel dengan dua kelas yang pertama hanya terjadi dalam beberapa persen kasus, maka sulit bagi jaringan untuk belajar bagaimana menentukannya - setelah semua, ini dapat diartikan sebagai pencilan. Dalam kasus tugas Deteksi Objek, hanya ada masalah seperti itu - dalam gambar dengan objek tunggal, hanya beberapa hipotesis (dari ~ 2000) yang mengandung objek ini (Ci>0), dan semua orang adalah latar belakang (Ci=0)

Kami menerima notasi yang diperlukan: hipotesis yang berisi objek akan disebut positif (positif), dan tanpa objek (hanya berisi latar belakang, atau bagian objek yang tidak signifikan) - negatif (negatif).

Untuk kemudian menentukan persimpangan antara dua wilayah gambar, metrik titik - temu atas Union akan digunakan . Ini dianggap cukup sederhana: area persimpangan dua wilayah dibagi dengan total area wilayah. Pada gambar di bawah ini Anda dapat melihat ilustrasi contoh penghitungan metrik.



Dengan hipotesis positif, semuanya jelas - jika kelas didefinisikan secara tidak benar, Anda harus didenda. Tapi bagaimana dengan yang negatif? Ada banyak lebih dari yang positif ... Pertama-tama, kami mencatat bahwa tidak semua hipotesis negatif sama sulitnya untuk dikenali. Misalnya, case yang hanya berisi latar belakang ( easy negative ) jauh lebih mudah untuk diklasifikasikan daripada berisi objek lain atau sebagian kecil dari yang diinginkan ( hard negative ).

Dalam praktiknya, negatif mudah dan negatif sulit ditentukan oleh persimpangan kotak pembatas (hanya menggunakan Persimpangan atas Serikat) dengan posisi yang benar dari objek dalam gambar. Misalnya, jika tidak ada persimpangan, atau sangat kecil, ini mudah negatif (Ci=0) jika besar sulit negatif atau positif.

Pendekatan Hard Negative Mining menyarankan hanya menggunakan hard negative untuk pelatihan, karena, setelah belajar mengenalinya, kami secara otomatis mencapai pekerjaan terbaik dengan hipotesis negatif yang mudah. Tetapi ideologi semacam itu hanya akan diterapkan dalam implementasi selanjutnya (dimulai dengan Fast R-CNN).

Penindasan tidak maksimal


Cukup sering, ternyata model mengidentifikasi beberapa hipotesis dengan keyakinan besar menunjuk ke objek yang sama. Menggunakan Non-maksimum suppression (NMS), Anda dapat menangani kasus seperti itu dan hanya menyisakan satu, kotak pembatas terbaik. Tetapi pada saat yang sama, jangan lupa tentang kasus ketika gambar dapat memiliki dua objek berbeda dari kelas yang sama. Gambar 3 mengilustrasikan efek operasi sebelum (kiri) dan sesudah (kanan) operasi algoritma.



Pertimbangkan algoritme untuk bekerja pada satu kelas (pada kenyataannya, ini diterapkan untuk setiap kelas secara terpisah):

  1. Pada input, fungsi mengambil seperangkat hipotesis untuk satu kelas dan ambang batas yang menetapkan persimpangan maksimum antara hipotesis.
  2. Hipotesa diurutkan berdasarkan "kepercayaan diri" mereka.
  3. Dalam siklus, hipotesis pertama dipilih (memiliki nilai kepercayaan tertinggi) dan ditambahkan ke set hasil.
  4. Dalam siklus, berikutnya, hipotesis kedua dipilih (di antara mereka yang tersisa setelah langkah 3).
  5. Jika persimpangan antara hipotesis yang dipilih lebih besar dari ambang yang dipilih (persimpangan dihitung berdasarkan titik-temu Union), maka hipotesis kedua dibuang dan tidak lagi hadir dalam set hasil.
  6. Semuanya berulang dari langkah 3 sampai hipotesis benar-benar disebutkan.

Kodesemu terlihat seperti ini:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


Latihan


Blok isolasi hipotesis tidak dapat dipelajari.

Karena jaringan dibagi menjadi beberapa blok yang terpisah satu sama lain, itu tidak dapat dilatih secara end-to-end. Jadi, belajar adalah proses yang berurutan.

Pelatihan Tampilan Vektor


Jaringan pra-dilatih di ImageNet diambil sebagai dasar - jaringan tersebut sudah dapat mengekstraksi fitur-fitur penting dari gambar yang masuk - tetap melatih mereka untuk bekerja dengan kelas yang diperlukan. Untuk melakukan ini, ubah dimensi layer output menjadiNcdan latih versi yang sudah dimodifikasi. Lapisan pertama dapat diblokir, karena mereka mengekstrak fitur utama (hampir identik untuk semua gambar), dan yang berikutnya selama pelatihan beradaptasi dengan fitur dari kelas yang diinginkan. Jadi konvergensi akan dicapai lebih cepat. Tetapi jika pelatihan masih berjalan buruk, Anda dapat membuka kunci lapisan utama. Karena itu perlu untuk secara tepat menyesuaikan bobot yang ada. Tidak disarankan untuk menggunakan tingkat pembelajaran yang tinggi (learning rate) - Anda dapat dengan cepat menghapus bobot yang ada.

Ketika jaringan telah belajar untuk mengklasifikasikan objek dengan baik, lapisan terakhir dengan aktivasi SoftMax dibuang dan lapisan FC7 menjadi output, output yang pada gilirannya dapat diartikan sebagai representasi vektor dari hipotesis.

Positif pada langkah ini adalah hipotesis yang bersinggungan dengan posisi objek yang benar (IoU) lebih dari 0,5. Semua yang lain dianggap negatif. Untuk memperbarui skala, 128 mini-batch digunakan, terdiri dari 32 hipotesis positif dan 96 negatif.

Pelatihan Klasifikasi


Biarkan saya mengingatkan Anda, untuk klasifikasi masing-masing hipotesis digunakan Nc+1Model SVM yang menerima input representasi vektor dari hipotesis, dan berdasarkan prinsip satu terhadap yang lain (One-vs-Rest) menentukan kelas objek. Mereka dilatih sebagai model SVM biasa dengan satu pengecualian - pada langkah ini definisi positif dan negatif sedikit berbeda. Di sini hipotesis diambil sebagai negatif, persimpangan yang dengan posisi yang benar kurang dari 0,3.

Pelatihan Regres


Menunjukkan:

  • G=(gx,gy,gw,gh)- koordinat objek yang benar;
  • G^=(gx^,gy^,gw^,gh^)- posisi yang dikoreksi dari koordinat hipotesis (harus bertepatan dengan G);
  • T=(tx,ty,tw,ty)- koreksi yang benar untuk koordinat;
  • P=(px,py,pw,ph)- koordinat hipotesis;

Jadi regressor (satu untuk setiap kelas) mewakili empat fungsi:

  • dx(P), dy(P)- menentukan koreksi ke koordinat pusat (x,y) Untuk mencapai efek independensi dari ukuran aslinya, koreksi harus dinormalisasi.
  • dw(P)dan dh(P)- menentukan koreksi terhadap lebar dan tinggi dalam ruang logaritmik (ruang logaritmik digunakan untuk stabilitas numerik, dan pembagian - untuk menentukan arah koreksi).

Ditunjukkan oleh Ο†5(P)peta fitur diperoleh dari MaxPool5lapisan jaringan (saya ingat, ia memiliki dimensi 256 Γ— 6 Γ— 6, kemudian hanya membentang), ketika menerapkan ke jaringan hipotesis dibatasi oleh koordinat P. Kami akan mencari transformasiP di Gseperti:

\ begin {align} Selain itu
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

dβˆ—(P)=wβˆ—TΟ†5(P)(sini βˆ—βˆˆ(x,y,w,h)) adalah fungsi linear, dan vektor wβˆ—dicari menggunakan masalah optimisasi (regresi ridge):

wβˆ—=argmaxwβˆ—^βˆ‘iN(Tiβˆ—βˆ’dβˆ—(P))2+Ξ»β€–wx^β€–2


Untuk menentukan koreksi pada koordinat, kami mengumpulkan pasangan antara posisi yang benar dari hipotesis Gdan kondisi mereka saat ini P, dan tentukan nilainya Tβˆ—seperti:

\ begin {align} Notasi dalam rumus di dalam artikel ini mungkin berbeda dari notasi artikel asli untuk pemahaman terbaik. Karena ada ~ 2000 hipotesis pada output jaringan, mereka digabungkan menggunakan penindasan Non-maksimum. Para penulis artikel juga menunjukkan bahwa jika bukan SVM Anda menggunakan lapisan SoftMax (yang dilipat pada langkah kedua), akurasinya turun hingga ~ 4-4,5% (dataset VOC 2007), tetapi mereka mencatat bahwa β€œkecocokan” skala terbaik mungkin akan membantu untuk menghilangkannya. dari masalah seperti itu.
Tx=gxβˆ’pxpwTy=gyβˆ’pyphTw=log⁑gwpwTh=log⁑ghph





Sebagai kesimpulan, kami menyoroti kelemahan utama dari pendekatan ini:


  1. Hipotesis yang diajukan pada langkah 1 sebagian dapat menduplikasi satu sama lain - hipotesis yang berbeda dapat terdiri dari bagian yang identik, dan masing-masing hipotesis tersebut secara terpisah diproses oleh jaringan saraf. Ternyata sebagian besar jaringan meluncurkan lebih atau kurang duplikat satu sama lain secara tidak perlu.
  2. Ini tidak dapat digunakan untuk operasi waktu-nyata, karena ~ 53 detik dihabiskan untuk melewati 1 gambar (bingkai) (NVIDIA Titan Black GPU).
  3. Algoritma ekstraksi hipotesis tidak diajarkan dengan cara apa pun, dan oleh karena itu peningkatan lebih lanjut dalam kualitas hampir tidak mungkin (tidak ada yang telah membatalkan hipotesis buruk).

Ini mem-parsing model R-CNN pertama. Implementasi yang lebih maju (dalam bentuk Fast R-CNN dan Faster R-CNN) dibahas dalam artikel terpisah .

Bibliografi


1. R. Girshick, J. Donahue, T. Darrell, dan J. Malik. "Hirarki fitur yang kaya untuk deteksi objek akurat dan segmentasi semantik." Dalam CVPR, 2014. arXiv: 1311.2524

2. R. Girshick, J. Donahue, T. Darrell, dan J. Malik. "Jaringan konvolusional berbasis wilayah untuk deteksi dan segmentasi objek yang akurat." TPAMI, 2015

Diposting oleh: Sergey Mikhaylin, Spesialis Pembelajaran Mesin, Jet Infosystems

All Articles