目标检测--YOLO_v1

废话

  这是一篇关于目标检测算法的新坑,参考资料都在文末,大佬已经写得很清楚,但是我学会了,我就要自己总结一遍,要不然怎么证明我会了捏!
再说了,没准同类小白就喜欢看我写的呢,毕竟小白之间的交流更加无障碍!为了普天之下的小白们,冲冲冲!!!

文章:《You Only Look Once: Unified, Real-Time Object Detection》 戳我.

作者是已经退出计算机视觉研究的Joseph Redmon,我也想退出啊~喂(醒醒,不搬砖谁养你,周星驰吗?)

开始正文

  首先文中带言,YOLO的特点是重定义目标检测问题,把分类问题变成回归问题,用端到端的方式训练了一个目标检测模型。

之前的目标检测方法流程大致是:滑动窗口得到候选区–对类别进行分类预测–然后一些后处理去冗余得到最终结果。(细节的请参见本专题下的其他博客,嗯,我还没写,有空会写emmm~~ 手动狗头)

YOLO正如他的标题一样,你不需要耦合多个阶段方法,只需要输入一张图片,一切搞定!

But How??


在这里插入图片描述

input: 一张作者家的狗的图片

  1. 给它划分网格,划分成S*S个(此处S = 7)
  2. 用这七七四十九个网格,每个网格去预测B(B=2)个Bbox,每个Bbox的信息包括位置信息(x,y,w,h),和一个confidence(置信度)信息(蕴含了所预测的box中含有object的置信度和这个box预测的有多准两重信息): P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU_{pred}^{truth} Pr(Object)IOUpredtruth
  3. 同时这七七四十九个网格,每一个将预测一个类别信息(一共有几类就有几个数,分类任务都学过哈)

output: S ∗ S ∗ B ∗ ( 4 + 1 ) + S ∗ S ∗ C S*S*B*(4+1)+S*S*C SSB4+1+SSC 文中一共20类因此输出 7 ∗ 7 ∗ 30 7*7*30 7730维的Tensor

具体流程

Test:打格子 — 得到输出Tensor — 按照下式计算置信度得分 — 按照阈值淘汰一批,最后去冗余


在这里插入图片描述

Train:打格子 — 得到输出Tensor — 计算损失函数


在这里插入图片描述

  由于有真值,我们知道要预测的狗子的中心点落在一个网格里,那么这个网格所预测的两个box就负责检测这个狗子,我们取两个box里与真值IOU较大的那个( 7 ∗ 7 ∗ 30 7*7*30 7730维的Tensor中找到对应网格的30维信息,这里有4维是位置信息,去计算IOU,然后找到两个中负责预测狗子的那个box),用它的(x,y,w,h)来计算损失函数的坐标预测。

  注意:相对于大box,我们应该让小box对偏移更敏感,直观地,同样是偏移5可能对于大box几乎可以忽略,但是对于小box几乎是致命的,因此这里对于w,h计算的是平方根,根据函数图像(图),我们知道w,h较小的时候 w 与 h \sqrt w与\sqrt h w h 对于x轴的偏差越敏感。


在这里插入图片描述

  中间两项分别计算包含和不包含object的框置信度预测,(计算不包含object的置信度可以防止背景的误检?)对应计算方法如下:

在这里插入图片描述

  最后一项是对类别预测的损失,因为每一个网格预测一个类别因此这里前面要判断一下该网格是否负责物体预测,是则为1,不是就是0。

权重是为了平衡20维的类别信息与8维的位置信息带来的影响

  综上,就是YOLO_v1的全部过程,如果有问题可以评论或留言,我们一起学习~~

参考:
https://zhuanlan.zhihu.com/p/362758477
b站同济子豪兄的视频–还有论文精读,不要太良心哦~~

### 解决Spyglass无法打开的问题 当遇到Spyglass无法正常启动的情况时,可以尝试以下几个方法来解决问题。 对于`feature could not be checked out`错误,解决方案涉及更新授权文件。具体操作是在命令行环境中使用最新的`Synopsys.dat`文件替换原有虚拟机中的同名文件[^1]: ```bash cp /path/to/new/Synopsys.dat /original/path/ ``` 之后再次尝试通过命令行启动Spyglass: ```bash spyglass ``` 如果收到 `[Error] Another session is already running or previous run had some issues` 的提示,则表明当前工作目录下存在正在运行的vc_spyglass实例或者是上次执行过程中出现了未处理的问题。此时应该先终止任何已存在的Spyglass进程,或者切换到其他路径重新开始会话[^2]: ```bash ps aux | grep spyglass # 查找并结束所有相关进程 kill -9 PID # 使用找到的PID号杀死特定进程 cd /new/directory # 或者简单地改变当前的工作目录 spyglass # 尝试重启工具 ``` 另外,在某些场景下,移除批处理模式参数也可以帮助排除因自动化脚本引起的异常情况。例如修改启动指令如下所示[^4]: ```bash spyglass –project training.prj –goals cdc/cdc_setup & ``` 尽管Lint检查并非总是必要的,但在开发流程中保持良好的实践习惯有助于提前发现潜在风险,减少后期维护成本。因此建议尽可能修复所有的警告信息而不是依赖于偶然性的成功编译结果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值