我如何学会不用担心和喜欢机器视觉

哈Ha!我叫Artyom Nagumanov,我在软件开发,项目管理,团队和IT部门拥有超过15年的经验。我一直对人工智能和机器视觉这一主题感兴趣。在开发软件时,我总是想到为什么不向企业应用程序添加至少一些智能,以部分或完全拒绝用户参与乍看之下似乎完全没有形式化的任何过程。

图片

为此,每次我都必须重新做一遍:研究/召回适当的库,在Linux虚拟机上安装以测试用于创建和训练神经网络的免费工具,查找当前全球人类创造的王冠的网络架构。人工智能。这个过程很费力,也不是很有趣。一次,了解了另一个神经网络的体系结构后,我意识到是时候结束这一点了,并创建一个可以接管整个例程的通用工具了。我只需要按几个大玻璃按钮即可得到结果。在吸引注意的图片中(在文章的第一段中),显示了一个识别灌溉机喷水的示例,但首先要注意的是。

我们进行识别服务


我有以下想法-创建一个网站,用户可以在其中上传任何图像,单击“识别”按钮并以json格式获取结果。但是事实是,世界上没有通用算法或神经网络可以找到任何物体。结果,我决定有可能训练我自己的神经网络模型,从而仅使用需要识别的位置和样本图像来识别我们所需的对象。在开始工作之前,我分析了世界上有关该主题的发展情况。事实证明,IT行业的许多巨头都朝着这个方向努力:Yandex,Mail.ru,亚马逊。主要的缺点是所有这些巨头都希望获得服务的资金。这足以让我开始自己的开发。我已经有背景,并且我知道如何很好地查找和分类图像上的对象,剩下的就是将所有内容放在一起并建立一个方便的界面。

在大多数情况下,我在项目中使用Microsoft技术,从而大大影响了该项目中使用的技术:

  • ASP.NET(C#语言)
  • Webpi
  • Javascript jQuery
  • MSSQL服务器
  • 蟒蛇
  • 张量流

首先,我决定创建一个REST服务,它将成为整个系统的大脑,这将使我们能够通过API接受命令并完成所有粗略的工作。我选择了Mask R-CNN,这是神经网络的体系结构,该网络可以在图像中找到对象并对其进行分类。

一切都或多或少地定期进行,直到我实现训练自己的模型为止。学习过程非常昂贵,并且对硬件要求很高。当然,我之前已经知道这一点,但是在此之前,我可以使用CPU进行计算,等待一到两天的模型训练。但是由于这个想法是创建一个方便快捷的工具,因此我对模型的长期培训不满意。因此,随着使用支持CUDA技术的合适视频卡安装特殊服务器的问题已经成熟(https://ru.wikipedia.org/wiki/CUDA),这将大大减少训练模型的时间。为了不增加项目预算,我选择了便宜的NVIDIA GeForce GTX 1050 Ti显卡。与该服务同时,我在Windows Forms上创建了一个允许进行测试的客户端。

在第二阶段,我创建了一个网站,该网站实质上是该服务的客户端。我并没有真正为设计而烦恼,甚至没有采用现成的模板,我自己编写了所有内容,仅使用Visual Studio开箱即用的内容。创建和测试该网站又花了三个月的时间。

上传图片,选择现成的模型进行识别,单击“识别”按钮并获得第一个结果时,我感到非常高兴。

图片

机器视觉的真正任务


当我在使用识别系统时,一个真正的任务飞到我的头上-确定用于清理道路上积雪的专用机器的前铲的位置。为了解决这个问题,我不仅限于选择解决方案的方法,而且从一开始我就想使用确定铲子角度的特殊传感器的安装,但很快就放弃了这个想法。事实证明,由于需要定期对这些传感器进行校准,因为需要定期将铁锹移开并放进去,除了与同事安装此类传感器交谈之外,我还发现这些传感器在街上并且可以破坏。这个想法浮现在脑海中,以分析铲子的工作控制,但事实证明,在现实生活中,它们甚至可以移开铲子,并且在工作体上发出铲子降下的信号,总之,这不是一个可靠的选择。好吧,他们别无选择,只能使用识别服务的全部功能。我将相机放在正看着前铲的汽车乘客舱中,收集了数百个铲样本,并用VGG工具标记了这些样本,然后将其内置到现场并开始培训。该过程耗时约两个小时,在30年代,我获得了相当令人满意的识别结果,识别准确率约为95%。该过程耗时约两个小时,在30年代,我获得了相当令人满意的识别结果,识别准确率约为95%。该过程耗时约两个小时,在30年代,我获得了相当令人满意的识别结果,识别准确率约为95%。

图片

为了使该系统能够在汽车上完全正常运行,我必须对其进行修改:添加了通过ftp而不是仅通过API上传照片的功能,因为 摄像机允许您拍摄照片并将其发送到指定的ftp。添加了将结果保存到数据库中,然后在指定的时间段内通过API来获取结果,分析结果并将其写入以1C编写的会计系统的功能,顺便说一下,这是一个庞大的控制系统,可以同时分析数千辆汽车并控制许多参数,例如里程,机器时间,油箱中的燃料,行驶,空转等,但这是一个完全不同的故事。铲斗控制器的第一个版本已准备就绪,但在战斗中,只有降雪时才进行测试。

有多容易?


识别服务的主要思想是创建和训练自己的模型的简单性。为了了解是否有人真的可以创建和训练自己的模型,我请助手创建一个模型来识别灌溉机上的水流。我给她的唯一输入是从驾驶室拍摄的灌溉机运行视频以及识别服务的地址,晚上为她设置任务,早上进入系统,我看到了一个现成的模型,该模型确实有效。下面是在其中训练模型的窗口的屏幕截图。

图片

在您学习时,将保留模型的时代,我们可以在不中断学习过程的情况下测试任何时代。

开发与使用


在视频剪辑中 可以看到一个示例,说明一切工作如何进行

我想了很长时间,如果任何人都可以创建自己的模型,那为什么不让它与系统的其他用户共享该模型成为可能。结果,我添加了一个部分,您可以在其中单击鼠标放置一个成功的模型,任何参与者都可以使用它。该服务是完全免费的。

现在,我本人使用该服务来解决我的企业中可以使用机器视觉的流程自动化的任务。将来,我计划添加其他识别方法,而不仅仅是神经网络。如果其他人使用此服务可以解决他们的问题,我将非常高兴。

All Articles