Sekarang pertanyaannya adalah bagaimana menangani ukuran gambar sebesar itu di mana tidak ada hak istimewa downsampling
Saya berasumsi bahwa dengan downsampling maksud Anda mengurangi input sebelum meneruskannya ke CNN. Lapisan konvolusional memungkinkan untuk melakukan downsample gambar dalam jaringan, dengan memilih langkah besar, yang akan menghemat sumber daya untuk lapisan berikutnya. Bahkan, itulah yang harus dilakukan, jika model Anda tidak akan muat di GPU.
1) Apakah ada teknik untuk menangani gambar besar yang harus dilatih?
Penelitian umum skala gambar ke ukuran resonable. Tetapi jika itu bukan pilihan bagi Anda, Anda harus membatasi CNN Anda. Selain downsampling di lapisan awal, saya akan merekomendasikan Anda untuk menyingkirkan lapisan FC (yang biasanya mengambil sebagian besar parameter) demi lapisan konvolusional . Anda juga harus mengalirkan data Anda di setiap zaman, karena itu tidak akan masuk ke GPU Anda.
Perhatikan bahwa semua ini tidak akan mencegah beban komputasi yang berat di lapisan awal, tepatnya karena inputnya sangat besar: konvolusi adalah operasi yang mahal dan lapisan pertama akan melakukan banyak hal di setiap lintasan maju dan mundur. Singkatnya, pelatihan akan lambat.
2) Apa ukuran batch yang masuk akal untuk digunakan?
Ini masalah lain. Sebuah gambar tunggal mengambil 2400x2400x3x4
(3 saluran dan 4 byte per piksel) yang ~ 70Mb, sehingga Anda hampir tidak mampu membayar bahkan ukuran batch 10. Lebih realistis adalah 5. Perhatikan bahwa sebagian besar memori akan diambil oleh parameter CNN. Saya pikir dalam hal ini masuk akal mengurangi ukuran dengan menggunakan nilai 16-bit daripada 32-bit - dengan cara ini Anda akan dapat menggandakan batch.
3) Apakah ada tindakan pencegahan untuk diambil atau peningkatan dan penurunan sumber daya perangkat keras yang dapat saya lakukan?
Hambatan Anda adalah memori GPU. Jika Anda mampu membeli GPU lain, dapatkan dan pisahkan jaringan di antaranya. Yang lainnya tidak signifikan dibandingkan dengan memori GPU.