有了AI,你可以在几秒内数到1000+葵花籽

简介: 有了AI,你可以在几秒内数到1000+葵花籽

今天来介绍下如何使用ai来计算用手机拍摄的照片中的葵花籽。

步骤:

1.业务需求

2.数据准备

3.模型结构

4.libs和工具

5.结果

6.误差分析

7.失败/假设

8.结论

9.参考文献


1.业务需求

对农学家来说,计算向日葵和玉米的种子是一项常见的任务,因为这些计算将被用来预测“生物收获”。另外,农学家计算1000粒的重量,这将进一步用来估计每个土地面积的总产量。

此外,产量预测是农业分析的主要功能。他们预测得越快、越准确,公司赚的钱就越多。


这些检查应该在每个领域进行推广。这是它现在的工作模式:


  1. 农学家到田间去
  2. 从地里不同的地方采10朵向日葵
  3. 把每棵向日葵分成四份
  4. 数种子,再乘以4,得到每棵向日葵上种子的总数
  5. 随机取1000粒种子称重
  6. 我们从其他的检查中获得每公顷土地上的植物密度(或使用计划的密度)
  7. 并计算(每公顷密度_向日葵平均种子数量_ 1000粒重量)/ 1000 =每公顷产量重量

这是一张常见的向日葵照片

65.png



可以看到白色(未成形)和黑色(成形)的种子,但只有黑色的种子将用于生产葵花籽油。


这种计算的一个缺点是,农学家必须计算向日葵上黑色的种子,这是非常不准确和不方便的。此外,每个农学家可能会在同一株向日葵上计算不同数量的种子,因为有些种子可能还没有形成(白色的,没有蜜蜂授粉),而且很难确定哪个种子形成了,哪个没有。


2.准备数据

为了解决任何机器学习问题,我们需要获取数据并训练模型。而且对于每个特定的任务,你无法找到任何可用的免费标记数据集。在我们的例子中,数据集应该包含数百张向日葵照片,每个种子都有对应的标签(黑色或白色,便于理解),所以我们收集了自己的数据集。


我们的农学家已经制作了大约1000张来自乌克兰不同地区的不同向日葵杂交品种的照片。随后,另一个团队在CVAT免费的数据标签工具中对照片进行标签。每个图像都应该有bounding_box(紫色框),以及黑色的种子(下图中的绿色点)和白色的种子(下图中的红色点)。


56.png


接下来,我们可以查看向日葵籽粒的分布情况


0.png


看起来很正常,平均值是1271。

同时也显示了黑白种子数量的相关性。


2.png

弱依赖性存在,但不能进一步利用。


3.模型结构

出于业务需要,所有的计算都应该在移动设备上完成。这就是为什么我使用U-net[1]与mobilenet_v2[2]编码器预先训练在imagenet。这一切意味着什么?


U-net是一种神经网络结构,其中神经网络获取一个输入图像并返回一个分割图(在我们的情况下热图),具有下采样和上采样数据。

我们的热图表示像素与某个核相关的概率。


3.png


上/下采样块使用了mobilenet_v的权重

1.png


Imagenet是一个包含数百万张图片和数万个类的数据集。


![](https://ucc.alicdn.com/images/user-upload-01/img_convert/ae19e0497fb4d575fe8ebb6dea879b7f.png#align=left&display=inline&height=300&margin=[object Object]&originHeight=300&originWidth=750&size=0&status=done&style=none&width=750)


坦白地说,对于这个任务,我训练了2个NN和1个算法。

第一个NN从图像中剪下向日葵,像这样:


6.png


第二个NN构建2个热图,每个类一个(黑色和白色)。

训练时,该网络的输入是裁剪图像(来自以前的神经网络),目标是在标记点上建立高斯的热图。

对于黑色的玉米粒,它是这样的:


5.png6.png



根据该热图,像素越轻,模型越确定像素与核相关。


最后一种算法(高斯的拉普拉斯算法)搜索概率团的中心(相邻的明亮像素组),在下一张图像上,我使用绿色点作为裁剪图像上方的团中心。


9.png


白色内核的预测如下所示:


8.png


4. 使用libs和工具

为了训练,我使用了Python库,例如:

PyTorch和PyTorch Lightning训练模型

albumentations-用于图像增强

Segmentation_models_pytorch——使用预先训练的模型

Scikit_image -用于处理热图上的斑点

Hyperopt -为斑点检测调优超参数

wandb -跟踪训练实验


5.结果

我们如何验证整个解决方案?

为了计算平均绝对百分比误差(MAPE),我对每一张图像进行预测,并将模型发现的种子数和评审员发现的种子数进行比较。因此,我们得到均值为0的正态分布,效果非常好。

7.png




蓝条表示黑色的内核MAPE是3.6%

橙色条-是白色玉米粒,MAPE是8.8%。


6. 误差分析

最大的错误是有异常的向日葵,有异常多的玉米粒,或者太多的灰色玉米粒,或者有圆形的边缘,如下例所示:


+.png


在这里,模型比评估者多发现了16%,正如我们所看到的,大多数多余的种子都在向日葵的边缘。


或者最大的错误-257%的白色种子在这个例子中:


![](https://ucc.alicdn.com/images/user-upload-01/img_convert/75c86737f244d77a0280016a54bdfb1d.png#align=left&display=inline&height=46&margin=[object Object]&originHeight=46&originWidth=37&size=0&status=done&style=none&width=37)


-.png


白色种子的总数是14个,模型找到了50个。就百分比而言,这确实是一个很大的数字,但就绝对数字而言,它并不重要。


7.失败/假设

有一次,我发现用数学解释了向日葵和其他一些具有分形结构植物的种子位置。位置可以用具有极坐标方程的费马螺旋来解释

5.png

。1.gif



其中n是指标核数c是常数,我想对于每一株向日葵来说都是不同的。因此,我们应该得到以下位置


。0.png。1.gif

我得到的最佳结果是:


3..png


其中蓝点为(0,0)点。所以它在某种程度上很接近,但不适用于实际情况。


8.结论

目前,为了将人为因素排除在计算之外,我们公司已经加快并规范了这项任务。MAPE在业务需求上是可接受的,该解决方案目前在移动应用中也可以使用。

对于我来说,我们能够计算出超过1000个内核,将点划分为2个不同的类别,并且所有这些都可以通过移动设备完成,这让我感到难以置信。


9.参考

  1. U-Net: Convolutional Networks for BiomedicalImage Segmentation (2015)
  2. MobileNetV2: Inverted Residuals and Linear Bottlenecks (2019)

相关文章
|
11月前
|
人工智能
AI 写的高考作文,你打几分?
又是一年高考时,高考真的是人生的一件大事,毕业这么多年,每次看到高考相关信息,还是会不由自主的点进来,其中语文的作文是每年大伙津津乐道的话题。 今年,AI 发展的如火如荼,树先生决定携手 ChatGPT、Claude、文心一言、星火等一众大语言模型追梦高考,回忆青春。(有点装到了,说白了,测测这几个大模型写作文的水平~)
|
11月前
|
机器学习/深度学习 人工智能 算法
ChatGPT唤醒AI游戏?
ChatGPT唤醒AI游戏?
131 0
|
存储 机器学习/深度学习 人工智能
模拟大脑功能,这个AI模型真正实现像人一样持续学习
模拟大脑功能,这个AI模型真正实现像人一样持续学习
119 0
|
机器学习/深度学习 Web App开发 人工智能
AI键盘侠来了:DeepMind开始训练智能体像人一样「玩」电脑
AI键盘侠来了:DeepMind开始训练智能体像人一样「玩」电脑
121 0
|
机器学习/深度学习 数据采集 人工智能
吴恩达:回顾2021,这些大事件影响了AI这一年
吴恩达:回顾2021,这些大事件影响了AI这一年
211 0
吴恩达:回顾2021,这些大事件影响了AI这一年
|
机器学习/深度学习 人工智能 算法
百度大脑发布13项AI硬件,这是要“铆足劲”发力端上AI?
百度大脑发布13项AI硬件,这是要“铆足劲”发力端上AI?
182 0
百度大脑发布13项AI硬件,这是要“铆足劲”发力端上AI?
|
传感器 机器学习/深度学习 人工智能
女子被困浴室超30小时,危急情况AI能否救人于水火?
女子被困浴室超30小时,危急情况AI能否救人于水火?
110 0
|
人工智能 文字识别 前端开发
AI视觉第二天
AI视觉第二天,身份证识别系统搭建笔记。
155 0
AI视觉第二天
|
人工智能 Java 开发工具
阿里云视觉ai训练第二天
阿里云视觉ai训练第二天
504 0
阿里云视觉ai训练第二天
|
人工智能
阿里云视觉ai训练第一天之视觉生产技术的探索与应用
了解视觉AI涉及的方面,包括一些使用的技术。
252 0