답변:
이제 문제는 다운 샘플링 권한이없는 큰 이미지 크기를 처리하는 방법입니다.
다운 샘플링을하면 입력 을 CNN으로 전달 하기 전에 축소하는 것을 의미한다고 가정합니다 . 컨볼 루션 레이어를 사용하면 큰 보폭을 선택하여 네트워크 내에서 이미지를 다운 샘플링하여 다음 레이어의 리소스를 절약 할 수 있습니다. 사실, 그것이해야 할 일입니다. 그렇지 않으면 모델이 GPU에 맞지 않을 것입니다.
1) 훈련해야 할 큰 이미지를 처리하는 기술이 있습니까?
일반적으로 연구는 이미지를 적절한 크기로 조정합니다. 그러나 이것이 귀하에게 적합한 옵션이 아닌 경우 CNN을 제한해야합니다. 초기 레이어의 다운 샘플링 외에도 컨 벌루 셔널 레이어를 위해 FC 레이어 (일반적으로 대부분의 매개 변수 를 사용함 ) 를 제거하는 것이 좋습니다 . 또한 GPU에 맞지 않기 때문에 각 시대에 데이터를 스트리밍해야합니다.
이 중 어느 것도 입력이 너무 커서 초기 계층에서 계산 부하가 큰 것을 막을 수는 없습니다. 회선은 비용이 많이 드는 작업이며 첫 번째 계층은 각 정방향 및 역방향 패스에서 많은 계층을 수행 합니다 . 요컨대 훈련이 느려질 것이다.
2) 사용하기에 적당한 배치 크기는 무엇입니까?
또 다른 문제가 있습니다. 단일 이미지 2400x2400x3x4
(~ 채널당 3 채널 및 4 바이트)는 ~ 70Mb이므로 배치 크기 10도 거의 감당할 수 없습니다.보다 현실적인 것은 5입니다. 대부분의 메모리는 CNN 매개 변수에 의해 사용됩니다. 이 경우 32 비트 대신 16 비트 값을 사용하여 크기를 줄이는 것이 합리적이라고 생각합니다. 이렇게하면 배치를 두 배로 늘릴 수 있습니다.
3) 내가 할 수있는 하드웨어 리소스에 대한 예방 조치 나 증가 및 감소가 있습니까?
병목 현상은 GPU 메모리입니다. 다른 GPU를 감당할 수 있다면 GPU를 가져 와서 네트워크를 분할하십시오. 다른 모든 것은 GPU 메모리와 비교하여 중요하지 않습니다.
일반적으로 이미지의 경우 기능 세트는 픽셀 밀도 값이며이 경우 상당히 큰 기능 세트가됩니다. 또한 중요한 데이터가 손실 될 수 있으므로 이미지를 다운 샘플링하는 것도 권장하지 않습니다.
[1] 그러나 기능 세트 크기를 줄이는 데 도움이되는 몇 가지 기술이 있습니다. PCA (Principle Component Analysis)와 같은 접근 방식은 중요한 기능 하위 세트를 선택하는 데 도움이됩니다.
자세한 내용은 http://spark.apache.org/docs/latest/ml-features.html#pca 링크를 참조하십시오 .
[2] 신경망을 훈련하는 동안 계산 비용을 줄이기 위해 그 외에는 기존의 그라디언트 디센트 방식을 사용하는 대신 스토캐스틱 그라디언트 디센트를 사용하여 각 반복에서 훈련하는 데 필요한 데이터 세트의 크기를 줄일 수 있습니다. 따라서 한 번의 반복에 사용되는 데이터 세트 크기가 줄어들 기 때문에 네트워크 교육에 필요한 시간이 줄어 듭니다.
사용되는 정확한 배치 크기는 교육 데이터 세트 및 테스트 데이터 세트에 대한 배포판에 따라 다르며,보다 일반적인 용도는 70-30입니다. 위에서 언급 한 확률 적 접근 방식을 사용하여 필요한 시간을 줄일 수도 있습니다.
확률 적 경사 하강에 대한 세부 사항 http://scikit-learn.org/stable/modules/sgd.html
[3] 하드웨어는 업그레이드가 필요한 것으로 보이며, 필요한 경우 사용 한도까지 무료 계정 가입을 얻을 수있는 AWS와 같은 클라우드 솔루션을 살펴보십시오.
이러한 큰 데이터는 메모리에로드 할 수 없습니다. 할 수있는 일을 두 가지로 나눌 수 있습니다.
모든 이미지를 더 작은 크기로 조정하십시오. 112x112 픽셀로 크기를 조정할 수 있습니다. 귀하의 경우, 정사각형 이미지가 있기 때문에자를 필요가 없습니다. 목표로 이러한 이미지를 모두 RAM에로드 할 수는 없습니다.
가장 좋은 방법은 데이터를 일괄 적으로 공급하는 생성기 기능을 사용하는 것입니다. Keras 에서 사용되는 fit_generator 사용을 참조하십시오 . 모델 매개 변수가 너무 커서 GPU 메모리에 맞지 않으면 배치 정규화 사용 또는 잔차 모델을 사용하여 매개 변수 수를 줄이십시오.