2016-07-11 2 views
0

Caffe GoogleNet 모델을 사용하여 데이터 (10k 이미지, 2 클래스)를 학습했습니다. ~ 80 %의 정확도로 400000 번째 반복에서 멈 춥니 다.Caffe GoogleNet classification.cpp는 임의의 출력을 제공합니다.

나는 아래의 명령을 실행하는 경우 : 그것이 나에게 다른 제공

./build/examples/cpp_classification/classification.bin 
    models/bvlc_googlenet/deploy.prototxt 
    models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel 
    data/ilsvrc12/imagenet_mean.binaryproto 
    data/ilsvrc12/synset_words.txt 
    1.png 

- 분명히 무작위을 - 때마다 결과 (I는 n 번을 실행하는 경우, 즉, 그때는 n 개의 서로 다른 결과를 얻을 수 있습니다). 왜? 내 훈련이 실패합니까? 참조 모델의 이전 데이터를 계속 사용합니까?

+0

10k 이미지는 처음부터 ConvNet을 훈련하는 데별로 도움이되지 않습니다. 다른 모델을 미세 조정 해 보셨습니까? – jerpint

답변

1

나는 훈련에 문제가 없다고 생각합니다. 교육 자료가 아니더라도 매번 동일한 (잘못된 입력 일 가능성이 있음) 결과를 제공해야합니다. 임의의 결과를 얻는 경우, 가중치가 제대로로드되지 않음을 나타냅니다.

.prototxt에 대해 .caffemodel을로드하면 caffe는 이름이 caffemodel의 이름과 일치하는 prototxt의 모든 레이어의 가중치를로드합니다. 다른 레이어의 경우에는 무작위 초기화 (prototxt의 사양에 따라 gaussian xavier 등)가 수행됩니다.

이제 가장 좋은 방법은 모델이 현재 사용중인 것과 동일한 프로토 타입을 사용하여 학습되었는지 확인하는 것입니다.

Google.com prototxt 및 reference_caffenet caffemodel을 사용하고 있습니다. 이것은 의도적입니까?

1

당신이 미세 조정 모델을 배포 할 때 두 가지 일을 확인해야합니다 :

  1. 는 입력 :

    • 입력 이미지 대신 RGB의 BGR 채널을 사용 (예 : OpenCV의)
    • 평균 파일 : 훈련시 평균 파일과 동일합니까?
  2. Prototxt : 모델을 fintuning 때

    • , 당신은 원래 prototxt 일부 층 '이름을 변경하며, 동일한 레이어 이름이 사용 여부를 확인해야합니까?

는 그리고 거기에 몇 가지 Fine-tune tricks 및 미세 조정을위한 매우 유용합니다 CS231n_transfer_learning.