摘要
学习Azure认知能力服务,偶然发现了一个让人感动的专题——利用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就可以了。
图1:建立Custom Vision新项目
5. 免费下载飞禽的照片数据
数据信息是建立深度学习实体模型需要的主要內容。 我们可以应用来源于康奈尔试验室的 NABirds 数据的非空子集来训炼实体模型。免费下载包括数据的 zip 文档,该資源大伙儿能够 去GitHub上免费下载:资源链接。免费下载之后,开启能够 发觉里边有16中飞禽的照片,每一种大约120照片上下。
图2:数据資源
6. 提交数据
现阶段,大家有二种方式来上传照片数据信息,一种是应用Custom Vision的门户网,也有一种是应用Custom Vision的SDK。相对而言,应用门户网提交更形象化一些。大家这儿就应用门户网的方法提交。操作步骤以下:
在自定视觉效果门户网中建立新项目:转到 https://www.customvision.ai/projects 并登陆。假如在同一电脑浏览器中,应用以前登录Azure门户网的账户就行。
挑选“新建项目”。在“建立最新项目”中:
- 在“名字”中,键入选定的项目规划。
- 在“叙述”中,键入实体模型的短叙述。
- 在“資源组”中,挑选在 Azure 门户网中建立的資源组。
- 在“项目类型”中,挑选“归类”。
- 在“归类种类”中,挑选“多类(每图象一个标识)”。
- 在“域”中,挑选“基本”。
挑选“建立新项目”。如下图3所显示。
图3:建立Custom Vision新项目
在自定视觉效果新项目中,挑选“加上图象”,在“开启”中,转至从数据 zip 文档中获取位图文件的 birds-photo 文件夹名称。开启飞禽种群文件夹名称。挑选 Ctrl A 来挑选种群文件夹名称中的全部图象,随后挑选“开启”。
图4:上传照片数据
在“图象提交”中,在“我的标识”中加上表明以说明相片中表明的飞禽种群,如幼鸽。
图5:标识数据
挑选“文件上传”。再次提交别的飞禽的照片,直至进行提交。留意,最少要提交二种之上的Tag的照片,要不然后边就无法训炼。
7. 训炼实体模型
大家已在自定视觉效果中建立了数据。如今,能够 模型拟合开展训炼了。能够 应用 SDK 来训炼实体模型,但大家将应用自定视觉效果门户网来训炼实体模型。在自定视觉效果门户网中,挑选“飞禽归类”新项目。在顶端工具栏中,挑选“训炼”。在“挑选训炼种类”中,挑选“迅速训炼”,随后挑选“训炼”。
图6:训炼数据
在训炼全过程中,“迭代更新”视图将表明在左边。 视图中的“已经训炼…” 通告标示已经开展训炼。 训炼过去进行时,将表明相关怎样为已经训炼的迭代更新实行实体模型的信息内容。相关训炼迭代更新的详细资料,可根据称之为“精密度”、“撤销(Recall)”和“均值精密度 (AP)”的指标值来表明。为全部实体模型和每一个类(标识)表明这种指标值。 如图所示7所显示。
图7:数据训炼結果
下面,大家将详尽掌握这种指标值。自定视觉效果在检测实体模型时表明三个指标值。 这种指标值是可协助你掌握实体模型实行状况的指示仪。 这种指示仪不容易标示实体模型的真实有效或精确性。指示仪总是对你说实体模型在你所给出的数据上的实行状况。实体模型在已经知道数据信息上的实行状况能够 使你掌握实体模型在新数据上的实行状况。为全部实体模型和每一个类给予下列指标值:
- precision :假如模型预测标识,则此指标值表明预测分析恰当标识的概率有多大。
- recall:针对实体模型应恰当预测分析的标识,此指标值表明实体模型恰当预测分析的标识的百分数。
- average precision:根据测算在不一样阀值上的精确率和均方误差来衡量实体模型特性。
在检测自定视觉效果实体模型时,将在迭代更新检测結果中见到每一个指标值的标值。
8. 检测实体模型
依据自定视觉效果给予的指标值,大家的实体模型特性比较满意。 下面检测实体模型,看一下它解决未见过的数据信息时特性怎样。 我们可以从在网上检索一张飞禽图象。
- 在 Web 电脑浏览器中,检索你训炼该实体模型鉴别的在其中一个飞禽种群的图象。 拷贝图象的 URL。
- 在自定视觉效果门户网中,挑选“飞禽归类”新项目。
- 在顶端工具栏中,挑选“迅速检测”。
- 在“迅速检测”中,将 URL 黏贴到“图象 URL”,随后按 Enter 检测实体模型的精确性。 预测分析将表明在对话框中。
自定视觉效果剖析图象以检测实体模型的精确性并表明結果,如图所示8所显示。
图8:检测結果
9. 布署实体模型
在自定视觉效果门户网的顶端工具栏中,挑选“特性”。挑选“公布”。在“公布实体模型”中,挑选“预测分析資源”,随后挑选自定视觉效果新项目的预测分析名字。 挑选“公布”。如下图9所显示。
图9:公布实体模型
在公布实体模型后,实体模型实际操作在自定视觉效果门户网中开展变更。挑选“预测分析 URL”菜单栏。在“怎么使用预测分析 API”的“假如你有一个图象 URL”下的输入框中,拷贝并储存该值,随后挑选“获得”。
图10:实体模型URL
在设定网页页面,我们可以得到事后所必须的Key、EndPiont和Project ID,如下图所显示。
图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开展识别图片,对在其中的飞禽开展归类,最终将获得的結果打印出在调节对话框。点一下运作,假如你的监控摄像头捕获了飞禽,比如幼鸽哪些的,就可以获得結果了。
图12:归类結果网页页面
自然,有的同学们要问了,假如我觉得鉴别飞禽在照片中的什么位置,随后给他们标识出去呢?那样的话,仅是归类就不足了,大家必须新创建一个Object Detection类的新项目了,实际方法便是在新建项目的情况下,挑选Object Detection,而不是Classification。以后的流程也类似,便是上传照片,加Tag,随后训炼,训炼进行之后,布署实体模型。唯一的差别就取决于,在Object Detection新项目中,大家必须对提交的照片开展标明,便是要将目标在照片中发生的部位开展标明,如下图13所显示。
图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所示,图上我们可以见到,回到的結果里边,将鉴别的飞禽用鲜红色框开展了标明。
图14:飞禽鉴别結果网页页面
假如应用了LCD电容屏来做显示屏,那麼,大家实行的結果如下图15所显示。
图15:树莓派硬件配置总体图
参照连接:
1. Microsoft Learn:应用自定视觉效果对濒临灭绝飞禽开展归类
2. Azure資源:Azure 门户网
3. 照片数据的Github连接:资源链接
4. Custom Vision 门户网:https://www.customvision.ai/projects
关注不迷路
扫码下方二维码,关注宇凡盒子公众号,免费获取最新技术内幕!
评论0