第1部分:使用IBM Cloud Annotations进行注释
第2部分:使用Google Colab学习模型 ←本文
第3部分:为Jetson nano构建环境
第4部分:掌握DeepStream应用程序
第五部分:学习模型变换和物体检测
第2部分:使用Google Colab学习模型
上一次,我使用IBM Cloud Annotations创建(注释)培训数据。这次,我们将使用Google Colab训练Tensorflow模型。这个学习过程需要大量的浮点运算,但是通过使用Google Colab,可以使用免费的GPU来高速执行它!️
准备Google Colab环境
首先,我们将为Google Colab准备环境。
①下载Jupiter notebook
首先,下载我的定制Jupiter笔记本。该笔记本与官方的object-detection.ipynb基本相同,但有以下7个更改。创建并下载对象检测模型
1.解决发生错误且无法继续的部分
3.安装Google Drive
4.使用存储在Google Drive中的测试图像进行测试
5.下载所学模型的功能
6.在检查步骤的同时确认进度附加步骤
7.日语说明
特别是,官方对象detection.ipynb中使用的“ ssd_mobilenet_v1_quantized”模型可以使用“ SSD mobile net v2 coco ”,因为稍后将pb文件转换为uff文件进行TensorRT时会发生错误。这是重点。
清除错误后,我花了3个星期的时间来创建此笔记本
然后使用您的Google帐户转到Google云端硬盘,然后点击左上角的“新建”按钮。
从出现的菜单中选择“文件夹”,输入“对象检测”和文件夹名称,然后单击“创建”按钮。*可以使用其他名称,但是您需要重写节点簿上的路径。
打开创建的“ Objetc检测”文件夹,并在上面下载的ZIP文件中上传“创建对象检测模型.ipynb”,并在第一次为测试拍摄jpg图像。
双击上载的“创建对象检测模型.ipynb”以将其打开。
当您打开笔记本时,将显示以下Google Colab屏幕。
从屏幕左上方的“编辑”中选择“笔记本设置”。
在此屏幕上,确保将硬件加速器设置为“ GPU”,然后单击“保存”。
这样就完成了Google Colab环境的准备。
从此处开始,根据节点手册中描述的“ 1.首选项”的内容,从顶部开始按顺序执行代码。由于Google Colab的服务器环境处于仅安装所需最少软件包的状态,因此我们将安装学习Tensorflow模型所需的模块。
首先,安装numpy。具体来说,请单击代码左侧的播放按钮。
安装完成后,将显示“成功安装了numpy ...”。安装numpy之后,有必要重新启动实例,因此请单击“重新启动运行时间”按钮。
然后安装tf_slim。如果显示消息“成功安装tf-slim ...”,则确定。
安装云注释以与IBM Cloud Annotation连接。如果显示消息“成功安装了云注释...”,则确定为OK。
如果要更改学习步骤的数量,请在此处更改“ num_steps”的值。初始设置为500,但是最好将其设置为至少5000,以获得物体检测的准确性。设置后,按播放按钮执行。没有显示结果。
克隆“ object_detection_demo_flow ”以使用SSD Mobilenet v2进行培训。如果显示“已经更新”,则确定。
然后克隆Tensorflow的对象检测API并安装所需的相关模块。
安装完成后,将运行用于环境测试的“ model_builer_test.py”以测试是否已安装所需的模块。如下所示,如果没有错误,则可以。
接下来,下载SSD Mobilenet v2,这是学习模型的基础。
如果可以看到如下所示的文件“ frozen_inference_graph.pb”,则可以。
将上次下载的SSD Mobilenet v2中包含的检查点设置为变量。如果显示“ model.ckpt”的路径,如下所示,则可以。
这样就完成了服务器环境设置。
在这里,我们将通过使用第1部分中的IBM Cloud Annotations创建的训练数据转换为Tensorflow可以处理的TFRecord格式文件,从而准备训练数据。基本上,只需执行“ 2.准备训练数据”中的代码。
挂载您的Google云端硬盘以供以后使用。当您按下播放按钮并执行代码时,URL将显示如下,单击以将其打开。
然后,将显示Google帐户选择屏幕,因此选择Google帐户。
接下来,Google云端硬盘文件系统将要求访问权限,因此请单击“允许”按钮。
如果允许,代码将显示在屏幕上,因此单击“复制”按钮将其复制到剪贴板。
复制后,返回Google Colab标签,将复制的代码粘贴到红色框中,然后按Enter。
验证代码后,将显示“安装在/ content / gdrive上”,并且您的Google云端硬盘将安装在Google Colab的服务器上。
挂载IBM Cloud存储以访问先前注释的数据。在按下“播放”按钮之前,将“凭证”部分重写为您上一次写下的内容。
重写后,按播放按钮执行代码。显示“○○已安装”时,安装完成。
当您按下下一个块的播放按钮时,将显示先前注释的图像文件和json文件。现在,您可以看到IBM Cloud和Google Colab已连接。
接下来,创建标签图。标签信息也包含在_annotations.json中,因此请阅读并创建它。
创建完成后,将显示已创建的标签图,您可以检查在注释时输入的标签名称。
现在让我们创建一个TFRecord,它将作为模型学习的输入。这将需要一些时间,具体取决于注释数据的数量。
TFRecord的创建完成后,将创建两个记录文件,如下所示。第一个train.record是训练记录,而val.record是用于验证的记录。
将创建的标签文件和TFRecord路径设置为变量。
最后,创建用于模型训练的设置文件(管道文件)。
同时执行第二个块。
当执行第二个块时,将显示管道文件的内容。确保设置了上面设置的学习步骤,检查点,标签文件和记录文件路径的数量。
这样就完成了训练数据的准备。
从这里开始,我们将最终训练Tensorflow的训练模型。
不必学习500次,因为学习将在5分钟左右完成,但是如果您学习5000次以上,则将需要时间,因此当前的学习状况令人担忧。因此,我们将可以使用Tensorboard,它可以可视化学习情况。
操作简单,只需按一下播放按钮。但是,如果出现以下错误,请重试!重新执行时,将要求您覆盖,因此输入“ A”并按Enter。
如果一切顺利,则将显示URL“ https://xxxxxx.ngrok.io”,如下所示。即使您此时访问此URL,也会发生错误,因此让我们在下一步开始学习时对其进行访问。
现在,让我们学习Tensorflow的模型,这是这次的主要主题!️
学习开始时将显示许多日志,但当Step = 100的显示达到500时,将完成许多日志。如果是500,则大约需要5到10分钟。让我们访问上面创建的Tensorbord URL以查看进度。
下面是Tensorboad的屏幕。在500步的情况下,它将立即结束而不检查进度,但是在5000步的情况下,您可以看到Loss值正在逐渐减小。
当Google实验室屏幕上的“步长”值达到500且末尾的日志草率时,学习完成!️
学习完后,运行下一个块以查看检查点信息。您可以看到model.ckpt.500。
您刚刚训练的Tensorflow模型仅在经过训练的机器上可用,因此将其导出。此过程也需要一些时间。
导出完成后,运行以下块以查看导出的模型。如下所示显示save_model和Frozen_inference_graph.pb是可以的。
以防万一,请检查Frozen_inference_graph.pb的完整路径。
在下一步中,加载测试图像以测试您的模型。如果您运行代码,并显示存储在Google云端硬盘中的测试图像的文件名,就可以了。
现在,让我们测试是否可以使用经过训练的模型检测物体!️在测试中运行代码。然后,将对测试图像执行对象检测,并希望如下图所示检测并显示对象!️顺便说一下,文件名下面的数字是标签文件中设置的检测到的对象的索引号,而其下是概率。
此外,即使执行图像,也可能不会显示图像,但是在这种情况下,请再次按播放按钮。
另外,如果显示图像但未检测到对象,请增加学习步骤或增加注释数据的数量。
最后,将经过训练的模型下载到您的PC。下载需要一些时间,请耐心等待。
下载完成后,将如下所示下载ZIP文件。
同时下载标签文件。我不在TensorRT中使用它,但是以防万一(笑)
如果您解压缩已训练模型的已下载ZIP文件,则可以看到包含以下文件。在该文件中,“ frozen_inference_graph.pb”将是下一步使用的文件。
至此,使用Google Colab完成了Tensorflow模型的创建。
②准备Google云端硬盘
③建立资料夹
④上传文件
⑤打开Google Colab
⑥GPU的确认
服务器首选项
①安装numpy
②安装tf_slim
③安装云注释
④设定学习步骤数
⑤目标检测演示克隆
⑥对象检测API克隆
⑦下载Mobilenet SSD v2
⑧检查点设置
准备训练数据
①挂载Google云端硬盘
②挂载IBM Cloud
③注释数据的确认
④创建标签图
⑤创建TF记录
⑥设定学习数据的路径
⑦管道设置
模型学习
①Tensorboard设置
②开始学习
③检查点显示
④导出图
⑤确认出口型号
⑥加载测试图像
⑦学习模型测试
⑧下载经过训练的模型
⑨下载标签文件
[参考]检查模型文件的内容

- 关于NVIDIA Jetson AGX Orin模组,这些信息很重要
- 对计算能力9.0+GPU卡特性的探索
- 在自动光学检测(AOI)领域中推广Jetson Xavier 方案到底解决哪些痛点?
- 关于Jetson AGX Orin产品你不知道的关键点都在这里
- 揭秘 Jetson 上的统一内存
- NVIDIA Jetson 软件: 将 NVIDIA 加速技术带到边缘
- 新一代Jetson NANO开发套件(B01)开箱
- 从Tensorflow生成TensorRT引擎的方法
- 实战教程:利用NVIDIA TensorRT优化一个推荐系统
- NVIDIA机器人开发工具包ISAAC实战(英文)
- 如何搭建一个NVIDIA JetBot小车(英文)
- Jetson TX2进行摄像头驱动的开发