【Datawhale AI 夏令营2024--CV】Task2 阅读小结与尝试

一、阅读小结

        yolo不仅要识别物体的种类还要识别物体的位置

1.1、物体检测介绍:

1.输入:照片

可以利用opencv来提取照片的每一帧,在循环下对视频中每一帧的照片进行处理

    cap = cv2.VideoCapture(video_path)
    while True:
        ret, frame = cap.read()
        if not ret:
            break

2.特征提取:利用深度学习模型对图片进行特征提取

我的理解就是先对整个照片进行特征处理,然后在这个基础上在对图片进行处理

3.候选区域生成:在监测算法中基于区域的卷积神经网络来找到候选区域

就是在步骤二上找到可能的区域

4.区域分类和边界框回归:就是判断步骤三中候选的区域中有没有需要的目标物体,然后再预测周围的边界框应该就是bbox

5.非极大值抑制(NMS):就是在众多的边界框中找到最合适的边界框

1.1.1、图片演示:

以下是我对上面的理解:

1.2、物体检测算法

One-Stage模型:通过baseline得知改模型是直接从照片上找到物体内别和位置,没有上面的候选区域,优点就是快但是不准确

Two-Stage模型:这个就是先有候选区域,然后再选择最佳的区域。精确度高但是慢

One-Stage模型通常在单个卷积网络中同时预测类别和位置,而Two-Stage模型则将检测任务分解为两个阶段:区域提议和候选区域的分类与定位。One-Stage模型因为省略了区域提议步骤,所以能够实现更快的检测速度,但这可能会以牺牲一些精度为代价。相比之下,Two-Stage模型通过两步过程提高了检测的准确性,但同时也增加了计算的复杂性和时间消耗 。

1.3、YOLO 

        yolo是一种流行的实时目标检测算法,能直接从图像得到边界框坐标和类别概率的映射,以非常快的速度进行目标检测。

  1. YOLO算法的一个显著特点是它在单个网络评估中同时预测多个边界框和类别概率,而不是像传统的滑动窗口方法那样多次评估。

  2. YOLO使用一个卷积神经网络(CNN)来提取图像特征,然后使用这些特征来预测边界框和类别概率。YOLO的网络结构通常包括多个卷积层和池化层。

  3. YOLO为每个边界框预测一个置信度,这个置信度反映了边界框包含目标的概率以及预测的类别。置信度的计算公式是:Pr(Object) * IOU(pred, truth),其中Pr(Object)表示格子中存在目标的概率,IOU(pred, truth)表示预测框和真实框的交并比。

1.3.1、YOLO 数据集格式

        使用.txt文件图像的标注信息。文件中写入物体的类别索引和边界

  1. 类别索引:每个物体的类别由一个整数索引表示,索引对应于预先定义的类别列表。

  2. 边界框坐标:边界框由其中心点坐标(x_center, y_center)和宽度width、高度height组成。这些值通常是归一化到图像宽度和高度的比例值,范围在0到1之间。

  3. 坐标格式:边界框坐标通常按照[class_index x_center y_center width height]的格式记录,其中class_index是类别索引,x_centery_center是边界框中心点的x和y坐标,widthheight是边界框的宽度和高度

    class_index  x_center          y_center                        width                               height 

 

在YOLO的训练过程中,这样的配置文件允许用户轻松地指定数据集的位置和类别信息,从而无需硬编码在训练脚本中。具体来说,这段配置的含义如下:

  • path: 指定了数据集的根目录路径,即所有数据子文件夹的上级目录。这里的路径是相对于当前配置文件的路径或者相对于执行训练脚本的工作目录。

  • train: 定义了训练集图像的相对路径。在训练模型时,程序会在指定的路径下查找图像文件。

  • val: 定义了验证集图像的相对路径。验证集用于在训练过程中评估模型性能,避免过拟合。

  • nc: 表示类别的数量,这里设置为2,意味着数据集中有两类物体需要被识别。

  • names: 是一个列表,包含了每个类别的名称。这里有两个类别,名称分别是"0"和"1"。这些名称在训练和测试过程中用于引用特定的类别。

二、尝试

 在第一次的学习中我就扩大的数据集,训练集用了30个测试集用了10个,得到了0.2630537765973234的分数。

但是在后期不管是换模型还是筛选数据集或者调整batch以及epochs效果都不理想,

只有使用yolon8的模型把batch调到32,分数才突破0.2,但是效果还是yolon8batch为16的效果更好一点,我觉得应该是其他模型太复杂了。因为我用其他模型训练的时候,最后最好的权重始终是第一个。或许应该还是要在yolon8上找到合适的参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值