R-FCN、SSD、YOLO2、faster-rcnn和labelImg實驗筆記
阿新 • • 發佈:2019-01-09
轉自:https://ask.julyedu.com/question/7490
R-FCN
paper:https://arxiv.org/abs/1605.06409
作者程式碼:https://github.com/daijifeng001/R-FCN #matlab版本
這裡使用python版本的程式碼:https://github.com/Orpine/py-R-FCN
1.下載程式碼
git clone https://github.com/Orpine/py-R-FCN.git
2.克隆caffe
cd py-R-FCN
git clone https://github.com/Microsoft/caffe.git #Microsoft的源
[可選]
cd caffe
git reset --hard 1a2be8e
3.編譯Cython模組
cd py-R-FCN/lib
make
4.編譯caffe和pycaffe
cd py-R-FCN/caffe
cp Makefile.config.example Makefile.config
make -j8 && make pycaffe
5.下載resnet caffemodel
從OneDriver下載rfcn_models https://1drv.ms/u/s!AoN7vygOjLIQqUWHpY67oaC7mopf
解壓到:py-R-FCN/data下
解壓後的目錄:
py-R-FCN/data/rfcn_models/resnet50_rfcn_final.caffemodel
py-R-FCN/data/rfcn_models/resnet101_rfcn_final.caffemodel
6.執行demo
python py-R-FCN/tools/demo_rfcn.py --net ResNet-50
python py-R-FCN/tools/demo_rfcn.py --net ResNet-101
ResNet-50效果圖:
ResNet-101效果圖:
7.準備訓練和測試
筆者這裡簡單使用VOC2007,並且修改名稱VOC0712,筆者把資料集直接放在py-R-FCN/data下
官網使用VOC2007和VOC2012,使用的時候要合併資料集,具體參考官網的Preparation for Training & Testing 第四點
8.下載ImageNet 與預訓練的ResNet-50和ResNet-100
OneDriver:https://onedrive.live.com/%3Fa ... FF777(在KaimingHe的github https://github.com/KaimingHe/d ... works )
mkdir py-R-FCN/data/imagenet_models
將model放到該目錄
9.可自己修改模型,類別,修改相應的py-r-fcn/py-R-FCN/models/pascal_voc/目錄下對應的檔案和py-r-fcn/lib/datasets/pascal_voc.py。筆者這裡還是使用預設的。
10.修改迭代次數
vi py-r-fcn/experiments/scripts/rfcn_end2end_ohem.sh
把pascal_voc的ITERS 調小
11.訓練
./py-r-fcn/experiments/scripts/rfcn_end2end_ohem.sh 0 ResNet-50 pascal_voc
其他訓練方式請自行參考官網Usage
12.測試
將訓練好的模型py-r-fcn/py-R-FCN/output/rfcn_end2end_ohem/voc_0712_trainval/resnet50_rfcn_ohem_iter_x.caffemodel,放到 py-r-fcn/py-R-FCN/data/rfcn_models 下,修改 py-R-FCN/tools/demo_rfcn.py的NETS,執行
SSD
paper:https://arxiv.org/abs/1512.02325
作者程式碼:https://github.com/weiliu89/caffe/tree/ssd
1.下載程式碼:
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
2.編譯程式碼
cp Makefile.config.example Makefile.config
make -j8
make py
make test -j8
make runtest -j8
3.準備
1.下載caffemodel和prototxt
https://gist.github.com/weiliu ... f81d6
從上邊地址下載完放到/models/VGGNET/
4.下載VOC2007和VOC2012
cd /root/data
wget http://host.robots.ox.ac.uk/pa ... 2.tar
wget http://host.robots.ox.ac.uk/pa ... 7.tar
wget http://host.robots.ox.ac.uk/pa ... 7.tar
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
5.建立LMDB檔案
cd $CAFFE_ROOT
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
6.訓練模型
python examples/ssd/ssd_pascal.py
也可以從這裡http://www.cs.unc.edu/%257Ewli ... ar.gz 下訓練好的模型。
7.評估模型
python examples/ssd/score_ssd_pascal.py
8.測試模型
python examples/ssd/ssd_pascal_webcam.py #筆者這步忽略
貼幾張youtube的SSD實時檢測效果,視訊地址:https://www.youtube.com/watch?v=6q-DBCPROA8
直接用ssd_detect.ipynb(examples/ssd_detect.ipynb)測試
9.訓練其他資料集忽略
mxnet 版本的ssd
程式碼地址:https://github.com/zhreshold/mxnet-ssd
1.下載程式碼
git clone --recursive https://github.com/zhreshold/mxnet-ssd.git
2.編譯mxnet
cd mxnet-ssd/mxnet
cp make/config.mk ./config.mk #自行修改配置檔案
make -j8
3.下載預訓練模型
地址:https://dl.dropboxusercontent. ... 2.zip。下載後解壓到model下
4.測試demo
python demo.py --epoch 0 --images ./data/demo/dog.jpg --thresh 0.5
效果圖:
5.其他的訓練資料忽略
YOLO2
paper:https://arxiv.org/abs/1506.02640
官網:http://pjreddie.com/darknet/yolo/
1.下載程式碼
git clone https://github.com/pjreddie/darknet
cd darknet
make
2.下載模型
wget http://pjreddie.com/media/files/yolo.weights
3.檢測
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
效果圖
其他效果圖
4.所有檢測
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0
5.在視訊上檢測
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>
faster-rcnn
paper:https://arxiv.org/abs/1506.01497
官方版本:https://github.com/ShaoqingRen/faster_rcnn #matlab
這裡使用python版本:https://github.com/rbgirshick/py-faster-rcnn
1.下載程式碼
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
筆者這裡換了官方的源,沒問題的同學可忽略
cd caffe-fast-rcnn
git remote add caffe https://github.com/BVLC/caffe.gitX86Xgit fetch caffe
git merge caffe/master
2.編譯Cython模組
cd $FRCN_ROOT/lib
make
3.編譯caffe和pycaffe
cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe
4.下載預訓練模型
cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
5.測試demo
cd $FRCN_ROOT
./tools/demo.py
效果圖:
6.其他資料集訓練的此處忽略
labelImg
筆者使用的影象標註工具是labelImg,製作的格式和PASCAL VOC一樣,可在windows、linux和Mac使用。
程式碼地址:https://github.com/tzutalin/labelImg
1.環境依賴
至少python2.6和PyQt 4.8
2.Linux/Ubuntu/Mac 安裝
sudo apt-get install pyqt4-dev-tools
sudo pip install lxml
make all
./labelImg.py
Windows
在檔案目錄下執行
pyrcc4 -o resources.py resources.qrc
python labelImg.py
3.常規使用步驟
python labelImg.py
在File選單選Change default saved annotation folder
點選Open Dir,開啟圖片路徑
點選Create RectBox,畫標註
4.常用快捷鍵
Ctrl + r 選擇annotation的預設存放路徑
Ctrl + n 新建一個標註
Ctrl + s 儲存圖片
n:下張圖片
p:上一張圖片
5.預先可以在 labelImg/data/predefined_classes.txt 定義標註類別
R-FCN
paper:https://arxiv.org/abs/1605.06409
作者程式碼:https://github.com/daijifeng001/R-FCN #matlab版本
這裡使用python版本的程式碼:https://github.com/Orpine/py-R-FCN
1.下載程式碼
git clone https://github.com/Orpine/py-R-FCN.git
2.克隆caffe
cd py-R-FCN
git clone https://github.com/Microsoft/caffe.git #Microsoft的源
[可選]
cd caffe
git reset --hard 1a2be8e
3.編譯Cython模組
cd py-R-FCN/lib
make
4.編譯caffe和pycaffe
這裡Makefile.config要支援Python layers!
In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1cd py-R-FCN/caffe
cp Makefile.config.example Makefile.config
make -j8 && make pycaffe
5.下載resnet caffemodel
從OneDriver下載rfcn_models https://1drv.ms/u/s!AoN7vygOjLIQqUWHpY67oaC7mopf
解壓到:py-R-FCN/data下
解壓後的目錄:
py-R-FCN/data/rfcn_models/resnet50_rfcn_final.caffemodel
py-R-FCN/data/rfcn_models/resnet101_rfcn_final.caffemodel
6.執行demo
python py-R-FCN/tools/demo_rfcn.py --net ResNet-50
python py-R-FCN/tools/demo_rfcn.py --net ResNet-101
ResNet-50效果圖:
ResNet-101效果圖:
7.準備訓練和測試
筆者這裡簡單使用VOC2007,並且修改名稱VOC0712,筆者把資料集直接放在py-R-FCN/data下
官網使用VOC2007和VOC2012,使用的時候要合併資料集,具體參考官網的Preparation for Training & Testing 第四點
8.下載ImageNet 與預訓練的ResNet-50和ResNet-100
OneDriver:https://onedrive.live.com/%3Fa ... FF777(在KaimingHe的github https://github.com/KaimingHe/d ... works )
mkdir py-R-FCN/data/imagenet_models
將model放到該目錄
9.可自己修改模型,類別,修改相應的py-r-fcn/py-R-FCN/models/pascal_voc/目錄下對應的檔案和py-r-fcn/lib/datasets/pascal_voc.py。筆者這裡還是使用預設的。
10.修改迭代次數
vi py-r-fcn/experiments/scripts/rfcn_end2end_ohem.sh
把pascal_voc的ITERS 調小
11.訓練
./py-r-fcn/experiments/scripts/rfcn_end2end_ohem.sh 0 ResNet-50 pascal_voc
其他訓練方式請自行參考官網Usage
12.測試
將訓練好的模型py-r-fcn/py-R-FCN/output/rfcn_end2end_ohem/voc_0712_trainval/resnet50_rfcn_ohem_iter_x.caffemodel,放到 py-r-fcn/py-R-FCN/data/rfcn_models 下,修改 py-R-FCN/tools/demo_rfcn.py的NETS,執行
SSD
paper:https://arxiv.org/abs/1512.02325
作者程式碼:https://github.com/weiliu89/caffe/tree/ssd
1.下載程式碼:
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
2.編譯程式碼
cp Makefile.config.example Makefile.config
make -j8
make py
make test -j8
make runtest -j8
3.準備
1.下載caffemodel和prototxt
https://gist.github.com/weiliu ... f81d6
從上邊地址下載完放到/models/VGGNET/
4.下載VOC2007和VOC2012
cd /root/data
wget http://host.robots.ox.ac.uk/pa ... 2.tar
wget http://host.robots.ox.ac.uk/pa ... 7.tar
wget http://host.robots.ox.ac.uk/pa ... 7.tar
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
5.建立LMDB檔案
cd $CAFFE_ROOT
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
6.訓練模型
python examples/ssd/ssd_pascal.py
也可以從這裡http://www.cs.unc.edu/%257Ewli ... ar.gz 下訓練好的模型。
7.評估模型
python examples/ssd/score_ssd_pascal.py
8.測試模型
python examples/ssd/ssd_pascal_webcam.py #筆者這步忽略
貼幾張youtube的SSD實時檢測效果,視訊地址:https://www.youtube.com/watch?v=6q-DBCPROA8
直接用ssd_detect.ipynb(examples/ssd_detect.ipynb)測試
9.訓練其他資料集忽略
mxnet 版本的ssd
程式碼地址:https://github.com/zhreshold/mxnet-ssd
1.下載程式碼
git clone --recursive https://github.com/zhreshold/mxnet-ssd.git
2.編譯mxnet
cd mxnet-ssd/mxnet
cp make/config.mk ./config.mk #自行修改配置檔案
make -j8
3.下載預訓練模型
地址:https://dl.dropboxusercontent. ... 2.zip。下載後解壓到model下
4.測試demo
python demo.py --epoch 0 --images ./data/demo/dog.jpg --thresh 0.5
效果圖:
5.其他的訓練資料忽略
YOLO2
paper:https://arxiv.org/abs/1506.02640
官網:http://pjreddie.com/darknet/yolo/
1.下載程式碼
git clone https://github.com/pjreddie/darknet
cd darknet
make
2.下載模型
wget http://pjreddie.com/media/files/yolo.weights
3.檢測
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
效果圖
其他效果圖
4.所有檢測
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0
5.在視訊上檢測
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>
faster-rcnn
paper:https://arxiv.org/abs/1506.01497
官方版本:https://github.com/ShaoqingRen/faster_rcnn #matlab
這裡使用python版本:https://github.com/rbgirshick/py-faster-rcnn
1.下載程式碼
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
筆者這裡換了官方的源,沒問題的同學可忽略
cd caffe-fast-rcnn
git remote add caffe https://github.com/BVLC/caffe.gitX86Xgit fetch caffe
git merge caffe/master
2.編譯Cython模組
cd $FRCN_ROOT/lib
make
3.編譯caffe和pycaffe
這裡Makefile.config要支援Python layers!
In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe
4.下載預訓練模型
cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
5.測試demo
cd $FRCN_ROOT
./tools/demo.py
效果圖:
6.其他資料集訓練的此處忽略
labelImg
筆者使用的影象標註工具是labelImg,製作的格式和PASCAL VOC一樣,可在windows、linux和Mac使用。
程式碼地址:https://github.com/tzutalin/labelImg
1.環境依賴
至少python2.6和PyQt 4.8
2.Linux/Ubuntu/Mac 安裝
sudo apt-get install pyqt4-dev-tools
sudo pip install lxml
make all
./labelImg.py
Windows
在檔案目錄下執行
pyrcc4 -o resources.py resources.qrc
python labelImg.py
3.常規使用步驟
python labelImg.py
在File選單選Change default saved annotation folder
點選Open Dir,開啟圖片路徑
點選Create RectBox,畫標註
4.常用快捷鍵
Ctrl + r 選擇annotation的預設存放路徑
Ctrl + n 新建一個標註
Ctrl + s 儲存圖片
n:下張圖片
p:上一張圖片
5.預先可以在 labelImg/data/predefined_classes.txt 定義標註類別