本文由 发布,转载请注明出处,如有问题请联系我们! 发布时间: 2021-05-261小时快速搭建基于Azure Custom Vision和树莓派的鸟类分类和识别应用

加载中

1小时迅速构建根据Azure Custom Vision和树莓派的飞禽归类和鉴别运用

文中文图叙述了怎么才能构建根据Azure Custom Vision和树莓派的飞禽归类和鉴别运用

1. 前言

    近期在微软公司Learn服务平台学习培训Azure认知能力服务项目有关的內容,看到了一个相关“应用自定视觉效果对濒临灭绝飞禽开展归类”的专题讲座,该专题讲座的具体内容便是应用 Azure Custom Vision建立一个实体模型来标志飞禽种群。学习培训完之后,感觉內容挺有趣,英文不太好的朋友不必感觉有工作压力,这一专题学习控制模块的全部內容早已简体中文版。可是有一个难题便是,学习培训完之后,你能发觉,该新项目是在PC上应用目前的相片来开展鉴别,那样的实际操作并并不是十分便捷。现阶段,伴随着物联网设备的普及化,应用树莓派做为IoT终端设备、融合监控摄像头捕获即时图象,再与Azure Custom Vision开展互动,得到鉴别結果,那样的方法也许布署起來更为轻巧方便。好的,下边大家就一起来把这个念头完成出去,我总体计算了一下,应当可以在一个钟头内拿下。此外,文中应用微软公司Learn服务平台的沙盒游戏做为資源,全部的Azure資源应用全是完全免费的。

2. 硬件配置提前准备

    树莓派服务器、开关电源、显示屏(非务必,能够 根据VNC远程控制查询)、USB监控摄像头或树莓派专用型监控摄像头。我这里用的是树莓派4(2G)和Microsoft LifeCam HD3000监控摄像头。

3. 软件资源

    必须一个微软账号,能够 根据outlook申请注册一个,在資源构建全过程中应用的Azure資源是以沙盒游戏的方式完全免费给予的,这一沙盒游戏的应用有时间限定,一般是4个钟头的有效期限,每一个帐户每日能够 申请办理10个沙盒游戏。实际的全过程能够 参照上边给予的这一文本文档中的第三步:搭建实体模型

4. 建立自定视觉效果 API 資源

    大家将在 Azure 认知能力服务项目自定视觉效果中建立 API 資源。

    1. 在 Azure 门户网中,挑选“Create a resource”。

    2. 检索“custom vision”。 在自定视觉效果的百度搜索中,挑选“create”。

    3. 在“基本上”菜单栏上,键入或挑选需要的值:

  • 挑选 Azure 定阅:默认设置便是Concierge Subscription,
  • Option里边还记得挑选Both,便是Training和Prediction都需要。
  • 建立資源组:默认设置可选择的便是learn-***(后边是一串ID号),
  • 名称:自身想一个就可以了。
  • 部位:选就近原则的,沒有China,就选了Japan East。
  • Pricing Tier:选F0就可以了。

image

图1:建立Custom Vision新项目

5. 免费下载飞禽的照片数据

    数据信息是建立深度学习实体模型需要的主要內容。 我们可以应用来源于康奈尔试验室的 NABirds 数据的非空子集来训炼实体模型。免费下载包括数据的 zip 文档,该資源大伙儿能够 去GitHub上免费下载:资源链接。免费下载之后,开启能够 发觉里边有16中飞禽的照片,每一种大约120照片上下。

image

图2:数据資源

6. 提交数据

    现阶段,大家有二种方式来上传照片数据信息,一种是应用Custom Vision的门户网,也有一种是应用Custom Vision的SDK。相对而言,应用门户网提交更形象化一些。大家这儿就应用门户网的方法提交。操作步骤以下:

在自定视觉效果门户网中建立新项目:转到 https://www.customvision.ai/projects 并登陆。假如在同一电脑浏览器中,应用以前登录Azure门户网的账户就行。

    挑选“新建项目”。在“建立最新项目”中:

  • 在“名字”中,键入选定的项目规划。
  • 在“叙述”中,键入实体模型的短叙述。
  • 在“資源组”中,挑选在 Azure 门户网中建立的資源组。
  • 在“项目类型”中,挑选“归类”。
  • 在“归类种类”中,挑选“多类(每图象一个标识)”。
  • 在“域”中,挑选“基本”。

    挑选“建立新项目”。如下图3所显示。

image

图3:建立Custom Vision新项目

    在自定视觉效果新项目中,挑选“加上图象”,在“开启”中,转至从数据 zip 文档中获取位图文件的 birds-photo 文件夹名称。开启飞禽种群文件夹名称。挑选 Ctrl A 来挑选种群文件夹名称中的全部图象,随后挑选“开启”。

