零碎知识点

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论文解读看过的博客:

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讲解视频(讲的非常详细):

科科带你学的个人空间_哔哩哔哩_Bilibili

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的网络架构有了了解(还需反复);

科科带你学的个人空间_哔哩哔哩_Bilibili

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一维数组和向量之间相互转换

python把一维数组转化为列向量_51CTO博客


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博客

论文翻译:Deep SORT: Simple Online and Realtime Tracking with a Deep Association Metric_计算机视觉-Archer的博客-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源码解读


语义:

什么是语义?_人机与认知实验室的博客-CSDN博客


FPN:

深度学习中的FPN详解_tt丫的博客-CSDN博客_fpn

Q1:卷积网络中,深层网络容易响应语义特征,浅层网络容易响应图像特征。

Q2:对原始图像进行卷积和池化操作来获得不同尺寸的feature map


目标检测基础知识:

卷积:如果直接把原图像的全部信息输入网络中,那么冗余信息非常之多并且计算量会非常大,因此利用卷积可以减少冗余信息并且提取必要的特征。不同的卷积核可以提取不同的特征。

池化:卷积操作会降低一定的信息冗余,但是相邻像素点的像素值信息会非常接近。池化操作就进一步解决了信息冗余的问题,通过减小输入的大小降低输出值的数量,通常有最大值、最小值或平均值池化。

Padding:在卷积处理时,输出图像会与输入图像的大小不符,Padding通过在图像周围添加零使输入、输出图像大小相同。

感受野:卷积神经网络(CNN)中每层的卷积特征图(feature map)上的像素点在原始图像中映射的区域大小,也就相当于高层的特征图中的像素点受原图多大区域的影响。

目标检测基础知识:卷积、池化、填充、采样、RPN、FPN-爱码网

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值