跑SSD-tensorflow代碼遇到的坑

將dataset convert to tfrecords時遇到的問題:

1. 在SSD的工程下面創建一個shell腳本tf_convert_data.sh,調用tf_convert_data.py將test set轉化成tfrecords:這裏直接運行會碰到無法讀取圖片,UTF-8無法decode的Erro,解決辦法是打開SSD工程—>datasets—>pascalvoc_to_tfrecords.py,然後更改文件的83行(具體行數因人而異)讀取方式爲’rb’

    filename = directory + DIRECTORY_IMAGES + name + '.jpg'
    image_data = tf.gfile.FastGFile(filename, 'rb').read()

2. 腳本tf_convert_data.sh中outdir的文件夾(voc2007_tfrecords)需要事先建立,否則報錯:

tensorflow.python.framework.errors_impl.NotFoundError: /data2/dingmengyuan/voc2007_tfrecords/voc_2007_tfrecords_000.tfrecord; No such file or directory

3. 運行腳本時又報錯:

eval_net_network.sh: line 9: --dataset_name=pascalvoc_2007: command not found
eval_net_network.sh: line 10: --dataset_split_name=test: command not found
eval_net_network.sh: line 11: --model_name=ssd_300_vgg: command not found

原因:我用的是 windows 系統,然後將代碼上傳到服務器的 ubuntu 系統上執行。

windows 的默認換行是\n\r,而 linux 的換行是\nlinux 命令的續行符號\後面是不允許添加除換行以外符號的,空格都不允許。

所以上面的報錯主要原因是換行符號。解決方法如下:

sed -i 's/\r$//g'  [腳本文件名稱]

使用 sed 流編輯命令,將 change.sh 每個行末的\r替換成爲空。

 參考網址:http://www.cnblogs.com/blog4ljy/p/9320487.html

 

 

評估模型 運行eval_ssd_network.sh時


1. 報錯:TypeError: Can not convert a tuple into a Tensor or Operation.
解決方案:

參考網址: https://blog.csdn.net/w5688414/article/details/78529884
                   https://github.com/balancap/SSD-Tensorflow/issues/154

2. 利用tensorboard將評估結果可視化時,由於我是在服務器上運行,出來的網址粘貼到win下chrome瀏覽器中打不開

查了很久,說需要將服務器上的6006映射到本地(本人也是小白,照做了發現行不通),所以最簡單的方法便是直接在cmd上運行

參考鏈接:https://stackoverflow.com/questions/41523005/how-to-use-tensorboard-in-a-docker-container-on-windows

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