前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【AI 进阶笔记】Bird vs Drone【目标检测】

【AI 进阶笔记】Bird vs Drone【目标检测】

原创
作者头像
繁依Fanyi
发布于 2025-04-08 11:54:37
发布于 2025-04-08 11:54:37
23400
代码可运行
举报
运行总次数:0
代码可运行

前面我们使用图像分类的方式来进行 drone 与 bird 的判断,这里我打算使用目标检测的方式来进行判断,这里用 YOLOv7。

在这里插入图片描述
在这里插入图片描述

📅 使用 YOLOv7 进行目标检测

1. 准备环境和安装依赖

首先,我们需要确保安装了 YOLOv7 所需的库和环境。YOLOv7 的官方实现提供了一些预训练的权重和配置文件。

1、克隆 YOLOv7 的 GitHub 仓库:

代码语言:bash
AI代码解释
复制
git clone https://github.com/WongKinYiu/yolov7.git
cd yolov7

2、安装依赖:

代码语言:bash
AI代码解释
复制
pip install -U -r requirements.txt
在这里插入图片描述
在这里插入图片描述

3、下载预训练权重:

  • 可以从 YOLOv7 Releases 下载一个预训练的模型,或者直接使用以下命令下载 YOLOv7 的预训练模型。
代码语言:bash
AI代码解释
复制
python -c "from utils.downloads import attempt_download; attempt_download('yolov7.pt')"
在这里插入图片描述
在这里插入图片描述

2. 数据集格式调整

之前我们已经下载了数据集,并且它是 YOLO 格式,所以数据集格式应该是符合要求的。YOLO 格式的标签文件应该包含每个目标的 class_idx_centery_centerwidthheight,这些标签文件的文件名应与图像文件一致。

1、数据集目录结构

前面说过,我们的数据集的目录结构如下:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
/datasets
    /train
        /images
            - BTR (1).jpg
            - DTR (1).jpg
            ...
        /labels
            - BTR (1).txt
            - DTR (1).txt
            ...
    /valid
        /images
            - BV (1).jpg
            - DV (1).jpg
            ...
        /labels
            - BV (1).txt
            - DV (1).txt
            ...
    /test
        /images
            - BT (1).jpg
            - DT (1).jpg
            ...
        /labels
            - BT (1).txt
            - DT (1).txt
            ...

确保数据集目录文件无误后,大家可以使用 cp -r 源目录 目标目录把数据集目录拷贝一份到 yolov7 目录下,这样可以方便后续工程文件目录结构的管理。

在这里插入图片描述
在这里插入图片描述

2、创建 data.yaml 配置文件

接下俩需要为 YOLOv7 创建一个 data.yaml 配置文件,文件内容如下:

代码语言:yaml
AI代码解释
复制
train: ./datasets/train/images
val: ./datasets/valid/images
test: ./datasets/test/images

nc: 2  # 类别数:鸟和无人机
names: ['bird', 'drone']  # 类别名

3、确保图像和标签文件名完全匹配,例如:BTR (1).jpg 对应 BTR (1).txt


3. 训练 YOLOv7 模型

1、训练命令

使用以下命令开始训练:

代码语言:bash
AI代码解释
复制
python train.py --img 640 --batch-size 16 --epochs 50 --data ./datasets/data.yaml --cfg cfg/training/yolov7.yaml --weights 'yolov7.pt' --device 0

简单解释一下参数:

  • --img 640:输入图像大小为 640x640。
  • --batch-size 16:每批次 16 张图片。
  • --epochs 50:训练 50 个 epoch。
  • --data ./datasets/data.yaml:指定数据集配置文件。
  • --cfg cfg/training/yolov7.yaml:指定 YOLOv7 模型配置。
  • --weights 'yolov7.pt':加载预训练权重文件。

大家可以根据自己的情况进行修改。

2、训练日志监控

在训练过程中,能够看到类似的输出,记录了每个 epoch 的训练和验证损失、精度等信息。这些信息可以帮助我们可以实时查看模型的训练进展。

在这里插入图片描述
在这里插入图片描述

4. 评估模型

在训练完成后,使用验证集评估模型的性能,并计算 mAP(Mean Average Precision)等指标,确保模型能正确地检测鸟(Bird)和无人机(Drone)。

代码语言:bash
AI代码解释
复制
python test.py --img 640 --batch-size 16 --data ./datasets/data.yaml --weights runs/train/exp/weights/best.pt --device 0

这样会输出 mAP 和其他评估指标,了解模型的检测精度。


5. 优化模型

优化 YOLOv7 模型有很多方式。以下是一些常用的优化技巧,可以逐步尝试来提升模型的性能:

1、调整学习率和优化器

学习率(Learning Rate)是影响深度学习模型训练效果的一个关键超参数。如果学习率设置过高,模型可能会跳过最优解,导致训练不稳定;如果设置过低,模型可能收敛得过慢,甚至无法达到最优解。

YOLOv7 默认使用 SGD 优化器,可以尝试调整以下几个关键参数:

  • lr0: 初始学习率。
  • lrf: 学习率衰减系数。

可以通过 hyperparameters 文件进行调整,或者直接使用 OptunaRay Tune 这类工具来进行超参数优化。

代码语言:bash
AI代码解释
复制
python train.py --img 640 --batch-size 16 --epochs 50 --data ./datasets/data.yaml --cfg cfg/training/yolov7.yaml --weights 'yolov7.pt' --device 0 --lr0 0.01 --lrf 0.1
在这里插入图片描述
在这里插入图片描述
2、数据增强

数据增强可以提高模型的泛化能力,减少过拟合现象。YOLOv7 提供了几种数据增强方法,如:

  • mosaic:将四张图片拼接在一起,增加训练数据的多样性。
  • mixup:通过混合两张图片来增加数据多样性。
  • flipud/fliplr:水平和垂直翻转。
  • perspective:透视变换,模拟不同角度的拍摄效果。

data/hyp.scratch.p5.yaml 文件中可以设置这些超参数来增强数据。

示例配置(hyp.scratch.p5.yaml):

代码语言:yaml
AI代码解释
复制
mosaic: 1.0
mixup: 0.15
flipud: 0.0
fliplr: 0.5
perspective: 0.0
3、模型结构优化

YOLOv7 使用了自定义的模型结构,可以尝试修改模型的 backbone 或者 head 来针对不同场景来提升检测性能。例如,使用更强大的骨干网络(如 ResNet、EfficientNet)来替代默认的 CSPDarknet53,或者优化模型的检测头(Head)部分。

例如,使用 Swin TransformerConvNeXt 作为 backbone,会显著提高模型的特征提取能力,尤其在复杂场景下,模型的表现会更加优秀。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
model = Model(opt.cfg, ch=3, nc=nc, anchors=hyp.get('anchors'), backbone='swin')
4、冻结部分层

在一些场景下,冻结模型的某些层(如最前面的层)可以减少训练时的计算量,加速模型收敛。特别是在使用预训练模型时,冻结前几层可以帮助模型更好地聚焦于后期的训练任务。

可以通过修改 freeze 参数来选择冻结的层。例如,冻结前 10 层:

代码语言:bash
AI代码解释
复制
python train.py --freeze 10
5、模型集成(Ensemble)

如果模型训练效果不好,或者不够稳定,使用模型集成(Ensemble)方法来提高精度是一个不错的选择。YOLOv7 支持多种集成方法,比如软投票(Soft Voting)和加权投票(Weighted Voting)。方法和之前在图像分类的时模型融合的方法差不多,大家可以参考尝试。

集成多个模型的输出,可以有效减少单个模型的偏差,提高模型在不同场景下的鲁棒性。

6、多尺度训练

YOLOv7 提供了多尺度训练的选项,可以让模型在不同的输入尺寸下进行训练,从而提高模型在不同尺寸目标上的检测能力。通过开启 multi_scale 选项,YOLOv7 会随机调整输入图像的尺寸,增强模型的适应性。

代码语言:bash
AI代码解释
复制
python train.py --multi-scale

6. 推理与结果可视化

训练完成后,模型的评估指标(如 mAP、AP@0.5、IoU 等)能够帮助你判断模型的好坏。对于实际推理任务,除了准确度之外,推理速度也是非常重要的考量因素。

YOLOv7 提供了非常方便的推理命令和可视化功能。我们可以使用 detect.py 进行推理,并将结果进行可视化,生成包含检测框和类别标签的图像。

代码语言:bash
AI代码解释
复制
# 推理命令
python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.4 --source ./datasets/test/images

这个命令会加载训练好的模型,并对测试集图像进行推理,生成包含检测框的结果图像。可以通过调整 --conf 参数来设置置信度阈值,控制检测结果的精度和召回率。


7. 模型部署

经过训练和优化后,下一步就是将模型部署到实际应用中。YOLOv7 支持在多个平台进行部署,包括:

  • TensorRT:加速推理,适用于 NVIDIA GPU
  • OpenVINO:针对 Intel 硬件的推理优化。
  • ONNX:用于跨平台模型部署,支持 TensorFlow、PyTorch 等框架。

通过这些工具,可以将训练好的 YOLOv7 模型部署到边缘设备或云平台上,提供实时的目标检测服务。

转换为 ONNX 格式:

代码语言:bash
AI代码解释
复制
python export.py --weights runs/train/exp/weights/best.pt --img-size 640 --batch-size 1 --dynamic --include onnx

8. 常见问题

1、训练过程过慢 —— 如果训练过程过慢,可以考虑:

  • 降低批量大小(batch-size)以减小内存压力。
  • 启用混合精度训练(--half),减少计算量并加速训练。

2、模型精度低 —— 如果模型的精度不高,可以尝试:

  • 增加训练的 epochs 数量。
  • 使用更强的 backbone(如 ResNet 或 EfficientNet)。
  • 增加数据增强策略,特别是在数据量较少的情况下。

3、推理速度慢 —— 如果推理速度慢,可以:

  • 使用 TensorRT 或 OpenVINO 进行推理加速。
  • 使用量化模型(将浮点模型转为 INT8 或 FP16)。

