🧠 一、基础原理类
1️⃣ Q: YOLOv8 相比 YOLOv5 有哪些改进?
答:
网络结构上:
- 去掉了 anchor(使用了 anchor-free 机制,类似于 YOLOX)。
- 默认 backbone 使用 C2f(Conv + 2 feature fusion) 结构替代了 CSP。
- 使用了 RT-DETR 风格的 decoupled head(分类与回归分支解耦)。
预测框格式:
- 从 YOLOv5 的
[x_center, y_center, w, h]
变为[x1, y1, x2, y2]
,统一为检测框左上+右下角。
- 从 YOLOv5 的
支持任务更多:
YOLOv8-cls
、YOLOv8-det
、YOLOv8-seg
、YOLOv8-pose
、YOLOv8-track
。
⚙️ 二、训练部署类
2️⃣ Q: 如何使用 YOLOv8 进行小目标检测优化?
答:
- 提高输入图像分辨率(如从 640 提到 1024)。
- 修改模型结构,增加浅层特征(如添加
P2
层)。 - 调整
imgsz
、stride
、anchor-free
参数。 - 加强小目标数据增强(如 Mosaic、Copy-Paste)。
- 适当加权小目标类别损失。
3️⃣ Q: YOLOv8 的部署方式有哪些?
答:
- Python 脚本部署:直接使用 Ultralytics 的 API。
- ONNX 导出:用于部署到 TensorRT、OpenVINO、NCNN。
- TorchScript 导出:支持 Pytorch Mobile。
- Web部署:可结合 FastAPI + WebSocket。
- 边缘设备部署:Jetson Nano、Orin、Raspberry Pi。
📈 三、损失函数与评估类
4️⃣ Q: YOLOv8 使用了哪些损失函数?
答:
- CIoU 损失:回归框位置。
- BCE Loss:分类损失。
- DICE Loss / BCE(分割任务中):用于 mask。
- 总损失 = 分类损失 + 框损失 + 置信度损失
5️⃣ Q: YOLOv8 的评估指标有哪些?
答:
- mAP@0.5
- mAP@0.5:0.95(主指标)
- Precision / Recall
- FPS / latency(推理性能)
🛠 四、工程能力类
6️⃣ Q: 你如何在实际工业项目中使用 YOLOv8?
答(结合真实项目):
- 在动车零部件图像检测中,使用 YOLOv8 训练缺陷识别模型;
- 对图像进行自动标注 + 自研增强 pipeline;
- 使用 YOLOv8 的
task=segment
变体进行划痕分割; - 模型部署在 Jetson AGX Orin,通过 TensorRT 加速;
- 使用 confidence 阈值 + 多模型融合 提高精度。
7️⃣ Q: YOLOv8 怎么实现多类别缺陷检测和分割?
答:
- 在数据集中设置多类 label(不同缺陷类型为不同类别)。
- 使用
yolo task=seg
模式训练。 - 输出为多个类别的 mask,训练时采用 DICE+CE loss 组合。
- 后处理中根据置信度和类别标签分别显示或统计结果。
🧪 五、衍生与延展问题(面试官喜欢问)
问题 | 要点 |
---|---|
如何理解 anchor-free 与 anchor-based 的区别? | Anchor-free 更简洁,适用于多尺度或小目标;YOLOv8 默认 anchor-free。 |
YOLOv8 与 RT-DETR 相比有何优势? | YOLOv8 推理速度更快,结构更轻;RT-DETR 更强但慢。 |
YOLOv8 如何结合 SAM(Segment Anything)使用? | 可作为前处理或后处理模块,提高分割精度或边缘细化。 |
如何解决过拟合? | 增强数据、多模型集成、使用 dropout、early stopping。 |
YOLOv8 与 YOLO-NAS、YOLOv9 的对比? | YOLO-NAS 精度更高但速度略慢;YOLOv9 引入更强训练技巧。 |
🧾 六、总结
在实际工业视觉项目中,使用 YOLOv8 的分割分支 (
yolov8-seg
) 实现了高精度缺陷检测,通过 anchor-free 解耦头结构提升小目标检测能力,并结合 ONNX + TensorRT 实现低延迟边缘部署。