最近实习用到了YOLOv3,该模型的论文写得很飘逸,网上也有很多不同版本的解读和实现,但是总觉得大家的观点都有点飘,不深刻。这里把遇到的问题和找到的解答逐个做一些记录。由于我这里代码主要是基于caffe的,所以重点不会放到Keras和PyTorch实现上,这两种版本的代码仅作参考。
本文发布时不是最终版本,后续会一边理解一边完善。

关于mask

https://blog.csdn.net/Julialove102123/article/details/79836975 :
Every layer has to know about all of the anchor boxes but is only predicting some subset of them. This could probably be named something better but the mask tells the layer which of the bounding boxes it is responsible for predicting. The first yolo layer predicts 6,7,8 because those are the largest boxes and it’s at the coarsest scale. The 2nd yolo layer predicts some smallers ones, etc.

The layer assumes if it isn’t passed a mask that it is responsible for all the bounding boxes, hence the ifstatement thing.

关于roi

论文和大部分blog都没有看到关于roi的介绍。然而代码中每层金字塔却给出了大小为200的roi,这里还需要再问问大佬。

补充:roi表示每张图最多拥有的目标数量,主要用于C/C++的数组申请和内存管理。

关于金字塔结构

关于loss

关于loss的形式,网上有一些基于BCE loss和MSE loss的分歧,见:
https://stackoverflow.com/questions/55395205/what-is-the-loss-function-of-yolov3
根据darknet代码和类似的caffe代码,采用sigmoid-1的形式传递梯度。
https://github.com/AlexeyAB/darknet/issues/1695#issuecomment-426016524
https://github.com/AlexeyAB/darknet/issues/1845#issuecomment-434079752
objness的loss计算见:
https://stats.stackexchange.com/questions/373266/yolo-v3-loss-function

关于预测输出

每个anchor中的输出主要包含x, y, h, w, objness, classes, 具体见:
https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/
这位小哥基于PyTorch实现了YOLO3并用一个系列的博客详细介绍了推理过程,可惜没有介绍训练过程(尤其是loss),太遗憾了。

some refs

https://blog.csdn.net/weixin_42078618/article/details/85005428
https://blog.csdn.net/weixin_42078618/article/details/87787919

YOLO3的一些理解相关推荐

  1. yolo-v2 v3实现笔记 mAP:mean average precision 平均精度均值

    mAP计算参考这里:目标检测的评估指标mAP的那些事儿 相关概念:机器学习中 True Positives(真正例TP).False Positives(假正例FP).True Negatives(真 ...

  2. darknet53 作用_YOLOv3 深入理解

    YOLOv3没有太多的创新,主要是借鉴一些好的方案融合到YOLO里面.不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力. 本文主要讲v3的改进,由于是以v1和 ...

  3. 文档智能理解:通用文档预训练模型与数据集

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很 ...

  4. 简明扼要理解YOLO v3

    YOLO 系列目标检测算法在目标检测史上的具有里程碑式的意义,网上YOLO系列的文章也是数不胜数,今天我就结合几个比较好的文章以及我自己的理解,简明扼要记录一下YOLO的经典版本YOLO v3,虽然现 ...

  5. yolo3各部分代码(超详细)

    0.摘要 最近一段时间在学习yolo3,看了很多博客,理解了一些理论知识,但是学起来还是有些吃力,之后看了源码,才有了更进一步的理解.在这里,我不在赘述网络方面的代码,网络方面的代码比较容易理解,下面 ...

  6. 【Yolo3】入门目标检测实验--Python+Opencv2+dnn

    文章目录 一.前言 二.入门实验coco数据集 1.下载 2.食用 3.源码 一.前言 yolo3也是目标检测的新兴算法之一.它的发展是基于HOG->CNN ->RCNN->YOLO ...

  7. 理解yolov3的anchor、置信度

    在网络最后的输出中,对于每个grid cell(网格单元)产生3个bounding box,每个bounding box的输出有三类参数:一个是对象的box参数,一共是四个值,即box的中心点坐标(x ...

  8. 从零深入理解Yolo系列理论v1-v8 + 目标检测面试提问

    目标检测-Yolo系列发展 先验框/锚框/候选框 Anchor机制 Anchors Base原理 Anchors Free原理 YOLO v1 Yolov1网络结构 Yolov1实现方法 Yolov1 ...

  9. 用YOLO3进行人民币编码的定位与切割

    用YOLO3进行人民币编码的定位与切割 背景介绍 数据的预处理 训练模型 编码识别,坐标点的处理和保存 编码切割 背景介绍 来自于TinyMind的一个计算机视觉的比赛,已经过去有一段时间了,不过官方 ...

  10. YOLOv3论文全文完整理解翻译

    前言 由于毕业需要翻译一篇英文文献.理所当然,我选择了这篇简短的YOLOv3.不得不说翻译这篇文章是一件很愉快的事,因为作者的确是很可爱.前后花了一天多的时间吧,毕竟水平有限,借助了谷歌翻译,也参考了 ...

最新文章

  1. nginx和squid配合搭建的web服务器前端系统
  2. wpf每隔一小时_包河区徐河排涝站24小时不间断运作 11座区管泵站全面应战保安澜...
  3. RHCS集群理论暨 最佳实践
  4. linux文件目录详细介绍
  5. 在mysql中会话变量前面的字符是什么_在MySQL中仅使用会话变量仅对字符的首次出现执行搜索/替换...
  6. 排序算法 之四 分类、时间/空间复杂度、如何选择
  7. webug3.0下载环境搭建使用
  8. C语言 linux环境基于socket的简易即时通信程序
  9. 【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例
  10. Session 实现、配置与使用详解
  11. mysql instead of触发_Instead of触发器
  12. [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
  13. 数据结构(C语言)——电话号码查询系统实现
  14. css 设置层级关系,css层级关系怎么设置
  15. 如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)
  16. 这三个自媒体平台,你都了解嘛?
  17. 罗技 android蓝牙键盘,用上罗技K380 Multi-Device蓝牙键盘 我1分钟内就学会了分身术...
  18. GDOC CEO Musk Shing出席“链接未来”区块链全球人才交流会
  19. BZOJ 2448: 挖油
  20. 玩转Google开源C++单元测试框架

热门文章

  1. 总结Learning Efficient Single-stage Pedestrian Detectors by Asymptotic Localization Fitting
  2. 大气压力换算公式_大气压换算公式(大气压与温度换算公式)
  3. Auto.js微信抢红包脚本
  4. 酉矩阵和次酉矩阵的定义
  5. HTML 中获取现在时间,实时时间获取
  6. 像电影里黑客高手一样写代码
  7. 专业PE优盘启动制作工具 - 优启通
  8. html圆圈里面有歌词,html5+js带滚动歌词的音乐播放器(同时支持列表,json) | 小灰灰博客...
  9. oem13c安装参考
  10. [fsevents@^1.2.2] optional install error: Package require os(darwin) not compatible with your platfo