【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
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 := 1
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
这里Makefile.config要支持Python layers!
【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记的更多相关文章
- [计算机视觉][神经网络与深度学习]R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
R-FCN.SSD.YOLO2.faster-rcnn和labelImg实验笔记 转自:https://ask.julyedu.com/question/7490 R-FCN paper:https: ...
- R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记(转)
https://ask.julyedu.com/question/7490 labelImg:https://github.com/tzutalin/labelImg
- 【目标检测】:SPP-Net深入理解(从R-CNN到SPP-Net)
一. 导论 SPP-Net是何凯明在基于R-CNN的基础上提出来的目标检测模型,使用SPP-Net可以大幅度提升目标检测的速度,检测同样一张图片当中的所有目标,SPP-Net所花费的时间仅仅是RCNN ...
- 【目标检测】SSD:
slides 讲得是相当清楚了: http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf 配合中文翻译来看: https://www.cnb ...
- AI佳作解读系列(二)——目标检测AI算法集杂谈:R-CNN,faster R-CNN,yolo,SSD,yoloV2,yoloV3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 检测算法简介及其原理——fast R-CNN,faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3
1 引言 深度学习目前已经应用到了各个领域,应用场景大体分为三类:物体识别,目标检测,自然语言处理.本文着重与分析目标检测领域的深度学习方法,对其中的经典模型框架进行深入分析. 目标检测可以理解为是物 ...
- 目标检测(三) Fast R-CNN
引言 之前学习了 R-CNN 和 SPPNet,这里做一下回顾和补充. 问题 R-CNN 需要对输入进行resize变换,在对大量 ROI 进行特征提取时,需要进行卷积计算,而且由于 ROI 存在重复 ...
- 如何使用 pytorch 实现 SSD 目标检测算法
前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...
- caffe SSD目标检测lmdb数据格式制作
一.任务 现在用caffe做目标检测一般需要lmdb格式的数据,而目标检测的数据和目标分类的lmdb格式的制作难度不同.就目标检测来说,例如准备SSD需要的数据,一般需要以下几步: 1.准备图片并标注 ...
随机推荐
- 二叉树的深度<java版>
二叉树的结构 二叉树是比较常见的一种的一种数据结构. 首先看看二叉树的数据结构: //由左节点和右节点以及一个节点值构成 public class TreeNode{ TreeNode leftNod ...
- javascript中的取反再取反~~
操作符~, 是按位取反的意思,表面上~~(取反再取反)没有意义,实际上在JS中可以将浮点数变成整数. <html> <script> var myArray = new Arr ...
- [Algorithm] A* Search Algorithm Basic
A* is a best-first search, meaning that it solves problems by searching amoung all possible paths to ...
- IC设计前后端流程与EDA工具
IC前端设计(逻辑设计)和后端设计(物理设计)的区分: 以设计是否与工艺有关来区分二者:从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路. 前端设计的流程及使用的EDA工具 1.架构的设计 ...
- C++:const用法的简单总结
一.对变量的修饰 在c++中,如果我们希望定义一个值不会被改变的变量,那么可以用关键字const对它进行修饰,被修饰后的变量其作用相当于一个常量 //这两种方式等价 2 语法1:const 类型名 变 ...
- PyCharm如何设置源代码字体的大小
改源代码大小 1.File→Settings→Editor→Colors&Fonts→Font 2.首先得需要Save as一个Scheme,接下来才可以修改字体,名字可以任意取 改运行字体的 ...
- 2018软工实践—Alpha冲刺(2)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前端界面的开发 搭建测试用服务器的环境 完成 ...
- HDU 5655 CA Loves Stick 水题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5656 CA Loves Stick Accepts: 381 Submissions: 3204 ...
- Rsyslog-legacy(旧版本语法)配置说明及举例
1. RULES-书写规则 格式:日志设备(类型).日志级别 日志处理方式 (1)日志类型分类 auth pam产生的日志 authpriv ssh,ftp等登录信息的验证信息 ...
- [Prism框架实用分享]如何在Prism应用程序中使用日志
前言 在Prism中有关日志的命名空间: Microsoft.Practices.Prism.Logging 在Prism中,你可以使用Prism自带的Logger(比如TextLogger等),也可 ...