Caffe上用SSD训练和测试自己的数据
??? 學習caffe第一天,用SSD上上手。
?? 我的根目錄$caffe_root為/home/gpu/ljy/caffe
?? 一、運行SSD示例代碼
?? 1.到https://github.com/weiliu89/caffe.git下載caffe-ssd代碼,是一個caffe文件夾
?? 2.參考已經配好的caffe目錄下的makefile.config修改¥caffe_root下的makefile.config.
?? 3.在$caffe_root下打開命令行終端,輸入以下命令
make -j8 make py make test -j8 make runtest -j8編譯完成
4.下載VGG_ILSVRC_16_layers_fc_reduced.caffemodel預訓練模型,放到$caffe_root/models/VGG下。(沒有VGG文件夾就建一個)
下載數據集VOCtest_06_Nov-2007.tar等三個壓縮包放在$caffe_root/data下,并解壓。
5.修改./data/VOC0712/create_list.sh里面的路徑為自己的路徑,修改./data/VOC0712/create_data.sh,本文如下圖所示:(VOC0712文件夾可能沒有,那就從網上下一個)
??????
6.命令行切換到$caffe_root并執行上面兩個腳本,直接命令行輸入就是執行7.訓練,命令行輸入下面:
python examples/ssd/ssd_pascal.py
或者下載訓練好的模型
8.測試 A.python examples/ssd/score_ssd_pascal.py
這個要先改里面的gpu個數,輸出是分數 B.python examples/ssd/plot_detections.py
輸出是是視頻的標注...
C.?./.build_release/examples/ssd/ssd_detect.bin models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel /home/gpu/ljy/caffe/data/ljy_test/TestData/pictures.txt
這是單張圖片的測試,C++版本的,其中ctrl+h可以查看隱藏文件夾,最后那個pictures.txt是待測試文件夾的路徑列表,如下圖:
???
???? ?
???? 測試結果如下:(暫時還不知道輸出的都是什么東西,可能是類別、置信度和位置吧)
??? ?
??? D 單張圖片測試,python版本
??? 點開ssd_detect.ipynb,復制并保存為ssd_detect.py,然后修改里面的路徑(包括$caffe_root和測試圖片的路徑),并在最后加上plt.show()
??? 然后命令行運行該代碼即可
?? 二、訓練并測試自己的數據
??? 1.生成訓練和測試數據
???? 我們自己的數據基本是jpeg或者其他圖片格式的,而caffe輸入的一般是LMDB的數據,所以我們要進行轉換。我們轉換的方法是
??? ?A.將圖像用工具進行標注(工具這里先不介紹),得到txt標注文件
???? B.將txt文件和圖片轉換成VOC格式(用腳本)
???? C.將VOC格式轉換為LMDB格式,利用SSD示例代碼提供的轉換腳本。
(1) 在 $caffe_root/data/VOCdevkit目錄下創建ljy_test目錄,該目錄中存放自己轉換完成的VOC數據集;(2) $CAFFE_ROOT/examples目錄下創建ljy_test目錄;
(3) $CAFFE_ROOT/data目錄下創建ljy_test目錄,同時將data/VOC0712下的create_list.sh,create_data.sh,labelmap_voc.prototxt
這三個文件copy到ljy_test目錄下,分別重命名為create_list_ljy_test.sh,create_data_ljy_test.sh, labelmap_ljy_test.prototxt
(4) 對上面新生成的兩個create文件進行修改,主要修改是將VOC0712相關的信息替換成ljy_test
修改后的兩個文件分別如下:
然后修改labelmap_indoor.prototxt,將該文件中的類別修改成和自己的數據集相匹配,注意需要保留一個label 0 , background類別
????? 完成上面步驟的修改后,可以開始LMDB數據數據的制作,在$CAFFE_ROOT目錄下分別運行:
./data/ljy_test/create_list_indoor.sh
./data/ljy_test/create_data_indoor.sh
命令執行完畢后,可以在$CAFFE_ROOT/examples/ljy_test目錄下查看轉換完成的LMDB數據數據。
?? 2.訓練
? A.將預訓練好的模型放在$CAFFE_ROOT/models/VGGNet下(我們這里在運行SSD示例代碼的4已經放過了,可以省略)
?B.將$caffe_root/examples/ssd/ssd_pascal.py拷貝到自己的文件夾$caffe_root/examples/ljy_test/下,并重命名為ssd_pascal_ljy.py
?C.修改ssd_pascal_ljy.py為自己的各個路徑,其中要在$caffe_root/models/VGGNet/下建立ljy_test文件夾,修改如下:
?
??
??
??
? D.執行訓練代碼。在$caffe_root下打開命令行,并輸入
python examples/ljy_test/ssd_pascal_ljy.py等待訓練就可以了...
有可能遇到loss=nan的情況,這個待議,正常情況下是下面醬紫的:
? 3.測試
? A.c++版本的測試
? ?跟上面ssd示例測試的差不多,改一下路徑即可
? B.python版本的測試
? 同最上面
? 4.參考:http://blog.csdn.net/u014696921/article/details/53353896,https://github.com/weiliu89/caffe.git
?
轉載于:https://www.cnblogs.com/EstherLjy/p/6863890.html
總結
以上是生活随笔為你收集整理的Caffe上用SSD训练和测试自己的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer之字符串的排列
- 下一篇: Java中正则Matcher类的matc