Sensitivitas Skala Jaringan Syaraf Konvolusional

11

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?

Alex R.
sumber
1
Apakah Anda tahu di mana tepatnya recongnizer usia Anda gagal? Mengapa menurut Anda proporsi ukuran kepala? Apakah Anda melihat output lapisan tengah?
Aksakal
@ Akakal Saya tidak berpikir dia bereksperimen melatih CNN. Dari apa yang saya mengerti, dia telah melakukan tes dengan layanan web yang ada: "Dalam banyak prediktor usia yang saya coba [..]".
DeltaIV

Jawaban:

8

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:

  1. Memperoleh data: Saya tidak mengetahui ketersediaan dataset besar di mana usia dan kotak pembatas akan hadir.
  2. Imperfect FOV: Pada sebagian besar gambar (mis. Kedua contoh Anda), orang-orang tidak ditampilkan secara keseluruhan. Anda harus berurusan dengan fakta bahwa kotak pengikat batang tubuh tidak akan selalu sempurna hanya karena bagian dari orang tersebut tidak ada dalam gambar dan jaring harus menebak seberapa besar bagian yang hilang (dan kotak kotak pengikat kebenaran tanah akan paling kemungkinan tidak menangkap informasi ini). Juga, detektor objek yang disebutkan di atas tidak selalu menangani prediksi objek parsial dengan benar. Ini mungkin menimbulkan terlalu banyak noise pada model.
  3. Berbagai pose: Rasio torso-to-head akan sangat berbeda untuk orang-orang yang dilihat dari depan dan dari samping.
  4. Dewasa: Tampaknya rasio ini berfungsi baik untuk memprediksi usia antara 0-21, tetapi saya tidak melihat bagaimana hal itu akan membantu untuk memprediksi usia orang dewasa (saya kira rasionya tidak berubah pada usia yang lebih tinggi).

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.

Jan Kukacka
sumber
8

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 sebagaicat. 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.

DeltaIV
sumber
Saya menghargai jawaban Anda, tetapi, saya mengalami kesulitan untuk menyetujui. Arsitektur RCNN pada dasarnya memiliki struktur filter yang sama dengan convnets objek, misalnya VGG dan Resnet. Dan karena RCNN dapat mendeteksi skala dan posisi relatif, maka VGG dan Resnet juga harus dapat mendeteksi skala. Namun, arsitektur RCNN mengandalkan proposal kotak, yang menghasilkan ribuan per gambar, setelah itu setiap proposal kotak dievaluasi. Jadi sepertinya jika saya memasukkan setidaknya beberapa proposal kotak ini, sebuah vanilla CNN akan mendeteksi skala dengan lebih baik. Saya tidak yakin apakah perlu melakukannya.
Alex R.
RCNN bukan CNN. Tidak hanya Anda melewatkan pencarian selektif untuk kotak pembatas, tetapi Anda juga melewatkan SVM linier dan tahap kotak pembatas pembatas. Juga, ada perbedaan besar antara kemampuan untuk mendeteksi skala AlexNet (yang merupakan CNN yang digunakan dalam kertas RCNN asli), atau VGG, dan kemampuan GoogLeNet atau ResNet: GoogLeNet dikembangkan tepat untuk melakukan apa yang dilakukan RCNN. Saya pikir GoogLeNet dan ResNet akan dapat mengklasifikasikan usia, tetapi tidak ada cara untuk mengetahui apakah mereka akan melakukannya dengan menggunakan fitur yang masuk akal bagi kami (rasio head to torso) atau dengan menemukan beberapa statistik 1 /
DeltaIV
2 / keteraturan yang tidak akan pernah diperhatikan manusia. Saya menyarankan Anda untuk bereksperimen dan mencoba, tetapi sayangnya hanya membangun basis data gambar akan menjadi proyek penelitian itu sendiri (kecuali jika Anda bekerja di perusahaan mode).
DeltaIV
1
Saya minta maaf atas kebingungan ini. Saya tahu ada seperti, 20 arsitektur RCNN yang berbeda di luar sana, masing-masing mengklaim yang lain sudah usang.
Alex R.
1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Juga, masalah yang berbeda, tetapi masih terkait dengan pencocokan tekstur, dan dari peneliti yang lebih dihormati, arxiv.org/pdf/ 1703.06857
DeltaIV
0

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.

Lugi
sumber