Dapatkah jaringan saraf convolutional mengambil sebagai input gambar dengan ukuran yang berbeda?

10

Saya sedang mengerjakan jaringan konvolusi untuk pengenalan gambar, dan saya bertanya-tanya apakah saya dapat memasukkan gambar dengan ukuran yang berbeda (meskipun tidak terlalu berbeda).

Pada proyek ini: https://github.com/harvardnlp/im2markup

Mereka bilang:

and group images of similar sizes to facilitate batching

Jadi, bahkan setelah preprocessing, gambar masih berukuran berbeda, yang masuk akal karena mereka tidak akan memotong beberapa bagian formula.

Apakah ada masalah dalam menggunakan ukuran yang berbeda? Jika ada, bagaimana saya harus mendekati masalah ini (karena semua rumus tidak akan sesuai dengan ukuran gambar yang sama)?

Masukan apa pun akan sangat dihargai

Graham Slick
sumber

Jawaban:

2

Apakah ada masalah dalam menggunakan ukuran yang berbeda? Jika ada, bagaimana saya harus mendekati masalah ini (karena semua rumus tidak akan sesuai dengan ukuran gambar yang sama)?

Itu tergantung pada arsitektur jaringan saraf. Beberapa arsitektur beranggapan bahwa semua gambar memiliki dimensi yang sama, yang lain (seperti im2markup) tidak membuat asumsi seperti itu. Fakta bahwa im2markup memungkinkan gambar dengan lebar berbeda tidak membawa masalah apa pun yang saya percaya, karena mereka menggunakan RNN yang memindai melalui output dari lapisan konvolusi.

masukkan deskripsi gambar di sini

kelompokkan gambar dengan ukuran yang sama untuk memfasilitasi pengumpanan

Itu biasanya untuk mempercepat dengan menghindari menambahkan terlalu banyak bantalan.

Franck Dernoncourt
sumber
2

Sudahkah Anda mempertimbangkan untuk hanya menskala gambar dalam tahap preprocessing? Secara intuitif, manusia yang berhadapan dengan gambar berskala masih dapat mengenali fitur dan objek yang sama, dan tidak ada alasan yang jelas mengapa CNN tidak dapat melakukan hal yang sama pada gambar berskala.

Saya pikir bahwa penskalaan gambar dengan ukuran yang sama mungkin lebih mudah daripada mencoba membuat jaringan convolutional menangani gambar dengan ukuran yang berbeda, yang saya pikir akan ada di sana di tanah 'penelitian asli'. Anda tentu bisa membuat lapisan-lapisan konv dari gambar-gambar dengan ukuran berapa pun, tanpa pelatihan ulang. Namun, output dari sebuah convnet biasanya akan menjadi semacam classifier, dan ini mungkin akan bekerja kurang baik, jika Anda memasukkan input dengan ukuran yang berbeda, saya akan membayangkan.

Pendekatan lain adalah dengan hanya menempelkan gambar dengan nol. Tapi bayangkan secara intuitif Anda sedang melihat foto mungil, empuk dengan garis batas hitam, atau Anda dapat memperbesar, sehingga ini menghasilkan lengkungan yang masuk akal di bidang visual Anda. Yang akan kamu lakukan Mana yang lebih mudah dilihat?

Hugh Perkins
sumber
tidak menskalakan mengurangi kualitas gambar yang memperkenalkan kesalahan dan merusak fitur, jika sudah gambar resolusi rendah maka penskalaan akan menurunkan kualitas gambar ke titik di mana bahkan manusia tidak dapat mengenali dengan mudah tetapi gambar yang tidak dikenali mungkin dapat dikenali.
Vikram Bhat
1
apakah Anda memiliki contoh gambar yang dapat dikenali oleh manusia, kecuali jika Anda menerapkan penskalaan, dan kemudian menjadi tidak dapat dikenali?
Hugh Perkins
Saya juga ingin tahu. Ketika mencoba menggunakan model terlatih yang ada dari keras, saya pikir saya bisa skala gambar hingga sesuai dengan antarmuka InceptionV3 (299x299 dari 32x32 -> CIFAR10). Saya pikir penskalaan kehilangan kualitas. Tapi saya pikir cara yang tepat untuk melakukannya adalah dengan mengecualikan output FC dan menentukan bentuk input ke 32x32. Saya pikir ini akan membutuhkan pelatihan ulang, karena bobot lapisan input akan acak.
Joey Carson
Penskalaan mengurangi kualitas tetapi membantu generalisasi: ada banyak makalah yang mencatat keuntungan nyata ketika Gauss blur diterapkan sebelum pelatihan. Secara intuitif Anda memiliki lebih banyak sampel input berbeda yang menyerupai gambar "buram" tunggal, sehingga membuat klasifikasi lebih kuat.
Matthieu