Ada beberapa variasi tentang cara menormalkan gambar tetapi sebagian besar tampaknya menggunakan dua metode ini:
- Kurangi rata-rata per saluran yang dihitung atas semua gambar (mis. VGG_ILSVRC_16_layers )
- Kurangi dengan piksel / saluran yang dihitung atas semua gambar (mis. CNN_S , lihat juga jaringan referensi Caffe )
Pendekatan alami akan dalam pikiran saya untuk menormalkan setiap gambar. Sebuah gambar yang diambil di siang hari bolong akan menyebabkan lebih banyak neuron terbakar daripada gambar malam hari dan sementara itu dapat memberi tahu kita tentang waktu kita biasanya peduli tentang fitur yang lebih menarik hadir di tepi dll.
Pierre Sermanet merujuk pada 3.3.3 bahwa normalisasi kontras lokal yang akan berdasarkan per-gambar tapi saya belum menemukan ini dalam salah satu contoh / tutorial yang saya lihat. Saya juga telah melihat pertanyaan Quora yang menarik dan posting Xiu-Shen Wei tetapi mereka tampaknya tidak mendukung dua pendekatan di atas.
Apa sebenarnya yang saya lewatkan? Apakah ini masalah normalisasi warna atau ada makalah yang benar-benar menjelaskan mengapa begitu banyak yang menggunakan pendekatan ini?
sumber
Jawaban:
Mengurangi dataset berarti berfungsi untuk "memusatkan" data. Selain itu, Anda idealnya ingin membagi dengan sttdev fitur atau pixel juga jika Anda ingin menormalkan setiap nilai fitur ke skor-z.
Alasan kami melakukan kedua hal tersebut adalah karena dalam proses pelatihan jaringan kami, kami akan mengalikan (bobot) dan menambahkan (bias) input awal ini untuk menyebabkan aktivasi yang kemudian kami backpropogate dengan gradien ke latih modelnya.
Kami ingin dalam proses ini untuk setiap fitur memiliki rentang yang sama sehingga gradien kami tidak lepas kendali (dan kami hanya membutuhkan satu pengganda tingkat pembelajaran global).
Cara lain yang dapat Anda pikirkan adalah jaringan pembelajaran mendalam yang secara tradisional berbagi banyak parameter - jika Anda tidak mengukur input Anda dengan cara yang menghasilkan nilai fitur dengan rentang yang sama (yaitu: pada keseluruhan dataset dengan mengurangi rata-rata) berbagi tidak akan terjadi dengan sangat mudah karena satu bagian dari berat gambar
w
banyak dan yang lain terlalu kecil.Anda akan melihat dalam beberapa model CNN bahwa pemutihan per-gambar digunakan, yang lebih sesuai dengan pemikiran Anda.
sumber
Sebelum normalisasi batch, pengurangan rata-rata per saluran digunakan untuk memusatkan data sekitar nol rata-rata untuk setiap saluran (R, G, B). Ini biasanya membantu jaringan untuk belajar lebih cepat karena gradien bertindak seragam untuk setiap saluran. Saya menduga jika Anda menggunakan normalisasi batch, langkah pra-pemrosesan pengurangan saluran rata-rata sebenarnya tidak diperlukan karena Anda tetap normalisasi per mini-batch.
sumber
Normalisasi per-gambar adalah umum dan bahkan satu-satunya fungsi yang dibangun saat ini di Tensorflow (terutama karena sangat mudah diimplementasikan). Ini digunakan untuk alasan yang tepat yang Anda sebutkan (siang VS malam untuk gambar yang sama). Namun, jika Anda membayangkan skenario yang lebih ideal di mana pencahayaan dikontrol, maka perbedaan relatif antara setiap gambar akan sangat berharga dalam algoritme, dan kami tidak ingin menghapusnya dengan normalisasi per-gambar (dan ingin lakukan normalisasi dalam konteks seluruh rangkaian data pelatihan).
sumber
Ini disebut preprocessing data sebelum menggunakannya. Anda dapat memproses dalam banyak cara tetapi ada satu syarat bahwa Anda harus memproses setiap data dengan fungsi yang sama X_preproc = f (X) dan ini f (.) Tidak boleh bergantung pada data itu sendiri, jadi jika Anda menggunakan gambar saat ini berarti memproses ini gambar saat ini maka f (X) Anda akan benar-benar menjadi f (X, gambar) dan Anda tidak menginginkannya.
Normalisasi kontras gambar yang Anda bicarakan adalah untuk tujuan yang berbeda. Normalisasi kontras gambar akan membantu dalam fitur.
Tetapi f (.) Di atas akan membantu optimasi dengan menjaga semua fitur secara numerik sama satu sama lain (tentu saja sekitar)
sumber