目标检测踩坑指南
事情是这样的。。。最近摸鱼时,,咳咳,, 干活时踩了一点点坑。直入主题,在anchor_based的目标检测中,正确使用合适的anchor会给网络性能带来很大程度的提升。
gt_box是否要经过变换?怎么变换?
一般在目标检测中,假设原始图像为(1280, 720), 而网络的输入为(640,640), 那么需要将图像resize。
- 当得到图像的真实box时,一般都需要将box压缩到0-1的网格中,即进行归一化处理。
- 如果直接resize, 那么长宽压缩比例不同,真实box也要按照相同的比例进行修改。
- 如果长宽要按照相同的比例进行压缩,那么真实box除了按照不同的比例变换外,位置也要有上下的移动。
如果获取anchor?
yolov3的anchor获取
利用上述的方式获得所有的box之后,即[width, height],其中width和height都介于0-1之间, 利用聚类算法获取9个anchor,
- 当有了宽高之后,box的左上角值为(0,0), 宽高值即为box右下角的xy值,这样一个[width,height]也就对应一个box。
- 两个box的距离为1-iou(box1, box2)
- 给定聚类数目,当聚类中心不再变化/达到一定聚类次数时,聚类结束。
yolov5的anchor获取
在yolov5中获取anchor的方式更加成熟,是利用k_means + 遗传变异的方法获取anchor。
anchor使用原理?
假如网络的输入为(640, 640),那么三个featue map的大小分别为(20,20),(40,40),(80,80)。
- 最小的网格需要使用最大的感受野,对应地,要使用最大的三个anchor,这三个anchor在应用时也要除以相同的尺度32。
- 最大的网格(80,80)需要使用较小的三个anchor,对应地,这三个anchor在应用时要处理相同的尺度8.
版权声明:本文为CSDN博主「不不加辣椒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38308028/article/details/122549884
暂无评论