
1. 三大目标检测框架的演进脉络与选型逻辑目标检测这个方向从2014年RCNN横空出世到现在十年出头的时间里经历了从“两阶段精耕细作”到“单阶段端到端”的彻底范式转移。RCNN、DETR、YOLO这三条技术路线基本代表了三种截然不同的解题哲学RCNN系是“先找候选再分类”的学院派DETR是“用Transformer做集合预测”的革新派YOLO则是“一次前向传播搞定一切”的工程派。我这些年在这三个方向上分别踩过不少坑也做过不少实际部署项目今天就把这三条线的核心思路、关键细节和实操经验系统性地梳理一遍。先说清楚这三者各自解决什么问题。RCNN系列的核心贡献在于证明了“深度特征区域提议”可以大幅超越传统手工特征方法Faster RCNN引入的RPN网络让候选框生成也变成了可学习的模块这是两阶段检测器的巅峰之作。DETR则彻底抛弃了锚框和非极大值抑制用Transformer的编码器-解码器结构直接输出预测集合通过二分图匹配实现端到端训练思路非常优雅。YOLO走的是另一条路把检测问题转化为回归问题一个网络一次前向传播就能同时预测边界框和类别速度优势极其明显从v1到v8再到最新的v26工程优化做到了极致。选型的时候我一般看三个维度精度要求、速度要求和部署环境。如果对精度极其敏感且不在乎推理速度比如医学影像分析或者遥感图像检测Faster RCNN配合ResNet101 backbone依然是很稳的选择。如果场景是视频流实时检测比如监控视频拉流RTSP做火灾实时监控那YOLO系列基本是唯一解。DETR则适合那些需要端到端可微分 pipeline 的研究场景或者对NMS后处理有顾虑的部署环境。下面我会把每条线的核心细节拆开来讲。1.1 从RCNN到Faster RCNN的关键跃迁RCNN的原始版本流程非常笨重先用Selective Search生成约2000个候选区域然后对每个区域单独跑CNN提取特征最后用SVM分类。这个流程的问题很明显——2000次CNN前向传播训练和推理都慢得离谱。Fast RCNN做了第一个重要改进引入ROI Pooling层整张图只跑一次CNN然后在特征图上对每个候选区域做池化速度提升了数十倍。但Fast RCNN的候选框生成仍然依赖Selective Search这是个CPU上的算法耗时占整个推理流程的80%以上。Faster RCNN的突破在于用RPNRegion Proposal Network替代了Selective Search。RPN本身是一个全卷积网络在特征图上每个位置预设9个锚框3种尺度×3种长宽比然后预测每个锚框的前景/背景得分和位置偏移量。RPN和检测头共享卷积特征整个网络可以端到端训练。我实测下来Faster RCNN在V100上处理一张1080p图像大约需要80-120毫秒比Fast RCNN快了将近10倍。这里有个关键细节值得展开RPN的锚框设计直接决定了召回率上限。如果数据集中目标尺寸分布比较集中比如电力红外数据集里的绝缘子锚框尺度和长宽比就需要针对性调整。我一般会先对训练集做K-means聚类分析统计真实框的宽高分布然后据此设置锚框参数。这个步骤很多人会忽略直接用默认的9个锚框结果小目标召回率上不去。1.2 DETR的集合预测范式与训练收敛难题DETR论文最核心的创新是把目标检测建模为集合预测问题。传统检测器需要生成大量候选框然后做NMS去重DETR直接输出固定数量比如100个的预测框通过匈牙利算法在预测框和真实框之间做二分图匹配实现一对一分配。这个设计的好处是彻底消除了NMS这个不可微分的后处理步骤整个pipeline完全可微分端到端训练。但DETR有个众所周知的痛点训练收敛极慢。原始论文在COCO上需要500个epoch才能收敛而Faster RCNN通常12个epoch就够了。原因在于二分图匹配的监督信号非常稀疏每个真实框只匹配一个预测框其他预测框都被监督为“无目标”导致早期训练时梯度信号很弱。后来Deformable DETR通过引入可变形注意力机制让每个查询只关注参考点周围的少量采样点收敛速度提升了10倍左右500 epoch降到50 epoch。DETR训练自己数据的时候有几个坑我踩过。第一是学习率设置DETR对学习率非常敏感backbone的学习率通常要比Transformer部分小一个数量级否则预训练权重会被破坏。第二是数据增强DETR对随机裁剪和缩放比较敏感因为这会改变目标的数量和尺度分布影响二分图匹配的稳定性。第三是类别不平衡问题如果数据集中某些类别样本极少DETR的小目标检测效果会明显下降这时候需要考虑focal loss或者对稀有类别做过采样。1.3 YOLO的工程哲学与版本演进主线YOLO的核心思想可以用一句话概括把检测问题转化为一个回归问题用一个CNN同时预测所有边界框的坐标和类别。v1版本把输入图像划分成7×7的网格每个网格预测2个边界框和类别概率速度极快但精度一般。v2引入了锚框机制和Batch Normalizationv3引入了FPN多尺度预测和更好的backboneDarknet-53v4引入了CSPDarknet和Mish激活函数v5则是在工程化上做到了极致提供了完整的训练、推理、部署工具链。YOLOv8是目前工业界用得最多的版本它引入了C2f模块、解耦头Decoupled Head和Anchor-Free检测方式。解耦头把分类和回归分支分开避免了两个任务之间的冲突这个设计在YOLOX中首次提出v8沿用并优化了。Anchor-Free则省去了锚框调参的麻烦直接预测中心点和宽高对小目标更友好。我实测YOLOv8s在T4上跑640分辨率TensorRT FP16推理可以做到约2.5毫秒一帧理论上支持400路以上的1080p25帧视频流当然实际路数还要看解码和前后处理的开销。YOLO的损失函数也是演进的重点。v1用的是简单的平方和误差v2引入了YOLO Lossv3开始用Binary Cross Entropy做分类损失v5引入了CIoU Loss做回归v8则用了Task-Aligned Assigner做正负样本分配。CIoU Loss相比IoU Loss多了中心点距离和长宽比一致性的惩罚项收敛更快更稳定。Task-Aligned Assigner则根据分类得分和回归IoU的乘积来动态分配正样本避免了固定IoU阈值带来的问题。2. 核心细节解析与实操要点2.1 Faster RCNN的锚框设计与ROI AlignFaster RCNN的锚框设计是影响检测精度的关键因素。默认的9个锚框尺度128/256/512长宽比1:1/1:2/2:1在COCO上表现不错但换到特定数据集就需要调整。我一般用以下流程来确定锚框参数先统计训练集中所有真实框的宽高然后做K-means聚类距离度量用1-IoU聚类数设为9得到9个聚类中心作为锚框的宽高。这个方法比手动调参靠谱得多。ROI Pooling有个量化误差问题它把ROI区域划分成固定数量的bin然后对每个bin做max pooling但ROI的坐标是浮点数量化到整数会引入误差。ROI Align用双线性插值替代了量化操作在每个bin中采样4个点做双线性插值然后取max精度提升明显。这个改进对小目标检测尤其重要因为小目标对坐标误差更敏感。训练Faster RCNN的时候正负样本划分策略也需要关注。RPN阶段IoU大于0.7的锚框标为正样本小于0.3的标为负样本中间的不参与训练。检测头阶段IoU大于0.5的ROI标为正样本小于0.5的标为负样本。正负样本比例通常控制在1:3左右如果负样本太多会导致正负样本极度不平衡影响收敛。2.2 DETR的匈牙利匹配与Transformer解码器DETR的匈牙利匹配是训练的核心。假设有N个预测框和M个真实框N通常远大于M需要找到一个最优的一对一匹配使得总匹配代价最小。匹配代价由三部分组成分类损失、边界框L1损失和GIoU损失。分类损失用交叉熵边界框损失用L1和GIoU的加权和。匈牙利算法的时间复杂度是O(N^3)但N通常只有100所以实际开销可以接受。Transformer解码器是DETR的另一个核心组件。它接收编码器输出的特征序列和一组可学习的对象查询Object Queries通过自注意力和交叉注意力机制让每个查询关注到图像中不同的区域。对象查询的数量决定了模型能检测的最大目标数通常设为100。如果数据集中目标数量经常超过100就需要增加查询数量但这会增加计算量。DETR训练自己数据的时候数据格式需要特别注意。DETR官方代码要求COCO格式的标注文件包括images、annotations和categories三个部分。如果原始数据是VOC格式需要先转换成COCO格式。转换的时候要注意边界框坐标的格式COCO用的是[x_min, y_min, width, height]而VOC用的是[x_min, y_min, x_max, y_max]需要做转换。另外DETR对图像尺寸有要求短边通常缩放到800长边不超过1333这个预处理步骤不能省略。2.3 YOLO的损失函数与正负样本分配YOLOv8的损失函数由三部分组成分类损失、回归损失和DFLDistribution Focal Loss。分类损失用的是BCE Loss回归损失用的是CIoU LossDFL则是把边界框回归建模为离散概率分布通过积分得到最终的框坐标。DFL的好处是让模型学习到边界框的不确定性对模糊边界的处理更鲁棒。正负样本分配是YOLO训练的关键环节。v5用的是基于宽高比的分配策略v8用的是Task-Aligned Assigner。Task-Aligned Assigner的核心思想是对于每个真实框选择分类得分和回归IoU乘积最大的前k个预测框作为正样本。这个策略的好处是让分类和回归任务对齐避免分类得分高但回归不准的预测框被选为正样本。YOLO训练中BN崩溃是个常见问题。BN层在训练时用当前batch的均值和方差做归一化如果batch size太小比如小于8均值和方差的估计会非常不稳定导致训练崩溃。解决方法有两个一是增大batch size二是用SyncBN跨GPU同步均值和方差。如果显存不够可以用梯度累积来模拟大batch但要注意BN的统计量仍然是小batch的所以梯度累积不能解决BN崩溃问题只能用SyncBN或者冻结BN层。2.4 三大框架的部署要点对比部署是目标检测落地最关键的环节。Faster RCNN的部署相对复杂因为有两阶段流程RPN和检测头需要分别处理TensorRT对两阶段模型的支持也不如单阶段友好。我一般用ONNX导出Faster RCNN然后用TensorRT做推理但ROI Align在TensorRT中的实现需要自定义插件比较麻烦。DETR的部署难点在于Transformer结构。TensorRT对Transformer的支持在8.0版本之后才比较完善但DETR中的匈牙利匹配只在训练时用到推理时只需要解码器输出和简单的阈值过滤所以部署相对简单。不过DETR的推理速度较慢V100上处理一张1080p图像大约需要200-300毫秒不适合实时场景。YOLO的部署是最成熟的。YOLOv8官方提供了ONNX、TensorRT、OpenVINO等多种导出格式还有现成的C和Python推理代码。TensorRT FP16量化后YOLOv8s在T4上跑640分辨率可以做到2-3毫秒一帧这个速度支持几十路视频流完全没问题。如果要做视频监控场景通常还需要配合RTSP拉流、解码和前后处理这些环节的开销也需要考虑进去。3. 实操过程与核心环节实现3.1 Faster RCNN训练自己数据的完整流程假设你有一个电力红外数据集标注格式是VOC需要训练Faster RCNN做绝缘子检测。第一步是数据准备把VOC格式转成COCO格式用pycocotools做转换。转换脚本的核心逻辑是遍历VOC的XML文件提取边界框坐标和类别然后按照COCO的JSON结构组织。注意COCO的id从1开始不是从0开始。第二步是锚框聚类。用K-means对训练集的所有真实框做聚类距离度量用1-IoU。聚类数设为9得到9个锚框的宽高。然后把锚框参数写入配置文件。这个步骤能显著提升小目标的召回率我实测在电力红外数据集上聚类后的锚框比默认锚框的mAP提升了3-5个百分点。第三步是配置训练参数。Faster RCNN的学习率通常设为0.001用SGD优化器momentum 0.9weight decay 0.0005。backbone用预训练的ResNet50前几层冻结只训练后面的层。训练epoch数通常设12-24如果数据集较小可以适当增加。数据增强用随机水平翻转、随机裁剪和颜色抖动注意不要用垂直翻转因为绝缘子的方向是有意义的。第四步是训练和验证。用COCO评估指标主要看mAP0.5和mAP0.5:0.95。训练过程中如果发现loss震荡可以降低学习率或者增大batch size。如果验证集mAP不上升可能是过拟合了需要增加数据增强或者加正则化。我一般会保存每个epoch的模型最后选验证集mAP最高的那个。3.2 DETR训练自己数据的踩坑记录DETR训练自己数据的第一步是准备COCO格式的标注文件。如果原始数据是VOC格式需要写转换脚本。转换的时候要注意类别id的映射COCO的类别id从1开始0是背景。另外DETR要求图像的文件名在标注文件中唯一如果有重名需要先重命名。第二步是配置训练参数。DETR的学习率设置非常关键backbone的学习率设为1e-5Transformer部分的学习率设为1e-4这是官方推荐的比例。如果backbone学习率设大了预训练权重会被破坏训练很难收敛。优化器用AdamWweight decay 1e-4。学习率调度用余弦退火warmup 10个epoch。第三步是处理训练收敛慢的问题。如果不想换Deformable DETR可以通过以下方式加速收敛增加warmup epoch数、用更大的batch size、用focal loss替代交叉熵。我试过把warmup从10增加到20收敛速度提升了约20%。另外DETR对数据增强比较敏感随机裁剪会改变目标数量影响二分图匹配建议只用随机水平翻转和颜色抖动。第四步是推理和评估。DETR推理时不需要NMS直接对100个预测框做阈值过滤即可。但要注意DETR的输出没有经过sigmoid分类得分需要做softmax。评估的时候用COCO指标DETR在小目标上的表现通常不如YOLO如果小目标很多需要考虑用Deformable DETR或者增加查询数量。3.3 YOLOv8从训练到TensorRT部署全流程YOLOv8的训练流程非常标准化。第一步是准备数据YOLO格式的标注文件是每张图对应一个txt文件每行是class_id x_center y_center width height坐标都归一化到0-1。如果原始数据是VOC或COCO格式可以用Ultralytics提供的转换脚本。第二步是配置训练参数。YOLOv8的训练配置文件是yaml格式主要参数包括model模型结构、data数据集配置、epochs训练轮数、batchbatch size、imgsz输入尺寸、lr0初始学习率。我一般用YOLOv8s或YOLOv8mimgsz设640batch设16epochs设100lr0设0.01。如果显存不够可以减小batch或者用梯度累积。第三步是训练和监控。YOLOv8训练过程中会输出loss曲线、mAP曲线和混淆矩阵。混淆矩阵总合不唯一是个常见问题原因是多类别检测中一个预测框可能被分配到多个类别导致混淆矩阵的行和列总和不一致。这个不影响训练但分析的时候要注意。如果发现BN崩溃检查batch size是否太小或者用SyncBN。第四步是导出ONNX和TensorRT。YOLOv8提供了model.export(formatonnx)和model.export(formatengine)接口非常方便。导出ONNX的时候要注意opset版本建议用opset 12或更高。导出TensorRT的时候要指定FP16或INT8量化FP16精度损失很小速度提升明显。我实测YOLOv8s在T4上FP16推理640分辨率约2.5毫秒INT8约1.8毫秒但INT8需要校准数据集精度损失约1-2个百分点。3.4 视频流实时检测的工程实现监控视频拉流RTSP做YOLO实时检测是个典型场景。整个pipeline包括RTSP拉流、视频解码、预处理、YOLO推理、后处理、结果渲染和推流。RTSP拉流可以用OpenCV的VideoCapture或者GStreamerOpenCV简单但延迟较高GStreamer延迟低但配置复杂。我一般用GStreamer做拉流和解码用appsink把帧送到YOLO推理。预处理包括resize到640×640、归一化和通道转换。YOLOv8的预处理在GPU上做比在CPU上快很多可以用CUDA kernel或者TensorRT的预处理插件。后处理包括阈值过滤和NMSYOLOv8的输出是8400个预测框80×8040×4020×20需要先做置信度过滤再做NMS。NMS可以用TensorRT的NMS插件或者自己写CUDA kernel。多路视频流的并发处理需要考虑GPU资源的分配。如果单路推理耗时2.5毫秒理论上T4可以支持400路但实际瓶颈在解码和前后处理。我一般用多线程做解码和预处理用CUDA流做推理的并发用共享内存做帧的传递。实测下来T4上跑8路1080p25帧的YOLOv8s检测GPU利用率约60%还有余量。4. 常见问题与排查技巧实录4.1 训练不收敛的排查思路训练不收敛是目标检测中最常见的问题。排查思路可以按以下顺序进行先检查数据标注是否正确用可视化工具把标注框画到图像上看看有没有漏标、错标或者坐标越界。然后检查学习率是否合适学习率太大会导致loss震荡太小会导致收敛慢。可以用学习率扫描LR Finder找到合适的学习率范围。如果数据和学习率都没问题检查模型结构是否正确。Faster RCNN的RPN和检测头是否共享特征DETR的Transformer层数是否匹配YOLO的backbone和neck是否连接正确。这些结构问题在自定义模型时经常出现。另外检查损失函数是否正确实现特别是YOLO的CIoU Loss和DFL实现错误会导致训练完全无法收敛。还有一个容易被忽略的问题是数据预处理。如果训练时和推理时的预处理不一致比如训练时用了归一化但推理时没用会导致精度大幅下降。我一般会把预处理逻辑封装成一个类训练和推理共用避免不一致。4.2 小目标检测效果差的改进方案小目标检测是目标检测的难点。改进方案可以从以下几个角度入手第一是提高输入分辨率YOLO从640提升到1280小目标召回率会明显提升但推理速度会下降约4倍。第二是修改网络结构增加高分辨率特征图的输出比如在YOLO的neck中增加一个更浅层的输出分支。第三是用数据增强比如Mosaic和MixUp让小目标在训练时出现更多次。Faster RCNN的小目标改进主要是调整锚框尺度增加小尺度的锚框。DETR的小目标改进可以用Deformable DETR的多尺度可变形注意力让每个查询关注多个尺度的特征。另外可以在损失函数中增加小目标的权重让模型更关注小目标。我实测下来YOLOv8在COCO上的小目标APAP_small大约是30左右如果数据集中小目标占比很高这个指标可能更低。提升小目标检测最有效的方法还是提高输入分辨率其次是增加高分辨率特征图。如果这两个方法都不行可能需要考虑用专门的小目标检测算法比如SAHISlicing Aided Hyper Inference把大图切成小图分别检测。4.3 部署时的精度损失与优化部署时的精度损失主要来自量化。FP16量化精度损失很小通常小于0.5个百分点可以放心用。INT8量化精度损失较大通常1-3个百分点需要校准数据集来减小损失。校准数据集的选取很关键要从训练集中随机采样500-1000张图覆盖所有类别和场景。TensorRT优化的时候有几个参数需要注意workspace size要设大一些否则某些层可能无法用最优kernelbuilder optimization level设3或4会花更多时间搜索最优kernel但推理更快dynamic shape要设好如果输入尺寸固定就设固定shape性能更好。还有一个常见问题是ONNX导出时的opset版本。不同版本的opset支持的算子不同如果导出失败可以尝试降低opset版本。另外YOLOv8的DFL层在ONNX中可能不被支持需要自定义算子或者用TensorRT插件实现。4.4 常见问题速查表问题现象可能原因排查方法解决方案训练loss不下降学习率太小或太大用LR Finder扫描调整学习率训练loss震荡batch size太小检查batch size增大batch或梯度累积BN崩溃batch size小于8检查batch size用SyncBN或冻结BN小目标检测差输入分辨率低检查输入尺寸提高分辨率或增加高分辨率特征图推理速度慢未量化或未用TensorRT检查推理后端用TensorRT FP16/INT8精度下降量化损失对比FP32和量化后精度用校准数据集或混合精度混淆矩阵总合不唯一多类别分配冲突检查预测框类别分配正常现象分析时注意DETR收敛慢学习率设置不当检查backbone学习率backbone学习率设为Transformer的1/10YOLO训练中BN崩溃batch size太小检查batch size用SyncBN或增大batch视频流检测延迟高解码和前后处理耗时用profiler分析用GPU解码和预处理4.5 独家避坑技巧第一个技巧是关于YOLO预训练模型下载。Ultralytics的预训练模型托管在GitHub上国内下载可能很慢。我一般用代理或者镜像站下载下载后放到~/.cache/torch/hub/checkpoints/目录下这样YOLO会自动加载。如果下载的模型文件名不对YOLO会重新下载所以文件名要匹配。第二个技巧是关于DETR训练自己数据。DETR的官方代码要求COCO格式的标注文件但COCO格式的JSON文件在数据量大时解析很慢。我一般会把COCO格式转成更高效的格式比如用pycocotools的COCO类加载后转成numpy数组训练时直接读numpy速度提升明显。第三个技巧是关于YOLO的TensorRT部署。YOLOv8导出的ONNX模型输出是三个尺度的特征图后处理需要做解码和NMS。我一般把后处理也放到TensorRT中用EfficientNMS插件这样整个推理pipeline都在GPU上速度更快。EfficientNMS是TensorRT 8.0之后自带的插件支持多类别NMS性能很好。第四个技巧是关于Faster RCNN的ROI Align。TensorRT没有原生的ROI Align插件需要自己写CUDA kernel。如果不想写kernel可以把ROI Align替换成ROI Pooling精度损失约1-2个百分点但部署简单很多。或者用ONNX Runtime做推理ONNX Runtime对ROI Align的支持比较好。第五个技巧是关于视频流检测的帧率控制。如果视频流帧率是25帧但YOLO推理只能做到20帧会导致帧堆积。我一般用丢帧策略如果推理队列超过一定长度就丢弃旧帧保证实时性。另外可以用多线程做解码和推理的流水线解码线程和推理线程通过队列通信提高吞吐量。5. 三大框架的适用场景与选型建议5.1 精度优先场景的选型如果场景对精度要求极高比如医学影像分析、遥感图像检测、工业质检Faster RCNN依然是首选。Faster RCNN在COCO上的mAP0.5:0.95可以做到40以上比YOLOv8高2-3个百分点。而且Faster RCNN对小目标的检测效果更好因为ROI Align保留了更精确的空间信息。DETR在精度上也有优势特别是在大目标检测上因为Transformer的全局注意力机制可以捕捉长距离依赖。但DETR的小目标检测不如Faster RCNN而且训练收敛慢需要更多数据和更长的训练时间。如果数据集足够大比如超过10万张图DETR可以做到很好的精度。5.2 速度优先场景的选型如果场景对速度要求极高比如实时视频监控、自动驾驶、机器人导航YOLO是唯一选择。YOLOv8s在T4上FP16推理640分辨率可以做到2.5毫秒这个速度是Faster RCNN的30倍以上。而且YOLO的部署工具链最成熟ONNX、TensorRT、OpenVINO都有现成的导出和推理代码。YOLO的精度虽然不如Faster RCNN但在大多数工业场景下已经足够。YOLOv8m在COCO上的mAP0.5可以做到50以上mAP0.5:0.95可以做到37左右。如果精度不够可以用更大的模型YOLOv8l或YOLOv8x或者用知识蒸馏把大模型的能力迁移到小模型。5.3 端到端可微分场景的选型如果场景需要端到端可微分比如需要联合训练检测和其他任务如跟踪、分割DETR是更好的选择。DETR的集合预测范式天然支持多任务联合训练而且不需要NMS后处理整个pipeline完全可微分。DETR的变体如DETR3D、PETR在3D检测上也有很好的表现。但DETR的推理速度较慢V100上处理一张1080p图像需要200-300毫秒不适合实时场景。如果要用DETR做实时检测需要用Deformable DETR或者DINO DETR这些变体通过可变形注意力机制大幅提升了推理速度V100上可以做到50-80毫秒。5.4 选型决策表场景推荐框架理由注意事项医学影像分析Faster RCNN精度高小目标好需要调锚框遥感图像检测Faster RCNN/DETR大目标DETR好小目标Faster RCNN好DETR需要大数据集实时视频监控YOLOv8速度快部署成熟需要TensorRT量化自动驾驶YOLOv8速度快精度够用需要多尺度检测工业质检Faster RCNN/YOLOv8精度和速度的权衡根据产线速度选端到端多任务DETR可微分支持联合训练推理速度慢移动端部署YOLOv8n模型小速度快需要INT8量化服务器端高吞吐YOLOv8s/m速度快支持多路需要GPU并发5.5 未来趋势与个人体会从技术趋势来看目标检测正在从“手工设计”向“自动搜索”和“端到端”演进。YOLO的版本迭代越来越快v9、v10、v11相继发布但核心思想没有根本变化还是在工程优化上做文章。DETR的变体越来越多Deformable DETR、DAB-DETR、DN-DETR、DINO DETR收敛速度越来越快精度越来越高。Faster RCNN虽然不再是最新的但作为两阶段检测器的经典依然在很多场景下不可替代。我个人在实际操作中的体会是不要盲目追新要根据场景选最合适的。YOLOv8在大多数工业场景下已经足够好部署成熟社区活跃遇到问题容易找到解决方案。Faster RCNN在精度要求极高的场景下依然是最稳的选择。DETR适合研究场景工业部署还需要再等等。另外数据质量比模型选择更重要标注准确、覆盖全面的数据集用YOLOv8也能做到很好的效果标注质量差的数据集用再新的模型也白搭。最后再分享一个小技巧如果要做YOLO的模型改进不要一上来就改网络结构先把数据增强、学习率调度、损失函数权重这些超参数调好往往能带来更大的提升。我见过很多人花大量时间改网络结构结果mAP只提升了0.5个百分点而把Mosaic增强的概率从0.5调到1.0mAP直接提升了2个百分点。超参数调优的性价比远高于结构改进。