2016-10-02 2 views
14

Keras는 크기가 다른 입력 이미지를 처리 ​​할 수 ​​있습니까? 예를 들어, 완전 컨벌루션 뉴럴 네트워크에서, 입력 이미지는 임의의 크기를 가질 수있다. 그러나 Keras로 네트워크를 만들 때 입력 모양을 지정해야합니다. 따라서 Keras를 사용하여 입력 이미지의 크기를 같은 크기로 조정하지 않고 다른 입력 크기를 처리하려면 어떻게해야합니까? 어떤 도움을 주셔서 감사합니다.Keras는 다른 크기의 입력 이미지를 처리 ​​할 수 ​​있습니까?

답변

9

동일한 계산 커널을 사용하여 임의 크기의 입력 배열을 구현하면 많은 문제가 발생할 수 있습니다. GPU에서는 예약해야 할 버퍼가 얼마나 큰지, 루프를 여는 방법이 얼마나 약한지를 알아야합니다. Keras가 일정한 입력 모양을 필요로하는 주요 이유는 가변 크기 입력을 처리하기에는 너무 괴롭습니다.

이것은 NLP에서 문장과 같이 가변 길이 시퀀스를 처리 할 때 더욱 일반적으로 발생합니다. 일반적인 접근 방식은 이며, 크기에 대한 상한선은 (그리고 더 긴 시퀀스를 자르면)입니다. 패드 크기가 0 인 시퀀스가 ​​있습니다.

(당신도 ... Keras에서 길쌈 층은 여전히 ​​마스크 입력을 지원하지 않을 수 있습니다 점을 제외하고는 패딩 영역에서 계산을 건너 0 값에 마스킹 포함 할 수있다)

나는 3D에 있는지 확실하지 않습니다 데이터 구조에서 패딩의 오버 헤드는 제한적이지 않습니다. 메모리 오류가 발생하기 시작하면 가장 쉬운 해결 방법은 배치 크기를 줄이는 것입니다. 이 트릭을 이미지에 적용한 경험에 대해 알려주세요.

16

예. 입력 모양을 shape = (n_channels, 없음, 없음)로 변경하십시오. 여기서 n_channels은 입력 이미지의 채널 수입니다. 당신은 당신이 사용해야

(없음, 없음, n_channels)로 변경해야 할 수도 있습니다 tensorflow 사용하는, 그래서 만약 내가하지만 Theano 백엔드을 사용하고

:

input_shape = (1, 없음, 없음)

없음은 가변 치수를 나타냅니다. 모든 레이어가 의 레이어가 가변적 인 크기로 작동하지 않을 수도 있습니다. 일부 레이어는 모양 정보 (예 : Flatten)가 필요하기 때문입니다. keras의 기능 API를 사용하여 예를 들어 https://github.com/fchollet/keras/issues/1920

, 사용자의 입력 층은 다음과 같습니다

를 RGB 신호 데이터 세트

inp = Input(shape=(3,None,None)) 

를 들어 회색 데이터 세트의 경우

inp = Input(shape=(1,None,None)) 
+0

안녕 MAZ, 나는 정확히 똑같은 문제가 있습니다. 당신의 제안에 따르면, 나는 훈련을 위해 다양한 크기의 이미지를 사용할 수 있음을 의미하며, 마찬가지로 크기가 다른 이미지의 조각을 예측할 수 있습니다. – user288609

+0

다른 이미지 크기로 트레이닝을 시도한 적이 없지만 이상적으로는 작동해야합니다. 그러나 예측, 나는 그것을 시도하고 그것을 작동합니다 (물론 ymmv). 최악의 시나리오는 동일한 크기의 이미지를 일괄 적으로 공급해야합니다. – maz

관련 문제