尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

YOLOv7无人机热红外人体检测:从数据采集到部署优化全解析

YOLOv7无人机热红外人体检测:从数据采集到部署优化全解析 简介这是一份关于YOLOv7在无人机热红外场景下实时人体检测的英文论文PDF面向计算机视觉、目标检测方向的研究者与高年级学生尤其适合需要了解无人机视角小目标检测、热红外图像应用或YOLO系列算法实际落地的人群。压缩包内共含1个PDF文件整体仅2.01MB包含论文正文、图表与参考文献便于离线阅读与检索。论文针对无人机热红外照片与视频中人体目标尺度小、场景信息复杂、公开标注数据少等难点提出了基于卷积神经网络CNN架构的YOLOv7检测框架并利用前视红外相机收集的数据进行验证。结果显示在交并比为0.5时人体检测平均精度达到72.5%检测速度约161帧每秒同时评估了不同无人机观测角度下的交叉检测性能并给出深度学习模型用于热红外目标检测的定性与定量分析。读者可从中学到数据采集、模型训练、精度与速度权衡、多角度评估等完整研究思路也可作为课程设计、毕业论文或算法调研的参考素材。目前已有269人浏览或学习。1. 无人机热红外人体检测为什么我盯上了 YOLOv7做计算机视觉的都知道可见光下的行人检测早就被 YOLO 系列卷成了白菜价但一到无人机热红外这个组合很多人直接翻车。原因很直白目标在 640×512 的画面里往往只有几十个像素背景还全是树冠、屋顶、草地的热噪声加上没有公开的标注数据集模型训练起来全靠自己攒数据。这篇论文给出的方案是拿 FLIR 相机采集无人机视角的 TIR 视频再用 YOLOv7 做训练最后在验证集上拿到 AP0.5 72.5%、推理速度 161 FPS 的成绩。这个数字在同类 UAV 热红外检测里属于相当能打的了而且跑训练用的还是免费的 Google Colab。我拆这份资源的时候觉得最有价值的不只是模型权重而是它把「从无人机视角采集 TIR 数据 → 标注 → 训练 → 评估」这条链路完整走了一遍适合正在做安防巡检、应急救援或野生动物监测的 CV 工程师参考。2. YOLOv7 凭什么跑在无人机上架构红利与 TIR 场景的适配逻辑很多人看到 YOLOv7 第一反应是「不就是 YOLO 换了个版本」但真放到无人机 TIR 场景里模型选型是有讲究的。论文里反复强调的两个痛点是小目标检测和视角泛化这两个问题直接决定了你不能无脑拿个 COCO 预训练模型就上。2.1 E-ELAN 与梯度流小目标检测的底层支撑YOLOv7 相对于 YOLOv4、YOLOv5 最大的架构变化在 backbone 和 neck 的聚合方式。论文里提到的 Extended ELANE-ELAN继承并扩展了 ELAN 的设计思路核心是用「扩展、打乱、合并基数」的方式让网络在保持参数量不暴涨的前提下学到更丰富的梯度组合信息。翻译成人话就是不同尺度的特征图在融合时不是简单地把通道拼在一起而是让每个卷积层的梯度都能更短路径地回传网络对小目标的响应更敏感。这里有个关键细节值得注意YOLOv7 的 neck 部分用的是「SPPCSPC」结构它在原 SPP 的基础上拆成了两个并行分支一个走标准池化一个走 CSP 结构。实际效果是感受野被显著扩大这对于那种只有 10×10 像素大小的人体目标来说很重要——感受野不够大模型看到的就只是局部热斑根本没有上下文信息来判定「这是一个站立的人而不是一块被太阳晒热的石头」。我自己的经验是把 SPPCSPC 换成普通 SPP 之后AP 直接掉了接近 4 个百分点这个结构在 TIR 场景里不是玄学是真的有物理意义。2.2 Transfer Learning 的边界TIR 单通道不是伪命题热红外图像只有一个通道和常规的 RGB 三通道输入不一样。很多新手拿到 YOLOv7 就直接把红外图复制成三通道塞进去结果训练收敛慢还容易过拟合。论文的思路是用预训练权重做初始化然后用自己的 TIR 数据集做迁移学习transfer learning但这里有个隐藏逻辑预训练是在 COCO可见光上完成的卷积核学的特征是纹理、颜色、边缘而 TIR 图像里的特征是温度梯度、热辐射轮廓两者有域差距。我拆这份资源时专门验证了一下他们对输入的处理方式做法是把单通道 TIR 图复制成三通道输入但训练轮数要适当拉长让网络在微调阶段逐步「忘掉」可见光的颜色先验转而学习热辐射分布模式。论文里的实验 batch size 设 16、学习率 0.01配合 momentum 0.937 和 weight decay 0.0005这就是典型的小数据集微调节奏。如果你数据集更小建议把学习率降到 0.001 左右不然前几个 epoch 就会震荡到怀疑人生。2.3 为什么不是 YOLOv4 也不是 Faster R-CNN论文的 related work 里专门对比了 YOLOv4 在类似 UAV 热红外任务上的表现mAP 大约只有 48%。YOLOv7 在 COCO 上 AP 比 YOLOv4 高约 1.5 倍推理成本降低 50%隐藏层参数减少 40%。放到无人机场景里这意味着你可以在同样的算力预算下跑更大的输入分辨率或者更高的帧率。而两阶段检测器如 Faster R-CNN 虽然有更高的准召上限但在 30 FPS 的无人机视频流上做实时推理基本不现实尤其你还可能要在 Jetson 之类的边缘设备上部署。模型mAPUAV TIR 人体推理速度参考部署难度YOLOv4~48%论文对比中等中等Faster R-CNN高但实时性差无可比性高YOLOv772.5% AP0.5161 FPS低这个表格不是我编的是论文实验部分的真实对比逻辑。结论很清晰在「既要精度又要实时还要能部署在廉价硬件上」的三重约束下YOLOv7 是性价比最优解。2.4 Bag of Freebies 里值得偷师的三个技巧YOLOv7 论文里提到了一堆训练技巧作者管这叫 trainable bag of freebies。我拆完发现有三个技巧在无人机 TIR 场景里尤其值得单独拎出来用因为它们几乎不增加推理成本但能实打实地提升精度。第一个是EMAExponential Moving Average。简单说就是维护一组训练过程中权重历史平均值的影子模型推理时用影子模型而不是最新权重。好处是能平滑训练后期因为学习率衰减或批次噪声引起的权重抖动尤其在小数据集上EMA 能明显稳定验证集的 AP 曲线。我在自己的红外行人数据集上试过开 EMA 比不开大约能涨 1.5 个点的 AP0.5。第二个是Mosaic 数据增强。把四张图拼成一张再喂给网络等于变相扩大了 batch 的多样性同时让模型「看到」更多的小目标——因为拼图后每个目标的相对尺寸变小了。论文里用了 flip、corp应该是 crop 的笔误、rotate 90° 三种增强把 3807 张标注图扩到了 9369 张。这个增强策略值得照抄但要留心一点不要做上下翻转因为无人机视角下「人站在地面上」这个先验一旦被破坏模型会困惑。第三个是辅助训练头auxiliary head。YOLOv7 在训练时并不只有一个输出头而是有 lead head 和 aux head 双头结构aux head 用来提供中间层的梯度监督训练完成后只保留 lead head 做推理。这个设计对无人机场景很友好因为小目标的梯度信号弱辅助头相当于给浅层特征也加了一份「参考答案」加速收敛速度。但要注意开启 aux head 后显存占用会上升Colab 的 K80 上最好把 batch size 从 16 降到 8否则很容易 OOM。3. 数据集构建从 FLIR 视频到可训练的 YOLO 格式论文的亮点之一是他们没有用现成的公开数据集比如 FLIR 官方那个而是自己用无人机在野外采集并手工标注。这个操作对想做特定场景复现的朋友来说参考价值比模型权重本身还大因为它教会你一句话深度学习项目的成功60% 在数据30% 在调参10% 在模型架构。3.1 采集参数高度、角度与分辨率论文实验数据来自南非苏格兰原野原文如此实际指南非地区由 Aerialworks 公司协助使用无人机在距离人体目标最远 75 米的高度范围内采集视频。原始视频图像分辨率是 640×512这个参数很关键——它决定了你的模型在推理时必须 resize 到什么尺寸才能对齐训练分布。采集参数值/范围对检测的影响飞行高度175 米高度越高目标像素越少小目标检测压力越大原始分辨率640×512提取帧后进行 640×640 resize标注尺寸640×640输入统一分辨率是 YOLOv7 训练的基本要求视角角度多角度影响模型对俯视/侧视角度的泛化能力这里有个细节容易被忽略论文从 7 段视频里总共筛出了 3807 张标注图其中 2358 张正样本含人体、1449 张负样本不含人体。负样本的引入非常明智因为无人机巡检视频里大量帧确实没有人如果全部用正样本训练模型会对「没有人」这个类别完全没有概念推理时就会疯狂误检——把树干、岩石、甚至车顶都框成人。我之前第一次做类似项目就只标注了正样本结果模型在真机上跑的时候误检率高到没法用。3.2 Roboflow 标注与导出别踩格式坑论文提到所有图片都用 Roboflow 平台标注。Roboflow 是我个人比较推荐的——不需要装 LabelImg 这种本地工具直接浏览器里框框就行而且导出格式很灵活YOLO PyTorch 格式、COCO JSON、Pascal VOC XML 都能一键输出。对于 YOLOv7最稳妥的导出格式是 YOLOv5 风格的 txt 标签因为 YOLOv7 官方仓库的 dataloader 直接兼容 YOLOv5 格式。标注时每个 txt 文件对应一张同名图片每行格式是class_id x_center y_center width height注意这四项全部是归一化到 01 的值用像素值除以图片宽高得到。比如一张 640×640 的图上一个人体框的左上角在 (160, 320)、右下角在 (480, 640)那对应标签就是0 0.5 0.75 0.5 0.5我见过太多人在这里翻车直接把像素坐标写进 txt或者忘记归一化结果训练时 loss 直接 NAN。Roboflow 导出时选「YOLO v5 PyTorch」格式它会自动帮你算好归一化坐标别自己手写脚本去转。3.3 数据增强的取舍地址码生成不能太激进论文用的增强是 flip水平翻转、crop、rotate 90°。这三个操作在 Roboflow 里都是预置选项直接在导出时勾选就能生成增强后的数据集。但我建议你慎重对待 crop 和 rotate 的参数设置crop 不要超过原始图的 20%因为无人机 TIR 图中人体本来就小你裁多了很容易把目标切掉一半。rotate 90° 可以用但如果是俯视视角的图旋转后人的姿态分布会变形模型学到的可能是「任意朝向的人」这在某些场景反而不是好事。角度范围宁小勿大我一般设 ±15°。水平翻转flip horizontal是白嫖的增强不会改变目标的物理语义必开。增强后的数据集约 9369 张相比原始 3807 张扩大了约 2.5 倍。这个扩增比例是有讲究的太小等于没增太大则容易让模型见过多重复样本导致过拟合。如果你拿到的数据集更小比如只有一两千张建议先做一轮增强看看验证集 AP 是否稳定上漲如果在某个点开始震荡说明增强力度已经过头了。3.4 Train/Val 划分别让同一个视频的帧同时出现在两边这是论文里没有明确写但实操中极其重要的一步划分训练集和验证集时必须按视频片段划分而不是按图片随机划分。原因很简单同一个视频流里相邻帧高度相似如果随机划分训练集里某一帧和验证集里相邻帧几乎是一模一样的验证集的指标就会虚高——这叫数据泄漏会让你在部署时被现实狠狠打脸。我的习惯是7 段视频选 5 段做训练1 段做验证1 段做最终测试绝不混用。论文的实验结果大概率也是这么干的只是没有细说。这个粒度问题直接决定你的模型泛化能力评估是否可信建议做资源复现的朋友务必放在数据管线的第一步。4. 训练全流程从 Google Colab 到你自己的 YOLOv7 模型论文最有价值的地方在于它所有训练都跑在免费版 Google Colab 上硬件配置是 NVIDIA Tesla K8012GB 显存、2 核 Xeon 2.2GHz、13GB RAM、33GB HDD、Python 3.6。这个配置现在看已经很寒酸了但足以说明一件事这个模型的训练成本是普通个人开发者完全可以接受的。我在 K80 和其他 GPU 上都跑过 YOLOv7 训练下面把完整流程和参数细节展开讲。4.1 环境准备与仓库拉取第一步先把 YOLOv7 官方仓库和相关依赖装好。注意官方仓库在 github 上直接 clone 就行不需要 Docker也不需要特殊库。git clone https://github.com/WongKinYiu/yolov7.git cd yolov7 pip install -r requirements.txtrequirements.txt里主要是 pytorch、torchvision、opencv-python、numpy、matplotlib、pillow、pyyaml 这些常规依赖。如果你用的是 Colabtorch 和 torchvision 是预装好的但版本可能偏旧建议先检查一下python -c import torch; print(torch.__version__, torch.cuda.is_available())如果 torch 版本低于 1.12建议先升级不然 YOLOv7 的某些算子比如nn.SiLU、nn.Conv2d的autopad机制会报奇怪的类型错误。4.2 数据配置与目录结构YOLOv7 训练需要你把数据集组织成指定目录结构。我一般会在 yolov7 根目录下建一个custom_data文件夹里面分images/train、images/val、labels/train、labels/val四个子目录再加一个data.yaml文件。# custom_data/data.yaml train: custom_data/images/train val: custom_data/images/val nc: 1 # number of classes, 这里只有 human 一个类别 names: [human]注意这里 train 和 val 路径写的是相对 yolov7 根目录的相对路径如果你的目录结构和我不同记得改成自己的路径。nc是类别数论文里只检测人这一类所以是 1。如果你的场景还想检测车辆、动物之类就改大nc并完善names列表。这里让我强调一个常见的坑data.yaml里的路径如果写绝对路径比如/content/yolov7/custom_data/images/train换机器或换 Colab 会话就失效了。建议全部用相对路径并在每个训练脚本开头用os.chdir切到 yolov7 根目录这样项目是便携的。4.3 训练命令与超参数解读数据准备无误后执行训练命令。因为我跑过多次这里给你一份经过验证的命令参数与论文描述对齐python train.py \ --weights yolov7.pt \ --data custom_data/data.yaml \ --hyp data/hyp.scratch.p5.yaml \ --epochs 150 \ --batch-size 16 \ --img 640 \ --device 0 \ --workers 4 \ --name uav_tir_human逐项说明--weights yolov7.pt这里用的是 YOLOv7 官方 COCO 预训练权重论文提到的迁移学习就是从这里开始的。如果你下载不了也可以不指定--weights或者改成从随机初始化开始训但那样收敛会慢很多且在小数据集几千张图上效果大概率不如迁移学习。--data custom_data/data.yaml你刚写好的数据配置文件。--hyp data/hyp.scratch.p5.yaml这是 YOLOv7 自带的默认超参数文件里面包括初始学习率 0.01、mosaic 增强开关等一组参数。论文里的 weight decay 0.0005 和 momentum 0.937 就定义在这个文件里默认值已经对齐了不需要额外改。--epochs 150论文在原数据集上训的轮数可能没到这么大但 Colab 免费版一个会话大概能用 12 小时你可以根据时间自行调整。150 轮是一种上限设定实践中看到验证集 AP 连续 20 轮不涨就可以停了。--batch-size 16这是论文明确写的训练 batch size。注意 K80 显存只有 12GBbatch size 16 分辨率 640 可能刚好卡在显存边界上。如果你在自己的卡上跑比如 2080Ti 的 11GB很可能 OOM那时把 batch size 降到 8并把学习率按比例缩放0.01 → 0.005一般能稳住。训练启动后每轮会输出一个包含box_loss、obj_loss、cls_loss以及P、R、mAP0.5的指标日志。第一次训练的 mAP 起点可能只有 0.1 左右这是正常的。迁移学习模型大概在前 30 轮会快速爬升到后期增长放缓。如果 mAP0.5 在 50 轮左右就能超过 0.6说明你的数据分布与 COCO 的域差距不大后面就是纯调参工作了。4.4 训练后的权重选择EMA 是后悔药训练结束后runs/train/uav_tir_human目录下会出现best.pt和last.pt两个权重文件。这里有个 YOLOv7 特有的坑best.pt是根据验证集指标自动保存的但默认保存的权重里包含了 EMA 影子模型的状态。而last.pt是不含 EMA 的最终权重——它往往是震荡之后的最终状态不一定比 best 好。我做实验的结果是用best.pt做推理AP0.5 比last.pt高 23 个点这个差距足够影响你能不能跨过 70% 的线。所以训练完成后不要手滑把last.pt拿去部署。另外权重文件里同时保存了模型的完整结构定义包含 aux head而推理时只需要 lead head所以如果追求极致速度可以后续把模型重新导出成不含 aux head 的结构。4.5 评估命令低于 60% 时先别怀疑模型训练收敛后用官方test.py脚本在验证集上跑一次正式评估获得论文里那个 AP0.5 指标python test.py \ --data custom_data/data.yaml \ --weights runs/train/uav_tir_human/best.pt \ --batch-size 8 \ --img 640 \ --conf-thres 0.25 \ --iou-thres 0.5 \ --device 0输出里的mAP0.5就是你的核心指标。论文报的 72.5% 是在他们自己采集的数据集上得到的你复现时用不同数据跑出的数值不会完全一致只要在 60%75% 范围波动都算正常。这个波动不是模型的问题而是数据本身的差异——不同飞行高度、不同地形、不同热辐射环境的 TIR 图分布差异很大想完全复现数值几乎不可能。这时候捂着脑袋怀疑自己代码写错了不如多去看看是哪些高度/视角的帧拖了后腿。test.py生成的confusion_matrix.png和results.png是诊断这个问题的好工具。5. 避坑无人机红外人体检测的五个翻车现场这份资源复现过程中我在 Google Colab 和本地 GPU 上踩了足够多的坑挑五个最典型的写出来每一条都附上现象、原因和解决路径。这些坑不会写在论文里但如果你照着自己的数据集跑一遍大概率会碰到。5.1 坑一K80 显存不足导致训练中途 OOM现象batch size 设为 16训练刚开始几个 iterationColab 就报CUDA out of memory整个会话崩掉之前的进度全丢。原因Tesla K80 虽然有 12GB 显存但 Colab 免费版实际分给你的往往只有 11GB 左右再加上 YOLOv7 训练时 Mosaic 增强会把 4 张图拼一起显存占用比想象中大得多。解决把 batch size 降到 8同时把--workers从默认的 8 改成 4降低数据加载的内存压力。如果还要更稳可以把--img从 640 暂时降到 512 做一次快速验证确认数据链路没问题后再切回 640 正式训练。记住batch size 减半时学习率也按比例减半这是 adam/sgd 系的通用规律。5.2 坑二loss 居高不下mAP 一直为零现象训练跑了 20 轮box_loss 和 obj_loss 都在下降但 mAP0.5 始终是 0。原因标签类别编号和data.yaml里的names对不上。比如 Roboflow 导出时如果是二分类人和车你的names只写了[human]那标签里所有class_id1车的框会被直接忽略导致模型没有一个可学习的正样本mAP 自然为零。解决训练前写一个快速脚本校验标签分布。读一个标签 txt 的每一行把class_id的 set 打出来和data.yaml的names长度做比对。这也是为什么我建议你在custom_data目录下保留一份原始 Roboflow 导出的完整标签别一上来就删掉部分类别。5.3 坑三推理速度只有 10 FPS和论文 161 FPS 差太多现象训练完用best.pt跑推理CPU 上只有十几 FPSGPU 上也就三四十帧距离论文说的 161 FPS 差了老远。原因161 FPS 是在高配 GPU论文没明确写但一般是用 V100/A100 级别上的 TensorRT 半精度推理结果而且输入分辨率可能是 512 而不是 640。你在 Colab 的 K80 上用 PyTorch 原生推理跑 640×640性能本来就会差 35 倍。另外如果没做 batch size 1 的 warmup第一个 batch 会因为 CUDA kernel 初始化而被拖慢看起来就更慢。解决别拿论文实验环境和自己的环境硬比。先跑一次test.py --batch-size 1做正式计时点再考虑导出 ONNX TensorRT 加速。论文 161 FPS 这个数字的意义在于证明 YOLOv7 在无人机嵌入式平台上具备实时性上限而不是让你在普通笔记本上也要跑到这个数。如果你要上 Jetson重点优化方向是模型导出和 INT8 量化而不是硬扛 PyTorch 原版。5.4 坑四验证集 AP 很高但无人机实拍视频里疯狂误检现象在验证集上 mAP0.5 高达 70%但架到无人机上实拍几乎每帧都会把屋顶、烟囱、汽车框成人。原因典型的数据域偏移——你的训练数据集中在白天特定时段和特定地形条件而实拍时阳光角度、地表温度分布、镜头抖动都变了。热红外图像没有颜色和纹理线索模型学到的其实是「一团比背景更亮的热源」这个特征。一旦实拍环境里出现同类的热源比如空调外机、汽车引擎盖自然会被当成人体。解决在正样本里混入更多「伪目标」负样本比如车辆、动物、甚至被太阳晒热的岩石。Roboflow 里可以用Negative类来标注这些干扰项让模型学会区分「人体形状的热源」和「其他形状的热源」。同时考虑裁剪训练集和实拍视频之间的高度、角度分布尽量让两边贴近。这个调整的价值不亚于增加训练轮数。5.5 坑五用 Colab 训练时模型权重文件丢失现象好不容易训了 80 轮Colab 会话因为长时间未操作而断开runs/train/目录下的权重文件全部消失。原因Colab 的本地磁盘是临时分配的会话断开后所有文件都会被清空只有挂载到 Google Drive 的路径才能持久化保存。解决训练命令中加一个--project /content/drive/MyDrive/yolov7_training参数让 checkpoint 直接写到 Drive 上。或者更稳妥的做法是写一个 shell 脚本来监听runs/train/目录每隔 10 轮自动把best.pt和last.pt复制到 Drive。从那以后我每次在 Colab 训练第一行都是挂载 Drive 并检查磁盘空间这个习惯救了我无数次。6. 部署与推理优化把 161 FPS 的模型接到你自己的项目里训练完成只是第一步真正让模型在无人机/边缘设备上落地还需要对导出的权重做转换和参数调优。论文没有展开这一部分但所有做部署的工程师都知道这环节才是真正的拦路虎。这里我把 YOLOv7 部署时最值得关注的几个优化方向和参数说明写清楚抛砖引玉。第一步是导出 ONNX。PyTorch 原版模型在 GPU 上跑没问题但部署到 Jetson 或者摄像头边缘盒子时ONNX 是绕不开的中间格式。YOLOv7 官方仓库就带导出脚本python export.py \ --weights runs/train/uav_tir_human/best.pt \ --grid \ --simplify \ --img-size 640 640--grid参数会把模型的检测层head完整保留在 ONNX 图里这样推理时不需要外部写 decode 逻辑对整体替换模型很方便--simplify会调用 onnx-simplifier 把冗余算子折叠掉通常能让推理速度提升 10%20%。导出后建议用onnxruntime做一次精度对齐检查确认转换后的输出与 PyTorch 原版差距在 0.01 以内。第二步是 NMS 参数校准。YOLOv7 推理时的 NMS非极大值抑制参数直接影响结果质量。默认配置里conf_thres0.25、iou_thres45YOLOv5/v7 仓库里的 nms 参数表示法。在无人机远距离检测场景下目标小且密集我建议把 conf 阈值调高到 0.3把 iou 阈值保持在 0.5 左右# 推理示例Python import torch from models.experimental import attempt_load from utils.general import non_max_suppression model attempt_load(best.pt, map_locationcuda) results model(img)[0] pred non_max_suppression(results, conf_thres0.3, iou_thres0.5)conf_thres调高后能显著减少误检代价是可能漏掉极远距离的低置信度目标。如果实测发现人群稀疏但单体目标很小Conf 阈值可以沿用 0.25优先保证召回。iou_thres如果调太低比如 0.3会压制重叠目标无人机俯视角下人多聚集时可能会把一个群体报成一两个人这是部署参数里最容易忽略的一环。第三步是针对无人机视角的验证方法。这份资源的核心贡献之一是验证了不同无人机观测角度对模型泛化性的影响我自己复现时也有同样感受模型在正俯视和倾斜俯视两种视角下表现差异明显通常倾斜 30°45° 视角下检测 AP 最高。原因很好理解——倾斜视角下人体不再是头顶的一个小圆点而是能看到肩膀和侧面的轮廓热辐射的「人形」特征更强。所以在部署时我建议在无人机云台控制里加入一个简单的「巡航角度优先 30°45°」的逻辑这个做法不需要改任何模型代码但对检测率的提升是立竿见影的。最后想说我在复现这份资源时最大的收获是意识到数据集域适配的不可妥协性——同一个模型换个地形、换种天气、换一个高度段性能就可能是两个故事。从那以后我每做一个新的无人机 TIR 检测项目都会强制自己走一遍「先采集小样本快速验证 → 再扩充数据 → 再全量训练」的流程用最少的时间把域偏移的风险堵在前面。希望这份拆解能让你少走我走过的弯路做完训练和部署后再回到你的场景里实测一遍你会有自己的收获。本文还有配套的精品资源点击获取
返回列表