image

图4:上传照片数据

    在“图象提交”中,在“我的标识”中加上表明以说明相片中表明的飞禽种群,如幼鸽。

image

图5:标识数据

    挑选“文件上传”。再次提交别的飞禽的照片,直至进行提交。留意,最少要提交二种之上的Tag的照片,要不然后边就无法训炼。

7. 训炼实体模型

    大家已在自定视觉效果中建立了数据。如今,能够 模型拟合开展训炼了。能够 应用 SDK 来训炼实体模型,但大家将应用自定视觉效果门户网来训炼实体模型。在自定视觉效果门户网中,挑选“飞禽归类”新项目。在顶端工具栏中,挑选“训炼”。在“挑选训炼种类”中,挑选“迅速训炼”,随后挑选“训炼”。

image

图6:训炼数据

    在训炼全过程中,“迭代更新”视图将表明在左边。 视图中的“已经训炼...” 通告标示已经开展训炼。 训炼过去进行时,将表明相关怎样为已经训炼的迭代更新实行实体模型的信息内容。相关训炼迭代更新的详细资料,可根据称之为“精密度”、“撤销(Recall)”和“均值精密度 (AP)”的指标值来表明。为全部实体模型和每一个类(标识)表明这种指标值。 如图所示7所显示。

image

图7:数据训炼結果

    下面,大家将详尽掌握这种指标值。自定视觉效果在检测实体模型时表明三个指标值。 这种指标值是可协助你掌握实体模型实行状况的指示仪。 这种指示仪不容易标示实体模型的真实有效或精确性。指示仪总是对你说实体模型在你所给出的数据上的实行状况。实体模型在已经知道数据信息上的实行状况能够 使你掌握实体模型在新数据上的实行状况。为全部实体模型和每一个类给予下列指标值:

  • precision :假如模型预测标识,则此指标值表明预测分析恰当标识的概率有多大。
  • recall:针对实体模型应恰当预测分析的标识,此指标值表明实体模型恰当预测分析的标识的百分数。
  • average precision:根据测算在不一样阀值上的精确率和均方误差来衡量实体模型特性。

    在检测自定视觉效果实体模型时,将在迭代更新检测結果中见到每一个指标值的标值。

8. 检测实体模型

    依据自定视觉效果给予的指标值,大家的实体模型特性比较满意。 下面检测实体模型,看一下它解决未见过的数据信息时特性怎样。 我们可以从在网上检索一张飞禽图象。

  1. 在 Web 电脑浏览器中,检索你训炼该实体模型鉴别的在其中一个飞禽种群的图象。 拷贝图象的 URL。
  2. 自定视觉效果门户网中,挑选“飞禽归类”新项目。
  3. 在顶端工具栏中,挑选“迅速检测”。
  4. 在“迅速检测”中,将 URL 黏贴到“图象 URL”,随后按 Enter 检测实体模型的精确性。 预测分析将表明在对话框中。

    自定视觉效果剖析图象以检测实体模型的精确性并表明結果,如图所示8所显示。

image

图8:检测結果

9. 布署实体模型

    在自定视觉效果门户网的顶端工具栏中,挑选“特性”。挑选“公布”。在“公布实体模型”中,挑选“预测分析資源”,随后挑选自定视觉效果新项目的预测分析名字。 挑选“公布”。如下图9所显示。

image

图9:公布实体模型

    在公布实体模型后,实体模型实际操作在自定视觉效果门户网中开展变更。挑选“预测分析 URL”菜单栏。在“怎么使用预测分析 API”的“假如你有一个图象 URL”下的输入框中,拷贝并储存该值,随后挑选“获得”。

image

图10:实体模型URL

    在设定网页页面,我们可以得到事后所必须的Key、EndPiont和Project ID,如下图所显示。

clip_image002

图11:新项目设定网页页面

10. 树莓派运用搭建

    树莓派中,我们要应用到custom vision的python SDK,因此 我们要应用pip专用工具安裝下列库:

  1 pip3 install azure-cognitiveservices-vision-customvision
  2 pip3 install msrest

    因为我们在新项目中应用了USB监控摄像头,及其事后的照片表明,因此 必须安裝fswebcam和matplotlib,指令以下:

  1 sudo apt-get install python3-matplotlib
  2 sudo apt-get install fswebcam

    好啦,下边大家可以用树莓派内置的Thonny专用工具新创建一个Python文档,将编码拷到在线编辑器中,储存为customvisionclassify.py。

  1 import os
  2 from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
  3 from msrest.authentication import ApiKeyCredentials
  4 from PIL import ImageDraw
  5 from PIL import Image
  6 import matplotlib.pyplot as plt
  7 
  8 # capture the image with USB webcamera
  9 a=os.system("fswebcam --no-banner -r 128c0720 capture.jpg")
 10 print(a)
 11 credentials = ApiKeyCredentials(in_headers={"Prediction-key": "9b7a001f9d3e4cf38a2124f86******"})
 12 predictor = CustomVisionPredictionClient("https://birdcustomvisiondemo.cognitiveservices.azure.com/", credentials)
 13 projectID = "c597ccfe-7e32-4777-b773-*******"
 14 publish_iteration_name="Iteration1"
 15 with open("capture.jpg", mode="rb") as captured_image:
 16     results = predictor.classify_image(projectID, publish_iteration_name, captured_image)
 17 # Display the results.
 18 for prediction in results.predictions:
 19     print("\t"   prediction.tag_name   ": {0:.2f}%".format(prediction.probability * 100))
 20 

    这儿,应用你自己建立的Key、projectID和Iteration来更换我上边的,就可以了。

    上边这一共加起來便是20行编码,先用USB监控摄像头捕获图象,随后启用CustomVisionPredictionClient开展识别图片,对在其中的飞禽开展归类,最终将获得的結果打印出在调节对话框。点一下运作,假如你的监控摄像头捕获了飞禽,比如幼鸽哪些的,就可以获得結果了。

image

图12:归类結果网页页面

    自然,有的同学们要问了,假如我觉得鉴别飞禽在照片中的什么位置,随后给他们标识出去呢?那样的话,仅是归类就不足了,大家必须新创建一个Object Detection类的新项目了,实际方法便是在新建项目的情况下,挑选Object Detection,而不是Classification。以后的流程也类似,便是上传照片,加Tag,随后训炼,训炼进行之后,布署实体模型。唯一的差别就取决于,在Object Detection新项目中,大家必须对提交的照片开展标明,便是要将目标在照片中发生的部位开展标明,如下图13所显示。

clip_image002[5]

图13:Tag标识网页页面

    此外,在树莓派上的编码也各有不同,由于以前是归类,如今我们都是要做检验,实际编码以下。

  1 import os
  2 from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
  3 from msrest.authentication import ApiKeyCredentials
  4 from PIL import ImageDraw
  5 from PIL import Image
  6 import matplotlib.pyplot as plt
  7 
  8 # capture the image with USB webcamera
  9 a=os.system("fswebcam --no-banner -r 128c0720 capture.jpg")
 10 print(a)
 11 
 12 credentials = ApiKeyCredentials(in_headers={"Prediction-key": "****"})
 13 predictor = CustomVisionPredictionClient("https://birdcustomvisiontest.cognitiveservices.azure.com/", credentials)
 14 projectID = "27dd8141-93c6-***-***-*******"
 15 publish_iteration_name="Iteration*"
 16 
 17 with open("capture.jpg", mode="rb") as captured_image:
 18     results = predictor.detect_image(projectID, publish_iteration_name, captured_image)
 19 
 20 # Display the results.
 21 for prediction in results.predictions:
 22     # print("\t"   prediction.tag_name   ": {0:.2f}%".format(prediction.probability * 100))
 23     if prediction.probability>0.9:
 24         print("\t"   prediction.tag_name   ": {0:.2f}%".format(prediction.probability * 100))
 25         bbox = prediction.bounding_box
 26         im = Image.open("capture.jpg")
 27         draw = ImageDraw.Draw(im)
 28         draw.rectangle([int(bbox.left * 1280), int(bbox.top * 720), int((bbox.left   bbox.width) * 1280), int((bbox.top   bbox.height) * 720)],outline='red',width=5)
 29         im.save("detect.jpg")
 30 
 31 de=Image.open("detect.jpg")
 32 plt.figure("Result")
 33 plt.imshow(de)
 34 plt.show()
 35 

    实行的結果如下图14所示,图上我们可以见到,回到的結果里边,将鉴别的飞禽用鲜红色框开展了标明。

clip_image002[7]

图14:飞禽鉴别結果网页页面

假如应用了LCD电容屏来做显示屏,那麼,大家实行的結果如下图15所显示。

clip_image002[9]

图15:树莓派硬件配置总体图

 

参照连接:

1. Microsoft Learn:应用自定视觉效果对濒临灭绝飞禽开展归类

2. Azure資源:Azure 门户网

3. 照片数据的Github连接:资源链接

4. Custom Vision 门户网:https://www.customvision.ai/projects

评论(0条)

刀客源码 游客评论