前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tensorflow Lite之图片识别研究

Tensorflow Lite之图片识别研究

原创
作者头像
brzhang
修改2019-06-05 17:55:04
2.7K1
修改2019-06-05 17:55:04
举报
文章被收录于专栏:玩转全栈玩转全栈
TensorFlow lite的介绍

有关TensorFlow的介绍建议看官网,如果懒的话可以直接看我上篇文章。官方告诉我们,入门TensorFlow lite的最好姿势是学习他的demo,这里从第一个例子,图片识别开始。

环境搭建,建议在Android上尝试,因为ios安装真机需要证书或者越狱
  1. 安装Android studio 这里假设你已经安装好了Android studio了,官方建议版本3.2以上,这里如果不是最好更新一下咯。
  2. git clone https://github.com/tensorflow/examples.git
  3. 图片识别的Android工程源码放在examples/lite/examples这里了,使用Android studio打开已存在的项目。
跑起来之后,直接接可以识别了
已经有了结果了,当然是要纠结一下它是怎么run起来的了。

图像识别,很显然需要用到相机,这里,对于Android平台,demo中处理了一下权限的问题,还有cameracamera2的一些api的兼容问题,这些过程都不是很重要,重要的是,我们拿到图片流之后的处理:我们随便拿一个,比如camera 方式的回调

这里拿到图片之后,主要进行了一个convertYUV420SPToARGB8888的转换,因为camera拿到的字节是YUV格式的,而后面模型处理算法是RGB方式,因此需要转换一下。

好,接着进入processImage环节

同样,代码没有多么难以理解,拿到刚刚捕获的RGB字节,将他写入rgbFrameBitmap中,然后将其转换一下,放到一个新的croppedBitmap中,然后直接就使用分类器来识别图片了,看起来就一句代码实现了这个图像识别。

那么这个classfier是在哪里创建的呢?

创建的代码在此处,这里传入的参数有model,设备,线程数,对应于一下ui界面这里的设置。

那么,分类器具体是如何构造的呢?

构造一份分类器,需要用到模型文件,需要制定是使用CPU,还是NNAPI(Android Neural Networks API (NNAPI) 是一个 Android C API,专门为在移动设备上对机器学习运行计算密集型运算而设计),还是GPU,然后需要把要识别的结果标签加载到内存中,使用不同的模型,构造器的具体实现类还不一样。

具体的分类器的实现类有两个,比如我们就看ClassifierQuantizedMobileNet这个分类器的实现。

分类器构造好之后,就该了解具体是如何做识别的了

说到底这里也是一句代码的调用,然后使用优先队列来做了一个排序,个人感觉有点多次一句,直接Arrays.sort()不就搞定了,还需要用什么优先队列先塞一下,在取了在塞,浪费。

最后跟一下runInference这个方法,是一个抽象方法,前面说了,根据模型不同,由具体分类器自己实现,我们姑且看ClassifierQuantizedMobileNet这个,以为是价值一个亿的代码,结果就这么简简单单的一行而已,不过看了下label列表,大概有1000行,估摸着这样排序会快一些,相当于做了一个堆排序。

也就是说tflite会根据此时的imgData来生成一个labelProbArray,然后具体哪个label的可能性如何就可以直接取了。

总结

整个过程就分析完了,实际上有一个可用的模型的化,就很好办了,客户端写下套路代码就ok,应用这个模型就可以给出推断结果,那么,毫无疑问,模型是如何训练呢?欲知后事如何,请听下文分解。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TensorFlow lite的介绍
    • 环境搭建,建议在Android上尝试,因为ios安装真机需要证书或者越狱
      • 跑起来之后,直接接可以识别了
        • 已经有了结果了,当然是要纠结一下它是怎么run起来的了。
          • 好,接着进入processImage环节
            • 那么这个classfier是在哪里创建的呢?
              • 那么,分类器具体是如何构造的呢?
                • 分类器构造好之后,就该了解具体是如何做识别的了
                  • 总结
                  相关产品与服务
                  图像识别
                  腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档