Saya telah mengerjakan masalah regresi di mana inputnya adalah gambar, dan labelnya adalah nilai kontinu antara 80 dan 350. Gambar-gambar tersebut dari beberapa bahan kimia setelah reaksi berlangsung. Warna yang muncul menunjukkan konsentrasi bahan kimia lain yang tersisa, dan itulah yang dihasilkan model - konsentrasi bahan kimia itu. Gambar dapat diputar, dibalik, dicerminkan, dan output yang diharapkan harus tetap sama. Analisis semacam ini dilakukan di laboratorium nyata (mesin yang sangat khusus menghasilkan konsentrasi bahan kimia menggunakan analisis warna seperti saya melatih model ini untuk dilakukan).
Sejauh ini saya hanya bereksperimen dengan model yang secara kasar didasarkan pada VGG (beberapa urutan blok konv-konv-konv-pool). Sebelum bereksperimen dengan arsitektur yang lebih baru (Inception, ResNets, dll.), Saya pikir saya akan meneliti apakah ada arsitektur lain yang lebih umum digunakan untuk regresi menggunakan gambar.
Dataset terlihat seperti ini:
Dataset berisi sekitar 5.000 sampel 250x250, yang telah saya ubah ukurannya menjadi 64x64 sehingga pelatihan lebih mudah. Setelah saya menemukan arsitektur yang menjanjikan, saya akan bereksperimen dengan gambar beresolusi lebih besar.
Sejauh ini, model terbaik saya memiliki kesalahan kuadrat rata-rata pada kedua set pelatihan dan validasi sekitar 0,3, yang jauh dari dapat diterima dalam kasus penggunaan saya.
Model terbaik saya sejauh ini terlihat seperti ini:
// pseudo code
x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=32, kernel=[3,3])->batch_norm()->relu()
x = maxpool(x, size=[2,2], stride=[2,2])
x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=64, kernel=[3,3])->batch_norm()->relu()
x = maxpool(x, size=[2,2], stride=[2,2])
x = conv2d(x, filters=128, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=128, kernel=[3,3])->batch_norm()->relu()
x = conv2d(x, filters=128, kernel=[3,3])->batch_norm()->relu()
x = maxpool(x, size=[2,2], stride=[2,2])
x = dropout()->conv2d(x, filters=128, kernel=[1, 1])->batch_norm()->relu()
x = dropout()->conv2d(x, filters=32, kernel=[1, 1])->batch_norm()->relu()
y = dense(x, units=1)
// loss = mean_squared_error(y, labels)
Pertanyaan
Apa arsitektur yang sesuai untuk output regresi dari input gambar?
Edit
Saya telah mengulangi penjelasan saya dan menghapus keakuratan.
Edit 2
Saya telah merestrukturisasi pertanyaan saya jadi semoga jelas apa yang saya cari