Tensorflow-SDテストおよびトレーニング独自のデータセット

4577 ワード

一、##ソフトウェア##Python+Tensorflow+OpenCV 3
二、##取付試験##1、ssd_notebook.ipynbテスト(1)パッケージをダウンロードして解凍します.ソースコードGitHub:balancap/SDD-Tensorflow(2)端末を開き、ディレクトリパスに入り、実行:jupyter notebook notebooks/ssd_notebook.ipynb2、pyスクリプトテストはnotebookメソッドを使用せず、pythonで直接実現します.(1)ルートディレクトリの下にPythonスクリプトファイルssd_を新規作成するPython.py、ssd_notebook.ipynbのコードはコピーされ、最後の数行のコードが変更され、img = mpimg.imread(path + image_names[-5])に置き換えられます.
for it  in image_names:
    img = mpimg.imread(path + it)
    i+=1
    if i>4: break
    rclasses, rscores, rbboxes =  process_image(img)
    visualization.plt_bboxes(img, rclasses, rscores, rbboxes)

(2)端末で直接実行する:
Python ssd_Python.py

三、##自分のデータセットを訓練する##1、データ変換SSDは直接使用するVOCデータセットフォーマットではないので、それを特定のフォーマットに変換するには、tf_を使用するconvert_data.pyでデータ変換を行います.端末に変換コマンドを入力:
DATASET_DIR=./VOC2007/test/
OUTPUT_DIR=./tfrecords
python tf_convert_data.py \
    --dataset_name=pascalvoc \
    --dataset_dir=${DATASET_DIR} \
    --output_name=voc_2007_train \
    --output_dir=${OUTPUT_DIR}

怠け者なので、私はこれらの変数を直接プログラムに代入し、直接実行することができます.
python tf_convert_data.py

最後にデータをこのような形式に変換します:VOC 2007_000.tfrecordのファイル.2、トレーニングダウンロードネットワーク基本フレームワーク:VGG_16以降の実行:
DATASET_DIR=./tfrecords
TRAIN_DIR=./log/
CHECKPOINT_PATH=./checkpoints/vgg_16.ckpt
python train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --checkpoint_model_scope=vgg_16 \
    --checkpoint_exclude_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box \
    --trainable_scopes=ssd_300_vgg/conv6,ssd_300_vgg/conv7,ssd_300_vgg/block8,ssd_300_vgg/block9,ssd_300_vgg/block10,ssd_300_vgg/block11,ssd_300_vgg/block4_box,ssd_300_vgg/block7_box,ssd_300_vgg/block8_box,ssd_300_vgg/block9_box,ssd_300_vgg/block10_box,ssd_300_vgg/block11_box \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --learning_rate_decay_factor=0.94 \
    --batch_size=32

私はやはりそれをプログラムの変数に代入して、直接実行することができます:
python train_ssd_network.py

訓練は後期まで、より良い結果が得られず、微調整訓練も行うことができ、ここbalancap/SDD-TensorflowのREADMEを参考にする.md最後の部分.
ここでは、(1)解凍ファイルディレクトリの下でdatasets/pascalvoc_を見つけるcommon.py,自分のデータセットのカテゴリによってVOC_を変更するLABELS変数.(2)同様にdatasetsフォルダの下でpascalvoc_を模倣する.2012.pyファイルは、自分のデータセットと組み合わせて自分の類似ファイルを作成します.(3)もしあなたのデータとjpgフォーマットでない場合、発生したエラーに基づいて、プログラム中の対応位置をあなたの画像フォーマットに変更します.
最後に、自分のデータセットを訓練する過程でまだいくつかの問題が発生します.エラーのヒントに基づいて、アクセスの経路を見て、データフォーマットに問題があるかどうかを見て、さらに解決します.
参考:balancap/SDD-Tensorflow