Teraz pytanie brzmi, jak radzić sobie z tak dużymi rozmiarami obrazu, w których nie ma uprawnień do próbkowania w dół
Zakładam, że przez próbkowanie w dół masz na myśli zmniejszenie wejścia przed przekazaniem go do CNN. Warstwa konwolucyjna pozwala na próbkowanie w dół obrazu w sieci poprzez wybranie dużego kroku, który pozwoli zaoszczędzić zasoby na kolejne warstwy. W rzeczywistości to właśnie musi zrobić, w przeciwnym razie twój model nie zmieści się w GPU.
1) Czy są jakieś techniki obsługi tak dużych obrazów, które należy trenować?
Zwykle badania skalują obrazy do rezonansowego rozmiaru. Ale jeśli nie jest to dla ciebie opcja, musisz ograniczyć swój CNN. Oprócz próbkowania w dół na wczesnych warstwach, polecam pozbyć się warstwy FC (która zwykle przyjmuje większość parametrów) na korzyść warstwy splotowej . Będziesz także musiał przesyłać strumieniowo swoje dane w każdej epoce, ponieważ nie będą pasować do twojego GPU.
Zauważ, że nic z tego nie zapobiegnie dużemu obciążeniu obliczeniowemu we wczesnych warstwach, właśnie dlatego, że dane wejściowe są tak duże: splot jest kosztowną operacją, a pierwsze warstwy wykonają wiele z nich przy każdym przejściu do przodu i do tyłu. Krótko mówiąc, trening będzie wolny.
2) Jaki rozmiar partii jest uzasadniony w użyciu?
Oto kolejny problem. Pojedynczy obraz zajmuje 2400x2400x3x4
(3 kanały i 4 bajty na piksel), co stanowi ~ 70 Mb, więc nie możesz sobie pozwolić nawet na wielkość partii 10. Bardziej realistycznie byłoby 5. Pamiętaj, że większość pamięci zajmie parametry CNN. Myślę, że w tym przypadku sensowne jest zmniejszenie rozmiaru przy użyciu 16-bitowych wartości zamiast 32-bitowych - w ten sposób będziesz w stanie podwoić partie.
3) Czy mogę podjąć jakieś środki ostrożności lub zwiększyć lub zmniejszyć zasoby sprzętowe?
Twoim wąskim gardłem jest pamięć GPU. Jeśli możesz sobie pozwolić na inny procesor graficzny, zdobądź go i podziel sieć na nie. Wszystko inne jest nieznaczne w porównaniu do pamięci GPU.