基于 ResNet50 的珍稀野生动物识别系统(Python源码 + PyQt5 + 数据集)
摘要 :想做计算机视觉实战?想为生态保护贡献力量?这款基于深度学习的野生动物识别系统 绝对不容错过!项目核心采用深度学习图像分类的入门必学模型------ResNet50 ,搭配高颜值的 PyQt5 交互界面,不仅支持图片、视频、摄像头 的实时检测,更具备批量处理 和数据报表自动导出等高级功能。代码结构清晰,注释详细,是新手学习深度学习与 GUI 开发的绝佳实战案例!
抠头助手:下载工具获取源码和数据集
一、项目背景与目标

随着生态环境的日益改善,野生动物的种群数量逐渐恢复。如何在野外复杂的自然环境下快速、准确地识别珍稀动物,成为生态监测的痛点。
本项目旨在构建一个桌面级野生动物智能识别系统。它能够帮助生态保护人员或科研工作者快速筛选海量的红外相机数据,自动生成检测报告,极大降低人工筛选的成本。
二、核心功能一览
本系统并非简单的 Demo,而是一个功能完备的桌面应用:
- 多模态检测 :
- 🖼️ 图片识别:支持单张图片导入,秒级输出识别结果与置信度。
- 🎬 视频分析:支持导入视频文件,逐帧检测并实时回显。
- 📹 摄像头实时检测:一键调用本地/外接摄像头,进行实时监控。
- 📂 批量自动化处理:支持导入整个文件夹,系统会自动遍历所有图片进行识别,无需人工干预。
- 📊 数据可视化与回溯 :
- 界面底部提供详细的检测结果列表(类别、置信度、坐标)。
- 支持点击交互:点击表格中的某一行,主界面会自动回显对应的历史图片与检测框,方便人工复核。
- 💾 智能结果保存 :
- 自动保存处理后的图片/视频。
- 独家功能 :自动生成
.csv数据报表,将所有检测数据结构化导出,方便 Excel 分析。
- ✨ 现代化 UI 设计 :
- 采用白色极简风格,图标全面矢量化(SVG),支持高分屏自适应(DPI Aware),无论在笔记本还是 4K 屏上都清晰锐利。
三、技术栈与架构
- 开发语言:Python 3.10
- 深度学习框架:PyTorch
- 核心算法:ResNet50 (迁移学习/分类入门首选)
- GUI 框架:PyQt5 (Qt Designer + 自定义样式)
- 图像处理:OpenCV, Pillow
- 数据处理:Pandas, CSV
目录结构
text
animalDetection/
├── model/ # 存放训练好的 .pth 模型权重
├── UIProgram/ # UI 资源文件 (界面代码、图标、样式表)
├── data/ # 存放测试数据
├── save_data/ # 自动保存检测结果和 CSV 报表
├── main.py # 程序主入口
├── resnet_inference.py # 推理核心逻辑
├── train_resnet.py # 模型训练脚本
└── Config.py # 全局配置文件
四、数据集与类别定义
本项目涵盖了 67 类 常见的珍稀野生动物,数据集经过清洗与标注,能够满足绝大多数生态监测场景的需求。
支持的类别(部分展示):
中华白海豚, 中华秋沙鸭, 丹顶鹤, 云豹, 亚洲象, 儒艮, 台湾猴, 扬子鳄, 扭角羚, 朱鹮, 梅花鹿, 熊猫, 白头鹤, 藏羚羊, 金丝猴, 雪豹, 麋鹿...
python
# Config.py
CH_names = [
'中华白海豚', '中华秋沙鸭', '丹顶鹤', '云豹', '亚洲象', '儒艮', '台湾猴', '台湾鬣羚', '叶猴', '四爪陆龟',
'坡鹿', '塔尔羊', '孔雀雉', '扬子鳄', '扭角羚', '普氏原羚', '朱鹮', '梅花鹿', '河狸', '灰腹角雉',
'熊狸', '熊猫', '熊猴', '白唇鹿', '白头鹤', '白尾海雕', '白颈长尾雉', '白鹤', '紫貂', '红胸角雉',
'绿孔雀', '花豹', '蒙古野驴', '蓝鹇', '藏羚羊', '虎', '虹雉', '蜂猴', '褐马鸡', '西藏野驴',
'豚尾猴', '豚鹿', '豹', '貂熊', '赤斑羚', '赤颈鹤', '遗鸥', '野牛', '野牦牛', '野马',
'野骆驼', '金丝猴', '金钱豹', '长臂猿', '雪豹', '马来熊', '高鼻羚羊', '鸨', '麋鹿', '黄腹角雉',
'黑头角雉', '黑长尾雉', '黑颈长尾雉', '黑颈鹤', '黑麂', '鼋', '鼷鹿'
]
五、核心代码实现
1. ResNet50 推理引擎
为什么选择 ResNet50?
对于深度学习初学者来说,ResNet(残差网络)是图像分类任务的"Hello World"。它结构清晰、性能稳定,且 PyTorch 官方提供了完美的预训练权重支持。我们使用 PyTorch 加载预训练的 ResNet50 模型,并针对特定业务进行了微调。为了保证在不同尺寸图片下的识别率,我们引入了自适应的预处理逻辑。
python
# resnet_inference.py
class ResNetInference:
def __init__(self, model_path):
self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
self.model = models.resnet50(weights=None)
# 修改全连接层以匹配我们的类别数
num_ftrs = self.model.fc.in_features
self.model.fc = nn.Linear(num_ftrs, len(Config.CH_names))
self.model.load_state_dict(torch.load(model_path, map_location=self.device))
self.model.eval()
self.transform = transforms.Compose([
transforms.Resize((224, 224)), # 强制缩放,防止边缘目标被裁剪
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, ...], std=[0.229, ...]),
])
2. 结果保存与 CSV 报表导出
这是本项目的亮点功能之一。在保存可视化图片的同时,我们将结构化数据写入 CSV,真正实现了"数据落地"。
python
# main.py
def save_detect_video(self):
# 自动创建保存目录
if not os.path.exists(Config.save_path):
os.makedirs(Config.save_path)
# === 导出 CSV 报表 ===
csv_path = os.path.join(Config.save_path, 'detect_report.csv')
with open(csv_path, 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
# 写入表头与数据...
# ...
QMessageBox.about(self, '提示', f'保存成功!\n数据报表: {csv_path}')
六、源码获取和环境配置
在「代码社区」中选择「目标检测&图像处理」:
1.首页--代码社区

2.代码社区--目标检测&图像处理--基于ResNet50的野生动物识别系统,点击一键运行既可以完成代码下载和环境配置

3.运行后会自动启动pycharm 打开这个项目,直接运行main.py 既可体验效果。

4.运行效果

抠头助手:更多源码请下载
