SSD-tensorflow-2 evaluation


測試就是用voc2007的test set來測試已經訓練好的checkpoint的mAP,github上提供了三個已經訓練好的model的checkpoint

checkpoint 里面已有的300_vgg_ckpt這個文件很有可能就是下圖圈住的模型,因為這兩個文件的大小是一模一樣的

需要做的准備有:
1. 下載voc2007的數據集,然后將test set轉化成tfrecord(在轉化時,源碼只使用了annotations和jpegimages兩個文件夾的內容來制作tfrecords)
2. 下載checkpoint,如voc2007和voc2012訓練集訓練的checkpoint(這個要到github上SSD的主頁去下載,但是好像被牆了,不下載其實也沒關系,因為前面自帶的有一個checkpoint是可以用的)

下載好的voc2007文件test set 結構是這樣的:

調用tf_convert_data.py將test set轉化成tfrecoeds,(注意:這里直接運行會碰到無法讀取圖片,UTF-8無法decode的Erro,解決辦法是打開SSD工程—>datasets—>pascalvoc_to_tfrecords.py 。。。然后更改文件的83行讀取方式為’rb’)

DATASET_DIR=./VOC2007/    #下載的voc數據集總文件夾
OUTPUT_DIR=./tfrecords    #用來放生成的tfrecord文件的文件夾
python tf_convert_data.py \
    --dataset_name=pascalvoc \    #必須是pascalvoc,代碼里面默認的
    --dataset_dir=${DATASET_DIR} \
    --output_name=voc_2007_train \  #必須是這個格式的,例如:voc_2012_test
    --output_dir=${OUTPUT_DIR}

生成測試集tfrecord后,調用eval_ssd_network.py使用剛剛生成好的tfrecords來測試checkpoint的准確率:

DATASET_DIR=/home/wu/voc2007_test_tfrecords/  #保存tfrecords的路徑
EVAL_DIR=/home/wu/ssd_eval_log/   #是自己設置用來保存測試結果的路徑(生成結果后,在該路徑下運行tensorboard可以查看可視化的結果)
CHECKPOINT_PATH=/home/wu/Downloads/SSD-Tensorflow-master/checkpoints/VGG_VOC0712_SSD_300x300_iter_120000.ckpt  是下載的checkpoint的路徑(如果未下載可以使用SSD工程本來自帶的checkpoint)
python3 ./eval_ssd_network.py \
    --eval_dir=${EVAL_DIR} \
    --dataset_dir=${DATASET_DIR} \
    --dataset_name=pascalvoc_2007 \  #或者pascalvoc_2012,代碼里面有默認的幾個選項
    --dataset_split_name=test \    #必須是test
    --model_name=ssd_300_vgg \
    --checkpoint_path=${CHECKPOINT_PATH} \
    --batch_size=1    #可根據自己電腦設置

 補充:

SSD輸出mAP時出現TypeError: Can not convert a tuple into a Tensor or Operation???

解決方法為在eval_ssd_network.py文件中添加下面一個函數:

1 def flatten(x):
2     result = []
3     for el in x:
4          if isinstance(el, tuple):
5                result.extend(flatten(el))
6          else:
7                result.append(el)
8     return result

然后修改兩行代碼:

1 將    eval_op=list(names_to_updates.values())
2  
3 改為  eval_op=flatten(list(names_to_updates.values()))
4  
5 注意:共有兩行!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM