YOLO吴恩达(0713)

anchor boxs
在一个格子中可以检测多个对象
example:
在这里插入图片描述
在上面的图片中,行人和汽车中点在同一个格子中。按照之前的8个向量输出,c1,c2,c3只能有一个为1,即只能判定这个格子中一个类别。那么对于有两个类别和对象的情况,就需要引入anchor boxs。
思路:预先预定两个不同形状的anchor box,把预测结果和这两个anchor box关联起来。一般来说可能用到更多的anchor box,这里只举例两个。定义类别标签时,需要将输出变量重复两次,第一组为anchor box的参数,这里box1的形状和行人的检测框相似,那么第一组的8个数据就为行人的标签数据。第二组的8个数据为汽车的标签数据
在这里插入图片描述在这里插入图片描述
总结:
原本:对于训练集图像中的每个对象,都根据那个对象中点位置,分配到对应的格子中,输出为3*3*8.
anchor boxs 算法:每个对象都和之前一样分配到同一格子中,分配到对象中点所在的格子中,但是它还被分配到一个和对象形状交并比最高的anchor box中。主要是一个对象不是分配给了一个格子中,而是一对格子中,所以这时候输出y就是3*3*16.anchor box的数量和y的维度大小是由对象类别决定的。

具体例子:对于上面的例子,如果在一个格子中有行人和汽车,那么 Y = [ 1 b x b y b h b w 1 0 0 1 b x b y b h b w 0 1 0 ] Y=\left[\begin{array}{l} 1 \\ b_{x} \\ b_{y} \\ b_{h} \\ b_{w} \\ 1 \\ 0 \\ 0 \\ 1\\ b_{x} \\ b_{y} \\ b_{h} \\ b_{w} \\ 0\\ 1 \\ 0 \end{array}\right] Y=1bxbybhbw1001bxbybhbw010,如果在一个格子中只有汽车,那么 Y = [ 0 x x x x x x x 1 b x b y b h b w 0 1 0 ] Y=\left[\begin{array}{l} 0\\ x \\ x\\ x\\ x \\ x \\ x\\ x\\ 1\\ b_{x} \\ b_{y} \\ b_{h} \\ b_{w} \\ 0\\ 1 \\ 0 \end{array}\right] Y=0xxxxxxx1bxbybhbw010,需要注意车的形状和box2的形状相似,所以在标签中在第二组中填入汽车相关数据,对于第一组数据,pc为0,其他数据为don‘t care。
正常情况下,在同一格子中出现两个或两个以上对象的情况较少,尤其是在使用更加细致的网格进行划分的时候。使用anchor boxs 算法的好处在于,它可以让你的算法更具有针对性,特别是在数据集有一些很高很瘦的对象(行人)和很宽的对象(汽车)。这样算法可以更有针对性的处理。部分输出单元就可以针对检测有一类特征的对象。
一般anchor box的形状由人工设定,5到10个形状就可以包含所检测对象的所有形状。但是在后面yolo算法中,一般使用K-means算法,可以将两类形状聚类,选择最具代表性的一组anchor boxs

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值