Jaringan konvolusional untuk klasifikasi, sangat sensitif terhadap pencahayaan

8

Saya melatih jaringan convolutional untuk mengklasifikasikan gambar komponen mekanis sebagai baik atau cacat. Meskipun akurasi pengujiannya tinggi, saya menyadari bahwa model tersebut memiliki kinerja yang buruk pada gambar yang memiliki pencahayaan yang sedikit berbeda.

Fitur yang saya coba deteksi sangat halus, dan pencahayaan tampaknya membuat model tersebut memanggil banyak negatif palsu. Sebagian besar, jika tidak semua, data pelatihan dan tes berasal dari gambar yang diambil di bawah pencahayaan yang tersebar. Gambar baru yang saya coba modelnya dipotret dengan lampu fokus.

Berharap bahwa pemerataan histogram ( CLAHE ) akan membantu, saya melakukan pemerataan pada gambar sebelum memasukkannya ke model, melakukan ini untuk pelatihan serta data uji. Masalahnya kemudian adalah keakuratan yang tinggi, tetapi model itu tampaknya telah mempelajari beberapa korelasi lain antara gambar dan label. Setelah penyamaan, semua yang ada di gambar menonjol, cacat menjadi lebih halus dan sulit dideteksi bahkan untuk mata manusia.

Prediksi model berubah bahkan ketika komponen yang sama diambil dengan pencahayaan yang sama tetapi dengan cahaya pada orientasi yang berbeda. Jadi pertanyaan saya adalah, apa yang bisa saya lakukan, baik di ujung data atau dengan model, sehingga menjadi kuat untuk perubahan pencahayaan (atau jenis pencahayaan yang sama tetapi perubahan orientasi pencahayaan)?

dpk
sumber
Apakah layak untuk mengumpulkan lebih banyak data dengan variasi pencahayaan? Perbedaan antara pencahayaan difus dan langsung dalam sebuah pemandangan akan sulit untuk disimulasikan atau dibolehkan dalam pra-pemrosesan.
Neil Slater
@NeilSlater Ya, saya bisa mengumpulkan lebih banyak data. Saya lebih tertarik membuat model yang kuat untuk perubahan iluminasi, sampai batas yang wajar. Satu hal yang saya perhatikan adalah bahwa, prediksi model berubah bahkan ketika komponen yang sama ditembak di bawah pencahayaan yang sama, tetapi orientasi yang berbeda. Membuat model kuat untuk berbagai jenis pencahayaan mungkin sulit, adakah teknik untuk membuatnya kuat untuk berbagai orientasi pencahayaan yang sama?
dpk
Mengurangi mean dari gambar sering membantu. Juga, seberapa baik data Anda seimbang? Jika dalam dataset pelatihan 1% adalah kelas 1, model tidak akan belajar anytjing dan mengklasifikasikan semua sebagai kelas 0.
Alex
@ Alex Saya belum mencoba pengurangan berarti. Terima kasih untuk sarannya. Juga, dataset saya seimbang. Saya memiliki 2 kelas dan masing-masing akun memiliki 50% data.
dpk

Jawaban:

2

Ini disebut overfitting, model Anda belajar memprediksi label berdasarkan fitur yang sebenarnya tidak bertanggung jawab atas prediksi tertentu, jadi ketika tidak ditampilkan, label gagal memprediksi dengan benar. Meskipun ada berbagai cara untuk mengatasi overfitting (mis. Dropout) yang tampaknya Anda perlukan adalah augmentasi gambar. Ini adalah cara sederhana namun sangat kuat untuk melatih jaringan saraf yang kuat. Untuk kasus Anda - hanya mensimulasikan kondisi pencahayaan yang berbeda dengan misalnya meningkatkan / mengurangi nilai piksel untuk input Anda untuk label yang sama. Ini juga praktik umum untuk menambahkan noise acak, rotasi acak, flip dll.

Untuk info lebih lanjut, periksa jawaban stackoverflow ini .

Juga, saya baru-baru ini menerbitkan proyek tempat saya menggunakan berbagai fungsi Augmentasi yang mungkin berguna bagi Anda. Lihat: https://github.com/Naurislv/P12.1-Semantic-Segmentation/blob/master/augmentation.py

Nauris Dorbe
sumber