1.YOLOv5s的网络中,Conv层用于特征提取;SPPF层通过多次池化进行特征提取;C3层的作用和是减小计算量,加快模型推理速度。
2.Region Proposal(候选区域):是一个区域,Bounding Box是这个区域的四条边,这四条边是用一个四维向量(也就是下面的(x,y,w,h))表示
bbox(Bounding Box):bbox是包含物体的最小矩形,检测目标应在最小矩形内部。
物体检测中关于物体位置的信息输出是一组(x,y,w,h)数据,其中x,y代表着bbox的左上角(或者其他固定点,可自定义),对应的w,h表示bbox的宽和高;一组(x,y,w,h)可以唯一的确定一个定位框。
3.IoU:物理含义为两块区域面积的交集除以两块区域面积的并集,是评价两块区域重合度的指标。
在训练网路的时候,通过依据候选区域和标定区域的IoU值确定正负样本。
4.ground truth:检测目标的真实位置(正样本)。
5.fine-tuning:这种方法也是当数据量不够的时候,常用的一种训练方式,即先用别的数据库训练网络,然后再用自己的数据库微调训练
6.关于R-CNN论文解读看过的博客:
RCNN目标检测算法内容详解(依托论文讲解)_小馨馨的小翟的博客-CSDN博客_rcnn论文下载
深度学习(十八)基于R-CNN的物体检测_hjimce的博客-CSDN博客
【深度学习】R-CNN 论文解读及个人理解_frank909的博客-CSDN博客_rcnn
目标检测:R-CNN学习笔记_SunshineSki的博客-CSDN博客
R-CNN论文翻译(更便于理解):
R-CNN论文详解(论文翻译)_目标检测_v1_vivian-DevPress官方社区
R-CNN讲解视频(讲的非常详细):
7.SVM只能做二分类问题。
8.迁移学习:基于yolov5s.pt训练自己的权重模型就属于迁移学习。
9.图片分类和物体检测的区别:图片分类不需要定位,而物体检测需要定位出物体的位置,也就是相当于把物体的bbox检测出来;还有一点物体检测是要把所有图片中的物体都识别定位出来。
10.关于Anchor看过的博客
region proposal_wanghua609的博客-CSDN博客_proposal region
机器视觉目标检测补习贴之R-CNN系列 --- R-CNN, Fast R-CNN, Faster R-CNN | David 9的博客 --- 不怕"过拟合"
【个人整理】faster-RCNN的关键点(区域推荐网络RPN)详解_LoveMIss-Y的博客-CSDN博客
11.CNN的主要表达力来自于卷积层,而不是全连接层。
12.吴恩达编程作业大全:https://hekuan.blog.csdn.net/article/details/79827273
13.YOLOv5+Deepsort:YOLOv5+DeepSort多目标跟踪教程_爱学习的王同学#的博客-CSDN博客_yolov5+deepsort
14.QT中添加Eigen矩阵函数库参考文章:
Qt下Eigen矩阵函数库的添加_霉小脑的博客-CSDN博客_qt 矩阵运算
Eigen在Qt中的配置(博主亲测)_罗伯特祥的博客-CSDN博客_qt eigen
Eigen下载网址:Eigen
最初在.pro文件中添加命令为:
INCLUDEPATH+=F:\C++_test\WuEnDa_first_week\eigen_3_3_8\Eigen
在main.cpp中一直找不到Eigen文件
将上述添加命令改为:
INCLUDEPATH +=C:\Users\USER\Desktop\eigen_3_3_8\Eigen
成功了,目前怀疑是里面的+可能是中文的+
15.QT C++快捷指令:
注释与取消:Ctrl+/
整体左移:Shift+Tab
整体右移:Tab
截止2022/11/13完成的工作:
1.b站吴恩达深度学习视频P24;自己梳理了公式的推导过程并完成了第一次编程作业;
第一周编程作业C++版本:吴恩达神经网络作业 c++测试版本 eigen矩阵运算库_治治来啦的博客-CSDN博客
2.深入阅读理解R-CNN论文;
3.阅读了王锐师兄的毕业论文;
4.深入理解了yolov5的detect.py,train.py,yolov5s.yaml;对yolov5的网络架构有了了解(还需反复);
5.初步掌握了配置目标检测、追踪的实验环境以及在环境中安装所需要的各种包
16.力扣刷题指南(希望能做到每天一道题,锻炼编程思维)
最高效力扣刷题攻略,没有之一_Cool很酷的博客-CSDN博客_力扣怎么刷
刷leetcode不知道从哪里刷起?? 来看看,我把刷题题目顺序都排好了,每道题还带详细题解!_代码随想录的博客-CSDN博客
截止到2022/11/14学习任务梳理:
1.Fast-RCNN、Faster-RCNN、YOLO系列、sort、Deepsort论文阅读(深入理解代码YOLOv5、Deepsort);
2.吴恩达深度学习课程(课后题使用python完全实现和C++尝试实现);
3.每天一道力扣题目,使用C++完成,锻炼思维;
1.pyhton一维数组和向量之间相互转换
Sort算法论文翻译and解读
卡尔曼滤波器和匈牙利方法,分别处理跟踪问题的运动预测和数据关联组件
检测质量对跟踪性能产生重大影响
【论文翻译】SORT:SIMPLE ONLINE AND REALTIME TRACKING_望天边星宿的博客-CSDN博客
SORT论文翻译及批注(SIMPLE ONLINE AND REALTIME TRACKING)_alex1801的博客-CSDN博客
SORT和DeepSORT论文阅读理解及代码解析_Geek L的博客-CSDN博客
sort论文和代码解读_weixin_34198583的博客-CSDN博客
BoT-SORT 论文笔记及思考_mumuxi_c的博客-CSDN博客
DeepSort算法论文翻译and解读
最详细DeepSort论文解读_大写的ZDQ的博客-CSDN博客_deepsort论文解读
【多目标追踪算法】Deepsort算法核心---卡尔曼滤波与匈牙利算法_三木今天学习了嘛的博客-CSDN博客
上采样/下采样
上采样、下采样到底是什么?_ZhiBing_Ding的博客-CSDN博客_上采样是什么
上采样(upsampling)和下采样(subsampled)_南淮北安的博客-CSDN博客_上采样的作用
端到端
端到端(end-to-end)的含义_lxy_Alex的博客-CSDN博客_端到端
Anaconda里查看pytorch环境安装torch版本以及torch环境GPU能不能使用代码测试_king 开龙wu的博客-CSDN博客_anaconda查看pytorch的版本
Previous PyTorch Versions | PyTorch
PyTorch和CUDA版本对应关系 - 墨莲玦 - 博客园
scikit-learn 还未解决(2022/11/26已解决)
在跑wr师兄代码的时候,第一个错误如下所示:
No moudle named 'sklearn.utils.linear_assignment_'
解决方案:将linear_assignment.py中的
from sklearn.utils.linear_assignment_ import linear_assignment
修改成:
from scipy.optimize import linear_sum_assignment as linear_assignment
再运行后遇见的第二个错误:
python-TypeError: list indices must be integers or slices, not tuple
师兄经验是scikit-learn包的版本过高,有博客也说出的同样的问题,所以我们要干什么:降版本!
python 报错 TypeError: tuple indices must be integers or slices, not tuple_小小的学徒的博客-CSDN博客
ModuleNotFoundError: No module named ´sklearn.utils.linear_assignment_´_anshiquanshu的博客-CSDN博客
解决Python导入linear_assignment报错_iszhaoha的博客-CSDN博客_linear_assignment
(1)在python=3.8的环境中我尝试安装scikit-learn=0.19.2 or 0.22(师兄以及有人分别安装这两个版本解决了问题)——安装失败(失败原因可能是scikit-learn的版本与python的版本不适配)
(2)在python=3.8的环境中我尝试安装scikit-learn的其他各种版本——安装成功但未解决问题(我考虑不一定非要0.19.2或者0.22,只要能找到和python=3.8适配的scikit-learn版本就可以)
(3)不得已,创建新环境python=3.7,在安装requirements.txt中的包时我发现文件中说明scikit-learn=0.19.2,我重新安装scikit-learn=0.19.2,安装命令在如下博客中——安装成功但未解决问题
pycharm中安装scikit-learn、scipy报错问题---【降低python版本】_lixin_tan的博客-CSDN博客_pycharm降低python版本
此时我想起博客中有说,scikit-learn的高版本对应:
from scipy.optimize import linear_sum_assignment as linear_assignment
低版本对应:
from sklearn.utils.linear_assignment_ import linear_assignment
(4)所以我将linear_assignment中的代码更换了回来——成功!!!!!!!!!!
利用Anaconda3安装torch 1.7.1和torchvision0.8.2(简洁版)_雨叒的博客-CSDN博客_在anaconda3中安装torch
总结:高版本的python与适配的scikit-learn或许也能行,但是需要更改linear_assignment.py中的代码,我不会改,也没有找到经验贴,希望以后能解决这个问题。
TypeError: tuple indices must be integers or slices, not tuple_努力的小胡同学的博客-CSDN博客
Anaconda创建、删除虚拟环境以及conda常用指令
Anaconda创建、删除虚拟环境以及conda常用指令_Looho_的博客-CSDN博客_anaconda删除虚拟环境
YOLOv5框架图(PS:不是我自己画的,是我截b站一个大佬的,侵权立删)
def _forward_once(self, x, profile=False, visualize=False):#x:输入图像
y, dt = [], [] # outputs
for m in self.model:
if m.f != -1: # if not from previous layer m.f=m.from
#取出对应层的结果,准备后面的进入对应m的forward()
# 这里需要做4个concat操作和1个Detect操作
# concat操作如m.f=[-1, 6] x就有两个元素,一个是上一层的输出,另一个是index=6的层的输出 再送到x=m(x)做concat操作
# Detect操作m.f=[17, 20, 23] x有三个元素,分别存放第17层第20层第23层的输出 再送到x=m(x)做Detect的forward
x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers
if profile:
self._profile_one_layer(m, x, dt)
x = m(x) # run 相当于执行模块中的forward() PS:去common.py文件中看一下
# 现在感觉这里的x是在每一层对图像进行卷积后得到的特征图 or 是将某几层得到的特征图进行拼接
# y.append(x)
y.append(x if m.i in self.save or m.i == 4 or m.i == 2 else None) # save output 每一层得到的特征图
if visualize:
feature_visualization(x, m.type, m.i, save_dir=visualize)
return x, self.conv_wr(torch.cat((self.Upsample_wr(y[17]), y[2]), 1))#这里返回的是最后detect层用到的特征图
理解这一段代码时参考的博客——还未完全理解,但是有进展了(截止到12.4)
【YOLOV5-5.x 源码解读】yolo.py_满船清梦压星河HK的博客-CSDN博客
从YOLOv5源码yolo.py详细介绍Yolov5的网络结构_HollowKnightZ的博客-CSDN博客_yolov5网络结构代码
YOLOv5的模型构建源码详解|CSDN创作打卡_tt丫的博客-CSDN博客_yolov5源码解读
语义:
FPN:
Q1:卷积网络中,深层网络容易响应语义特征,浅层网络容易响应图像特征。
Q2:对原始图像进行卷积和池化操作来获得不同尺寸的feature map
目标检测基础知识:
卷积:如果直接把原图像的全部信息输入网络中,那么冗余信息非常之多并且计算量会非常大,因此利用卷积可以减少冗余信息并且提取必要的特征。不同的卷积核可以提取不同的特征。
池化:卷积操作会降低一定的信息冗余,但是相邻像素点的像素值信息会非常接近。池化操作就进一步解决了信息冗余的问题,通过减小输入的大小降低输出值的数量,通常有最大值、最小值或平均值池化。
Padding:在卷积处理时,输出图像会与输入图像的大小不符,Padding通过在图像周围添加零使输入、输出图像大小相同。
感受野:卷积神经网络(CNN)中每层的卷积特征图(feature map)上的像素点在原始图像中映射的区域大小,也就相当于高层的特征图中的像素点受原图多大区域的影响。