希望这篇文章对你有所帮助!下次见!🚀

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
机器人训练数据不缺了!英伟达团队推出DexMG:数据增强200倍
不过最近,来自英伟达、UT Austin和UCSD的研究人员推出了一种大规模自动化数据生成系统——DexMimicGen。
新智元
2025/02/15
740
机器人训练数据不缺了!英伟达团队推出DexMG:数据增强200倍
AI智能超越人类终破解!李飞飞高徒新作破圈,5万个合成数据碾压人类示例,备咖啡动作超丝滑
AI巨佬Geoffrey Hinton称,「科技公司们正在未来18个月内,要使用比现在GPT-4多100倍的算力训练新模型」。
新智元
2023/10/29
3140
AI智能超越人类终破解!李飞飞高徒新作破圈,5万个合成数据碾压人类示例,备咖啡动作超丝滑
NVIDIA的新机器人研究实验室都干了些啥?
《The Robot Report》将英伟达命名为2019年必看的机器人公司,因为该公司新推出的Jetson AGX Xavier模块有望成为下一代机器人的大脑。现在,更有理由关注英伟达(NVIDIA)的机器人技术动向:这家总部位于加州圣克拉拉(Santa Clara)的芯片制造商刚刚开设了首家成熟的机器人研究实验室。
GPUS Lady
2019/03/07
1.2K0
解密炒虾机器人远程控制技术:动捕手套/隔空取物/VR远程,都能训练机器人
然后,虽然网友后边发现,机器人熟练的家务劳动不是完全自主的能力。主要还是要靠人工操作。
新智元
2024/01/17
1710
解密炒虾机器人远程控制技术:动捕手套/隔空取物/VR远程,都能训练机器人
只需看一眼,伯克利最新机器人就可以copy你的动作!
通过观察另一个人的做法来学习一项新技能,即模仿的能力,是人类和动物智力的关键部分。我们能让机器人做同样的事情吗?
大数据文摘
2018/07/31
3360
只需看一眼,伯克利最新机器人就可以copy你的动作!
机器人心灵感应:允许人类远程操作和训练机器人手
随着技术的发展,计算机科学家已经开发出越来越先进的技术来训练和操作机器人。总的来说,这些方法可以在越来越广泛的现实世界环境中促进机器人系统的集成。
脑机接口社区
2022/09/22
3240
机器人心灵感应:允许人类远程操作和训练机器人手
身手不凡的机器人,开源项目汇总
最初,因隋炀帝思念心切,命工匠按照柳抃的形象制作了木偶机器人,被认为是历史上最早的机器人之一。这些木偶机器人通过精巧设计的机关,能够执行坐、起、拜、伏等动作。
CV君
2024/07/12
7930
身手不凡的机器人,开源项目汇总
DemoGen:用于数据高效视觉运动策略学习的合成演示生成
论文链接:https://demo-generation.github.io/paper.pdf
一点人工一点智能
2025/04/02
1190
DemoGen:用于数据高效视觉运动策略学习的合成演示生成
从ALOHA迈向Humanplus,斯坦福开源人形机器人,「高配版人类」上线
说起前段时间斯坦福开源的 Mobile ALOHA 全能家务机器人,大家肯定印象深刻,ALOHA 做起家务活来那是有模有样:滑蛋虾仁、蚝油生菜、干贝烧鸡,一会儿功夫速成大餐:
机器之心
2024/06/17
1440
从ALOHA迈向Humanplus,斯坦福开源人形机器人,「高配版人类」上线
麻省理工提出便捷的机器人学习方法
美国麻省理工学院(MIT)网站发布消息称,该校已经提出了一种更便捷的机器人训练方法。 大多数机器人使用以下两种方法中的一种进行编程:从演示中学习,观察任务完成的过程并复制该过程,或通过运动规划技术学习
人工智能快报
2018/03/14
7080
麻省理工提出便捷的机器人学习方法
RoboNet的大规模机器人学习数据集
在过去的十年中,我们已经看到深度学习系统为各种感知和推理问题提供了转化解决方案,例如从识别图像中的对象到识别和翻译人类语音。
AiTechYun
2019/12/17
1.4K0
RoboNet的大规模机器人学习数据集
大模型正在重构机器人,谷歌Deepmind这样定义具身智能的未来
在最先进的大模型成为具身机器人感知世界的「大脑」之后,机器人的进化速度取得了远超想象的进步。
机器之心
2024/01/11
6410
大模型正在重构机器人,谷歌Deepmind这样定义具身智能的未来
基于视觉和惯性传感器的移动机器人手遥操作系统
论文:A Mobile Robot Hand-Arm Teleoperation System by Vision and IMU
3D视觉工坊
2020/12/11
6590
基于视觉和惯性传感器的移动机器人手遥操作系统
Google AI年终总结第六弹:没有波士顿动力的谷歌机器人,发展得怎么样了?
---- 新智元报道   编辑:LRS 【新智元导读】让机器人听懂人类指令,谷歌都做了什么? 波士顿动力的一个后空翻,让我们看到了人造机器人所带来的无限可能。 尽管谷歌已于2017年把波士顿动力出手了,但谷歌仍然继续他们的机器人开发之路,不只是在「身体」上逼近人类,在「智力」也追求更好的理解人类指令。 由Jeff Dean领衔的Google Research年终总结系列「Google Research, 2022 & beyond」已经更新到第六期,本期的主题是「机器人」,作者为高级产品经理 Kend
新智元
2023/02/27
4470
Google AI年终总结第六弹:没有波士顿动力的谷歌机器人,发展得怎么样了?
自动驾驶界秋名山车神!CoRL杰出论文让自驾车学会漂移,机器人整出新活
最后来个蛇形绕桩(Slalom,这次没有实体的桩)。可以听见,在绕到一半的时候,工作人员忍不住欢呼了一下。
机器之心
2025/02/14
580
自动驾驶界秋名山车神!CoRL杰出论文让自驾车学会漂移,机器人整出新活
大象机器人智能遥控操作机械臂组合myArm M&C
近年来,市面上涌现了许多类似于斯坦福大学的 Alopha 机器人项目,这些项目主要通过模仿人类的运动轨迹来进行学习,实现了仿人类的人工智能。Alopha 机器人通过先进的算法和传感技术,能够精确复制人类的动作,并从中进行数据采集和学习,从而提升其在各种任务中的表现。这种基于模仿学习的方法,使得机器人不仅在工业自动化中表现出色,还在教育和科研领域展现出巨大的潜力。正是在这样的背景下,Elephant Robotics 推出了 myArm M & C 系列机器人手臂,进一步推动了仿人类机器人技术的发展。
大象机器人
2024/05/21
2910
大象机器人智能遥控操作机械臂组合myArm M&C
通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行
麻省理工研究人员提出了机器人策略组合框架 PoCo,该框架为构建复杂的机器人策略组合开发了任务级、行为级、领域级的策略合成方法,能够解决机器人在工具使用任务中的数据异构性、任务多样性问题。
HyperAI超神经
2024/07/15
2340
通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行
模仿学习:无需编程,机器人也能听懂自然语言了!
未来,将自然语言融入模仿学习可以减少自主机器人所需的编程,实现人与机器人之间的自然交互。 作者 | Mariano Phielipp 编译 | 王玥 编辑 | 陈彩娴 用人类日常交流所说的自然语言指令去命令机械臂执行任务是一个很大的挑战。一个来自亚利桑那州立大学、英特尔人工智能实验室和俄勒冈州立大学的研究团队在操纵任务中将语言作为模仿学习(Imitation Learning)的灵活目标,为人类专家和机器人提供了沟通的桥梁。在训练过程中,模型学会了相互联系和捕捉语言、视觉和运动控制之间的相关性,从而产生以语
AI科技评论
2022/05/19
6040
模仿学习:无需编程,机器人也能听懂自然语言了!
CMU清华MIT引爆全球首个Agent无限流,机器人「007」加班自学停不下来!具身智能被革命
长久以来,相比于语言或者视觉模型可以在大规模的互联网数据上训练,训练机器人的策略模型需要带有动态物理交互信息的数据,而这些数据的匮乏一直是具身智能发展的最大瓶颈。
新智元
2023/11/07
4210
CMU清华MIT引爆全球首个Agent无限流,机器人「007」加班自学停不下来!具身智能被革命
一文全面了解目前具身智能的核心内容和未来发展
文章:Aligning Cyber Space with Physical World: A Comprehensive Survey on Embodied AI
点云PCL博主
2025/02/03
7070
一文全面了解目前具身智能的核心内容和未来发展
推荐阅读
机器人训练数据不缺了!英伟达团队推出DexMG:数据增强200倍
740
AI智能超越人类终破解!李飞飞高徒新作破圈,5万个合成数据碾压人类示例,备咖啡动作超丝滑
3140
NVIDIA的新机器人研究实验室都干了些啥?
1.2K0
解密炒虾机器人远程控制技术:动捕手套/隔空取物/VR远程,都能训练机器人
1710
只需看一眼,伯克利最新机器人就可以copy你的动作!
3360
机器人心灵感应:允许人类远程操作和训练机器人手
3240
身手不凡的机器人,开源项目汇总
7930
DemoGen:用于数据高效视觉运动策略学习的合成演示生成
1190
从ALOHA迈向Humanplus,斯坦福开源人形机器人,「高配版人类」上线
1440
麻省理工提出便捷的机器人学习方法
7080
RoboNet的大规模机器人学习数据集
1.4K0
大模型正在重构机器人,谷歌Deepmind这样定义具身智能的未来
6410
基于视觉和惯性传感器的移动机器人手遥操作系统
6590
Google AI年终总结第六弹:没有波士顿动力的谷歌机器人,发展得怎么样了?
4470
自动驾驶界秋名山车神!CoRL杰出论文让自驾车学会漂移,机器人整出新活
580
大象机器人智能遥控操作机械臂组合myArm M&C
2910
通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行
2340
模仿学习:无需编程,机器人也能听懂自然语言了!
6040
CMU清华MIT引爆全球首个Agent无限流,机器人「007」加班自学停不下来!具身智能被革命
4210
一文全面了解目前具身智能的核心内容和未来发展
7070
相关推荐
机器人训练数据不缺了!英伟达团队推出DexMG:数据增强200倍
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 📅 使用 YOLOv7 进行目标检测
    • 1. 准备环境和安装依赖
    • 2. 数据集格式调整
    • 3. 训练 YOLOv7 模型
    • 4. 评估模型
    • 5. 优化模型
      • 1、调整学习率和优化器
      • 2、数据增强
      • 3、模型结构优化
      • 4、冻结部分层
      • 5、模型集成(Ensemble)
      • 6、多尺度训练
    • 6. 推理与结果可视化
    • 7. 模型部署
    • 8. 常见问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档