首页 > 分享 > 别再手动翻图鉴了!用YOLOv5+LabelImg,手把手教你打造自己的狗狗品种识别App

别再手动翻图鉴了!用YOLOv5+LabelImg,手把手教你打造自己的狗狗品种识别App

从零构建智能狗狗品种识别系统:YOLOv5实战指南

在宠物经济蓬勃发展的今天,准确识别狗狗品种不仅能让主人更了解爱犬的特性,也为宠物医疗、美容等行业提供了智能化解决方案。传统的人工识别方式效率低下且依赖经验,而基于深度学习的目标检测技术正彻底改变这一局面。本文将带您完整实现一个端到端的狗狗品种识别系统,从数据准备到模型部署,每个环节都配有可落地的代码示例和避坑指南。

1. 数据工程:构建高质量犬类数据集

1.1 数据采集策略

优质的数据集是模型成功的基石。对于狗狗品种识别任务,建议采用混合数据源策略:

开源数据集:Stanford Dogs Dataset包含120个品种的20,580张图片,可作为基础数据网络爬虫:使用Scrapy框架定向抓取宠物社区的高质量图片自定义拍摄:针对稀有品种补充拍摄,注意覆盖不同角度和光照条件

import scrapy

class DogImageSpider(scrapy.Spider):

name = 'dog_spider'

start_urls = ['https://example-pet-forum.com/dogs']

def parse(self, response):

for img in response.css('img.dog-photo'):

yield {

'image_url': img.attrib['src'],

'breed': response.css('h1.breed-name::text').get()

}

python

1.2 高效标注流程

LabelImg是目标检测任务中最常用的标注工具之一。针对多品种识别,推荐以下标注规范:

边界框需完整包含犬只主体,保留适当边缘空间品种标签采用标准学名(如"Golden_Retriever")保存为YOLO格式的txt文件,内容示例:

0 0.543 0.612 0.125 0.231

标注效率技巧:对同品种批量标注时,可使用LabelImg的默认标签记忆功能

1.3 数据增强方案

为提高模型泛化能力,建议在训练前应用以下增强策略:

增强类型参数范围适用场景随机旋转±30度解决拍摄角度变化色彩抖动亮度±0.2, 对比度±0.3适应不同光照条件随机裁剪0.8-1.0比例增强位置不变性水平翻转概率0.5增加左右对称样本

import albumentations as A

transform = A.Compose([

A.Rotate(limit=30, p=0.5),

A.RandomBrightnessContrast(p=0.3),

A.HorizontalFlip(p=0.5),

A.RandomResizedCrop(height=640, width=640, scale=(0.8, 1.0))

])

python

2. YOLOv5模型训练实战

2.1 环境配置

使用 conda 快速搭建训练环境:

conda create -n dog_detection python=3.8

conda activate dog_detection

pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html

git clone https://github.com/ultralytics/yolov5

cd yolov5

pip install -r requirements.txt

bash

2.2 模型选择与调参

YOLOv5提供多个预训练模型尺寸,针对狗狗识别推荐:

YOLOv5s:移动端部署首选(7.2M参数)YOLOv5m:精度与速度平衡(21.2M参数)YOLOv5l:追求最高准确率(46.5M参数)

关键训练参数配置:

# data/dog_breeds.yaml train: ../dataset/train/images val: ../dataset/valid/images nc: 120 # 品种数量 names: ['affenpinscher', 'afghan_hound', ...] # 按字母顺序排列

yaml

2.3 训练过程监控

启动训练并监控关键指标:

python train.py --img 640 --batch 16 --epochs 100 --data data/dog_breeds.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

bash

使用TensorBoard观察训练动态:

tensorboard --logdir runs/train

重点关注以下指标变化:

mAP@0.5:主要精度指标Box Loss:边界框回归损失Obj Loss:目标检测置信度损失

3. 模型优化 与部署

3.1 模型剪枝与量化

使用TorchPruner进行模型优化:

from torchpruner import Pruner

model = torch.load('yolov5s_dog.pt')

pruner = Pruner(model)

pruner.prune(0.3)

quantized_model = torch.quantization.quantize_dynamic(

model, {torch.nn.Linear}, dtype=torch.qint8

)

python

优化前后对比:

指标原始模型优化后模型大小14.4MB4.2MB推理速度22ms15msmAP@0.50.8720.865 3.2 使用 Gradio 快速搭建Web界面

import gradio as gr

import torch

model = torch.hub.load('ultralytics/yolov5', 'custom', path='best.pt')

def predict(image):

results = model(image)

return results.render()[0]

iface = gr.Interface(

fn=predict,

inputs=gr.Image(type="pil"),

outputs="image",

title="狗狗品种识别器"

)

iface.launch()

python

3.3 移动端部署方案

使用ONNX格式转换模型:

import torch

model = torch.load('best.pt')

dummy_input = torch.randn(1, 3, 640, 640)

torch.onnx.export(model, dummy_input, "dog_detector.onnx", opset_version=11)

python

在Android应用中集成:

Interpreter.Options options = new Interpreter.Options();

options.setUseNNAPI(true);

Interpreter interpreter = new Interpreter(loadModelFile("dog_detector.onnx"), options);

Bitmap input = preprocessImage(bitmap);

float[][][] output = new float[1][25200][6];

interpreter.run(input, output);

java

4. 实战问题排查与性能提升

4.1 常见训练问题 类别不平衡:对稀有品种使用Focal Loss

loss_fn = FocalLoss(alpha=0.75, gamma=2.0) # 替换默认BCEWithLogitsLoss

python

过拟合:添加CutMix数据增强

A.CutMix(num_classes=120, p=0.5)

python

小目标漏检:修改anchor尺寸

anchors: - [5,6, 8,14, 15,11] # 小目标专用anchor

yaml

4.2 推理加速技巧 TensorRT优化

trtexec --onnx=dog_detector.onnx --saveEngine=dog_detector.trt

bash

多线程处理

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=4) as executor:

results = list(executor.map(model, batch_images))

python

缓存预处理:将归一化等操作提前固化 4.3 持续改进方案

建立模型性能监控看板,跟踪:

线上推理准确率:定期抽样人工验证失败案例分析:建立典型错误样本库数据飞轮:收集用户上传的困难样本用于再训练

if confidence < 0.3:

save_to_retrain_folder(image, predicted_breed)

python

相关知识

别再手动翻图鉴了!用YOLOv5+LabelImg,手把手教你打造自己的狗狗品种识别App
狗狗图鉴app免费下载
拍照识别鱼品种APP下载
手把手教你分辩和打造极品宠物
宠物diy:打造专属宠物用品?手把手教你diy宠物玩具、窝、衣服等
狗狗相册命名指南|爆款宠物摄影灵感+命名公式,手把手教你打造高互动相册
别再指着拉布拉多叫金毛犬 “狗脸识别”帮你认清狗子品种
打造仓鼠的理想家园:手把手教你制作舒适温馨的小窝
狗狗肠胃炎手把手教你治疗!附用建议
神武宠物打书心得 手把手教你打造宠物

网址: 别再手动翻图鉴了!用YOLOv5+LabelImg,手把手教你打造自己的狗狗品种识别App https://m.mcbbbk.com/newsview1361654.html

所属分类:萌宠日常
上一篇: 广州靠谱的卖犬店铺推荐?这家宠物
下一篇: Birmingham 边境牧羊犬