新闻详情

新闻详情

首页 / 资讯中心 / 详情

养殖场肉鸡健康检测:YOLOv5权重与数据集实战指南

发布时间:2026/9/28 17:18:06来源:尧图网络
养殖场肉鸡健康检测:YOLOv5权重与数据集实战指南
简介本资源面向智慧养殖与计算机视觉方向的开发者、学生及科研人员提供YOLOv5养殖场肉鸡健康状态检测的权重文件与配套数据集用于识别肉鸡异常与正常两类状态可直接支撑目标检测模型的训练、验证与推理。压缩包共983个文件约58.62MB包含441张jpg图像、435个txt标注文件以及29个yaml配置、24个py脚本和3个pt权重另附Dockerfile、sh脚本与ipynb教程覆盖数据、代码、权重与部署配置。数据集已按train、val、test划分完毕并附带data.yamlnc为2类别为Abnormal与Normalyolov5、yolov7、yolov8、yolov9等算法均可直接接入训练。目前已有145人学习下载适合希望快速复现养殖场肉鸡健康检测、开展课程设计或科研实验的读者可省去数据整理与目录配置成本将精力集中在模型调参与效果对比上。1. 养殖场肉鸡健康巡检这份 YOLOv5 权重和数据集到底能省多少事养殖场里最怕的不是鸡不吃料而是等到人眼看出不对劲时整栏已经传开了。肉鸡健康状态检测这件事本质上就是把「异常个体挑出来」这个动作自动化摄像头架在过道上方模型逐帧判断画面里的鸡是 Normal 还是 Abnormal异常个体触发告警饲养员再去复核。这份资源给的就是干这件事的完整起点——一份已经标注、已经划分好 train/val/test 的养殖场肉鸡健康状态检测数据集外加配套的 YOLOv5 检测权重标签是 txt 格式data.yaml 也配好了YOLOv5、YOLOv7、YOLOv8、YOLOv9 都能直接拿去训练。目录里还能看到 events.out.tfevents 训练日志、labels.cache 缓存、Dockerfile 和 tutorial.ipynb说明这不是一个只丢图片的裸数据集而是从训练到容器化部署都留了痕迹的工程包。适合谁做智慧农业视觉检测的、要拿目标检测落地养殖场景的、以及想找一个二分类检测数据集练手 YOLO 全流程的人。2. 数据集结构与标签格式先搞清 nc2 和 txt 标签怎么对上2.1 目录布局与 data.yaml 的字段含义拿到一个检测数据集第一件事不是急着 train而是把目录结构和配置文件对齐。这份资源的 data.yaml 长这样train: E:\python_code\dataset\Chicken_bad_data\train/images val: E:\python_code\dataset\Chicken_bad_data\valid/images test: E:\python_code\dataset\Chicken_bad_data\test/images nc: 2 names: - Abnormal - Normaltrain/val/test三个字段指向的是各自的 images 目录YOLO 系列在训练时会自动把路径里的images替换成labels去找同名 txt 标签所以你的目录必须是train/images和train/labels成对出现缺一个就会在扫描阶段报「No labels found」。nc: 2是类别数这里只有 Abnormal 和 Normal 两类属于典型的二分类检测任务。names的顺序极其关键——它决定了标签文件里第一个数字0代表谁。这里0对应 Abnormal1对应 Normal如果你自己重排了 names 却没改标签模型学出来的就是反的这种错误在验证集上 loss 正常下降、但推理结果全反属于最隐蔽的翻车之一。提示data.yaml 里的路径是 Windows 绝对路径换到 Linux 或服务器上训练时必须改成相对路径或对应挂载路径否则一启动就找不到数据。2.2 txt 标签的六列结构与 labels.cache 的作用YOLO 的 txt 标签每行是「类别 中心x 中心y 宽 高」后四个都是归一化到 0~1 的值。假设一张 640×640 的图里有一只异常鸡框在左上角 (100,120) 到 (260,300)那这行就是0 0.28125 0.328125 0.25 0.28125计算方式是中心 x (100260)/2/640 0.28125中心 y (120300)/2/640 0.328125宽 (260-100)/640 0.25高 (300-120)/640 0.28125。类别 0 就是 Abnormal。这份资源里出现的labels.cache是 YOLOv5 第一次扫描数据集后生成的缓存文件里面存了图片路径、尺寸和标签索引目的是加速后续 epoch 的数据加载。它的坑在于如果你改了标签内容或增删了图片但没删 cache训练时用的还是旧缓存表现为「明明改了标签训练结果没变」。常见做法是每次动过数据集就手动删掉所有labels.cache再重训。2.3 用脚本快速校验标签与图片是否一一对应在正式训练前我一般会跑一段校验脚本把「有图无标签」「有标签无图」「标签越界」这三类问题一次性揪出来import os from pathlib import Path IMG_EXTS {.jpg, .jpeg, .png, .bmp} root Path(rE:\python_code\dataset\Chicken_bad_data) for split in [train, valid, test]: img_dir root / split / images lbl_dir root / split / labels imgs {p.stem for p in img_dir.iterdir() if p.suffix.lower() in IMG_EXTS} lbls {p.stem for p in lbl_dir.glob(*.txt)} if lbl_dir.exists() else set() print(f[{split}] 图片 {len(imgs)} 张, 标签 {len(lbls)} 个) print(f 有图无标签: {sorted(imgs - lbls)[:5]}) print(f 有标签无图: {sorted(lbls - imgs)[:5]}) # 检查标签数值是否越界 for txt in lbl_dir.glob(*.txt): for i, line in enumerate(txt.read_text().strip().splitlines()): parts line.split() if len(parts) ! 5: print(f 格式异常 {txt.name} 第{i1}行: {line}) continue cls, cx, cy, w, h parts vals list(map(float, [cx, cy, w, h])) if any(v 0 or v 1 for v in vals): print(f 越界 {txt.name} 第{i1}行: {line})这段脚本做了三件事用stem集合比对图片和标签是否成对避免因为扩展名大小写或多余文件导致漏配逐行检查标签是否为 5 列防止手工标注时多打空格或漏列把归一化坐标限制在 0~1越界的框在训练时会被 YOLO 直接跳过或报 warning早发现早修。跑完如果三个 split 都是「有图无标签: []」说明数据组织是干净的可以进入下一步。3. 从权重到训练YOLOv5 跑通这份数据集的完整命令链3.1 环境配置与依赖版本选择YOLOv5 对环境和版本比较敏感尤其是 PyTorch 和 torchvision 的匹配。我一般用 conda 起一个干净环境避免和系统里的其他 CUDA 版本打架conda create -n chicken_yolo python3.9 -y conda activate chicken_yolo # 按你的 CUDA 版本装 PyTorch这里以 CUDA 11.8 为例 pip install torch2.0.1 torchvision0.15.2 --index-url https://download.pytorch.org/whl/cu118 # 拉取 YOLOv5 源码并装依赖 git clone https://github.com/ultralytics/yolov5.git cd yolov5 pip install -r requirements.txtpython3.9是 YOLOv5 目前兼容性最稳的版本区间3.11 以上偶尔会在某些依赖上出问题。PyTorch 版本要和你的显卡驱动匹配装完用python -c import torch; print(torch.cuda.is_available())验证返回 True 才算环境通了。requirements.txt 里包含 opencv、matplotlib、tqdm 等装完基本就能跑训练。如果你用的是这份资源自带的 Dockerfile那更省事直接 build 镜像就能跳过环境折腾适合部署到服务器或树莓派 5 这类边缘设备上做推理。3.2 用预置权重做迁移学习训练这份资源带了 YOLOv5 的检测权重最省算力的做法是拿它做迁移学习而不是从零训。把 data.yaml 放到 yolov5 目录下然后python train.py \ --weights yolov5s.pt \ --data data/chicken.yaml \ --img 640 \ --batch 16 \ --epochs 100 \ --device 0 \ --project runs/train \ --name chicken_exp参数逐个说--weights指向预训练权重用这份资源自带的权重或官方 yolov5s.pt 都行迁移学习能让模型在几十个 epoch 内收敛比从零训快得多--img 640是输入分辨率养殖场过道摄像头如果离得远、鸡只占画面比例小可以提到 960 或 1280但显存占用会明显上升--batch 16是批大小显存不够就降到 8 或 4--epochs 100对二分类检测通常够用配合早停机制patience 默认 100不会白跑--device 0指定第一块 GPUCPU 训练把这里改成cpu但速度会慢一个量级。训练日志会写进runs/train/chicken_exp里面能看到 events.out.tfevents 这类 TensorBoard 事件文件用tensorboard --logdir runs/train就能可视化 loss 和 mAP 曲线。3.3 训练过程要看哪些指标、什么时候该停训练启动后控制台每个 epoch 会打印 box_loss、obj_loss、cls_loss 和 mAP0.5。二分类检测里cls_loss应该稳步下降如果它长期不降甚至上升多半是标签类别写反或 names 顺序和标签对不上。mAP0.5是主指标肉鸡健康检测这种目标形态相对固定的场景正常收敛后能到 0.85 以上如果卡在 0.5 左右不动先查数据而不是调参。obj_loss反映的是「有没有目标」的判断如果它一直很高说明背景图太多或标注框漏标严重。我一般会盯前 10 个 epoch 的曲线趋势如果 loss 震荡剧烈先把学习率降一档--lr0 0.005再考虑加数据增强。训练结束后runs/train/chicken_exp/weights/下会有best.pt和last.ptbest.pt 是按验证集 mAP 选出的最优权重部署就用它。4. 推理、验证与部署权重拿到手之后怎么确认它真能用4.1 用 detect.py 做单图与批量推理训练完不验证等于白训。YOLOv5 的 detect.py 可以直接拿 best.pt 跑推理python detect.py \ --weights runs/train/chicken_exp/weights/best.pt \ --source E:\python_code\dataset\Chicken_bad_data\test\images \ --img 640 \ --conf-thres 0.4 \ --iou-thres 0.45 \ --save-txt \ --project runs/detect \ --name chicken_test--source可以是单张图、整个目录也可以是视频或摄像头编号0表示本机摄像头。--conf-thres 0.4是置信度阈值养殖场场景里漏检把异常鸡判成正常比误检代价更高所以这个值可以适当调低到 0.3宁可多报也别漏报。--iou-thres 0.45控制 NMS 的框合并力度鸡只密集时调高一点能减少框被误删。--save-txt会把检测结果按 YOLO 格式存下来方便和原标签做对比。跑完去runs/detect/chicken_test看可视化结果重点看 Abnormal 类有没有被稳定框出来。4.2 用验证集算 mAP 和混淆矩阵detect.py 看的是直观效果要量化还得用 val.pypython val.py \ --weights runs/train/chicken_exp/weights/best.pt \ --data data/chicken.yaml \ --img 640 \ --task val \ --conf-thres 0.001 \ --iou-thres 0.6--conf-thres 0.001是验证时的低阈值目的是把所有预测都算进来再画 PR 曲线不要和推理时的 0.4 混淆。跑完会输出每一类的 P、R、mAP0.5、mAP0.5:0.95还会生成混淆矩阵。二分类任务里如果 Abnormal 的召回率明显低于 Normal说明异常样本可能偏少或特征不明显需要补数据或调类别权重。这份资源的 test 集是独立划分的用它算出来的指标才代表真实泛化能力别拿 train 集的结果自我安慰。4.3 导出 ONNX 与边缘部署的注意点要在树莓派 5 或 Jetson 这类设备上跑通常先把模型导出成 ONNXpython export.py \ --weights runs/train/chicken_exp/weights/best.pt \ --include onnx \ --img 640 \ --batch 1 \ --opset 12--opset 12是 ONNX 算子集版本边缘推理框架对 11~12 支持最好太高可能不认。--batch 1是边缘设备常用的单批推理。导出后在目标设备上用 onnxruntime 加载注意输入尺寸和归一化方式要和训练时一致YOLOv5 默认是 640×640、0~1 归一化、RGB 通道。树莓派 5 上跑 yolov5s 的 ONNX单帧大概几十毫秒做低频巡检够用做实时多路视频就得考虑量化或换更小的模型。5. 避坑与排查这份数据集最容易翻车的五个地方5.1 现象训练一启动就报 No labels found原因data.yaml 里的路径指向了 images但同级没有 labels 目录或者 labels 目录名拼错。YOLO 是靠把路径字符串里的images替换成labels来找标签的目录结构必须严格成对。解决确认train/images和train/labels同级存在且标签文件名和图片文件名除扩展名外完全一致。5.2 现象改了标签但训练结果没变化原因labels.cache缓存没清。YOLOv5 扫描一次数据集后会生成 cache后续直接读缓存不重新解析 txt。解决删掉 train/val/test 下所有labels.cache重新启动训练让它重新扫描。5.3 现象推理结果类别全反Abnormal 判成 Normal原因data.yaml 里 names 的顺序和标签文件里的类别编号对不上。标签里0是按 names 列表顺序映射的如果你把 names 改成[Normal, Abnormal]却没改标签映射就反了。解决固定 names 顺序为[Abnormal, Normal]或者用脚本批量把标签里的 0/1 对调。5.4 现象mAP 一直上不去卡在 0.5 左右原因常见有三类——图片分辨率太低导致鸡只特征模糊、异常样本数量远少于正常样本导致类别不平衡、标注框漏标或框得过大。解决先统计两个类别的标注框数量差距超过 3:1 就考虑过采样或加类别权重再抽查几十张图看标注质量分辨率不够就把--img提到 960 重训。5.5 现象Windows 上训好的权重换到 Linux 报路径错误原因data.yaml 里写的是E:\python_code\...这种 Windows 绝对路径Linux 下不认。解决把 data.yaml 里的路径改成相对路径如../dataset/Chicken_bad_data/train/images或对应挂载路径训练脚本和数据放在同一工作目录下最省事。6. 把二分类检测做扎实类别不平衡处理与阈值调优的实操技巧这份数据集只有 Abnormal 和 Normal 两类看着简单但真正落地时最容易被类别不平衡和阈值选择坑到。养殖场里异常鸡本来就是少数如果 Abnormal 样本只占一成模型会倾向于把所有鸡都判成 NormalmAP 看着还行实际漏检一堆。我一般会先统计两个类的标注框数量用脚本几行就能出结果from pathlib import Path from collections import Counter lbl_dir Path(rE:\python_code\dataset\Chicken_bad_data\train\labels) counter Counter() for txt in lbl_dir.glob(*.txt): for line in txt.read_text().strip().splitlines(): if line: counter[line.split()[0]] 1 print(类别分布:, dict(counter))如果0Abnormal明显少于1Normal有三个处理方向一是在 data.yaml 同级用--weights配合--cls-pw之类的类别权重YOLOv5 部分版本支持让损失函数对少数类更敏感二是对 Abnormal 图片做过采样复制到训练集里但要注意别让同一张图在 train 和 val 里重复三是用 mosaic、mixup 这类增强提升少数类的多样性。我一般先试过采样简单直接效果不够再上类别权重。阈值调优是另一个容易被忽略的点。推理时的--conf-thres不是拍脑袋定的应该拿验证集跑一遍不同阈值下的 P-R 曲线找召回率和精确率的平衡点。养殖场巡检场景里漏检一只异常鸡的代价远大于多报一次所以我会把阈值压到召回率 0.9 以上对应的那个点哪怕精确率掉一些。具体做法是用 val.py 的--conf-thres 0.001导出所有预测再用脚本扫 0.1 到 0.6 的阈值画一条召回率曲线选拐点。这套流程走下来模型才算真正能用而不是「训练完了看着还行」。从那以后我每次拿到新的检测数据集都强制先跑一遍标签校验和类别分布统计再动训练脚本——这个习惯帮我省了至少三次白跑一整晚的算力。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

