基于PyTorch的动物图像识别系统
「基于PyTorch的动物图像识别系统」
/~5e2a3ZjJrp~:/
链接:https://pan.quark.cn/s/bbf4129b2a6e
基于 PyTorch 的动物图像识别系统
这是一个面向教学与毕业设计演示的桌面端动物图像识别项目。系统使用 PyTorch 和 ResNet18 完成图像分类,采用 ImageNet 预训练权重进行迁移学习,并通过 PyQt6 提供图形界面。项目自带已训练模型,可在不下载训练数据集的情况下直接识别图片。
主要功能
图形化首页:展示项目简介、技术栈和数据集信息。
单图识别:选择本地图片,输出 Top-3 动物类别和置信度。
模型训练:在 GUI 中配置 Epoch、Batch Size 和学习率。
训练可视化:实时显示训练日志、进度以及 Loss/Accuracy 曲线。
命令行训练:支持通过参数快速启动训练任务。
技术方案
模块 技术 深度学习框架 PyTorch 2.8 模型 ResNet18、ImageNet 预训练、迁移学习 图形界面 PyQt6 图像处理 torchvision、Pillow 训练曲线 Matplotlib 运行设备 CPU(代码默认配置) 推理流程:加载图片 → RGB 转换 → 缩放至 224×224 → ImageNet 标准化 → ResNet18 前向计算 → Softmax → 输出 Top-3 结果。
已支持的类别
系统支持 15 类动物:鸟、猫、牛、鸡、狗、海豚、鸭、大象、长颈鹿、猴子、猪、兔子、老鼠、绵羊、老虎。
环境要求
Windows 10/11
64 位 Python 3.9(本项目已在 Python 3.9.5 验证)
无需 NVIDIA 显卡,默认使用 CPU
建议预留至少 2 GB 磁盘空间用于 Python、PyTorch 和模型文件
验证环境版本如下:
Python 3.9.5 torch 2.8.0+cpu torchvision 0.23.0+cpu PyQt6 6.4.2 matplotlib 3.7.2 Pillow 11.3.0快速启动
在当前项目目录双击
run.bat,或在 PowerShell 中执行:& "C:\Users\PAN\Documents\Codex\venvs\animal-recognition-py39\Scripts\python.exe" main.py进入“图像识别”页面后,选择图片并点击识别即可。模型文件
models/best_model.pth和标签文件models/labels.json已随项目提供。重新创建环境
如果把项目复制到另一台电脑,可双击
setup_env.bat。脚本会在%USERPROFILE%\Documents\Codex\venvs\animal-recognition-py39创建短路径环境,从 PyTorch 官方 CPU 软件源安装匹配的 PyTorch/torchvision,再安装其余依赖。把环境放在短路径可以避免本项目中文长目录触发 Windows 的 260 字符路径限制。也可以手动执行:
$venv = "$env:USERPROFILE\Documents\Codex\venvs\animal-recognition-py39" py -3.9 -m venv $venv & "$venv\Scripts\python.exe" -m pip install --upgrade pip & "$venv\Scripts\python.exe" -m pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cpu & "$venv\Scripts\python.exe" -m pip install PyQt6==6.4.2 PyQt6-Qt6==6.4.2 PyQt6-sip==13.4.1 matplotlib==3.7.2 Pillow==11.3.0 numpy==1.26.2如果电脑配置了失效的系统代理而出现
check_hostname requires server_hostname,可在当前 PowerShell 会话中先执行:$env:NO_PROXY="*" $env:no_proxy="*"然后重新运行安装命令。
使用自带测试图片
项目外层的
测试图片目录中提供了大象、羊和老虎图片。打开系统后可直接选择这些图片测试。当前附带模型在本机实测可以正常载入并完成 Top-3 推理。训练模型
训练需要额外下载动物数据集,并按以下目录组织:
data/ └── animal_image/ ├── train/ │ ├── bird/ │ ├── cat/ │ └── ... └── test/ ├── bird/ ├── cat/ └── ...每个类别对应一个英文文件夹,文件夹名称必须与
config.py中的CLASS_LABELS一致。GUI 训练:
& "$env:USERPROFILE\Documents\Codex\venvs\animal-recognition-py39\Scripts\python.exe" main.py进入“模型训练”页面,设置参数并点击“开始训练”。
命令行训练:
& "$env:USERPROFILE\Documents\Codex\venvs\animal-recognition-py39\Scripts\python.exe" train.py --epochs 5 --batch-size 16 --lr 0.001首次重新训练时需要联网下载约 45 MB 的 ResNet18 ImageNet 预训练权重。训练完成后,最佳权重会保存为
models/best_model.pth,标签映射会保存为models/labels.json。项目结构
AnimalRecognition/ ├── main.py # PyQt6 程序入口 ├── train.py # 命令行训练入口 ├── config.py # 路径、标签和默认超参数 ├── requirements.txt # 固定版本依赖 ├── run.bat # 使用已配置环境启动系统 ├── setup_env.bat # 在新电脑创建 CPU 环境 ├── assets/ # 界面图片与图标 ├── data/ # 训练/验证数据目录 ├── models/ │ ├── best_model.pth # 已训练模型权重 │ └── labels.json # 类别索引和中英文标签 └── src/ ├── dataset.py # 数据集与图像预处理 ├── model.py # ResNet18 构建和权重加载 ├── predict.py # 单图 Top-K 推理 ├── trainer.py # 训练与验证循环 ├── matplotlib_config.py # 中文字体配置 └── ui/ # 首页、识别页、训练页与样式常见问题
提示“模型未训练”:确认
models/best_model.pth和models/labels.json都存在。训练时提示找不到数据目录:确认数据位于
data/animal_image/train和data/animal_image/test。首次训练下载失败:检查网络或代理设置;只做图片识别不需要下载预训练权重。
识别结果不理想:置信度只反映当前模型输出。可以增加训练数据、检查类别均衡、延长训练轮数并使用更丰富的数据增强。
出现 torchvision 导入错误:必须让 Torch 2.8 与 torchvision 0.23 配套使用,不要混用旧版 torchvision。
说明
本项目适合用于深度学习、迁移学习、图像分类和 PyQt6 桌面应用的学习与演示。模型预测结果仅供学习参考。