# Features
- Identify 4,066 plant taxa (maybe genus, species, subspecies, variety, etc.).
- Model size is 29.5M; top1/top5 accuracy is 0.848/0.959.
- Open-source model, easy-to-use interface.
- Update continuously.
# Installation
You need install Anaconda, then run below:
```
git clone https://github.com/quarrying/quarrying-plant-id.git
cd quarrying-plant-id
conda create -n plantid python=3.6 -y
conda activate plantid
pip install -r requirements.txt
```
# Usage
## Method I: Python Interface
```python
import cv2
import plantid
plant_identifier = plantid.PlantIdentifier()
image = cv2.imread(image_filename)
outputs = plant_identifier.identify(image, topk=5)
if outputs['status'] == 0:
print(outputs['results'])
else:
print(outputs)
```
You can also see [demo.py](<demo.py>).
## Method II: Website
Goto <https://www.quarryman.cn/plant> which powered by this repo.
## Method III: Telegram
For those who use [telegram](https://telegram.org/), the algorithm is now deployed on [Yuuka](https://telegram.me/iplantcn_bot).
# Details
一些细节
数据收集和整理
数据是深度学习的基石, 笔者花了大量的时间在数据收集和整理上.
数据的主要来源有: 百度图片, 必应图片, 新浪微博, 百度贴吧, 新浪博客和一些专业的植物网站等. 除了新浪微博, 其他都用了爬虫. 另外还有一些数据是笔者自己拍摄的.
爬虫爬取的图像的质量参差不齐, 标签可能有误, 且存在重复文件, 因此必须清洗. 笔者尝试的清洗方法包括自动化清洗, 半自动化清洗和手工清洗.
自动化清洗包括:
滤除小尺寸图像.
滤除宽高比很大或很小的图像.
滤除灰度图像.
图像去重: 根据图像感知哈希.
半自动化清洗包括:
图像级别的清洗: 利用预先训练的植物/非植物图像分类器对图像文件进行打分, 非植物图像应该有较低的得分; 利用前一阶段的植物分类器对图像文件 (每个文件都有一个预标类别) 进行预测, 取预标类别的概率值为得分, 不属于原预标类别的图像应该有较低的得分. 可以设置阈值, 滤除很低得分的文件; 另外利用得分对图像文件进行重命名, 并在资源管理器选择按文件名排序, 以便于后续手工清洗掉非植物图像和不是预标类别的图像.
类级别的清洗: 参考 数据集清洗方法几则.
手工清洗: 人工判断文件夹下图像是否属于文件夹名所标称的物种, 这需要相关的植物学专业知识, 是最耗时且枯燥的环节, 但也凭此认识了不少的植物.
数据现状
笔者把收集的数据集分为了正式集和候选集. 正式集每个分类单元的图像数基本上都在 100 张以上, 主要用来做训练. 候选集中的物种的图像比较少, 待图像量上来后会加入到正式集中, 或者后面直接用来做植物检索的底库.
20210413: 正式集有 1,320 个分类单元, 460,352 张图像.
20210609: 正式集有 1,630 个分类单元, 586,557 张图像.
20210718: 正式集有 2,002 个分类单元, 749,763 张图像.
20210905: 正式集有 2,759 个分类单元, 996,690 张图像; 候选集有 3,784 个分类单元, 80,893 张图像.
20211024: 正式集有 4,066 个分类单元, 1,451,934 张图像; 候选集有 3,248 个分类单元, 69,396 张图像.
模型训练
受算力和显存所限 (仅有一块 GTX 1660), 骨干网络选用轻量级的网络 (如 ResNet18, MobileNetV2_1.0), 损失函数为 softmax 交叉熵. 优化器为 SGD, 使用了 L2 正则化, 标签平滑正则化, 余弦退火学习率衰减策略和学习率预热. 这个方案比较保守, 待笔者有了更多的算力, 会尝试一些新的方案, 如细粒度图像检索 (FGIR), 度量学习, 自监督学习, 模型蒸馏等.
当前的模型直接输出各类的置信度, 也可以将模型改造成特征提取器, 用自己的植物图像来构造底库, 这样可以用图像检索的方式来进行植物识别, 可扩展性更高.
20210413: 发布的模型训练了 30 个 epoch, 在 GTX 1660 上大概用了 39 个小时, 在 23,026 张图像的测试集上, Top1 准确率为 0.940.
20210609: 发布的模型训练了 30 个 epoch, 在 GTX 1660 上大概用了两天多, 在 29,313 张图像的测试集上, Top1 准确率为 0.924.
20210718: 发布的模型训练了 30+ 个 epoch, 在 GTX 1660 上大概用了三天多, 在 74,961 张图像的测试集上, Top1 准确率为 0.900.
20210905: 发布的模型训练了 30 个 epoch, 在 GTX 1660 上大概用了三天多, 在 99,676 张图像的测试集上, Top1 准确率为 0.890, Top5 准确率为 0.970.
20211024: 发布的模型训练了 30 个 epoch, 在 GTX 1660 上大概用了两天多, 在 145,168 张图像的测试集上, Top1 准确率为 0.848, Top5 准确率为 0.959.
# ChangeLog
- 20211024 Release model which supports 4066 plant taxa, top1/top5 accuracy is 0.848/0.959.
- 20210905 Release model which supports 2759 plant taxa, top1/top5 accuracy is 0.890/0.971.
- 20210718 Release model which supports 2002 plant taxa.
- 20210609 Release model which supports 1630 plant taxa.
- 20210413 Release model which supports 1320 plant taxa.
白如意i
- 粉丝: 1w+
- 资源: 3209
最新资源
- 基于均匀化混沌系统的S-Box生成算法.pdf
- 基于改进的序列梯度–修复算法的飞行 器上升段轨迹优化.pdf
- 三相直流逆差电力系统三相短路仿真分析与结果模拟程序,simulink仿真 短路分析 含三相直流逆差的电力系统三相短路仿真,程序完整,可以较高的模拟出结果 ,核心关键词:Simulink仿真; 短路分析
- 基于流行距离的聚类算法及其在极光分类中的应用.pdf
- 基于MATLAB GUI的重要事件提醒系统.pdf
- 区间值决策系统下的最小属性约简.pdf
- 基于改进蚁群算法在机器人路径规划上的研究.pdf
- 大规模在线实训环境下的快速容器并发启动研究.pdf
- 一种用于跟踪不连续运动目标的视觉伺服方案.pdf
- 基于深度卷积网络及K均值的工控系统入侵检测研究.pdf
- 基于辐射标定的机械零件精密测量方法研究.pdf
- 示波器FPGA详细设计方案及文档,专注FPGA设计资料公开,独家呈现无ARM相关内容,示波器FPGA设计方案和文档 只有fpga设计资料其他资料没有 fpga详细的设计文档,和代码 没有arm资料
- 三菱FX3U-ADP-MB通讯模板程序:实现与仪表和变频器的无缝连接,注释清晰易懂,测试效果良好,分享给需要的朋友,三菱FX3U-ADP-MB和一般仪表和变频器的通讯模板程序,自己已测试过很好,希望可
- 纯电动汽车BEV电机电池VCU控制仿真模型与传统燃油车整车仿真测试模型库,直观搭建说明描述,纯电动汽车BEV 电机 电池 VCU控制仿真模型纯电动汽车整车仿真测试; 附赠传统燃油车 仿真模型 发动机
- 机器视觉贴片机控制系统源码全套详解:源码与图纸展现软件界面设计,机器视觉贴片机控制软件系统源码 机器视觉贴片机控制系统源码2套(全套源程序和图纸) 软件界面图片: ,机器视觉;贴片机控制;源码;全套
- C# TCP/IP通信客户端与服务器源码解析:字节、字符串及浮点数交互,西门子S7-200 Smart通讯实现的中英文字符串聊天示范,C# TCP IP 客户端和服务器工程源码,带注释,里面含有以字节
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