工作記錄:訓練、測試 TF-SSD

1.訓練

ssd_vgg_300中修改:(num_classes可以在運行訓練文件時指定,因此這裏可以不修改)

'num_classes': 14,
'no_annotation_label': 14,
'normalizations': [13, -1, -1, -1, -1, -1],

設置訓練參數,運行訓練文件:

DATASET_DIR=./OPTIMAL_Z_FINAL
TRAIN_DIR=./My_chkp
CHECKPOINT_PATH=./checkpoints/vgg_16.ckpt

python train_ssd_network.py \
    --train_dir=${TRAIN_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=optimal_z_2017 \
    --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=50 \
    --num_classes=14 \
    --labels_offset=1 \
    --max_number_of_steps=1000000 

2.測試

測試之前,保證datasets/optimal_z_2017中:(注意這裏的valid不要寫成test)

SPLITS_TO_SIZES={'train': 12520, 'valid': 9233,}
NUM_CLASSES=13

測試參數:

DATASET_DIR=./OPTIMAL_Z_FINAL
TRAIN_DIR=./My_chkp
EVAL_DIR=${TRAIN_DIR}/eval
python eval_ssd_network.py \
    --eval_dir=${EVAL_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=optimal_z_2017 \
    --dataset_split_name=valid \
    --model_name=ssd_300_vgg \
    --checkpoint_path=${TRAIN_DIR} \
    --wait_for_checkpoints=True \
    --batch_size=1 \
    --max_num_batches=500 \
    --num_classes=14 

修改ssd_vgg_300
權重所使用的訓練參數:

    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --learning_rate_decay_factor=0.94 \
    --batch_size=50 \
    --num_classes=14 \
    --labels_offset=0 \
迭代次數 2000樣本mAP/%
94747 22.7811

此時網絡已經不能更收斂了,觀察tensorboard的可視化結果,發現只有個別類別準確率達到50%,其餘的大多數20%,還有很多0%,因此可以確定代碼哪裏參數設置有問題,總之,此次訓練失敗。
期待後續工作,深入調試這份代碼,爭取在自己的數據庫上達到50%的準確率。


修改ssd_vgg_300
權重所使用的訓練參數:

    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --learning_rate_decay_factor=0.94 \
    --batch_size=50 \
    --num_classes=13 \
    --labels_offset=0 \
迭代次數 2000樣本mAP/%
5878 16.59
10090 18.61
20271 24.26
30472 25.53
40662 25.71
50906 25.65
61154 25.82
71407 25.81
81549 25.80
91586 25.80
100766 25.80

權重所使用的訓練參數:

    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.001 \
    --learning_rate_decay_factor=0.94 \
    --batch_size=50 \
    --num_classes=14 \
    --labels_offset=1 \

測試結果:(VOC07mAP)

500樣本 2000樣本
第0次迭代 mAP=0%;
第840次迭代 mAP=2.34%
第3386次迭代 mAP=4.77%
第5082次迭代 mAP=7.46%
第7629次迭代 mAP=10.24%
第9331次迭代 mAP=10.82%
第10183次迭代 mAP=11.15% mAP=19.47%
第15289次迭代 mAP=11.78%
第20386次迭代 mAP=12.13% mAP=20.38%
第25484次迭代 mAP=13.22%
第30582次迭代 mAP=12.70% mAP=21.98%
第35683次迭代 mAP=12.38%
第40784次迭代 mAP=12.24% mAP=22.28%
第45889次迭代 mAP=12.46%
第50995次迭代 mAP=12.51% mAP=22.56%
第55253次迭代 mAP=12.40%
第60362次迭代 mAP=12.43% mAP=22.40%
第65448次迭代 mAP=12.40%
第71389次迭代 mAP=12.39% mAP=22.38%
第76516次迭代 mAP=12.41%
第81557次迭代 mAP=12.42% mAP=22.42%
第91792次迭代 mAP=22.40%
第101054次迭代 mAP=22.40%
第110355次迭代 mAP=22.40%
第次迭代 mAP=%
第次迭代 mAP=%
第次迭代 mAP=%
第次迭代 mAP=%
第次迭代 mAP=%

3.結果對比

之前只修改了類別數、沒修改標籤數的測試結果:(雖然收斂了,但是還是有點慢)

0次迭代,mAP=0%;
第822次迭代,mAP=1.31%;
第1655次迭代,mAP=2.57%;
第3322次迭代,mAP=6.15%;
第6659次迭代,mAP=9.05%;
第8329次迭代,mAP=9.02%;
第10001次迭代,mAP=10.42%;
第12517次迭代,mAP=10.97%;
第15877次迭代,mAP=12.13%;
第20086次迭代,mAP=11.79%;

之前沒有修改類別數、沒修改標籤數的測試結果:(顯然失敗)

第441571次迭代,mAP=8.34%;

3.可視化

tensorard --logdir=./eval --port=7000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章