mobilenet是卷积神经网络中的一类,并且是为了解决终端运行的神经网络的一类,其特点是兼容效果和速度,毕竟终端的处理能里有限。今天我们使用自己的数据集对mobilenet进行训练,然后将训练的结果在手机端进行展示。 mobilenet相比其他的网络有以下优点:
它为什么很重要?主要是现在的神经网络训练基本都是在云端进行执行的,然后将运行的结果,就是图片分类或者检测的结果,发送到网页,或者通过网络发送到你的手机。还是有很多弱点的,例如网络不好,传输速率等问题,这也是5G的到重视的其中一个原因。 变化很快。你的手机上的计算能力正在迅速增长,由于SqueezeNet 和 MobileNet网络的出现 ,计算机视觉所需的网络复杂性正在缩小。 下面是本文主要介绍的内容:
皮卡丘 没有皮卡丘 什么是mobilenetmobilenet是google团队专门为手机端进行设计的分类网络,它充分显示的资源有好的特点,即手机端运行速度也是非常快的,当然准确率也比较高 mobilenet和传统的卷及网络不同,传统的卷积网络是直接使用3x3卷积层,然后进行 batch norm 和 ReLU。mobilenet是将3x3卷积进行拆分为一个3x3 depthwise conv 和一个1x1 pointwise conv,这样可以减少很多的计算量,如果想要了解更详细,可以参考论文或者参考我其它文章。 模型减小的最主要的就是准确率了。这里mobilenet的使用网络的大小可以根据硬件资源进行修改。这是mobilenet最好的地方。 Mobilenet表面有两个参数,我们可以对其进行调整,以适应我们的精确问题的资源/精度权衡:宽度乘法器和分辨率乘法器。宽度乘法器允许我们细化网络,而分辨率乘法器改变了图像的输入维数,减少了每一层的内部表示。Google开源了MobileNet架构,并发布了16个ImageNet checkpoints ,每个检查点对应于不同的参数配置。这给我们提供了一个极好的起点来训练我们自己的分类器,这些分类器非常小,速度也非常快。 怎样在mobilenet上训练自己的数据集我们今天做的实验是建立一个图像分类器,分类是不是皮卡丘。我们创建数据,就是从kaggle上下载数据,下载地址文件夹如下:
现在我们可以进行标记我们的图片了,有了tensorflow这会使标记变得比较简单,假设tensorflow已经安装好,然后进行下载下面链接:
然后使用下面命令进行训练我们的图片:
注意:如果你设置:validation_batch_size 为-1;它将验证整个数据集 。 --tfhub_module 需要从https://tfhub.dev/google/imagenet/inception_v3/feature_vector/3下载需要翻墙。所以这里有下载好的,只需要将下载好的文件放到自己文件夹下,然后将路径设为你的路径即可
训练如图 从GraphDef到TFLite的模型转换Toco转换器用于将TensorFlow GraphDef文件或保存模型转换为TFLite FlatBuffer或图形可视化 。( TOCO是tensorflow的优化转换器 ) 我们需要通过命令行参数传递数据。在转换模型时,可以传递一些命令行参数:
现在我们可以使用Toco工具将TensorFlow模型转换为TensorFlow Lite模型:
类似地,我们可以在类似的应用程序中使用MobileNet模型; MobileNet版本的比较在上述两种模型中,使用了不同版本的MobileNet模型。MobileNetV 2主要是更新版本的V1,使得它在性能上更加高效和强大。 Lower is better MACS是一种多重累加运算,它测量对一幅224×224 RGB图像进行推理所需的计算量。仅从Mac的数量来看,V2的速度几乎是V1的两倍。然而,这不仅仅是关于计算的数量。在移动设备上,内存访问要比计算慢得多。V2只有80%的参数计数,因此V1比V1更好。 从结果上看,我们可以假设V2的速度几乎是V1模型的两倍。在移动设备上,当内存访问受限时,V2的计算能力非常好。 就准确性而言: 在这里,MobileNetV 2比V1稍微好一点, 不是特别明显。 |