中药材是我国宝贵的医药资源,但由于品种繁多、形态相似,准确识别一直是专业人员和普通民众面临的难题。随着深度学习技术的发展,利用人工智能进行中药材自动识别成为可能,不仅可以降低识别难度,还能有效推动中药材知识的普及和应用。
本项目基于PyTorch框架,构建了一个完整的中药材分类识别系统,包含数据采集、模型训练和预测识别等环节。通过迁移学习,即使在有限的数据条件下,也能达到较高的识别准确率,为中药材鉴别提供智能化解决方案。
本项目从网络采集了八种常见中药材的图片,包括:
数据集存放结构符合PyTorch标准图像分类数据集格式:
data/train/
├── 人参/
├── 猫眼草/
├── 麦冬/
├── 菊花/
├── 红花/
├── 茯苓/
├── 车前子/
└── 薏米/
每个药材类别约收集200张左右图片,确保数据质量和多样性。
训练前对图像进行了以下预处理:
本项目采用ResNet50作为基础模型,通过迁移学习快速构建中药材识别模型。ResNet50特点:
为适应中药材识别任务,对ResNet50进行了如下改造:
class ChineseHerbClassifier(nn.Module):
def __init__(self, num_classes):
super(ChineseHerbClassifier, self).__init__()
# 使用预训练的ResNet50作为基础模型
self.base_model = models.resnet50(pretrained=True)
# 修改最后的全连接层以适应分类任务
num_features = self.base_model.fc.in_features
self.base_model.fc = nn.Sequential(
nn.Linear(num_features, 512),
nn.ReLU(),
nn.Dropout(0.5),
nn.Linear(512, num_classes)
)
主要优化点:
# 核心训练参数
num_epochs = 50 # 训练轮数
batch_size = 32 # 批次大小
learning_rate = 0.001 # 学习率
train_val_split = 0.8 # 训练集占比
每个epoch输出以下信息:
训练代码片段:
# 训练循环
best_val_acc = 0.0
for epoch in range(num_epochs):
model.train()
running_loss = 0.0
correct = 0
total = 0
for images, labels in tqdm(train_loader):
# 前向传播、反向传播、优化
optimizer.zero_grad()
outputs = model(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# 计算训练指标
running_loss += loss.item()
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
# 验证阶段...
# 保存最佳模型...
在测试集上进行评估,关键指标:
药材名称 | 准确率 | 易混淆品种 |
---|---|---|
人参 | 97.8% | 党参 |
菊花 | 95.2% | - |
茯苓 | 93.5% | - |
红花 | 91.8% | - |
薏米 | 90.3% | - |
麦冬 | 89.7% | - |
车前子 | 88.9% | - |
猫眼草 | 87.6% | - |
![]() |
Q: 缺失class_names.json文件怎么办?
A: 手动创建该文件,内容为药材类别名称列表,格式为JSON数组。
Q: 图片数量不平衡如何处理?
A: 对样本较少的类别进行过采样或增强,或使用加权损失函数。
Q: 显存不足怎么办?
A: 减小batch_size,或尝试使用更轻量级的模型如MobileNetV2。
Q: 出现过拟合怎么办?
A: 增加Dropout率,添加L2正则化,或增加数据增强强度。
Q: 预测结果与实际不符怎么办?
A: 检查预处理流程是否与训练一致,特别是归一化参数。
Q: 模型在新环境表现下降?
A: 考虑域适应技术,或在新环境中收集少量数据进行微调。
如需下载项目源码,请WX添加【Jul_54088】,回复【中草药识别】即可下载
本文档由[云帆智航]撰写,我们提供专业的软件开发服务:
本文档可自由分享,商业使用请联系授权
如果您需要本文档技术的落地实施支持,我们提供: