基于DETR目标检测项目

DETR见解

DETR(Detection Transformer)是一种端到端的目标检测模型,由Facebook AI Research(FAIR)于2020年提出。DETR采用了Transformer架构,与传统的基于区域的目标检测方法有所不同,它通过全局上下文来预测图像中的目标,而无需使用先前的候选框或区域建议网络。整个DETR可以分为四个部分,分别是:backbone、encoder、decoder以及predictionheads。基本思想是,首先用cnn抽取图像特征,拿到每一个patch对应的向量,并加上位置编码。然后用transformer encoder学习全局特征,帮助后面做检测。接着将encoder的输出作为tranformer deoder的输入,同时还输入了一个对象查询。对象查询按我的理解就是,它生成一个查询分量q和前面encoder传进来的k和v做一个交互,生成很多预测框。然后把预测框和真实框做匹配,询问框内是否包含目标,然后在匹配上的这些框里面计算loss,进而向后传播。接着就是预测头的建立,最后生成预测结果。所以整个DETR网络的工作就是:特征提取--特征加强--特征查询--预测结果

建议使用云服务器进行操作(如果本机没有GPU或者显存资源不充足情况下)

一、代码拉取

官方:GitHub直接搜索即可

改进版:代码私信发送(资源免费)(主要原因就是资源绑定不成功  :(  哭泣哭泣 )

论文:文章顶部下载

二、环境准备

解压代码,进入主目录

安装对应包

pip install -r requirements.txt

三、数据集准备

数据集下载

数据集建议准备VOC格式或者是COCO格式。(GitHub上官方使用数据集格式为coco格式)

其实不论是yolo格式或者是VOC格式,他们之间都可以通过代码去转换。

建议在训练前,随机抽取几张图片和标签,查看标注是否准确无误。

推荐数据集:CCTSDB_VOC_数据集-飞桨AI Studio星河社区

推荐数据集:水果分类目标检测VOC数据集_数据集-飞桨AI Studio星河社区

数据集加载

导入数据集之后,查看数据集是否包括:JPG和XML,以及train.txt、val.txt、test.txt

使用运行test.py生成一个存在于主目录下的train.txt和test.txt。这样我们就设置完成训练集和测试集的加载路径了。

四、模型训练

参数修改

打开detr.py,和train.py 

里面有相关参数,我们可以进行设置,其中包括冻结训练层数以及解冻层数,这个是比较重要的。

detr.py参数: 

train.py参数修改

其中预训练权重文件可以选择resnet50或者是resnet101,可自行修改

 

五、训练结果可视化

运行get_map.py生成loss、Map、recall等(如果不懂可以具体了解一下模型评估的几个参数)

5.1模型评估参数介绍

  • 1. 精确率(Precision)​
    • 定义:在所有被模型预测为正类(即存在目标)的样本中,实际为正类的比例。
    • 公式​:
    • Precision=(True Positives (TP)+False Positives (FP)) / True Positives (TP)
    • 解释:
    • TP(True Positive)​:模型正确预测了目标的边界框和类别。
    • FP(False Positive)​:模型错误地预测了目标的边界框或类别(例如,将背景误判为目标)。
    • 意义:高精确率意味着模型在预测目标时较少出现误报。
  • 2. 召回率(Recall)​
    • 定义:在所有实际为正类的样本中,被模型正确预测为正类的比例。
    • 公式​:
    • Recall=True Positives (TP) / (True Positives (TP)+False Negatives (FN))
    • 解释​:
    • FN(False Negative)​:模型未能检测到实际存在的目标。
    • 意义​:高召回率意味着模型能够检测到更多的真实目标,减少漏检。
  • 3. 平均精度(Average Precision, AP)​
    • 定义:在不同置信度阈值下,精确率和召回率的综合表现,通常以AP@[IoU阈值]表示,如AP@0.5。
    • 计算方法​:
    • 对每个类别,根据预测的置信度从高到低排序。
    • 计算不同置信度阈值下的精确率和召回率。
    • 绘制精确率-召回率曲线(Precision-Recall Curve)。
    • 计算曲线下的面积(Area Under Curve, AUC),即AP。
    • 意义​:AP综合考量了模型在不同置信度下的精确率和召回率,是评估目标检测模型性能的重要指标。
  • 4. 平均精度均值(Mean Average Precision, mAP)​
    • 定义:在多个类别上计算的平均AP值。
    • 公式​:
    • mAP=N1∑i=1NAPi
    • 其中,N 是类别的总数,APi 是第 i 个类别的AP值。
    • 常见变体​:
    • mAP@[IoU阈值]​:如mAP@0.5表示IoU阈值为0.5时的平均精度均值。
    • mAP@[0.5:0.95]​:在IoU阈值从0.5到0.95(步长为0.05)范围内计算的平均mAP,更全面地评估模型性能。
    • 意义​:mAP综合考虑了所有类别的性能,是目标检测任务中最常用的综合评估指标。
  • 5. 交并比(Intersection over Union, IoU)​
    • 定义:预测边界框与真实边界框之间的重叠程度。
    • 公式​:
    • IoU=Area of UnionArea of Overlap
    • 解释​:
    • IoU值范围在0到1之间,值越大表示预测框与真实框的重叠程度越高。
    • 常用IoU阈值(如0.5、0.75)来判断预测框是否正确。
    • 意义​:IoU用于评估单个预测框的准确性,是计算TP、FP和FN的基础。
  • 6. 其他相关指标​
    • F1分数(F1-Score):精确率和召回率的调和平均数,用于平衡两者。
    • F1=2×Precision+RecallPrecision×Recall
    • 每秒帧数(Frames Per Second, FPS)​:模型推理速度,适用于实时检测任务。
    • GFLOPs(Giga Floating Point Operations)​:模型的计算复杂度,影响推理速度和硬件需求。
  • Instances 的含义
    • 定义:
    • Instances 指的是当前批次(Batch)中所有图像中真实存在的目标对象数量的总和​。

六、模型调优

yolo相关参数介绍链接:(https://docs.ultralytics.com/zh/modes/train/#train-settings)​

可以参考里面的参数介绍,来进行调优

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/909585.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/909585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZooKeeper 集群部署

ZooKeeper 集群部署 前言安装部署资源下载JDK 部署Zookeeper 部署 前言 在 Linux 服务器上部署 Zookeeper 之前,需要先安装 JDK。以下是相关版本及环境信息: JDK 版本 jdk-17_linux-x64_bin.tar.gz Zookeeper 部署的版本 3.5.7 操作系统版本 Red Hat E…

8.TCP Server端实现

1.C/S模型 2.Server 端功能分析 tcp_server.c #include "tcp_server.h" #include "lwip/sockets.h" #include <stdio.h>char ReadBuff[BUFF_SIZE]; /* TCP服务器任务函数 */ void vTcpserver_Task(void) {int sfd, cfd, n, i;struct sockaddr_in…

课设作业图书管理系统

用户注册&#xff0c;登录 播放地址 课设作业图书管理系统_哔哩哔哩_bilibili 对图书进行增删改查 package com.xwr.controller; import com.xwr.entity.Book; import com.xwr.entity.Category; import com.xwr.service.BookService; import com.xwr.service.CategoryServ…

springboot 配置加密

springboot 配置加密 [TOC](springboot 配置加密) 前言一、在配置类赋值之前解密二、修改赋值后加密的配置类 前言 在一些国家项目中经常会要求不能暴露数据库链接和密码, 所以需要对配置文件里面的一些配置进行加密处理。 解决方法有两种&#xff1a;一种是在配置加载后还没给…

【操作系统】macOS软件提示“已损坏,打不开”的解决方案

macOS软件提示“已损坏&#xff0c;打不开”的解决方案 在使用 macOS 系统时&#xff0c;不少用户都遇到过这样的情况&#xff1a;当尝试打开某个应用程序时&#xff0c;系统弹出提示“xxx 已损坏&#xff0c;打不开。您应该将它移到废纸篓”&#xff0c;或者显示“无法打开‘…

数据库系统概论(二十)数据库恢复技术

数据库系统概论&#xff08;二十&#xff09;数据库恢复技术 前言一、事务的基本概念1. 什么是事务&#xff1f;2. 事务的两种"打开方式"2.1 隐式事务2.2 显式事务&#xff1a;自己动手打包操作 3. 事务的四大"铁律3.1 原子性3.2 一致性3.3 隔离性3.4 持久性 4.…

java将pdf文件转换为图片工具类

一、相关依赖 <!-- PDFBox for PDF processing --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version></dependency>二、工具类 import org.apache.pdfbox.p…

零门槛探索国产数据库硬核实力 —— 金仓数据库在线体验平台体验记

1、 金仓数据库在线体验平台 最近&#xff0c;我发现了一个超棒的数据库宝藏 —— 金仓数据库在线体验平台。它在金仓社区上线后&#xff0c;凭借 “零门槛体验 多场景交互” 的特点&#xff0c;迅速吸引了众多数据库爱好者的目光&#xff0c;我也忍不住去体验了一番。 2、 …

Linux基本操作指令和vim编译器

基本指令 查看日期与日历 data 指令 显示日期 用法1&#xff1a;data CST&#xff1a;China Standard Time 时区&#xff0c;中国标准时间 用法2&#xff1a; data 指定格式 常用格式&#xff1a; “%Y-%m-%d”(%F): 2025-06-16“%H:%M:%S”(%T): 20:19:45“%F%T”用法3&am…

“从HTTP到TCP/IP的旅程“-----深入浅出Java Web通信

先放结构图&#xff1a; 一、引言&#xff1a;网络通信就像寄快递 想象一下我们在网上买了一本书&#xff0c;整个配送过程是这样的&#xff1a; 应用层&#xff1a;你在购物网站填好收货地址&#xff08;HTTP请求&#xff09;传输层&#xff1a;快递公司把包裹打包&#xf…

docker build使用代理以实现构建过程中下载Github源码等操作

在通过Dockerfile构建docker容器的过程中&#xff0c;经常会需要在构建过程中拉取Github上的代码。当宿主机配好代理&#xff0c;但容器内是一个隔离的环境&#xff0c;若想在容器内访问&#xff0c;则需再打通容器和宿主机之间的代理配置。 方法一&#xff1a; 若宿主机上的…

Docker 快速搭建一个基于 GPT-Vis 组件的统计图表生成服务

以下是对工具简单介绍&#xff1a; 可以在服务端使用 GPT-Vis 统计图表组件直接渲染成图片支持Docker一键部署&#xff0c;提供统计图表渲染生成API接口支持多种GPT-Vis支持的组件&#xff0c;包括折线图、柱形图、饼图、面积图、条形图、直方图、散点图、词云图、雷达图、思维…

hal库练习1

要求&#xff1a;一个按键实现呼吸灯的控制&#xff0c;一个按键控制LED灯的闪烁&#xff0c;串口发送数据控制灯的开关 定时器配置 1.选择需要的定时器2.配置基础参数&#xff08;根据时钟树给定时器输入的时钟&#xff09;3.打开中断4.在主函数里打开中断 定时器扫描按键 …

java线程(4)

程序(program) 是为完成制定任务,用某种语言编写的一组指令的集合.简单的话说:就是我们写的代码. 进程 1.进程是指进行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存空间,当我们使用迅雷,又启动了一个进程,操作系统将为迅雷分配新的内存空间. 2、…

02《F8Framework》核心入口 FF8.cs

FF8.cs类是 F8Framework的核心入口 采用单例模式 提供对各个功能模块的全局访问 【特点】通过静态类FF8统一访问所有功能 1.模块化设计&#xff1a; 每个功能独立 通过 ModuleCenter 统一管理 2.懒加载机制&#xff1a; …

【硬件】相机的硬件测试

相机测试 author: Alla Imatest 提供超过 30 种测试项目&#xff0c;主要包括&#xff1a; 1&#xff09;图像基础参数‌&#xff1a;MTF&#xff08;调制传递函数&#xff09;、畸变、均匀性、动态范围 2&#xff09;色彩与光学特性‌&#xff1a;白平衡误差、饱和度、gamma …

Profinet与Modbus TCP协议转换技术:西门子S7-1500(主站)和欧姆龙NJ PLC的高效数据交换

一、项目背景 某大型现代化智慧农业养殖场致力于打造全方位智能化的养殖环境。其养殖系统中&#xff0c;环境监测与调控部分选用了西门子S7-1500PLC作为Profinet协议主站。该PLC凭借强大的运算能力和丰富的功能模块&#xff0c;能够精准地采集和处理养殖场内的温度、湿度、空气…

希尔伯特变换,实信号转复信号的FPGA实现思路

希尔伯特变换将实信号转复信号的原理 将实信号的相位推迟90度后作为复信号的虚部。 错误实现方式 实信号经过希尔伯特滤波后得到复信号的虚部&#xff0c;之后直接与实信号组成复信号。而由于滤波器本身会对信号延时&#xff0c;故I路与Q路并不是相差90度&#xff0c;所以此方…

多模态大语言模型演进:从视觉理解到具身智能的技术突破

多模态大语言模型演进:从视觉理解到具身智能的技术突破 多模态大语言模型(MLLMs)正在重塑人工智能的边界,实现从"看见"到"理解"再到"行动"的全链条智能。本文将深入解析苹果最新多模态研究进展,揭示视觉-语言模型十年演进的技术脉络,剖析…

window显示驱动开发—渲染管道

支持 Direct3D 版本 10 的图形硬件可以使用共享可编程着色器核心进行设计。 GPU) (图形处理单元可以编程着色器核心&#xff0c;这些着色器核心可以跨构成呈现管道的功能块进行计划。 这种负载均衡意味着硬件开发人员不需要使用每种着色器类型&#xff0c;而只需要使用执行呈现…