会议纪要总跑偏?实测一款能“听”懂人的AI记录工具,准确率98.7% 2026/9/28 18:06:57

会议纪要总跑偏?实测一款能“听”懂人的AI记录工具,准确率98.7%

开篇:为什么你的会议记录永远“对不上号”?你有没有遇到过这样的场景:开了一上午的跨部门协调会,大家七嘴八舌,你拼命记笔记,结果回头一看——关键决策漏了,谁说了什么分不清,甚至把…

阅读更多 →
越华环保集团分散式污水站点边缘采集与云平台对接架构设计 2026/9/28 18:06:56

越华环保集团分散式污水站点边缘采集与云平台对接架构设计

立足美丽中国十五五规划,越华环保集团依托山东环保装备,落地美丽河湖保护与建设项目,这套数字化污水治理架构解决分散站点数据断连难题。 一、技术痛点与项目背景 美丽河湖保护与建设项目多为沿河分散式污水站点,站点分布零散&…

阅读更多 →
打卡信奥刷题(3595)用C++实现信奥题 P11617 [PumpkinOI Round 1] 递推 2026/9/28 18:06:56

打卡信奥刷题(3595)用C++实现信奥题 P11617 [PumpkinOI Round 1] 递推

P11617 [PumpkinOI Round 1] 递推 题目背景一个简单的问题,什么是递推?题目描述 定义一个数列 {a0…an−1}\{a_0 \dots a_{n - 1} \}{a0​…an−1​} 的递推式为满足下式的序列 {r0…rm}\{r_0\dots r_m\}{r0​…rm​}: ∑j0mrjai−j0,∀i≥m\…

阅读更多 →
JeeWMS 开源仓库管理系统盘点与效期批次实践:Java WMS 如何把账做实、把货管鲜 2026/9/28 18:06:56

JeeWMS 开源仓库管理系统盘点与效期批次实践:Java WMS 如何把账做实、把货管鲜

> 选题编号:7(盘点与效期批次)## 一、仓库最贵的成本,往往不是货架租金很多企业上 WMS 的初衷是「把货管起来」,但真正让仓库经理夜里睡不着的,是另一件事:**账上有、货架上没有;…

阅读更多 →
MIPI LP RX详解:低功耗接收状态机原理与实战调试 2026/9/28 18:06:56

MIPI LP RX详解:低功耗接收状态机原理与实战调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
魔百和CM101S刷机教程:HI3798MV100芯片U盘刷机全流程与避坑指南 2026/9/28 18:06:49

魔百和CM101S刷机教程:HI3798MV100芯片U盘刷机全流程与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