Faster R CNN Training


실제 해당 과정을 통해서 학습을 수행해 본다.

Prepare dataset and Pre-trained model

VOC-2007 데이터를 다운 받는다.

if [ ! -d data ]; then mkdir data; fi; cd data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
rm -rf *.tar; cd ../

test_format error

error: AttributeError: 'module' object has no attribute 'text_format'
해결을 위해서 train.py에 import google.protobuf.text_format을 추가 한다.

TypeError: slice indices must be integers

(caffe_py2_virtualenv) jemin@jemin-desktop:~/caffe/second/py-faster-rcnn$ TypeError: slice indices must be integers or None or have an __index__ method
TypeError:: 명령을 찾을 수 없습니다

해결을 위해서는 numpy 1.12버전을 down-grade 한다.

pip uninstall numpy
pip install 'numpy==1.11.0'

모델 학습 방법

Training + Testing = 9963

Testing = 4952

학습하는 방법

일단 free training model을 들고 온다.
$ ./data/scripts/fetch_imagenet_models.sh

학습 방법은 총 2가지이다.

  • alternating optimization algorithm
  • approximate joint training

여기선 후자를 선택한다.

# ./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] [DATASET]
# Directly run this command might have an error "AssertionError: Selective search data not found at:". For the solution, please refer to Part 4.

$ ./experiments/scripts/faster_rcnn_end2end.sh 0 ZF pascal_voc

테스팅 방법

caffe zoo model

기본제공되는 caffe zoo 모델의 경우 ./data/faster_rcnn_models/ZF_faster_rcnn_final.caffemodel에 있다.
이것을 이용해서 테스팅을 수행해 본다.

./tools/test_net.py --gpu 0 --def models/pascal_voc/ZF/faster_rcnn_end2end/test.prototxt --net ./data/faster_rcnn_models/ZF_faster_rcnn_final.caffemodel --imdb voc_2007_test --cfg experiments/cfgs/faster_rcnn_end2end.yml

위와 같이 caffe zoo 모델은 mAP 0.4518로 그다지 정확도가 높지 않은 것을 알 수 있다.

새로 학습 모델

end2end
0.6116 mAP이다.

testing 데이터를 이용해서 과적합 시켜서 학습

  • testing data
  • end2end
  • 80000

정확도는 mAP = 0.8805

**직접 테스팅 실행 **

  • 정확도: mean AP = 0.8805
./tools/test_net.py --gpu 0 --def models/pascal_voc/ZF/faster_rcnn_end2end/test.prototxt --net ./output/faster_rcnn_end2end/voc_2007_test/zf_faster_rcnn_iter_80000.caffemodel --imdb voc_2007_test --cfg experiments/cfgs/faster_rcnn_end2end.yml


+ Recent posts