基于PyTorch的动物图像识别系统 开源

基于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/                    # 首页、识别页、训练页与样式

常见问题

  1. 提示"模型未训练" :确认 models/best_model.pthmodels/labels.json 都存在。

  2. 训练时提示找不到数据目录 :确认数据位于 data/animal_image/traindata/animal_image/test

  3. 首次训练下载失败:检查网络或代理设置;只做图片识别不需要下载预训练权重。

  4. 识别结果不理想:置信度只反映当前模型输出。可以增加训练数据、检查类别均衡、延长训练轮数并使用更丰富的数据增强。

  5. 出现 torchvision 导入错误:必须让 Torch 2.8 与 torchvision 0.23 配套使用,不要混用旧版 torchvision。

说明

本项目适合用于深度学习、迁移学习、图像分类和 PyQt6 桌面应用的学习与演示。模型预测结果仅供学习参考。

相关推荐
海天一色y2 小时前
GSPO:重新定义大语言模型的强化学习训练范式
人工智能·机器学习·语言模型
云和数据.ChenGuang2 小时前
fastapi项目拆分实战数据模型
java·服务器·数据库·人工智能·深度学习·fastapi·强化学习
艾琳_lab2 小时前
Python环境配置:pip镜像设置
python
watersink2 小时前
机器学习HMM
人工智能·机器学习
东方小月2 小时前
从零开发一个 Coding Agent(九):实现 Agent 的工具调用闭环
人工智能·前端框架·node.js
Luhui Dev2 小时前
如何在 WorkBuddy 中使用大角几何:从 MCP 接入到 AI 几何作图
人工智能·数学·算法·agent·luhuidev
橘好き2 小时前
Python
python
鹿鹿学长2 小时前
从英伟达开源Nemotron 3.5看“本地跑大模型“:一张显卡够用的时代来了
python·自动化
燐妤2 小时前
中老年智能健康管理项目
python·ai·pycharm·vue3·fastapi·项目开发·健康