TensorFlowの下で自分のデータセットでFaster RCNNを訓練する


変換元:https://blog.csdn.net/u012834824/article/details/78626027コードを使うときにこのブロガーの文章を参考にしました.ありがとうございます.
一、自分のデータベースを準備する
     VOC2007 Annotation、ImageSets、JPEGImages 。Annotation ,ImageSets 、 ,JPEGImages 。

(Faster-RCNN_TF)
二、元のコードを修正する
     Tensorflow FASTER RCNN,https://github.com/smallcorgi/Faster-RCNN_TF。

1. lib\datasets\pascal_voc.pyでself._を変更classesのカテゴリ
  • libetworksのVGGnet_train.pyとVGG_test.pyでn_を変更classesは自分のクラスの個数+1
  • tools/demo.pyにおけるCLASSESのカテゴリを独自のクラスに変更する
  • 三、訓練
  • 端末トレーニング:コマンドcd FRCNROOT./experiments/scripts/fasterrcnnend2end.sh F R C N R O O T ./e x p e r i m e n t s/s c r i p t s/f a s t e r r c n n e n d 2 e n d . s h DEVICE DEVICEIDVGG16pascalvoc. D E V I C E I D V G G 16 p a s c a l v o c . DEVICEはGPUまたはCPU、$DEVICE_IDはいくつかのGPU、
  • Pycharmトレーニング:Edit ConfigrationsでScript parametersで–cfg.../experiments/cfgs/faster_rcnn_end2end.yml –network VGGnet_train –device GPU –device_id 1 –weights ../data/pretrain_model/VGG_imagenet.npy –imdb voc_2007_trainval –iters 70000

  • 四、テスト
        1. demo :
    

    (1)Edit ConfigrationsでScript parameters-model.../model/VGGnet_fast_rcnn_iter_40000.ckpt
    注意:tensorflow 1.3走demoでエラーundefined symbol:ZN10tensorflow11TensorShapeC1Ev.その後、以前使用していたtensorflowバージョン1.2.1に変更され、demoはライブラリが互換性がないため、エクスポートに成功しました.
    (2)端末テスト:コマンドcd$FRCN_ROOT python ./tools/demo.py –model ./model/VGGnet_fast_rcnn_iter_40000.ckpt
        2. test_net :
    

    (1)Edit ConfigurationsでScript parametersで–device gpu–device_id 0 –weights ./model/pascal_voc/VGGnet_fast_rcnn_iter_40000.ckpt –imdb voc_2007_test –cfg ./experiments/cfgs/faster_rcnn_end2end.yml –network VGGnet_test
    (2)端末テスト:コマンドpython./tools/test_net.py –device gpu –device_id 0 –weights ./model/pascal_voc/VGGnet_fast_rcnn_iter_40000.ckpt –imdb voc_2007_test –cfg ./experiments/cfgs/faster_rcnn_end2end.yml –network VGGnet_test
    注意:Waiting for./がテスト時に表示されます.model/VGGnet_fast_rcnn_iter_40000.ckpt to exist...、test_net.py中args.waitのデフォルトはTrueで、argsを変更します.waitのデフォルトはFalseで、結果が得られますが、正しいかどうかはわかりませんが、さらに検証する必要があります.