尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

YOLOv5养殖场肉鸡健康状态检测:权重与数据集落地方案

发布时间:2026/9/28 17:17:45

资讯中心
01
ARTICLE

YOLOv5养殖场肉鸡健康状态检测:权重与数据集落地方案

YOLOv5养殖场肉鸡健康状态检测:权重与数据集落地方案
简介本资源面向从事智慧养殖与计算机视觉的开发者、学生及科研人员提供YOLOv5养殖场肉鸡健康状态检测的权重文件与配套数据集用于识别肉鸡异常与正常两类状态可直接支撑目标检测训练与推理任务。压缩包共983个文件约58.62MB包含441张jpg图像、435个txt标签、29个yaml配置、24个py脚本及3个pt权重等覆盖数据、配置与训练代码。数据集已按train、val、test划分完毕并附data.yamlnc为2类别为Abnormal与Normalyolov5、yolov7、yolov8、yolov9等算法均可直接训练。目前已有145人学习。读者可获得开箱即用的目录结构、标签格式与权重文件快速复现养殖场肉鸡健康状态检测流程并在此基础上做迁移学习与模型对比实验。1. 养殖场肉鸡健康状态检测从YOLOv5权重到数据集一套能跑通的落地方案肉鸡养殖最怕什么不是饲料涨价是鸡群生病发现太晚。一栋鸡舍动辄上万只鸡靠人眼巡检等你看出一只鸡精神萎靡、羽毛蓬乱、缩脖呆立的时候往往已经传染了一片。我去年帮一个存栏五万只的养殖场做巡检改造最开始想用红外测温结果鸡群密度一上来热成像互相遮挡数据全是噪声。后来换成摄像头加YOLOv5做视觉检测才真正把“弱鸡、病鸡、死鸡”这三类异常个体从鸡群里揪出来。这套方案的核心就两样东西一个训练好的YOLOv5权重文件一份标注好的肉鸡健康状态数据集。权重决定模型能不能认出病鸡数据集决定模型在你的鸡舍里准不准。这篇文章不讲空泛的AI养殖概念只讲怎么把YOLOv5养殖场肉鸡健康状态检测权重和数据集这套东西真正用起来——从环境配置、数据标注、训练调参到部署排错每一步都给你能抄的代码和参数。适合谁看做智慧农业的算法工程师、养殖设备厂商的嵌入式开发、以及想自己动手搞巡检系统的养殖场技术负责人。如果你手里只有摄像头和一台带显卡的工控机这篇就是为你写的。2. 肉鸡健康状态检测的数据集怎么建标注规范、类别定义与增强策略2.1 为什么肉鸡健康检测的数据集不能直接套用COCO或VOC很多人第一反应是拿COCO预训练权重直接推理觉得鸡也是目标应该能认。我试过翻车得很彻底。COCO里根本没有“病鸡”“弱鸡”这种细分类别它只能框出“鸟”这个大类而且鸡舍里鸡只密集重叠COCO训练出来的模型对遮挡场景的召回率低得可怜。肉鸡健康状态检测的本质是细粒度行为与外观分类不是通用目标检测。你需要自己定义类别体系常见做法是分四类健康鸡normal、弱鸡weak表现为缩脖、闭眼、羽毛蓬乱、病鸡sick表现为精神萎靡、鸡冠发绀、排泄物异常、死鸡dead侧躺不动。有些方案会把“弱鸡”和“病鸡”合并成“异常鸡”但我建议分开因为后续处置措施不同——弱鸡可能只是环境应激病鸡需要隔离用药。类别定义直接决定标注成本和模型上限别偷懒。2.2 数据采集的四个硬指标角度、光照、密度、时长数据采集不是拿手机随便拍。我总结的硬指标是第一摄像头安装高度在鸡背上方1.5到2米俯视角度15到30度这个角度能最大程度减少鸡只互相遮挡第二光照要覆盖养殖场实际工况包括白天自然光、夜间补光灯、以及凌晨暗光至少三种光照条件各采一批第三鸡群密度要覆盖低密度每平米8到10只和高密度每平米15到18只高密度场景是模型最容易漏检的第四连续采集时长不少于72小时因为鸡的健康状态有昼夜节律死鸡在夜间出现频率更高。采集分辨率建议1920×1080帧率不用太高1到2帧每秒足够因为鸡的活动范围有限相邻帧差异小高帧率只会增加标注冗余。2.3 用LabelImg标注肉鸡数据集的实操步骤与四个边界坑标注工具用LabelImg就行开源免费Windows和Linux都能跑。安装命令如下pip install labelImg labelImg打开后选择PascalVOC格式因为后续转YOLO格式方便。标注时按以下步骤操作第一步设置类别文件。在LabelImg里新建一个predefined_classes.txt写入四行normal、weak、sick、dead。加载后快捷键1到4分别对应四类。第二步框选原则。只框鸡的躯干部分不要框翅膀和尾巴的延伸区域因为病鸡和弱鸡的翅膀姿态差异大框进去反而引入噪声。对于死鸡框选整个侧躺轮廓。第三步遮挡处理。如果一只鸡被遮挡超过50%标记为“difficult”并跳过不要强行标注。遮挡样本在训练时会被忽略强行标注只会让模型学到错误特征。第四步边界坑。第一个坑是“弱鸡和病鸡的边界模糊”我的经验是看鸡冠颜色和眼睛状态鸡冠发绀或眼睛闭合超过3秒的归为病鸡否则归为弱鸡。第二个坑是“死鸡和深度睡眠鸡的混淆”死鸡的典型特征是侧躺且颈部完全松弛睡眠鸡虽然也卧倒但头部会偶尔抬起标注时多看几帧再定。第三个坑是“同一只鸡在不同帧被标成不同类别”解决办法是标注时按视频片段顺序来不要随机跳帧。第四个坑是“背景干扰”鸡舍的料线、水线、风机容易被误标标注时只框鸡背景一律不标。2.4 从VOC转YOLO格式转换脚本与数据增强参数标注完得到的是XML文件YOLOv5需要的是每张图对应一个txt每行格式为类别索引 中心x 中心y 宽度 高度全部归一化到0到1。转换脚本如下import xml.etree.ElementTree as ET import os # 类别映射顺序必须和训练时的data.yaml一致 classes [normal, weak, sick, dead] def convert_annotation(xml_path, output_dir): tree ET.parse(xml_path) root tree.getroot() size root.find(size) w int(size.find(width).text) h int(size.find(height).text) # 用图片文件名生成同名txt txt_name os.path.splitext(os.path.basename(xml_path))[0] .txt with open(os.path.join(output_dir, txt_name), w) as f: for obj in root.iter(object): cls_name obj.find(name).text if cls_name not in classes: continue cls_id classes.index(cls_name) xmlbox obj.find(bndbox) x1 float(xmlbox.find(xmin).text) y1 float(xmlbox.find(ymin).text) x2 float(xmlbox.find(xmax).text) y2 float(xmlbox.find(ymax).text) # 归一化并计算中心点 cx (x1 x2) / 2.0 / w cy (y1 y2) / 2.0 / h bw (x2 - x1) / w bh (y2 - y1) / h f.write(f{cls_id} {cx:.6f} {cy:.6f} {bw:.6f} {bh:.6f}\n) # 批量转换 xml_dir annotations out_dir labels os.makedirs(out_dir, exist_okTrue) for f in os.listdir(xml_dir): if f.endswith(.xml): convert_annotation(os.path.join(xml_dir, f), out_dir)这段脚本的逻辑很直接解析XML提取边界框坐标按图片宽高归一化写入YOLO格式。参数说明classes列表的顺序必须和后续data.yaml里的names完全一致否则类别索引错位模型会把病鸡认成健康鸡。归一化用六位小数足够YOLOv5内部会再做一次缩放。数据增强方面YOLOv5自带Mosaic、MixUp、HSV增强。针对肉鸡场景我建议把HSV的饱和度增强调低因为鸡冠颜色是判断病鸡的重要特征饱和度扰动太大会让模型学偏。在data.yaml同级目录建一个hyps.yaml覆盖以下参数hsv_h: 0.015 hsv_s: 0.4 hsv_v: 0.3 mosaic: 0.8 mixup: 0.1hsv_s从默认0.7降到0.4减少颜色失真。mosaic保持0.8因为鸡群密集场景需要这种拼接增强来提升遮挡鲁棒性。mixup设0.1太高会让病鸡和健康鸡的特征混在一起反而降低分类精度。3. YOLOv5环境配置与权重加载从conda到GPU推理的完整链路3.1 conda环境配置与YOLOv5源码拉取环境配置是新手最容易卡住的地方。我一般用conda建独立环境避免和系统Python冲突。命令如下conda create -n chicken_yolo python3.8 -y conda activate chicken_yolo # 安装PyTorch根据你的CUDA版本选这里以CUDA 11.3为例 pip install torch1.12.1cu113 torchvision0.13.1cu113 --extra-index-url https://download.pytorch.org/whl/cu113 # 拉取YOLOv5源码 git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txt参数说明Python用3.8是因为YOLOv5对3.9以上版本的部分依赖兼容性偶尔出问题3.8最稳。PyTorch版本要和你的显卡驱动匹配用nvidia-smi查看CUDA版本然后去PyTorch官网找对应命令。requirements.txt里包含numpy、opencv-python、tqdm等装完可以用python -c import torch; print(torch.cuda.is_available())验证GPU是否可用返回True才算配置成功。3.2 预训练权重下载与自定义数据集的yaml配置YOLOv5官方提供了s、m、l、x四个规模的预训练权重养殖场场景我推荐用yolov5s或yolov5m。s模型推理速度快适合边缘设备m模型精度更高适合工控机。下载命令# 在yolov5目录下执行 wget https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt如果网络不稳定也可以手动下载后放到yolov5根目录。注意这里下载的是COCO预训练权重它已经学过通用特征你只需要在自己的肉鸡数据集上微调比从头训练快得多精度也更高。接下来配置data.yaml放在yolov5/data目录下path: ../datasets/chicken train: images/train val: images/val nc: 4 names: [normal, weak, sick, dead]path是数据集根目录train和val是相对路径。nc是类别数必须和names长度一致。names顺序必须和标注时的classes列表完全一致这是血泪教训顺序错了模型输出全是乱的。3.3 训练命令与关键超参数batch size、学习率、epochs怎么定训练命令如下python train.py --img 640 --batch 16 --epochs 100 --data data/chicken.yaml --weights yolov5s.pt --cfg models/yolov5s.yaml --hyp data/hyps/hyps.yaml --name chicken_exp参数逐个说--img 640是输入分辨率肉鸡检测用640足够再大显存吃不消。--batch 16取决于你的显存8G显存用1612G用32不要盲目调大batch太大会导致梯度更新粗糙小目标漏检。--epochs 100肉鸡数据集一般5000到10000张图100轮足够收敛太多会过拟合。--weights指定预训练权重。--cfg指定模型结构。--hyp指定超参数文件。--name是实验名称结果会保存在runs/train/chicken_exp。训练过程中重点看三个指标box_loss、obj_loss、cls_loss。box_loss下降说明定位在变准obj_loss下降说明目标存在性判断在变好cls_loss下降说明分类在变准。如果cls_loss震荡不降大概率是类别不平衡健康鸡样本远多于病鸡样本解决办法是在data.yaml里加类别权重或者对病鸡样本做过采样。3.4 用训练好的权重做推理单张图、视频流、批量图片三种方式训练完成后权重保存在runs/train/chicken_exp/weights/best.pt。推理有三种常用方式单张图片推理python detect.py --weights runs/train/chicken_exp/weights/best.pt --source test.jpg --img 640 --conf 0.5视频流推理适合接摄像头python detect.py --weights runs/train/chicken_exp/weights/best.pt --source 0 --img 640 --conf 0.5 --view-img批量图片推理python detect.py --weights runs/train/chicken_exp/weights/best.pt --source datasets/chicken/images/val --img 640 --conf 0.5 --save-txt参数说明--conf是置信度阈值肉鸡检测建议0.5太低会误检太高会漏检病鸡。--view-img是实时显示调试时用。--save-txt会保存检测结果的txt文件方便后续统计。推理结果默认保存在runs/detect/exp目录下。4. 肉鸡健康检测模型训练避坑从数据泄漏到过拟合的排查清单4.1 现象验证集mAP很高但实际鸡舍推理全是误检原因数据泄漏。你的训练集和验证集可能来自同一段视频的相邻帧相邻帧差异极小模型相当于在“背答案”。验证集mAP虚高一到新场景就崩。解决按视频片段划分数据集而不是按帧随机划分。同一段视频的帧要么全在训练集要么全在验证集。我一般用7:2:1的比例训练集来自5段视频验证集来自2段视频测试集来自1段视频确保场景不重叠。4.2 现象训练loss正常下降但模型把死鸡认成健康鸡原因类别不平衡。健康鸡样本可能是死鸡的10倍以上模型倾向于把少数类预测为多数类来降低整体loss。解决在data.yaml里加类别权重或者在训练时用--class-weights参数。更直接的办法是对死鸡和病鸡样本做过采样复制到和健康鸡数量接近。也可以用focal loss替代默认的交叉熵但YOLOv5改损失函数比较麻烦过采样更省事。4.3 现象模型在白天光照下准夜间补光灯下漏检严重原因训练数据光照分布不均。如果采集时80%是白天模型没学过夜间特征。解决重新采样确保白天、夜间、暗光三种光照各占三分之一。如果夜间数据实在难采用HSV增强模拟暗光把hsv_v调低到0.2让模型在训练时见到暗光样本。4.4 现象推理速度慢树莓派上跑不动原因模型太大或输入分辨率太高。yolov5m在树莓派上推理一帧要几百毫秒根本达不到实时。解决换yolov5s输入分辨率降到416用TensorRT或ONNX Runtime加速。树莓派5上部署YOLOv5建议先导出ONNX再用onnxruntime推理比PyTorch原生快2到3倍。导出命令python export.py --weights best.pt --include onnx --img 4164.5 现象同一只鸡连续多帧被反复检测计数重复原因没有做跟踪检测器每帧独立输出。解决加一个简单的IOU跟踪器或者用ByteTrack。如果只是统计异常鸡数量可以在后处理里做非极大值抑制的跨帧版本把IOU大于0.5的检测框合并。更简单的办法是降低推理帧率比如每5秒推理一帧减少重复计数。5. 从权重到落地肉鸡健康检测的部署优化与一个实用技巧部署到养殖场现场核心矛盾是精度和速度的平衡。我一般分两步走先在工控机上用yolov5m跑高精度检测把置信度阈值设到0.6确保病鸡不漏检然后把模型导出为ONNX用TensorRT做FP16量化推理速度能提升2到3倍精度损失在1%以内。如果现场只有树莓派那就用yolov5s加416分辨率置信度降到0.4牺牲一点误检率换召回率因为漏掉一只病鸡的代价远大于误报一只健康鸡。一个实用技巧是“双阈值报警”。设置两个置信度阈值高阈值0.7直接报警低阈值0.4到0.7之间标记为可疑连续3帧都落在可疑区间才报警。这样能过滤掉单帧的偶然误检又不会漏掉真正的病鸡。代码实现很简单在detect.py的后处理里加一个计数器# 伪代码在检测循环中维护一个可疑计数器 suspicious_count {} for frame in video_stream: results model(frame) for det in results: cls_id det.cls conf det.conf track_id get_track_id(det) # 用IOU匹配上一帧的ID if conf 0.7: alarm(track_id, cls_id) elif conf 0.4: suspicious_count[track_id] suspicious_count.get(track_id, 0) 1 if suspicious_count[track_id] 3: alarm(track_id, cls_id) else: suspicious_count[track_id] 0这个逻辑的关键是track_id没有跟踪的话计数器会乱。可以用简单的IOU匹配当前帧检测框和上一帧检测框IOU大于0.5就认为是同一只鸡。如果嫌麻烦直接用ByteTrackYOLOv5的detect.py已经支持--track参数。最后说一个我踩过的坑模型在实验室测试集上mAP 0.85到现场第一天就报警了几十次全是误报。排查发现是鸡舍的料线反光被模型当成了病鸡的白色羽毛。解决办法是在训练集里加入负样本把料线、水线、风机这些背景单独标注为“background”类或者直接把这些区域裁剪掉不参与训练。负样本不需要多每个场景加200张就够。这个教训让我明白养殖场场景的复杂性远超实验室数据集里没有负样本模型就会把一切白色反光都当成病鸡。希望帮到你。本文还有配套的精品资源点击获取
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。