Ora la domanda è come gestire dimensioni di immagini così grandi dove non vi sono privilegi di downsampling
Presumo che per downsampling intendi ridimensionare l'input prima di passarlo in CNN. Il livello convoluzionale consente di sottocampionare l'immagine all'interno di una rete, selezionando un grande passo, che consentirà di risparmiare risorse per i livelli successivi. In effetti, è quello che deve fare, altrimenti il tuo modello non si adatta alla GPU.
1) Esistono tecniche per gestire immagini così grandi che devono essere addestrate?
Comunemente le ricerche ridimensionano le immagini a dimensioni accettabili. Ma se questa non è un'opzione per te, dovrai limitare la tua CNN. Oltre al downsampling nei primi layer, ti consiglio di sbarazzarti del layer FC (che normalmente prende la maggior parte dei parametri) a favore del layer convoluzionale . Inoltre dovrai trasmettere i tuoi dati in streaming in ogni epoca, perché non si adattano alla tua GPU.
Nota che nulla di tutto ciò impedirà un pesante carico computazionale nei primi livelli, proprio perché l'input è così grande: la convoluzione è un'operazione costosa e i primi livelli eseguiranno molto in ogni passaggio avanti e indietro. In breve, l'allenamento sarà lento.
2) Quale dimensione del lotto è ragionevole da usare?
Ecco un altro problema. Una singola immagine prende2400x2400x3x4
(3 canali e 4 byte per pixel) che è ~ 70Mb, quindi difficilmente puoi permetterti anche una dimensione batch 10. Più realisticamente sarebbe 5. Nota che la maggior parte della memoria sarà presa dai parametri CNN. Penso che in questo caso abbia senso ridurre le dimensioni utilizzando valori a 16 bit anziché a 32 bit: in questo modo sarai in grado di raddoppiare i batch.
3) Ci sono delle precauzioni da prendere o qualsiasi aumento e diminuzione delle risorse hardware che posso fare?
Il tuo collo di bottiglia è la memoria GPU. Se puoi permetterti un'altra GPU, prendila e dividi la rete su di esse. Tutto il resto è insignificante rispetto alla memoria GPU.