Sebagai contoh, misalkan kita sedang membangun penaksir usia, berdasarkan gambar seseorang. Di bawah ini ada dua orang berjas, tetapi yang pertama jelas lebih muda dari yang kedua.
(sumber: tinytux.com )
Ada banyak fitur yang menyiratkan ini, misalnya struktur wajah. Namun fitur yang paling jitu adalah rasio ukuran kepala dengan ukuran tubuh :
(sumber: wikimedia.org )
Jadi misalkan kita telah melatih regresi CNN untuk memprediksi usia orang tersebut. Dalam banyak prediktor usia yang saya coba, gambar anak di atas tampaknya membodohi prediksi dengan berpikir dia lebih tua, karena setelan jas dan kemungkinan karena mereka terutama mengandalkan wajah:
Saya bertanya-tanya seberapa baik arsitektur CNN vanilla dapat menyimpulkan rasio head to torso?
Dibandingkan dengan RCNN regional, yang mampu mendapatkan kotak pembatas pada tubuh dan kepala, akankah vanilla CNN selalu berkinerja lebih buruk?
Tepat sebelum perataan global di vanilla CNN (yaitu tepat setelah semua belokan), setiap keluaran memiliki bidang reseptif yang sesuai, yang seharusnya memiliki skala rasa. Saya tahu bahwa RCNN lebih cepat mengeksploitasi ini dengan membuat proposal kotak terikat tepat pada tahap ini, sehingga semua filter konvolusional sebelumnya secara otomatis melatih untuk semua skala.
Jadi, saya akan berpikir bahwa vanilla CNN harus dapat menyimpulkan rasio ukuran head to torso? Apakah ini benar? Jika demikian, apakah satu-satunya manfaat menggunakan kerangka kerja RCNN yang lebih cepat untuk mengeksploitasi fakta yang mungkin telah dilatih sebelumnya dalam mendeteksi orang?
sumber
Jawaban:
Pertama, terima kasih telah memposting pertanyaan yang sangat menarik.
Untuk menjawabnya sesaat, sebuah vanilla convnet yang melatih ujung-2-ujung untuk memprediksi usia dari sebuah foto pada umumnya cenderung salah mengelompokkan gambar-gambar seperti yang Anda posting . Kedua, perhatikan bahwa memperkirakan secara akurat usia seseorang adalah tugas yang hampir mustahil 1 .
Perbedaan utama dari pendekatan yang Anda usulkan menggunakan beberapa detektor objek (baik itu RCNN, RCNN lebih cepat, YOLO atau SSD) adalah bahwa Anda menggunakan informasi yang berbeda untuk melatih model. CNN hanya dilatih pada gambar dan perlu mencari tahu semua fitur yang diperlukan itu sendiri. Kemungkinan besar akan menemukan berbagai fitur wajah, tetapi juga akan bergantung pada pakaian dan mungkin fitur adegan (anak-anak mungkin sering dalam gambar dengan beberapa mainan, orang dewasa akan lebih mungkin di lingkungan kantor, dll). Fitur-fitur ini tidak akan kuat pada sampel tandingan Anda.
Di sisi lain, jika Anda melatih jaringan untuk secara eksplisit mendeteksi objek sebagai "batang tubuh" dan "kepala", Anda memberikan informasi tambahan bahwa objek-objek ini penting untuk tugas tersebut, dan dengan demikian menyederhanakan masalah 2 .
Sementara pendekatan mendeteksi kepala dan batang dan kemudian mengevaluasi rasio ukuran kotak pembatas terdengar menarik, saya dapat melihat beberapa kendala:
Semua masalah ini menunjukkan bahwa pendekatan rasio head-to-torso juga tidak akan bekerja dengan sempurna, meskipun mungkin lebih kuat untuk sampel tandingan khusus Anda.
Saya kira cara terbaik untuk melakukan tugas ini adalah 1) mendeteksi wajah, 2) memperkirakan usia hanya dari tanaman wajah (menghilangkan informasi yang berpotensi menyesatkan). Perhatikan bahwa beberapa arsitektur mirip R-CNN menggunakan penyatuan ROI dapat dilatih untuk melakukan ini ujung-2-akhir.
1 Bahkan menggunakan metode medis yang sangat canggih (yang bisa dibilang jauh lebih informatif daripada foto orang itu) ini tidak mungkin dilakukan secara akurat. Lihat utas Quora ini untuk informasi lebih lanjut .
2 Periksa artikel Pengetahuan Penting: Pentingnya Informasi Sebelumnya untuk Optimasi sebagai contoh bagaimana memberikan pengetahuan menengah tentang tugas dapat sangat menyederhanakan pembelajaran.
sumber
CNN adalah kelas model yang terlalu besar, untuk menjawab pertanyaan ini. LeNet, AlexNet, ZFNet, dan VGG16 akan berperilaku sangat berbeda dari GoogLeNet, yang dibangun secara khusus untuk melakukan sebagian besar dari apa yang dilakukan R-CNN, dengan arsitektur CNN (Anda mungkin tahu GoogLeNet dengan nama Inception, meskipun secara tegas hanya Inception. unit dasar (subnetwork) tempat GoogLeNet dibangun). Akhirnya, ResNets akan berperilaku berbeda. Dan semua arsitektur ini tidak dibangun untuk mengklasifikasikan kelas umur, tetapi 1000 kelas ImageNet, yang tidak mengandung kelas umur untuk manusia. Seseorang dapat menggunakan pembelajaran transfer(jika Anda memiliki gambar pelatihan yang cukup) untuk melatih salah satu model terlatih yang tersedia secara luas di atas, dan lihat kinerjanya. Secara umum, bagaimanapun, terutama arsitektur yang lebih lama (katakanlah hingga VGG16) mengalami kesulitan mempelajari "fitur global" yang perlu belajar tentang "head" (sudah merupakan fitur yang kompleks), "torso" (fitur kompleks lain) dan rasio (yang juga mensyaratkan bahwa kedua fitur berada dalam hubungan spasial tertentu). Hal-hal semacam inilah yang seharusnya dapat dilakukan oleh Capsule Networks.
Konvnet dilahirkan untuk melakukan hal yang sebaliknya: peka terhadap fitur lokal , dan relatif tidak sensitif terhadap posisi / skala relatifnya. Convnet yang baik harus mengenali "kucing putih" apakah gambarnya adalah foto close-up atau Amerika. Menggabungkan lapisan konvolusional (yang peka terhadap fitur lokal) dengan lapisan penyatuan (yang menghilangkan bagian dari kepekaan terhadap variasi dalam skala atau terjemahan gambar) memberi Anda arsitektur yang dalam bentuk paling dasarnya tidak hebat dalam mempelajari jenis spasial. hubungan antara objek yang Anda cari. Ada contoh di suatu tempat (tapi saya tidak bisa menemukannya lagi) di mana, setelah memecah gambar kucing di berbagai ubin nonlapisan persegi panjang dan menyatukannya dalam urutan acak, CNN akan terus mengidentifikasi gambar sebagai
cat
. Ini menunjukkan bahwa CNN lebih sensitif terhadap fitur lokal (tekstur atau semacamnya) daripada hubungan spasial antara fitur tingkat tinggi. Lihat juga kertas jaringan Kapsul untuk beberapa diskusi tentang ini. Hinton juga menunjukkan contoh ini dalam sebuah video tentang batas-batas konvoi .Dugaan liar saya adalah bahwa salah satu arsitektur baru-baru ini akan sangat mampu (diberikan data yang cukup) untuk membedakan laki-laki dari anak-anak, tetapi bukan karena "ambang" pada hubungan metrik antara fitur tingkat tinggi seperti "kepala" dan "batang tubuh" . Itu akan belajar beberapa keteraturan statistik, mungkin benar-benar tidak terlihat oleh manusia, yang memisahkan gambar dewasa dari gambar anak-anak di set pelatihan.
sumber
Ya, itu semua tergantung pada bagaimana dataset Anda dibangun. Dari pengalaman saya, jaringan saraf cenderung mencari penjelasan yang paling sederhana. Dan menyimpulkan usia dari pakaian itu sebenarnya lebih sederhana daripada menggunakan rasio head to body. Jika Anda dapat memperluas dataset Anda dengan mempertimbangkan hal ini, CNN Anda akan berfungsi seperti yang diharapkan.
sumber