如上一节课所说,随着机器学习的发展,目前已经出现很多不错的学习框架,这里我们做个对比:
除了上面列举的框架外还有不少学习框架,这里就不一一列举,本课程的重点是选择其中一个框架,然后学习如何使用,就像第一节课讲的那样,我们按着先学会使用,再理解内部原理的路线去学习。
在本课程中选用 TensorFlow 作为进行机器学习的基础框架,至于为什么选择这个框架,这里做了一个总结:
框架选好后,接下来我们就要对模型进行选择了。可以在 TensorFlow Models 找到很多已经设计好的模型:
先说一下本课程中模型的定义,一个模型由两部分组成,第一部分是用于生成或者说训练模型的代码,包含如何提取和处理输入数据的特征,如何构建神经网络(如神经网络有几层)等;第二部分就是通过这个代码加上大量数据训练出来的模型二进制文件,叫做 Pre-trained model(这部分不是每一个模型都包含)。在本课程中,因为暂时不涉及到训练自己的模型(下一个系列课程会专门介绍如何训练自己的模型),所以只需要找到相应的模型的 Pre-trained model 就可以了。
使用 Tensorflow Object Detection API 来进行静态图片的物体识别,可以在 Model Zoo 里面找到我们需要的 Pre-trained model ,一共有 5 个。
第一列为 Pre-trained model 的名字,第二列为模型的识别速度,第三列为衡量识别效果的一个指标,越高越好,第三列为输出形式,都是输出识别物体的 Box(物体在图片中的位置,矩形框)。
接下来我们选择第一个 ssd_mobilenet_v1_coco 来完成功能,它的模型二进制文件最小,识别速度最快,识别率是最低的,但是对于我们的功能是足够了。请先下载下来备用。
大家都知道现在IT领域最火的两个技术,一个是人工智能,另外一个是物联网(IOT)。Android是大部分物联网设备未来的内在系统,而TensorFlow又是业内标准的训练框架,这两个系统的整合将会产生巨大的化学反应。本系列课程我们选择安卓平台进行手把手的学习。
为了能在 Android 上面加载准备好的 Model 二进制文件并 Inference(推理),还需要 TensorFlow 的 Android 接口库,在 TensorFlow Android Inference Interface 可以找到这个接口库的全部代码,这个接口库的二进制包是一个 Android 的 AAR 文件。一般有 3 种方法来获取这个 AAR 文件:
本课程使用 Android Studio 进行开发,相关配置如下:
在本课时中,我们找到可以解决问题的模型并下载了相应的 Pre-trained model; 还下载了可以在 Android 上面运行 TensorFlow 并 Inference 的 TensorFlow Android 接口;最后还准备好了 Android 的开发环境。