资源
源码
GitHub 上搜索 YOLO
可以找到很多平台的包,如: Tensorflow
, pyTorch
等等;本文使用 darknet
原因:方便把玩。请参考如下页面安装测试:
- YOLO : YOLO: Real-Time Object Detection
资料
- YOLO源码详解(五)- YOLO中的7*7个grid和RPN中的9个anchors
- 论文提要“You Only Look Once: Unified, Real-Time Object Detection”
YOLO局限性
由于YOLO具有极强的空间限制,它限制了模型在邻近物体上的预测,如果两个物体出现在同一个cell中,模型只能预测一个物体,所以在小物体检测上会出问题。另外模型对训练数据中不包含的物体或具有异常长宽比的物体扩展不是太好。loss函数对大小bbox采取相同的error也是个问题。
实测结果图
自带图
dog等其他任选
简单场景
西安国际汽车展charming于2017年摄于西安国际汽车展 西电花季开放日中等复杂
盆栽(potted plant)都可以, 当然花瓶是没有的
charms于2017年4月4日摄于青龙寺
复杂场景
注意下图中的包和伞都能检测出来:
人群密集的樱花祭
还有这个图,不是偶然
人群密集的樱花祭
恶劣环境
下面的环境有点恶劣,不过还不错,虽然漏了个车和路灯
xidianbeimen.png
失败例子
哈哈,画的画果然还是不行,难道画技太差,哈哈:
charming@简书 原创画作训练
预训练
准备训练样
使用darknet训练要求训练样本中,每个样本的名字以类名命名,这样darknet就知道当前图片属于哪一类,如对于 cifar10 数据集,含10类(labels.txt):
airplane
automobile
bird
cat
deer
dog
frog
horse
ship
truck
其训练样本名称示例如下:
cifar10工程目录示意微调
准备训练样本
训练样本标签文件信息如下:
<object-class> <x> <y> <width> <height>
<object-class> <x> <y> <width> <height>
...
对应于:
<类别标签数字> <物体中心水平方向坐标/宽度> <物体中心垂直方向坐标/高度> <物体区域宽度> <物体区域高度>
如对于 VOC2012
中的一幅飞机的图像,对应的训练样本标签信息如下:
0 0.578 0.474474474474 0.744 0.588588588589
其中,0
表示类别,0.578 0.474474474474
为中心坐标,0.744 0.588588588589
分别为宽度和高度,如下图所示:
训练配置
learning_rate=0.0001
max_batches = 3 # 训练代数 epoches
policy=steps
steps=1,2,3 # 每训练step,保存一次
scales=10,.1,.1
*final.weights
网友评论