[YOLO] yolov3 博客笔记汇总(自用

pip下载速度太慢,国内镜像:

国内镜像解决pip下载太慢https://blog.csdn.net/weixin_51995286/article/details/113972534

在线卷积计算器:

在线卷积计算器http://www.sqflash.com/cal.html

网络学习

IOU:

机器学习知识总结 —— 11. 关于目标检测中的IoU是什么https://blog.csdn.net/poisonchry/article/details/122134314?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167776186916800188539960%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167776186916800188539960&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-122134314-null-null.142%5Ev73%5Einsert_down2,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=IOU&spm=1018.2226.3001.4187

 YOLO v3 网络结构计算和解析

YOLOv3网络结构和解析https://blog.csdn.net/dz4543/article/details/90049377yolov3网络结构https://blog.csdn.net/qq_37602161/article/details/120187810?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167764072716800225552255%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167764072716800225552255&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-120187810-null-null.142%5Ev73%5Einsert_down2,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=yolov3%20%E7%BD%91%E7%BB%9C%E7%BB%93%E6%9E%84%E8%AE%B2%E8%A7%A3&spm=1018.2226.3001.4187

YOLO v3整体流程讲解(细节涉及较少)

YOLO V3整体流程https://blog.csdn.net/qq_43581224/article/details/118382593?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167757215116800215064768%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167757215116800215064768&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-118382593-null-null.142%5Ev73%5Einsert_down2,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=yolov3&spm=1018.2226.3001.4187

 YOLOV3 关于设置生成anchorbox,Boundingbox边框回归的过程解读

YOLO v2和V3 关于设置生成anchorbox,Boundingbox边框回归的个人理解https://blog.csdn.net/shenkunchang1877/article/details/105648111YOLOv3的anchor box的理解、计算以及训练的误差计算

【论文理解】理解yolov3的anchor、置信度和类别概率https://blog.csdn.net/weixin_43384257/article/details/100974776

思考1:一个grid cell有那么多的anchor box,那么预测时,bounding box是如何选择的?

该grid cell里的所有anchor box与检测物体的ground truth box进行IOU计算,选择最终IOU结果最大的那个anchor box

那么预测框bounding box就会以该anchor box作为回归偏移的基础。

 YOLO v3 损失函数的计算

【论文理解】yolov3损失函数https://blog.csdn.net/weixin_43384257/article/details/100986249?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167765259416800215084471%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167765259416800215084471&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-100986249-null-null.142%5Ev73%5Einsert_down2,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=yolov3%20%E6%8D%9F%E5%A4%B1%E5%80%BC&spm=1018.2226.3001.4187

YOLO v1网络结构计算

Yolov1-pytorch版 论文、原理及代码实现https://blog.csdn.net/wjytbest/article/details/116116966CNN中feature map、卷积核、卷积核个数、filter、channel的解读

CNN中feature map、卷积核、卷积核个数、filter、channelhttps://blog.csdn.net/xiewenbo/article/details/96509195

代码学习参考

Github代码学习文章:

睿智的目标检测26——Pytorch搭建yolo3目标检测平台https://blog.csdn.net/weixin_44791964/article/details/105310627以及该作者的b站视频:

Pytorch 搭建自己的YOLO3目标检测平台(Bubbliiiing 深度学习 教程)https://www.bilibili.com/video/BV1Hp4y1y788?p=7&vd_source=65c9204c97b8b1867c1d577ee29c3fc1

Darknet53部分:

【YOLOv3 net】YOLOv3网络结构及代码详解https://blog.csdn.net/weixin_45377629/article/details/124080087

博主的nets目录下的darknet.py代码对应的就是实现下图红框里的内容:

 整体的代码还是比较容易理解的

 通过提取出来的特征获得预测结果:

博主的nets目录下的yolo.py代码对应的就是实现下图红框里的内容:

 

 对先验框进行调整(对先验框进行调整的过程叫做解码):

对应的是博主utils文件夹下的utils_bbox.py文件

该文件下的DecodeBox()一次只能对一个特征层进行解码,因此对三个特征层解码的话就需要三次调用该函数。

【YOLOv3 decode】YOLOv3中解码理解decode_boxhttps://blog.csdn.net/weixin_45377629/article/details/124144913

预测过程(非极大抑制NMS)详解:

对应的是博主utils文件夹下的utils_bbox.py文件里的non_max_suppression函数

速览过程:

预测结果prediction,其shape为 torch.size([batch_size, num_anchors, 5 + num_classes])

其中num_anchors就是所有的预测框:

大小为(13x13+26x26+52x52)x3=10647

prediction是有batchsize维度的。

而image_pred为预测结果信息,shape: torch.size([10647,25])

image_pred[[左上x, 左上y, 右下x, 右下y, 先验框是否包含物体的置信度, 类别0, 类别1, ...], ...]

有了预测的结果,就需要对预测结果进行处理,

第一步确定每个预测框预测的结果,

也就是每个预测框在num_classes个类别(num_classes预测的类别数)里预测最好的那个种类

class_conf, class_pred的shape分别是:

class_conf(种类置信度):    torch.size([10647,1]):[num_anchors, 1]

class_pred(所属类别):   torch.size([10647,1]):[num_anchors, 1]

class_pred记录了10647个框的预测类别

class_conf就记录了其预测类别的概率。

第二步,通过置信度对预测框进行第一轮的筛选

简单来说就是把低于置信度阈值的框筛掉。

当然真正的置信度是image_pred第4列预测分数(框内是否有物体)

和 class_conf第0列(class_conf只有一列)种类置信度得分 相乘

得到置信度分数,和设定的阈值进行比较。

筛选完了之后就只剩下几十个框

这里以筛选最后为29个为例:

 conf_mask shape: torch.size([29,25]) 第一轮筛选后的29个预测框以及其框的信息

 class_conf shape: torch.size([29,1]) 前面已经介绍过了,这里只剩下29个而已

 class_pred shape: torch.size([29,1]) 同理这里只被筛到了29个

最后一步就是通过非极大抑制NMS进行筛选:

简单来说:非极大抑制就是先筛选出一定区域内同一种类得分最大的框,

然后将其同种类的框进行交并比IOU的计算,如果交并比大于一定的阈值,那么就将其他同类的框给忽略掉。

具体细节可以继续看代码。

【YOLOv3 NMS】YOLOv3中的非极大值抑制https://blog.csdn.net/weixin_45377629/article/details/124202975?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167781247616800211550847%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167781247616800211550847&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-3-124202975-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=yolov3%E9%9D%9E%E6%9E%81%E5%A4%A7%E6%8A%91%E5%88%B6&spm=1018.2226.3001.4187

后面的训练和检测博主都讲的很清楚了。

博主写的常见问题也可以在这里有一定的解答:

神经网络学习小记录-番外篇——常见问题汇总https://blog.csdn.net/weixin_44791964/article/details/107517428?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167789808816800226535530%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167789808816800226535530&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-107517428-null-null.blog_rank_default&utm_term=%E8%B0%83%E7%94%A8%E8%A7%86%E9%A2%91%E6%A3%80%E6%B5%8B&spm=1018.2226.3001.4450YOLO v3暂时是初略地接触了一下。

 部分函数调用方法解析:

Pytorch中tensor.view().permute().contiguous()函数理解

 tensor索引[..., 0]

np.transpose()函数详解

np.expand_dims 小白详解

 torch.from_numpy(ndarray) 功能及举例

猜你喜欢

转载自blog.csdn.net/qq_51533157/article/details/129269706