基于深度学习的花卉识别

news/2024/12/4 8:09:06/

1、数据集

春天来了,我在公园的小道漫步,看着公园遍野的花朵,看起来真让人心旷神怡,一周工作带来的疲惫感顿时一扫而光。难得一个糙汉子有闲情逸致俯身欣赏这些花朵儿,然而令人尴尬的是,我一朵都也不认识。那时我在想,如果有一个花卉识别软件,可以用手机拍一下就知道这是一种什么花朵儿,那就再好不过了。我不知道市场上是否有这样一种软件,但是作为一个从事深度学习的工程师,我马上知道了怎么做,最关键的不是怎么做,而是数据采集。住所附近就是大型公园,一年司机繁花似锦,得益于此,我可以在闲暇时间里采集到大量的花卉数据。本数据集由本人亲自使用手机进行拍摄采集,原始数据集包含了18万张图片,图片的尺寸为1024x1024,为了方便储存和传输,把原图缩小为224x224。采集数据是一个漫长的过程,因此数据集的发布采用分批发布的形式,也就是每采集够16种花卉,就发布一次数据集。每种花卉的图片数量约为2000张,每次发布的数据集的图片数量约为32000张,每次发布的数据集包含的花卉种类都不一样。目前花卉的种类只有32种,分为两批发布,不过随着时间的推移,采集到的花卉越来越多。这里就把数据集分享出来,供各位人工智能算法研究者使用。以下是花卉数据集的简要介绍和下载地址。
(1)花卉数据集01(数据集+训练代码下载地址)
花卉数据集01,采集自2022年,一共16种花卉,数据集大小为32000张,图片大小为224x224的彩色图像。数据集包含的花卉名称为:一年蓬,三叶草,三角梅,两色金鸡菊,全叶马兰,全缘金光菊,剑叶金鸡菊,婆婆纳,油菜花,滨菊,石龙芮,绣球小冠花,蒲公英,蓝蓟,诸葛菜,鬼针草。数据集的缩略图如下:
图1 花卉数据集01
(2)花卉数据集02(数据集+训练源码下载地址)
花卉数据集02,采集与2023年,一共16种花卉,每种花卉约2000张,总共32000,图片大小为224x224。数据集包含的花卉有:千屈菜,射干,旋覆花,曼陀罗,桔梗,棣棠,狗尾草,狼尾草,石竹,秋英,粉黛乱子草,红花酢浆草,芒草,蒲苇,马鞭草,黄金菊。数据集缩略图如下:
图2 花卉数据集02

2、图片分类模型

为了研究不同图片分类模型对于花朵的分类效果,这里分别使用目前主流的23种图片分类模型进行训练,这些模型是resnet18、resnet34、resnet50、resnet101、resnet152、vgg11、vgg13、vgg16、vgg19、mobilenet_v1、mobilenet_v2、mobilenet_v3_large、mobilenet_v3_small、inception_v1、inception_v2、inception_v3、squeezenet、mnist_net、alex_net、lenet、TSL16、ZF_Net。训练代码基于tensorflow 2.3架构,集成以上23种模型,可进行傻瓜式训练。源码下载链接。

3、图片分类模型评估

分别训练了23种模型,图片输入的尺寸为224x224x3。将约64000张图片划分为训练集和测试集,其中测试集占10%,一共6400张,训练集90%,一共57600张。训练充分后,对各种模型进行评估,评估的结果如下表1所示。

表1 模型评估

模型参数量 [M]计算量 [G]准确度(accuray)
resnet1811.013.590.8692
resnet3421.127.290.9014
resnet5023.68.160.9424
resnet10142.5715.590.9525
resnet15257.0721.270.9401
vgg11128.8615.220.9343
vgg13129.0522.630.8840
vgg16134.3430.950.9267
vgg19139.6739.280.9035
mobilenet_v13.231.140.9724
mobilenet_v22.270.630.9328
mobilenet_v3_large8.760.450.9531
mobilenet_v3_small3.060.1220.9573
inception_v16.003.180.5824
inception_v27.843.310.9667
inception_v321.835.680.9883
squeezenet0.742.230.9326
mnist_net214.4351.270.9223
AlexNet14.261.950.9632
LeNet78.440.940.8440
TSL16116.9323.520.9539
ZF_Net58.342.390.9657

