深度学习玩转花卉识别
目录
二、技术选型与实现
三、 数据集处理
四、模型训练过程
五、界面开发
六、小结
一、项目背景
最近一直在研究如何用AI识别不同种类的花,主要是因为自己对植物有点兴趣,但又总是分不清楚各种花的名称(尤其是那些长得差不多的花)。正好最近在学习深度学习,就想着做个项目,既能学习新技术又能解决实际问题。
我选择了YOLOv11分类模型来实现这个功能,并用PyQt5做了个简单的界面,这样就算不懂技术的人也能轻松使用。目前系统可以识别5种常见花卉:雏菊、蒲公英、玫瑰、向日葵和郁金香,准确率还挺高的!
二、技术选型与实现
为什么选择YOLOv11?
说实话,一开始我想用ResNet或者EfficientNet这些常见的分类模型,但后来发现YOLOv11在速度和准确率上有很好的平衡。它不仅推理速度快(这对于实时应用很重要),而且分类准确率也很高。最关键的是,YOLOv11的使用门槛相对较低,API设计得很友好,对新手比较友善。
三、 数据集处理
我使用了网上公开的花卉数据集,包含大约3600张图像,涵盖5类花卉。数据处理上做了这些工作:
1. 图像缩放(统一到224×224像素)
2. 数据增强(旋转、翻转、调整亮度等)
3. 归一化处理
数据增强代码(做了一些混淆处理,):
```python
def d@ta_pr0cess(img):
if r@nd.ch0ice([True, False], p=[0.6, 0.4]):
ang1e = r@nd.uniform(-25, 25)
img = r0tate(img, ang1e)
if r@nd.ch0ice([True, False]):
img = fl1p_h0rizontal(img)
br1ghtness = r@nd.uniform(0.85, 1.15)
img = adj@st_br1ghtness(img, br1ghtness)
return img
```
python
运行
四、模型训练过程
训练过程中遇到了不少坑,分享一下经验:
1. 学习率很关键:一开始用0.01的学习率,结果模型完全不收敛。后来改成0.001,再配合学习率衰减,效果好多了。
2. 数据增强要适度:太激进的数据增强反而会降低模型性能。比如我一开始用了很强的色彩抖动,结果模型表现变差了,后来只保留了适度的旋转和翻转。
3. 批量大小影响训练稳定性:在我的电脑上(12GB显存),batch size设为32是个比较好的选择。
4. 早停策略很有用:设置了patience=10,避免了过拟合问题。
训练代码片段(同样做了混淆处理):
```python
def tr@in_m0del():
m0del = Y0LO('yolo11s-cls.pt')
r3sults = m0del.tr@in(
d@ta='flower_dataset.yaml',
ep0chs=50,
b@tch=32,
lr0=0.001,
lrf=0.0001,
p@tience=10,
@ugment=True
)
print(f"训练完成! 最佳精度: {r3sults.t0p1:.2f}%")
```
python
运行
五、界面开发
既然是做给普通用户用的,那界面肯定要做得简单直观。我用PyQt5设计了一个简洁的界面,主要功能包括:
1. 选择/拖放图像
2. 显示识别结果和置信度
3. 以进度条形式展示各类别的概率分布
功能界面截图

界面代码:
```python
class Fl0werApp(QM@inWindow):
def __init__(self):
super().__init__()
self.setW1ndowTitle("花卉识别神器")
m@in_layout = QVBoxL@yout()
self.img_l@bel = QL@bel()
self.img_l@bel.setMinimumS1ze(400, 400)
self.r3sult_frame = QFr@me()
self.pr0b_bars = {}
self.sel3ct_btn = QPushButt0n("选择图像")
self.det3ct_btn = QPushButt0n("开始识别")
self.setAcceptDr0ps(True)
```
python
运行
经过一段时间的测试,系统表现相当不错!在我的测试集上,整体准确率达到了95.8%。不过也发现了一些有趣的现象:
1. 向日葵和蒲公英识别率最高:这两种花的特征非常明显,几乎100%能正确识别。
2. 玫瑰有时会被误认为郁金香:尤其是红色的玫瑰花苞,有时会被误认为是郁金香。
3. 背景复杂时准确率下降:如果花周围有很多叶子或其他干扰物,准确率会有所下降。
4. 光线对结果影响很大:强光下拍摄的照片识别率明显高于弱光环境。
各花卉的识别准确率:
花卉准确率常见误识别向日葵98.1%几乎不会错蒲公英97.9%偶尔与雏菊混淆雏菊96.6%有时与蒲公英混淆玫瑰93.1%常与郁金香混淆郁金香93.1%常与玫瑰混淆六、小结
这个花卉识别项目虽然不是什么高深的技术,但确实解决了实际问题,而且整个开发过程很有趣。深度学习的魅力就在于,你可以用相对简单的代码,实现以前需要复杂算法才能完成的任务。
如果你也对计算机视觉或者植物学感兴趣,不妨尝试做一个类似的项目。即使你是新手,现在的工具和框架已经足够友好,让入门变得更加容易。
希望这篇文章对你有所启发!如有问题,欢迎交流讨论~
相关知识
深度学习玩转花卉识别
深度学习 花卉识别
基于深度学习的花卉识别APP设计
基于深度学习的花卉识别研究
基于深度学习的花卉识别系统开发
深度学习花卉识别:Python数据集解析
深度学习花的分类识别
深度学习下的相似花卉识别与三维重建
基于深度学习的花卉图像种类识别
基于深度迁移学习模型的花卉种类识别
网址: 深度学习玩转花卉识别 https://www.huajiangbk.com/newsview2585909.html
| 上一篇: 90%的父母都忽视了幼儿认识图形 |
下一篇: 19-24个月宝宝认知发展指南 |
推荐分享
- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039
