anchor box聚类
fast rcnn和rfcn中使用的都是默认的anchor box设置,都是9种,比例为0.5 、1、 2,大小为128、256、512。但我的数据集的gt框更小,需要找到适合我的数据集的anchor box尺寸。
yolo9000提出了用kmeans聚类算法来找到合适的anchor box尺寸。
这篇博客介绍了yolo9000是怎么实现的:http://blog.csdn.net/hrsstudy/article/details/71173305?utm_source=itdadao&utm_medium=referral。
源代码:https://github.com/PaulChongPeng/darknet/blob/master/tools/k_means_yolo.py,这个代码库里还有整个yolo9000的代码中文解释,很好,可以拿来学习。
label_path = "/raid/pengchong_data/Data/Lists/paul_train.txt"将这个改成你自己数据的地址,就可以跑这个脚本。
跑这个脚本,需要把gt框从左上右下坐标转换成中心点、宽度、高度的格式,实际上也只用到了宽度和高度。
我使用的是将原始宽度高度除以了图片的宽度高度,因为我觉得这样可以保证他们在同一个分布
如果宽度高度直接是原始的宽度高度,grid_size就设置为1;如果是相对于原图像的大小,grid_size就设置为相应比例,两个比例:960、600。
实际上,跑的过程中发现,loss只在前几个迭代期减小,后面loss就一直增大了。无论是用原始的宽高度,还是用的相对于原图像的宽高度,都出现了这种现象。最后我选择了让loss降最低的那几个坐标为最后的结果。
跑的过程中还发现,随着k值的增加,loss是在减少的,但对于单个k值,loss还是先降低后升高。
最终我选择了k为9,这与rfcn中9个anchor是对应的。
得到9个坐标分别是:(18,17)、(26,25)、(42,27)、(49,40)、(67,66)、(86,39)、(119,80)、(182,155)、(323,281)
这9个坐标表示的是9种长宽,不是中心点。因为scale,ratio最终求的就是w和h
采用了两种方式进行anchor box的改变:
1.将scals从(8,16,32)改成(1,2,4,8,16),这种得到的ap为0.8435
2.
anchors = np.vstack([_scale_enum(ratio_anchors[i, :], scales)
for i in xrange(ratio_anchors.shape[0])])
直接在这段代码后面添加anchors = 得到的那9个坐标,当然需要将9个坐标相应变换
比如(18,17)就改成(-1.5,-1,16.5,16)
这种得到的ap为0.8442
当然,修改anchor box还要改一些代码,需要修改哪些文件,直接搜索整个工程文件哪些引用了generate_anchors这个函数的就可以了
除此之外,还需要修改train、test的porotxt
可以参考这个博客:http://www.cnblogs.com/whu-zeng/p/7517480.html
anchor box聚类的更多相关文章
- 聚类kmeans算法在yolov3中的应用
yolov3 kmeans yolov3在做boundingbox预测的时候,用到了anchor boxes.这个anchors的含义即最有可能的object的width,height.事先通过聚类得 ...
- 目标检测 1 : 目标检测中的Anchor详解
咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目 ...
- 【57】目标检测之Anchor Boxes
Anchor Boxes 到目前为止,对象检测中存在的一个问题是每个格子只能检测出一个对象,如果你想让一个格子检测出多个对象,你可以这么做,就是使用anchor box这个概念. 我们还是先吃一颗栗子 ...
- 目标检测中的anchor-based 和anchor free
目标检测中的anchor-based 和anchor free 1. anchor-free 和 anchor-based 区别 深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题.在 ...
- 目标检测 anchor 理解笔记
anchor在计算机视觉中有锚点或锚框,目标检测中常出现的anchor box是锚框,表示固定的参考框. 目标检测的任务: 在哪里有东西 难点: 目标的类别不确定.数量不确定.位置不确定.尺度不确定 ...
- [DeeplearningAI笔记]卷积神经网络3.6-3.9交并比/非极大值抑制/Anchor boxes/YOLO算法
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.6交并比intersection over union 交并比函数(loU)可以用来评价对象检测算法,可以被用来进一步改善对 ...
- Anchor Boxes示例实战
Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...
- 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...
- paper 111:图像分类物体目标检测 from RCNN to YOLO
参考列表 Selective Search for Object Recognition Selective Search for Object Recognition(菜菜鸟小Q的专栏) Selec ...
随机推荐
- linux下离线安装svn服务器并配置
一.下载相应的包 subversion-1.8.18.tar.gz 下载地址:http://subversion.apache.orgsqlite-autoconf-3190300.tar.gz ...
- Ubuntu SDL lib 安装
/******************************************************************** * Ubuntu SDL lib 安装 * 说明: * 今天 ...
- Ural2102:Michael and Cryptography(数论&素数)
The hacker Michael develops breakthrough password manager, which is called KEK (Keeper of Encrypted ...
- Python进程间通信Queue
1.Queue使用方法: Queue.qsize():返回当前队列包含的消息数量: Queue.empty():如果队列为空,返回True,反之False : Queue.full():如果队列满了, ...
- Django之django-redis对数据进行简单缓存
最近公司老大抱怨,产品某部分内容访问速度奇慢无比,由于是之前接手的别人的代码,不太清楚业务的具体逻辑,不过,经过查看,内容为无需实时更新的内容,so 直接上缓存. 什么是缓存? 对于后端来说,要做的 ...
- 无参数的lambda匿名函数
lambda 语法: lambda [arg1[,arg2,arg3....argN]]:expression 1.单个参数的: g = lambda x:x*2 print g(3) 结果是6 2. ...
- EF通过反射追踪修改记录.适合记录变更系统
private static void IsUpdate<T>(T old, T current, string id) { Model.PerFileHistory history = ...
- 【179】IDL 读写 NetCDF 文件
NetCDF(network Common Data Form)由位于科罗拉多州波尔市的 Unidata 程序中心开发,主要应用于大气科学的研究.NetCDF 的数据模式具有简单性和灵活性的特点.Ne ...
- form表单提交的几种方法
form表单提交的几种方法 <form id="myform" name="myform" method="post" onsubmi ...
- thinkphp 中 dump 函数调试数组时显示不全解决方法
在php.ini里的 xdebug 节点中,加入如下 xdebug.var_display_max_children=128 #子级节点最多显示的的字符数xdebug.var_display_max_ ...