
Halo, nama saya Roman Lapin, saya mahasiswa tahun kedua fakultas Sekolah Tinggi Umum dan Fisika Terapan UNN. Tahun ini saya berhasil melewati seleksi dan berpartisipasi dalam karya Intel Summer School di Nizhny Novgorod. Tugas saya adalah menentukan warna mobil menggunakan perpustakaan Tensorflow, tempat saya bekerja dengan mentor dan insinyur tim ICV Alexei Sidnev.
Dan inilah yang saya dapat.
Ada beberapa aspek untuk tugas ini:
- Mobil dapat dicat dalam beberapa warna, seperti pada KDPV. Dan di salah satu set data, misalnya, kami memiliki mobil yang disamarkan.
- Tergantung pada pencahayaan dan kamera yang mengambil gambar dari apa yang terjadi di jalan, mobil dengan warna yang sama akan terlihat sangat berbeda. Mobil yang "menyala" mungkin memiliki bagian yang sangat kecil yang sesuai dengan warna mobil yang βsebenarnyaβ.
Deteksi warna mobil
Warna mobil adalah zat yang agak aneh. Pabrikan memiliki pemahaman yang jelas tentang warna mobil apa yang mereka hasilkan, misalnya: hantu, es, mutiara hitam, pluto, kapur, kripton, angkor, akik, platinum, biru. Polisi lalu lintas memiliki pendapat tentang warna mobil yang agak konservatif dan sangat terbatas. Setiap orang memiliki persepsi subjektif tentang warna (Anda dapat mengingat cerita populer tentang warna gaun). Karena itu, kami memutuskan untuk menaikkan sebagai berikut.
Pada setiap gambar, koordinat titik persegi panjang yang membatasi di sekitar mobil ditandai (selanjutnya saya akan menggunakan versi bahasa Inggris -
kotak pembatas mobil ) dan di dalamnya adalah area yang paling menggambarkan warna kendaraan (
kotak warna ). Jumlah yang terakhir sama dengan warna mobil (
n x
kotak warna - n-warna mobil).
Selanjutnya, nomor mobil dikaburkan untuk kemungkinan penerbitan foto dalam domain publik.
Menandai dataset mobilDi masa depan, kami bekerja dengan dua ruang warna - RGB dan LAB - masing-masing dengan kelas 8 dan 810/81. Untuk membandingkan hasil dari pendekatan yang berbeda, kami menggunakan 8 kelas dalam RGB untuk menentukan warna, yang diperoleh dengan membagi kubus BGR menjadi 8 kubus kecil yang sama. Mereka dapat dengan mudah disebut nama-nama umum: putih, hitam, merah, hijau, biru, pink, kuning, cyan. Untuk mengevaluasi kesalahan metode apa pun, kami telah menggunakan ruang warna LAB, di mana
jarak antara warna ditentukan.
Ada dua cara intuitif untuk menentukan warna dengan
kotak warna :
warna sedang atau median. Namun dalam
kotak warna terdapat piksel berbagai warna, jadi saya ingin tahu seberapa akurat kedua pendekatan ini bekerja.
Untuk 8 warna RGB untuk setiap
kotak warna setiap mesin dalam dataset, kami menentukan warna piksel rata-rata dan median, hasilnya ditunjukkan pada gambar di bawah ini. Warna "benar" ditandai dalam garis - yaitu, warna yang didefinisikan masing-masing sebagai rata-rata atau sebagai median, dalam kolom - warna yang ditemukan pada prinsipnya. Saat menambahkan satu mesin ke tabel, jumlah piksel dari setiap warna dinormalisasi ke nomor mereka, yaitu, jumlah semua nilai yang ditambahkan ke baris sama dengan satu.
Investigasi akurasi menentukan warna mesin sebagai warna rata-rata dari warna piksel. Akurasi rata-rata: 75%Investigasi akurasi menentukan warna mesin sebagai warna median piksel dalam kotak warna. Akurasi rata-rata: 76%Seperti yang Anda lihat, tidak ada perbedaan khusus antara metode, yang menunjukkan markup yang baik. Di masa depan, kami menggunakan median, karena menunjukkan hasil terbaik.
Warna mobil akan ditentukan berdasarkan area di dalam
kotak pembatas mobil .
Apakah Anda memerlukan jaringan?
Pertanyaannya tidak terhindarkan: apakah jaringan saraf benar-benar diperlukan untuk menyelesaikan tugas yang sederhana dan intuitif? Mungkin Anda dapat mengambil warna tengah atau tengah piksel dalam
kotak pembatas mobil dengan cara yang sama? Gambar-gambar di bawah ini menunjukkan hasil dari pendekatan ini. Seperti yang akan ditampilkan nanti, ini lebih buruk daripada metode menggunakan jaringan saraf.
Distribusi pembagian mobil dengan nilai kesalahan L2 di ruang LAB antara warna kotak warna yang didefinisikan sebagai rata-rata dan warna kotak mobil yang terikat dari nilai kesalahan iniDistribusi pembagian mobil dengan nilai kesalahan L2 di ruang LAB antara kotak warna warna yang didefinisikan sebagai median dan warna kotak pembatas mobil dari nilai kesalahan iniDeskripsi pendekatan terhadap tugas
Dalam pekerjaan kami, kami menggunakan arsitektur Resnet-10 untuk menyorot fitur. Untuk mengatasi satu masalah label dan multilabel
, masing-masing fungsi aktivasi
softmax dan
sigmoid dipilih.
Masalah penting adalah pilihan metrik yang dengannya kami dapat membandingkan hasil kami. Dalam hal satu tugas label, Anda dapat memilih kelas yang sesuai dengan
respons maksimum . Namun, solusi semacam itu jelas tidak akan berfungsi dalam kasus mesin multilabel / multi-warna, karena argmax menghasilkan satu, kemungkinan besar warna. Metrik
L1 tergantung pada jumlah kelas, oleh karena itu, juga tidak dapat digunakan untuk membandingkan semua hasil. Oleh karena itu, diputuskan untuk memikirkan metrik area di bawah
kurva ROC (ROC AUC - area di bawah kurva) sebagai yang universal dan diakui secara universal.
Kami bekerja di dua ruang warna. Yang pertama adalah
RGB standar, di mana kami memilih 8 kelas: kami membagi kubus RGB menjadi 8 subkelompok yang identik: putih, hitam, merah, hijau, biru, pink, kuning, cyan. Partisi seperti itu sangat kasar, tetapi sederhana.
Membagi ruang warna RGB menjadi 8 areaSelain itu, kami melakukan penelitian dengan ruang warna LAB, yang menggunakan partisi menjadi 810 kelas. Kenapa begitu banyak? LAB diperkenalkan setelah ilmuwan Amerika
David MacAdam menetapkan bahwa ada area warna yang tidak terlihat oleh mata manusia (
MacAdam elips ). LAB dibangun sehingga di dalamnya elips ini memiliki penampilan lingkaran (pada bagian L - brightness konstan).
Elips MacAdam dan ruang warna LAB ( sumber )Secara total, ada 81 lingkaran di bagian lingkaran tersebut. Kami mengambil langkah 10 sehubungan dengan parameter L (dari 0 hingga 100), mendapatkan 810 kelas. Selain itu, kami melakukan percobaan dengan L yang konstan dan, dengan demikian, kelas 81.
RGB dan LAB
Hasil berikut diperoleh untuk masalah 8-kelas dan ruang RGB:
Fungsi aktivasi | Tugas multilabel | ROC AUC |
---|
softmax | - | 0,97 |
sigmoid | β | 0,88 |
Tabel hasil pengenalan warna untuk mesin dalam masalah 8-kelasTampaknya hasil untuk tugas multilabel sudah cukup baik. Untuk memverifikasi asumsi ini, kami membuat matriks kesalahan, mengambil 0,55 sebagai nilai ambang batas untuk probabilitas. Yaitu jika nilai ini terlampaui dalam probabilitas untuk warna yang sesuai, kami menganggap bahwa mesin dicat dalam warna ini. Terlepas dari kenyataan bahwa ambang yang dipilih cukup rendah, dapat dilihat kesalahan khas dalam menentukan warna mobil dan menarik kesimpulan.
Tabel hasil pengenalan warna untuk mobil di masalah kelas 8Lihat saja garis yang sesuai dengan warna hijau atau pink untuk memastikan bahwa modelnya jauh dari sempurna. Kami akan kembali ke pertanyaan mengapa dengan nilai metrik besar sehingga hasil yang aneh tidak berhasil, kami akan segera kembali dan segera menunjukkan: ketika mempertimbangkan hanya 8 kelas, sejumlah besar warna jatuh ke dalam kelas "putih" dan "hitam", oleh karena itu hasil seperti itu .
Oleh karena itu, kami akan beralih ke ruang warna LAB dan melakukan penelitian di sana.
Fungsi aktivasi | Tugas multilabel | ROC AUC |
---|
softmax | - | 0,915 |
sigmoid | β | 0,846 |
Tabel hasil pengenalan warna mesin dalam masalah 810-classHasilnya kurang, yang logis, karena jumlah kelas telah meningkat dua kali lipat. Mengambil hasil sigmoid sebagai titik awal, kami mencoba memperbaiki model kami.
LAB: percobaan dengan bobot berbeda
Sebelum ini, semua percobaan dilakukan dengan satuan bobot dalam fungsi
kehilangan (
kerugian ):
Di sini GT adalah kebenaran dasar, W adalah bobot.
Anda dapat memasukkan
jarak dalam ruang warna LAB. Katakanlah kita memiliki satu unit di GT. Kemudian itu sesuai dengan beberapa paralelip persegi panjang di ruang warna LAB. Paralipepiped ini (lebih tepatnya, pusatnya) dihilangkan pada jarak yang berbeda dari semua paralelepiped lainnya (sekali lagi, pusatnya). Bergantung pada jarak ini, Anda dapat bereksperimen dengan skala berikut:
a) Nol di tempat unit di GT, dan ketika pindah dari itu - peningkatan bobot;
b) Sebaliknya, sebagai pengganti unit di GT, itu adalah satu, ketika dihapus, itu adalah penurunan bobot;
c) Opsi a) ditambah aditif Gaussian kecil dengan amplitudo Β½ menggantikan unit dalam GT;
d) Opsi a) ditambah aditif Gaussian kecil dengan amplitudo 1 sebagai pengganti unit di GT;
e) Opsi b) dengan aditif kecil pada jarak maksimum dari kesatuan dalam GT.
Versi terakhir dari skala yang kami gunakan dalam eksperimen adalah, seperti kami menyebutnya, triple Gauss, yaitu tiga distribusi normal dengan pusat menggantikan unit di GT, serta pada jarak terjauh dari mereka.
Tiga distribusi normal berpusat pada unit-unit di GT dan pada jarak paling jauh dari merekaItu harus dijelaskan lebih terinci. Anda dapat memilih dua parallelepipeds paling jauh, dan, karenanya, kelas, dan membandingkannya dalam jarak jauh dari aslinya. Untuk kelas yang sesuai dengan yang jauh, amplitudo distribusi diatur sama dengan 0,8, dan untuk yang kedua adalah m kali lebih kecil, di mana m adalah rasio jarak dari sumber ke jarak jauh ke jarak antara sumber dan dekat.
Hasilnya ditunjukkan dalam tabel. Karena kenyataan bahwa dalam skala opsi a) tidak ada bobot - hanya untuk unit di GT, hasilnya pada mereka keluar lebih buruk daripada titik awal, karena jaringan tidak memperhitungkan definisi warna yang berhasil, belajar lebih buruk. Varian bobot b) dan e) praktis bertepatan, oleh karena itu hasilnya bertepatan. Peningkatan terbesar dalam persentase poin dibandingkan dengan hasil awal ditunjukkan oleh varian bobot f) - triple gauss.
Fungsi aktivasi | Jumlah kelas | Jenis bobot | ROC AUC |
---|
sigmoid | 810 | a) | 0.844 |
b), e) | 0,848 |
c) | 0,888 |
d) | 0,879 |
f) | 0,909 |
Hasil pengenalan warna mesin di kelas 810 bermasalah dengan opsi bobot berbedaLAB: bereksperimen dengan label baru
Jadi, kami melakukan percobaan dengan bobot
kerugian yang berbeda. Kemudian kami memutuskan untuk mencoba meninggalkan bobot sebagai satu, dan mengubah label, yang ditransfer ke fungsi kerugian dan digunakan untuk mengoptimalkan jaringan. Jika sebelumnya label itu bertepatan dengan GT, sekarang mereka memutuskan untuk menggunakan lagi distribusi Gaussian dengan pusat di tempat unit di GT:
Motivasi untuk keputusan ini adalah sebagai berikut. Faktanya adalah bahwa dengan label biasa semua mobil dalam kumpulan data masuk ke dalam sejumlah kelas tetap, kurang dari 810, sehingga jaringan belajar untuk menentukan warna mobil hanya dari kelas-kelas ini. Dengan label baru, nilai bukan nol masuk ke semua kelas, dan kita dapat mengharapkan peningkatan keakuratan dalam menentukan warna mobil. Kami bereksperimen dengan dua sigma (standar deviasi) untuk distribusi Gaussian di atas: 41.9 dan 20.9. Kenapa begitu? Sigma pertama dipilih sebagai berikut: jarak minimum antar kelas (28) diambil dan sigma ditentukan dari kondisi bahwa distribusi berkurang dua kali di kelas yang berdekatan dengan GT'noye. Dan sigma kedua hanya dua kali lebih kecil dari yang pertama.
Distribusi mobil dataset pelatihan berdasarkan kelas dengan label berbeda yang hilangMemang, itu mungkin untuk lebih meningkatkan hasil menggunakan trik seperti itu, seperti yang ditunjukkan pada tabel. Alhasil, keakuratan tekad mencapai 0,955!
Fungsi aktivasi | Jumlah kelas | Jenis label | Jenis bobot | ROC AUC |
---|
sigmoid | 810 | biasa | yang | 0,846 |
biasa | tiga gauss | 0,909 |
baru, Ο 1 | tiga gauss | 0,955 |
baru, Ο 2 | 0,946 |
Hasil pengenalan warna untuk alat berat pada masalah kelas 810: dengan label biasa dan satuan berat, dengan label biasa dan bobot dalam bentuk triple Gauss, dengan label baru dan satuan bobotLAB: 81
Jika kita berbicara tentang percobaan yang gagal, kita harus menyebutkan upaya untuk melatih jaringan dengan 81 kelas dan parameter konstan L. Kami melihat selama percobaan sebelumnya bahwa kecerahan ditentukan oleh jaringan dengan cukup akurat, dan kami memutuskan untuk hanya melatih parameter a dan b (jadi disebut dua koordinat lainnya dalam LAB). Sayangnya, terlepas dari kenyataan bahwa jaringan mampu melatih dengan sempurna di pesawat, menunjukkan nilai yang lebih besar dalam hal metrik, ide pengaturan parameter L pada output jaringan sebagai rata-rata untuk kotak
mobil yang jatuh dan warna asli dan dengan demikian didefinisikan sangat berbeda.
Membandingkan dengan menyelesaikan masalah tanpa menggunakan jaringan saraf
Sekarang mari kita kembali ke permulaan dan membandingkan apa yang terjadi dengan kita dengan pengakuan warna mobil tanpa menggunakan jaringan saraf.
Hasilnya ditunjukkan pada gambar di bawah ini. Dapat dilihat bahwa puncaknya telah menjadi 3 kali lebih banyak, dan jumlah mobil dengan kesalahan besar antara warna benar dan tertentu telah menurun secara signifikan.
Distribusi pangsa mobil dengan nilai kesalahan L2 di ruang LAB antara kotak warna yang terikat didefinisikan sebagai median dan kotak mobil yang membatasi warna dari nilai kesalahan iniDistribusi pangsa mobil dengan nilai kesalahan L2 di ruang LAB antara warna pada output dari jaringan saraf, dan warna kotak pembatas mobil dari nilai kesalahan iniContohnya
Berikut ini adalah contoh-contoh pengenalan warna mobil. Yang pertama adalah bahwa mesin hitam (kasus khas) dikenali sebagai hitam, dan jarak dalam ruang LAB antara warna asli dan yang spesifik (18.16) kurang dari jarak minimum antara kelas (28). Pada gambar kedua, jaringan tidak hanya dapat menentukan bahwa mobil itu menyala (ada probabilitas tinggi yang sesuai dengan salah satu kelas warna putih), tetapi juga warna aslinya (perak). Namun, mesin dari gambar berikut, juga menyala, tidak terdeteksi oleh jaringan sebagai warna merah. Jaringan tidak dapat menentukan warna mobil yang ditunjukkan pada gambar di bawah, yang mengikuti fakta bahwa probabilitas untuk semua warna terlalu kecil.
Dalam banyak hal, tugas itu karena kebutuhan untuk mengenali mobil multi-warna. Sosok terakhir menggambarkan mobil hitam dan kuning dua-nada. Jaringan itu paling mungkin mengenali warna hitam, yang mungkin disebabkan oleh dominasi mesin-mesin ini dan warna-warna serupa dalam set data pelatihan, dan warna kuning, yang hampir benar, memasuki 3 teratas.
Kurva ROC: visualisasi dan masalah
Jadi, pada output kami mendapat hasil metrik yang cukup tinggi. Gambar berikut menunjukkan kurva ROC untuk memecahkan masalah dengan 8 kelas, dan untuk masalah dengan 810 kelas, serta solusi tanpa menggunakan jaringan saraf. Dapat dilihat bahwa hasilnya sedikit berbeda dari yang ditulis sebelumnya. Hasil sebelumnya diperoleh dengan menggunakan TensorFlow, grafik di bawah ini diperoleh dengan menggunakan paket scikit-learn.
Kurva ROC untuk beberapa opsi untuk menyelesaikan masalah. Di sebelah kanan adalah sudut kiri atas dari bagan kiriAnda dapat mengambil angka tetap sebagai nilai ambang (misalnya, Tensorflow, ketika Anda mengatur parameter yang sesuai ke 50, mengambil jumlah ambang yang sama dari 0 hingga 1 pada interval yang sama), Anda dapat menggunakan nilai pada output jaringan, atau Anda dapat membatasi mereka dari bawah sehingga tidak mempertimbangkan nilai urutan 10
-4 , misalnya. Hasil dari pendekatan yang terakhir ditunjukkan pada gambar berikut.
Kurva ROC untuk beberapa opsi untuk menyelesaikan masalah dengan ambang 10 -4Dapat dilihat bahwa semua kurva yang terkait dengan solusi masalah menggunakan jaringan saraf secara karakteristik lebih baik (lebih tinggi) daripada solusi untuk masalah tanpa mereka, tetapi Anda tidak dapat memilih kurva yang pasti terbaik di antara yang pertama. Bergantung pada ambang mana yang dipilih pengguna, kurva berbeda akan sesuai dengan solusi optimal berbeda untuk masalah. Oleh karena itu, di satu sisi, kami menemukan pendekatan yang memungkinkan kami untuk secara akurat menentukan warna mesin dan menunjukkan metrik yang tinggi, di sisi lain, kami telah menunjukkan bahwa batas belum tercapai dan metrik area di bawah kurva ROC memiliki kekurangannya.
Siap menjawab pertanyaan dan mendengarkan komentar di komentar.