【2022第十届‘泰迪杯’挑战赛】A题:害虫识别完整版(大致思路。详细过程和代码以及结果csv在压缩包中)

2023-11-01

【2022第十届‘泰迪杯’挑战赛】A题:害虫识别完整版(已有完整结果)

2022泰迪杯挑战赛A题害虫识别完整版(大致思路,详细过程和代码在压缩包中):

正式数据:

2022.04.06(正式数据)

提取码: u54n

写在前面:

完整版下载:

建议Chrome浏览器打开

下载地址

本套压缩包,包含了:

数据预处理代码、YOLO害虫识别定位全套代码、结果处理代码(去归一化为像素坐标等转为csv文件)、已有的结果result2,result3.csv(由于百度网盘速度感人,上传至阿里云盘,包中有网站和提取码)、另外赠送pycharm专业版软件

已有整套结果数据(检测的图片,问题二三的结果csv)

一、数据预处理:(在数据预处理.ipynb中)

1、构造出YOLO格式标签集:

在这里插入图片描述

2、预处理部分代码:

在这里插入图片描述

在这里插入图片描述

3、选出用于训练的图片集和待测图片集:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、通过txt文件和对应的images图片文件转化为YOLO所需的voc数据集格式:

三、模型训练(全套模型和结果都在YOLO—hc压缩包中)

1、安装好环境,连接好服务器

2、参数设置成本题的数据:

在这里插入图片描述

3、训练好后使用best.pt进行验证,val.py参数为:

在这里插入图片描述

4、验证好后,进行最后的检测,detect.py,参数方面设置为:选用最好模型,选择待测数据集:
在这里插入图片描述

五、结果进行处理转为像素坐标点然后写入csv

runs\train\exp16:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

confusion_matrix.png(混淆矩阵)

混淆矩阵能对分类问题的预测结果进行总结,显示了分类模型的在进行预测时会对哪一部分产生混淆。

F1_curve:

F1分数与置信度之间的关系。F1分数(F1-score)是分类问题的一个衡量指标,是精确率precision和召回率recall的调和平均数,最大为1,最小为0, 1是最好,0是最差

P_curve.png :

准确率precision和置信度confidence的关系图

PR_curve.png:

PR曲线中的P代表的是precision(精准率),R代表的是recall(召回率),其代表的是精准率与召回率的关系,一般情况下,将recall设置为横坐标,precision设置为纵坐标。PR曲线下围成的面积即AP,所有类别AP平均值即Map.如果PR图的其中的一个曲线A完全包住另一个学习器的曲线B,则可断言A的性能优于B,当A和B发生交叉时,可以根据曲线下方的面积大小来进行比较。一般训练结果主要观察精度和召回率波动情况(波动不是很大则训练效果较好)Precision和Recall往往是一对矛盾的性能度量指标;提高Precision == 提高二分类器预测正例门槛 == 使得二分类器预测的正例尽可能是真实正例;提高Recall == 降低二分类器预测正例门槛 == 使得二分类器尽可能将真实的正例挑选

R_curve.png :召回率和置信度之间的关系
results.png:

Box_loss: YOLO V5使用 GIOU Loss作为bounding box的损失,Box推测为GIoU损失函数均值,越小方框越准;
Objectness_loss: 推测为目标检测loss均值,越小目标检测越准;
Classification_loss: 推测为分类loss均值,越小分类越准;
Precision: 精度(找对的正类/所有找到的正类);
Recall: 真实为positive的准确率,即正样本有多少被找出来了(召回了多少).Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。
val Box_loss: 验证集bounding box损失;
val Objectness_loss: 验证集目标检测loss均值;
val classification_loss: 验证集分类loss均值;

C:\Users\X\Desktop\yolov5-hc\runs\val\exp3:

在这里插入图片描述

六、结果:

运行detect.py:

在这里插入图片描述

检测图片:

在这里插入图片描述

转为结果保存到csv文件:

在这里插入图片描述

result2.csv:

在这里插入图片描述

result3.csv:

在这里插入图片描述

优化前:

在这里插入图片描述

优化后:

在这里插入图片描述

七、写在最后:

由于数据量过大不能一次性上传完,所以拆分些数据先一步上传至阿里云盘,具体在教程中

有包中详细教程,纯手码,创作不易,感谢支持

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【2022第十届‘泰迪杯’挑战赛】A题:害虫识别完整版(大致思路。详细过程和代码以及结果csv在压缩包中) 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 根据列值突出显示数据框中的行?

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