Berapa banyak gambar per kelas yang cukup untuk melatih CNN

12

Saya memulai proyek di mana tugasnya adalah mengidentifikasi jenis sepatu dari gambar. Saat ini saya membaca implementasi TensorFlow dan Torch . Pertanyaan saya adalah: berapa banyak gambar per kelas yang diperlukan untuk mencapai kinerja klasifikasi yang masuk akal?

Feynman27
sumber
Tentukan "masuk akal"? Apakah tujuan Anda untuk mencapai akurasi yang dapat digunakan dalam sistem produksi? Apakah tujuan Anda beberapa hal lain? Ada berapa kelas di sana? Ada beberapa variasi dalam pelatihan pra-pelatihan dan semi-diawasi yang dapat menyelamatkan Anda dari upaya, jadi dapatkah Anda mengklarifikasi apakah kekhawatiran Anda dalam upaya memberi label gambar, atau sekadar mencari sumber gambar apa pun. Akhirnya, seberapa bersih dan sederhana gambar target Anda? Gambar di mana pencahayaan dan pose dipasang akan lebih mudah untuk dilatih daripada foto "dunia nyata" dengan mengenakan sepatu kets.
Neil Slater
Ya, ini akan digunakan dalam produksi. Saat ini saya tidak tahu berapa kelas yang akan ada karena saya tidak tahu berapa banyak tipe sepatu yang ada di perpustakaan gambar. Dugaan terbaik saya adalah pada urutan 50-100, tetapi courser deskripsi dari sneaker, semakin sedikit kelas (misalnya air-jordan vs air-jordan-ultrafit). Sayangnya, perpustakaan gambar adalah campuran dari sepatu yang dikenakan dan sepatu kets menyamar sebagai barang tetap dengan latar belakang putih.
Feynman27

Jawaban:

2

Dari Seberapa sedikit contoh pelatihan yang terlalu sedikit saat melatih jaringan saraf? di CV:

Ini sangat tergantung pada dataset Anda, dan arsitektur jaringan. Salah satu aturan praktis yang saya baca (2) adalah beberapa ribu sampel per kelas untuk jaringan saraf untuk mulai berkinerja sangat baik. Dalam praktiknya, orang mencoba dan melihat.


Cara yang baik untuk secara kasar menilai sejauh mana bisa bermanfaat untuk memiliki lebih banyak sampel pelatihan adalah untuk memplot kinerja jaringan saraf berdasarkan ukuran set pelatihan, misalnya dari (1):

masukkan deskripsi gambar di sini


Franck Dernoncourt
sumber
0

Pendekatan terbaik adalah mengumpulkan data sebanyak yang Anda bisa dengan nyaman. Kemudian mulailah dengan proyek dan buat model data.

Sekarang Anda dapat mengevaluasi model Anda untuk melihat apakah ia memiliki Bias Tinggi atau Varians Tinggi.

Varians Tinggi : Dalam situasi ini Anda akan melihat bahwa kesalahan Validasi Silang lebih tinggi dari kesalahan Pelatihan setelah konvergensi. Ada kesenjangan yang signifikan jika Anda merencanakan hal yang sama terhadap ukuran data pelatihan.

Bias Tinggi : Dalam situasi ini kesalahan Cross-Validasi sedikit lebih tinggi dari kesalahan pelatihan yang itu sendiri tinggi ketika diplot terhadap ukuran data pelatihan. Dengan memplot terhadap ukuran data pelatihan yang saya maksud, Anda dapat memasukkan himpunan bagian dari data pelatihan yang Anda miliki dan terus menambah ukuran subset dan kesalahan plot.

Jika Anda melihat model Anda memiliki varian tinggi (pakaian berlebih), menambahkan lebih banyak data biasanya akan membantu berbeda dengan model dengan bias tinggi (pakaian kurang bagus) di mana menambahkan data pelatihan baru tidak membantu.

Juga per kelas Anda harus mencoba untuk mendapatkan jumlah gambar yang sama jika tidak set data dapat miring (lebih dari satu jenis).

Saya juga menyarankan jika Anda menggunakan TensorFlow , baca lebih lanjut tentang Pengelompokan Gambar INCEPTION oleh GOOGLE . Ini adalah classifier yang sudah terlatih pada database gambar google dan Anda dapat menggunakannya untuk gambar Anda, sehingga persyaratan untuk jumlah gambar turun secara drastis.

Xeqtr
sumber
Saya sudah melakukan tes cepat menggunakan TensorFlow's Inception-v3. Yang terbaik yang bisa dilakukan adalah memberi saya klasifikasi yang sangat jelas, seperti "sepatu lari," tetapi saya perlu sesuatu yang sedikit lebih granular, seperti "air-jordan-ultrafit." Inilah sebabnya saya membuat pelatihan baru yang akan digunakan dengan Inception.
Feynman27
Itu adalah definisi aneh "sedikit lebih granular".
Jivan