从表一展示的结果来看,面对32种类别的分类任务,mobilenet系列和inception系列,分类的准确度表现优秀,而且谢谢模型的具有较小的参数量和计算量,比较适合移动端和嵌入式部署。

4、总结

花卉数据集共包括64000张图片,囊括了32种花卉的类别,其中10%为测试集,90%为训练集。图片的大小为224x224,通道数为3。一共使用了23种模型进行训练,通过评估,mobilenet_v1、mobilenet_v3_large、mobilenet_v3_small、inception_v2、inception_v3、AlexNet、ZF_Net几个模型,具有计算量小,分类准确度高的优点,适合移动端和嵌入式的部署。


http://www.ppmy.cn/news/42090.html

相关文章

用ChatGPT怎么赚钱?普通人用这5个方法也能赚到生活费

ChatGPT在互联网火得一塌糊涂,因为它可以帮很多人解决问题。比如:帮编辑人员写文章,还可以替代程序员写代码,帮策划人员写文案策划等等。ChatGPT这么厉害,能否用它来赚钱呢?今天和大家分享用ChatGPT赚钱的5…

银行数字化转型导师坚鹏:ChatGPT解密与银行应用案例

ChatGPT解密与银行应用案例 ——开启人类AI新纪元 打造数字化转型新利器 课程背景: 很多企业和员工存在以下问题:不清楚ChatGPT对我们有什么影响?不知道ChatGPT的发展现状及作用?不知道ChatGPT的银行业应用案例?…

Matlab基础

Matlab基础目录Matlab变量特殊常量变量的命名规则变量定义与赋值变量的显示变量的存取变量的清楚变量的检查数组和矩阵一维数组的创建和元素提取一维数组的创建一维数组的提取二维数组的创建与元素提取二维数组的创建二维矩阵元素提取字符数组和空数组矩阵的基本算术运算数据可…

应用程序接口(API)安全的入门指南

本文简单回顾了 API 的发展历史,其基本概念、功能、相关协议、以及使用场景,重点讨论了与之相关的不同安全要素、威胁、认证方法、以及十二项优秀实践。 根据有记录的历史,随着 Salesforce 的销售自动化解决方案的推出,首个 We…

Linux下异步socket客户端

文章目录socket 客户端1. 创建socketsocket()函数返回值2. 设置socket的属性connect函数sockaddr_in结构体inet_pton函数3. fcntl设置非阻塞4. recv函数socket 客户端 1. 创建socket socket()函数 #include <sys/socket.h> int socket(int domain, int type, int proto…

Go 语言切片是如何扩容的?

原文链接&#xff1a; Go 语言切片是如何扩容的&#xff1f; 在 Go 语言中&#xff0c;有一个很常用的数据结构&#xff0c;那就是切片&#xff08;Slice&#xff09;。 切片是一个拥有相同类型元素的可变长度的序列&#xff0c;它是基于数组类型做的一层封装。它非常灵活&am…

【密码学】ElGamal加密算法原理 以及 例题讲解

目录前言1. 原理2. 例题2.1 例题一2.2 例题二前言 具体的性质&#xff1a; 非对称加密算法应用于一些技术标准中&#xff0c;如数字签名标准&#xff08;DSS&#xff09;、S/MIME 电子邮件标准算法定义在任何循环群 G 上&#xff0c;安全性取决于 G 上的离散对数难题 1. 原理…

朴素贝叶斯

朴素贝叶斯&#xff08;Naive Bayes&#xff09;是一种基于贝叶斯定理&#xff08;Bayes’ theorem&#xff09;的分类算法。它的基本思想是&#xff0c;通过先验概率和条件概率来计算后验概率&#xff0c;从而实现分类。 在朴素贝叶斯分类中&#xff0c;假设每个样本都由多个…