Tensorflow+SSD初步接觸,測試+訓練
阿新 • • 發佈:2018-12-30
環境:
Ubuntu16.04+CUDA8.0+Cudnn8.0v6.0+python3.5+tensorflow1.4
測試官方的模型:
1. 下載SSD-Tensorflow原始碼,下載模型ssd_300_vgg,(其實原始碼裡有帶的)存放在SSD-Tensorflow-master/checkpoints/目錄下,並解壓。
2. 在目錄 ../SSD-Tensorflow-master/notebooks/ 下開啟終端,執行jupyter notebook , 然後會進入伺服器,開啟ssd_notebook.ipynb,修改第6個cell的ckpt_filename = '../checkpoints/ssd_300_vgg.ckpt' --此處寫自己想測試的模型路徑及名字;修改第8個cell,path = '../demo/'--此處改成自己測試圖片的資料夾路徑,下面的[ ]中寫測試的那張圖片在資料夾中下標。點上面的 run 執行每一個小cell,到第8個就能看到結果了。如下圖(1 2 3)
圖(1)
圖(2)
圖(3)
有可能的錯誤:有可能報錯缺少 matplotlib 等依賴包,sudo pip install matplotlib安裝即可。執行到第四個cell有可能報錯,把from notebooks import visualization轉換tfrecords格式資料集時好像只用到標註資訊 Annotations 和圖片 imageSets,並不需要其它的東西,test中同樣也只有這兩個檔案,生成測試資料集時用。voc 格式的資料集做好以後,需要把資料集轉換成tfrecords格式的能被 tensorflow 識別的型別,然後就需要修改一下原始碼,datasets \ pascalvoc_common.py,把它原有的20類修改成自己資料集裡的類別就好啦。如下圖所示:然後還需要修改 datasets \
image_data = tf.gfile.FastGFile(filename, 'r').read() ‘r’ 改成 ‘rb’ 不然會報錯:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte然後在../SSD-Tensorflow-master目錄下執行
DATASET_DIR=./VOC2007/
OUTPUT_DIR=./tfrecords/
python tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_train \
--output_dir=${OUTPUT_DIR}
提前建資料夾 /tfrecords ,轉換成的訓練資料就生成在裡面了。DATASET_DIR=./VOC2007/test/
OUTPUT_DIR=./tfrecords/
python tf_convert_data.py \
--dataset_name=pascalvoc \
--dataset_dir=${DATASET_DIR} \
--output_name=voc_2007_test \
--output_dir=${OUTPUT_DIR}
生成測試資料,注意這兩個命令的兩處不同哦。。。(第一行和倒數第二行)4. 訓練自己的資料集: 訓練中不收斂,等有好的結果再過來寫吧。。。