共计 1712 个字符,预计需要花费 5 分钟才能阅读完成。
背景与痛点分析
马匹皮肤病检测是兽医领域的常见需求,但在实际应用中面临多重挑战:

- 环境干扰因素 :
- 马场光照条件复杂(强光 / 阴影交替)
- 马匹毛发遮挡病灶区域
-
皮肤病早期症状表现为微小皮损(<32×32 像素)
-
数据稀缺性问题 :
- 专业标注成本高(需兽医参与)
- 本实验数据集包含 980 张图像,类别分布为:
- 过敏性皮炎:320 张
- 普通皮炎:280 张
- 健康马匹:380 张
- 存在明显的类别不均衡现象
技术选型与方案设计
算法对比实验
通过对比三种主流目标检测框架在验证集上的表现:
| 模型 | mAP@0.5 | 推理速度 (FPS) | 显存占用 |
|---|---|---|---|
| Faster R-CNN | 0.68 | 8 | 4.2GB |
| SSD512 | 0.72 | 23 | 3.1GB |
| YOLOv5s | 0.75 | 45 | 2.4GB |
选择 YOLOv5 的核心优势:
- 实时性满足马场巡检需求
- 内置的 Focus 结构有效保留小目标特征
- 完善的 PyTorch 生态支持
数据增强策略
针对样本不足采用组合增强:
- Mosaic 增强:四图拼接提升小目标学习
- RandomAffine:模拟不同拍摄角度
- HSV 调整:增强光照鲁棒性
- 类别权重采样:缓解数据不平衡
核心实现细节
自定义数据集加载
# 转换 COCO 标注格式
def convert_to_coco(json_path, img_dir):
"""
params:
json_path: 原始标注文件路径
img_dir: 图像目录
"""
with open(json_path) as f:
anns = json.load(f)
coco_anns = {'images': [],
'annotations': [],
'categories': [{'id': 0, 'name': 'allergy'},
{'id': 1, 'name': 'dermatitis'}
]
}
# 具体转换逻辑...
模型微调关键点
- Anchor 优化 :
- 使用 k -means 重新聚类马匹皮肤病 ROI
-
得到新 anchor 尺寸:[12,16], [24,32], [36,48]
-
损失函数改进 :
- 分类任务采用 Focal Loss(α=0.8, γ=2)
-
CIOU Loss 替代原版 GIOU
-
网络结构调整 :
- 在 Backbone 末端增加 P2 特征层(stride=4)
- 修改 Detect 层为三尺度输出
性能优化实战
测试指标对比
| 改进措施 | mAP@0.5 | 推理时延 (ms) |
|---|---|---|
| 基线模型 | 0.71 | 22.3 |
| + 数据增强 | 0.76 | 22.1 |
| +Anchor 优化 | 0.78 | 21.9 |
| +Focal Loss | 0.81 | 22.5 |
TensorRT 加速部署
# 导出 ONNX 模型
model = torch.load('best.pt').eval()
x = torch.randn(1, 3, 640, 640)
torch.onnx.export(
model, x, 'model.onnx',
opset_version=12,
input_names=['images'],
output_names=['output']
)
# TensorRT 转换
!trtexec --onnx=model.onnx --saveEngine=model.engine --fp16
避坑经验分享
常见问题解决方案
- 标注错误修正 :
- 使用 LabelImg 复查边界框
-
通过 Grad-CAM 可视化验证可疑标注
-
过拟合识别 :
- 监控验证集 loss 早停(patience=15)
-
添加 Dropout 层 (rate=0.2)
-
部署优化 :
- 采用 CLAHE 算法预处理光照
- 开发 Android 端 APP 实时检测
完整代码获取
项目已开源在 GitHub:
github.com/username/horse_dermatitis_detection
包含以下关键文件:
– train.py:完整训练流程
– export.py:模型导出脚本
– dataset/:示例标注数据
欢迎尝试不同的数据增强组合,建议实验配置:
# data/horse.yaml
augmentation:
hsv_h: 0.015 # 色调变化幅度
hsv_s: 0.7 # 饱和度变化系数
flipud: 0.5 # 垂直翻转概率
degrees: 15 # 旋转角度范围
总结与展望
本方案在 980 张标注数据上达到 81% 的 mAP,后续可改进方向:
1. 引入半监督学习利用未标注数据
2. 开发病变程度分级模块
3. 集成到马场智能监测系统
期待与各位开发者交流优化思路,共同推进 AI 在兽医领域的落地应用。
正文完
发表至: 未分类
近一天内
