基于 Python 与 AI 的智能害虫识别系统实战
农业生产中,病虫害监测往往依赖人工巡查,不仅耗时耗力,还容易因经验差异导致误判。引入 AI 技术能显著提升识别效率与准确性。本文将演示如何使用 Python 从零搭建一个智能害虫识别助手,涵盖从数据处理到模型部署的全流程。
核心技术栈
本项目选用成熟且易上手的开源生态:
- 编程语言:Python 3.8+
- 深度学习框架:PyTorch
- 图像处理:OpenCV
- 模型架构:ResNet50(迁移学习)
- 前端交互:Gradio
数据准备
没有高质量数据,模型就是空中楼阁。推荐使用公开数据集(如 IP102),或自行采集标注。数据目录结构建议按害虫种类分文件夹存放图片。
预处理是提升精度的关键步骤,包括统一尺寸、归一化像素值以及划分训练集与验证集。以下代码展示了如何读取并预处理单张图片:
import cv2
import os
import numpy as np
def preprocess_image(img_path, target_size=(224, 224)):
# 读取图片
img = cv2.imread(img_path)
# 调整尺寸
img = cv2.resize(img, target_size)
# BGR 转 RGB(PyTorch 默认 RGB)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 归一化
img = img / 255.0
# 转换为张量格式 (通道在前)
img = np.transpose(img, (2, 0, 1))
return img
# 遍历数据集文件夹预处理
data_dir = "pest_dataset"
classes = os.listdir(data_dir)
processed_data = []
labels = []
for idx, cls in enumerate(classes):
cls_dir = os.path.join(data_dir, cls)
for img_name in os.listdir(cls_dir):
img_path = os.path.join(cls_dir, img_name)
try:
img = preprocess_image(img_path)
processed_data.append(img)
labels.append(idx)
except Exception:
continue
processed_data = np.array(processed_data)
labels = np.array(labels)


