训练自己的Android TensorFlow神经网络(译文)
By S.F.
本文链接 https://www.kyfws.com/news/training-your-own-tensorflow-neural-network-for-an/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 4 分钟阅读 - 1972 个词 阅读量 0训练自己的Android TensorFlow神经网络(译文)
原文地址:https://www.codeproject.com/Articles/5279608/Training-Your-Own-TensorFlow-Neural-Network-For-An
原文作者:Joel Ivory Johnson
译文由本站翻译
前言
在本文中,我们将从一个程序生成输出,该程序将提供一个TensorFlow冻结图,准备好使用或转换为TensorFlow Lite. 在这里,我们看一下如何通过三个命令来下载和构建Darknet.我们还将讨论如何收集各种类别的对象的图像以进行训练和测试,以及如何将图像标记和划分为两个列表. 这是在Android上使用TensorFlow的系列文章的最后一部分.该系列的前几部分介绍了如何设置开发环境,查找经过预先训练的模型,使其适合在Android应用程序中使用以及创建使用该模型的应用程序.前面的部分使用YOLO实现来创建可识别80类对象的应用程序. 您可以训练自己的YOLO网络以识别您自己选择的项目分类. YOLO最初是由Joseph Redmond和Farhadi Ali使用Darknet实现的. Darknet是用于制作神经网络的基于C的开源框架.如果您的机器已经安装了C编译器并安装了make命令,则可以下载Darknet并使用以下三个命令构建它们:
git clone https://github.com/pjreddie/darknet
cd darknet
make
确定您的网络要识别的图像类别.列出文本文件中的类的列表,以使它们按定义的顺序排列.每个班级都应该有自己的路线.该文件将用于培训.拥有一个有序列表也很重要,因为图像类将由该列表内类的从零开始的索引来表示.将该文件命名为classes.txt并将其放置在Darknet数据文件夹中. 接下来,收集各个类别中的对象图像以进行训练和测试.这可能是最具挑战性的步骤之一,因为每个类别需要数百张图像.对于您要识别的项目,您需要从不同角度在各种情况下的图片.每个图像文件也必须标记.通过创建与该图像具有相同名称(但扩展名为txt)的文本文件来标记图像,该文本文件包含训练图像中每个样本对象的一行.每行有五个元素,中间用空格隔开.
<object-class> <x> <y> <w> <h>
下面是这样一条线的示例.对于此行,一个被归类为第5类的对象位于图像中10,12的x,y位置,并且宽45像素,高22像素.由于使用了从零开始的索引,因此这里的数字5代表您先前创建的classes.txt文件中第六行的项目.
5 10 12 45 22
对于带有标签的图像,您将需要将图像分为两个列表.这两个列表的图像应以80%/20%到90%/10%的比例进行划分.列表中的较大者将用于训练网络,而两个列表中的较小者将用于测试网络.每个列表应单独包含图像文件的绝对路径.将文件命名为test.txt和train.txt. 这些文件现在将成为配置集的一部分.在数据文件夹中,创建一个名为training_config.data的文件.该文件将包含有关网络将检测到的类数,包含训练数据文件列表的文件的路径,包含测试文件列表的文件的路径以及间歇性放置的文件夹名称的信息训练期间的结果.
classes= 20
train = /dev/darknet/data/train.txt
valid = /dev/darknet/data/test.txt
names = data/classes.txt
backup = backup
有了该文件之后,您就可以开始训练了:
./darknet detector train cfg/training_config.data cfg/yolov3-voc.cfg
培训是一个耗时的过程.培训开始后,可能是离开计算机并做其他事情的好时机.如果在便携式计算机上运行培训,请确保已将其连接到电源.训练需要大量计算,并且计算机可能会在一段时间内处于较高功率状态之一. 培训完成后,您将获得DarkNet.weights文件.有几种开源实用程序可将该文件转换为TensorFlow 1或TensorFlow 2的TensorFlow冻结图.我建议使用与TensorFlow兼容的实用程序,名为Yolov4-tflite,这是一个Python脚本实用程序,您可以从以下URL克隆该实用程序. : https://github.com/hunglc007/tensorflow-yolov4-tflite 要转换权重文件,该实用程序接受文件的路径:
python save_model.py --weights ../darknet/yolov3.weights -output my-yolov --input_size 416 --model yolov3
程序的输出提供了一个TensorFlow冻结图,可以立即使用或转换为TensorFlow Lite.
结论
这是在Android上使用TensorFlite Lite的六部分系列的最后一部分.我专注于使用现有模型,并将注意力转向了视觉处理.这不是可以使用TensorFlow的唯一域.如果您具有有关如何形成输入或解释输出的信息,则本系列中介绍的信息还可以用于导入和使用TensorFlow模型用于非可视算法. 如果您想更深入地研究TensorFlow并开始尝试训练其他模型,可以使用许多不同的框架来入门. Keras是TensorFlow最受欢迎的工具之一.您可以在Keras的[CodeCode]上找到其他文章(https://www.codeproject.com/search.aspx?q=keras).
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
Python Android AI neural tensorflow 新闻 翻译