Windows 中的 Firefly-DL 入门
适用产品
Firefly®-DL
应用说明简介
本应用说明将描述如何为使用 Windows 的 Firefly-DL 摄像头创建推理网络文件。
相关文章
概述
Firefly-DL 是一款高度紧凑、功耗低的机器视觉摄像头,经训练后可以检测用户定义的对象。
本文介绍了以下必要步骤:
- 使用转换学习重新培训一个经预训练的神经网络
- 将您的网络转为 Movidius 特定格式
- 将您的推断网络部署到 Firefly-DL 摄像头,并运行“边缘推断”
转换学习是指对一个为某任务设计和训练的现有神经网络进行一部分重新训练,使之用于完成您自己的任务。 这种方法比重新训练自己的网络要快得多,而且推理网络效果相同。 经过重新训练的网络部署到 Firefly-DL 摄像头后,可以对流传输的图像应用深度学习——直接在摄像头上应用。
如果您想直接在 Firefly-DL 上测试推断功能,请转到“使用 SpinView 测试深度学习”。
安装和配置系统
训练神经网络、创建推断网络文件并将其转换为适合 Firefly-DL 的格式的这个过程需要安装一组特定的软件和依赖关系。
为确保软件正常安装和运行,FLIR 建议使用全新系统,因为如果已安装了软件,可能会出现软件冲突。 如果您要使用旧系统设置,建议在虚拟环境中安装所有内容(Spinnaker 除外)。
需要以下软件:
用于分类(示例 1) | 用于检测(示例 2) |
|
|
Windows
FLIR 测试的 Windows 7 和 Windows 10。
Spinnaker SDK
用于摄像头评估的 GUI 应用程序包含在 Spinnaker SDK 内。 Firefly-DL 上必须使用 SpinView 流传输和查看推断数据。
Spinnaker SDK 1.25 版本(或更新版本)可在我们的网站上找到:
https://www.flir.com/products/spinnaker-sdk/
NeuroUtility
FLIR NeuroUtility 是一个使用简便的 GUI,可将推断网络文件(PC专用)转换为兼容 Firefly-DL 的格式,然后再将文件无缝上传到摄像头。
下载 NeuroUtility:
https://flir.boxcn.net/s/44ab50jos4y98wo25hej819h3q249ro7
Python
运行本应用说明中的训练脚本必须使用 Python。 安装时,请确保添加 Python 到路径(此选项可在初始安装窗口中勾选)。
Python 可从该位置下载:
https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe
TensorFlow
TensorFlow 是一个用于机器视觉的端对端开源平台。 我们用它来创建推断网络文件,上传到 Firefly-DL。 重新训练网络来使用新的训练数据时,将创建推断网络文件。 以下步骤展示了如何使用 TensorFlow 创建应用了现有神经网络的文件,然后再将文件转换为兼容 Firefly-DL 的格式。
安装 Python 后,在命令提示符中运行以下内容:
py -3.5 -m pip install tensorflow==1.13.2
TensorFlow for poets
TensorFlow for poets 是由 Google 创建的教程,其中包含了展示如何训练新的顶层(可以识别其他图像类别)的脚本。 下载 zip 文件,并解压到您的桌面。
https://github.com/googlecodelabs/tensorflow-for-poets-2
训练数据
训练数据是各种花卉的照片:雏菊、蒲公英、玫瑰、向日葵和郁金香。
下载 zip 文件,并解压 flower_photos 文件夹到 tensorflow-for-poets-2-master\tf_files 目录。
http://download.tensorflow.org/example_images/flower_photos.tgz
MobileNet-SSD
建立与预训练对象检测 caffemodel 和 prototxt 文件的链接,这些文件经训练用于检测隐藏在其他事物中的人/脸(完整的详细信息见随附的 retrained_labels_detection.txt 文件)。
下载 zip 文件并解压到您的桌面。
转换神经网络
Firefly-DL 支持两类神经网络:分类和对象检测。
分类显示预定选项列表中的最佳选项;摄像头给出一个百分比,确定当前图像有多少可能性可以归为经训练后识别的一种类别。
对象检测显示在一组预定选项下最可能的类别。 对象检测也可以(用围绕类别的“边框”形式)告知图像中的位置,也可以检测同一图像中的多个对象。
训练(或重新训练)网络来使用新的训练数据时,将创建推断网络文件。
示例 1:花卉分类 (TensorFlow)
本示例展示了如何使用 TensorFlow 创建应用了 mobilenet 神经网络的推断网络文件,以及如何将文件转换为兼容 Firefly-DL 的格式。
第 1 部分 重新训练
- 在文件资源管理器中导航到 TensorFlow-for-poets-2-master 主文件夹。
- 在文件夹地址栏,将内容替换为 “cmd”,然后按下 Enter 键。 文件夹位置中会打开一个命令提示符窗口。
- 复制粘贴以下内容到命令提示符窗口:
py -3.5 -m scripts.retrain --how_many_training_steps=500 --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --architecture=mobilenet_0.50_224 --image_dir=tf_files/flower_photos
实参 | 说明 |
---|---|
how_many_training_steps | 网络训练步骤。 较大的值需要更多时间,但精度更高(递减收益)。 您获得一个推断网络文件且可以看到所需输出后,可以对此进行修改。 我们定义 500 为本例的良好值。 |
output_graph | 输出推断网络文件名及位置(第 2 部分中使用)。 |
output_label | 用于推断网络文件的标签的网络文件名及位置(第 2 部分中使用)。 |
结构 | 所使用的神经网络;可以用任意 mobilenet 变型代替(除 mobilenet_ssd 外)(参见Firefly-DL 支持的升级网络进一步了解信息)。 |
image_dir | 所使用的训练数据(图像)的位置。 只要让文件夹结构相同、训练图像采用 jpeg格式,您就可以替换成自定义训练数据。 例如:animals/dog/dogphoto2.jpg。 每张相片的名称没有影响。 |
“retrained_graph.pb”文件和“retrained_labels.txt”在 tf_files 文件夹中生成。
可能会占用大量的 CPU 功率和时间,取决于系统。
第 2 部分 使用 Neuro Utility 转换图形文件并上传到摄像头
此步骤将输出一个兼容 Firefly-DL 摄像头的图形文件。
- 启动 Neuro Utility 应用。
- 在欢迎页面,选择 TensorFlow,并单击继续。
- 在设置页面,输入您的文件相关的以下信息:
- 单击 ... 输入前往 retrained_graph.pb 文件的路径。
- 将输入图像的宽和高输入网络:224
- 输入输入图层名称:input
- 输入输出图层名称:final_result
- 输入已转换文件名:Conv_FFY_DL_Network
- 设置推断类型为分类。
- 设置摄像头存档位置为 Slot0 或 Slot 1。
- 设置训练图像格式为 RGB8。
- 点击继续。
- 在转换屏幕,单击“点击转换”按钮。 完成后,NeuroUtility 的相同文件夹内将会创建一个标题为“InferenceNetwork”的文件。 点击继续。
- (可选)使用验证功能,可以通过正在访问的文件夹中的前 15 个图像对比原始输入模型和已转换 Firefly-DL 推断网络文件之间的精度(仅适用于单色摄像头)。
在验证屏幕,单击“...”并导航到 tensorflow-for-poets2-folder 内训练数据/花卉相片位置。 选择一个花卉文件夹(如玫瑰)。 单击验证开始验证。 - 选择文件保存位置:
闪存 - 上传速度较慢,但摄像头重启后文件会保存。
DDR - 上传速度较快,但摄像头重启后文件会丢失。 - 单击“点击配置和部署”按钮。
示例 2:人物对象检测 (Caffe)
本示例中,我们会演示如何使用 NeuroUtility 将 caffemodel 和 prototext 文件转换为兼容 Firefly-DL 摄像头的推断网络文件。
由于涉及广泛设置,我们提供了单独一篇介绍训练对象检测推断网络的文章,题为《训练 Caffe 对象检测推断网络入门》;仅适用于 Linux。
使用 Neuro Utility 转换图形文件并上传到摄像头
- 启动 Neuro Utility 应用。
- 在欢迎页面,选择 Caffe,并单击继续。
- 在设置页面,输入 deploy.prototxt 和 caffemodel 文件(从 mobilenet- ssd zip 文件下载)的路径。
- 在设置页面,输入您的文件相关的以下信息:
单击 .prototxt 文件旁边的 ...:输入前往 deploy.prototxt 文件(从 mobilenet-ssd zip 文件下载)的路径
单击 .caffemodel 文件旁边的 ... 输入 .caffemodel 文件(从 mobilnet-ssd zip 文件下载)的路径
输入转换文件的名称:InferenceNetwork
设置推断类型为检测
设置摄像头存档位置为 Slot0 或 Slot 1。 - 点击继续。
- 在转换屏幕,单击“点击转换”按钮。完成后,NeuroUtility 的相同文件夹内将会创建一个标题为“InferenceNetwork”的推断网络文件。点击继续。
- 对象检测网络文件目前不支持验证;点击继续。
- 在部署页面,选择文件保存位置:
- 闪存 - 上传速度较慢,但摄像头重启后文件会保存
DDR - 上传速度较快,但摄像头重启后文件会丢失 - 单击“点击配置和部署”按钮。
使用 SpinView 测试深度学习
注意:由于使用 NeuroUtility,第 1 步到第 3 步应已正确配置;遵循示例 1 和 2 操作的用户可以跳到第 4 步。
- 打开 SpinView,选择摄像头,然后切换到推断选项卡。
- 对于示例 1(以及预加载的猫与狗网络文件),请确保网络类型是分类。
对于示例 2,确保网络类型是检测。 - 选择启用推断和激活块模式。
对于示例 1(以及预加载的猫与狗网络文件),请设置块选择器为推断置信度,并确保选定了启用块。设置块选择器为推断置信度,然后再确保选定了启用块。
对于示例 2,请设置块选择器为推断边界框结果,并确保选定了启用块。 - 右键单击流窗口,然后选择启用推断标签。
- 单击配置推断标签。
- 在弹出窗口,单击浏览器导航到标签文本文件并单击应用。
对于示例 1(以及预加载的猫与狗网络文件),请导航到第 1 部分创建的 retrained_labels.txt 文件。
对于示例 2,请导航到 mobilenet-SSD.zip 中已下载的 retrained_labels_detection.txt 文件 - 单击绿色播放按钮开始摄像头采集。
分类 | 物体检测 |