>

TensorFlow on Android:操练模型

- 编辑:乐百家599手机首页 -

TensorFlow on Android:操练模型

下风姿浪漫篇课程内容

运维功效:自 TensorFlow 第贰回揭露以来,开拓团队费用了汪洋的时光和努力 来改善TensorFlow 的大多数的兑今世码。 随着更加多的开垦人士努力,TensorFlow 的效用不断增加。

哪些是实体格检查测(Object Detection)

实体格检查测也叫目的检查评定或对象质量评定。物体格检查测是Computer视觉的三个支行,平时指的是在后生可畏幅图像司令员物体框出来,进而识别该物体是怎么着。物体格检查测是分类和固定的归咎。

实体检查实验的例子

在上述图像中,大家能够开采经过物体格检查测,人工智能的顺序框出了图中的人微风筝,而且列出了这么些物体的门类称号和可信赖度。
通过物体格检查测,大家得以让AI认知世界。能够完成照片的飞跃分类,可以使活动驾车小车认知路上遇上的人、车和道路,能够辨别步向银行的最首要客商等。物体格检查测为人造智能的各类应用提供了十二万分的或是。

机器之心广播发表加入:杜伟、一鸣Coursera 又有 TensorFlow 专门项目课程了,那回的重大内容放在了 TensorFlow.js、TensorFlow Lite 等 web 或移动端的使用。我们都很熟悉吴恩达了。他开设的 Coursera 机器学习课程可以说是广大初读书人的「白月光」。方今,他创始的 deeplearning.ai 在 Coursera 上此外开设了一门学科,主要介绍使用 Tensorflow.js、TensorFlow Lite、TensorFlow Hub 等工具进行数据分析的措施。该专属课程已于昨天开放注册。吴恩达对学科进行了转推。课程地址: 是深度学习中最有名的框架之风姿洒脱,绝大好些个人都已经调整了大旨的使用方法。假使要改良,接收本学科无疑是一个好措施。据介绍,这门课程可以援救学习者明白超多行使场景,并发现练习模型中的高效方法。该专属课程总共分为七个部分,主旨在于帮忙学习者明白哪些让机器学习模型从实验阶段走向实际行使。首先,你能够驾驭到在浏览器和移动道具中练习模型。同期,你能够学习怎么样仅用几行代码应用内置数据集、完结数据分割和拍卖种种非构造化数据的劳作。最后,你还能够掌握超多用出席景,并打听 TensorFlow Serving、TensorFlow Hub、TensorBoard 等。教授整个专门项目课程的疏解由谷歌(Google卡塔尔大脑(Google Brain)的 Laurence 莫隆ey 来产生的。Laurence Moroney 是Google的 AI Advocate,致力于接纳 TensorFlow 来支付并创设人工智能相关的施用。他曾宣布了相当多编制程序书籍,今后在摄像培养锻练领域与 deeplearning.ai 和 Coursera 张开协作。近些日子,那项课程分为多少个专属课程,在那之中第后生可畏、二专门项目已放出了现实的教学大纲和剧情,第三、四专门项目课程预计异常的快机缘更新了。具体的教程纲要之类:专属课程生机勃勃:Browser-based Models with TensorFlow.js那风流倜傥学科学和教育师怎样使用 TensorFlow.js 在其余浏览器中练习和平运动作机器学习模型。你会学习在浏览器中管理数量的法子,并最后创立三个从摄像头中张开目的记别和归类的微型机视觉项目。那门课分为周边,周周安插如下:了解TensorFlow.js在率先周课中,你能够学习如何在浏览器中练习模型,并开展推理。那些中也满含在像 Node.js 后端中接纳;浏览器中的图像识别第二周关怀计算机视觉难题,富含利用 JavaScript 进行图像分类练习。课程截至时,你能够学会搭建一个网站,并拓宽手写体识别;Json 格式的模子第三周的学科会关怀使用 TensorFlow(Python 版)搭建立模型型,然后将其转移为 Json 格式,让浏览器选取。要学习的模型包括风险内容分类——使用 NLP 文本分类模型过滤有毒文本,甚至利用 Mobilenet 来检验图像;预练习模型的迁徙学习那门课的结尾七日,你能够学到在浏览器汇总创设机器学习使用,并运用迁移学习。那中间囊括接收TensorFlow.js 创设网址,使用互联网摄像头获取数据、使用预练习的 mobilenet 检查实验石头剪刀布的手势。专门项目课程二:Device-based Models with TensorFlow Lite在这里后生可畏科目中,你能够学到在活动接受中运作深度学习模型,包涵在低功耗设备上策动模型,在安卓或 iOS 端运营模型等。最后你能够深究如何在嵌入式设备中运用 TensorFlow,如沙窝窝派和微调控器等。那门课也分为相近完毕,每一周的就学布置如下:了解TensorFlow Lite第三31日主要是介绍 TensorFlow Lite、它的职业方法甚至首要的读书指标,比如怎么着将模型从 TensorFlow 调换成TensorFlow Lite 格式、通晓用来测量检验这个模型的 TensorFlow Lite 解释器等;在安卓 应用软件 上运维 TensorFlow 模型第二周的核心是在安卓 APP上运营 TensorFlow 模型。使用 TensorFlow Lite 能够在安卓端运维模型,从而能够将机械学习(ML)带到这几个设施项目中;在 IOS 端创建 TensorFlow 模型第三周教师在 IOS 端成立和平运动作 TensorFlow 模型。学习者必要领会一些关于 IOS 端 斯维夫特的编制程序知识,即便不持有有关编制程序知识,你也足以学习成立种种 ML 应用并在 IOS 端运转;设备上的 TensorFlow Lite末了七日的主旨是怎么在三月泡派等嵌入式系统上运行 TensorFlow 模型。一言以蔽之,通过此专属课程的就学,你将得以学学到 TensorFlow、高端配置、指标检测等专门项目本领,相信也将推动你越来越快、更确切地付出和配备跨任何设施或平台的机械学习模型。机器之心「SOTA模型」:22大领域、1叁十三个职分,机器学习 SOTA 商量斩尽杀绝。点击阅读原版的书文,马上访谈。]article_adlist-->

通过上一门科指标上学,相信给大家展开了生机勃勃扇新世界的大门。好似从前支付 Web 应用的时候,可以从开源社区找到比非常多轱辘,而无需再行开垦,在机械学习的社会风气里,也得以从开源社区找到超级多框架、算法、模型等工具,大家也学习了去何地找这一个工具、怎样学习使用这个工具。

而外下面列举的框架外还也会有广大就学框架,这里就不后生可畏一列举,本课程的要紧是选取个中二个框架,然后学习怎么样利用,就好像第风流罗曼蒂克节课讲的那么,大家按着先学会使用,再通晓个中原理的路线去读书。

以人认知世界为例,当大家的眼睛捕捉到现实世界的图像的时候,图像会通过视觉神经传输到大家大脑的视觉中枢,产生视觉。单反相机也是均等的道理,现实世界反射的光进入到相机的感光晶片,然后感光微电路将数字信号传输到相机的拍卖微电路中形成图像。

机器学习/深度学习的生龙活虎部分最首要概念和术语,本门课程面向没有任何机器学习根底的读者,所以会用尽量容易和间接的语言来陈说。TensorFlow-GPU 的装置和条件安插。计划演习多少和 data-labeling。可视化学习进程。导出学习结果。

在本课程中选取 TensorFlow 作为开展机器学习的底工框架,至于为何选用这一个框架,这里做了叁个总计:

乐百家前段,改进程序

归来大家的Jupyter Notebook中,点击左上角的菜单File->Download as->Python(.py卡塔尔(قطر‎将笔记本随地为python的代码。

导出为Python的程序

改革厚的的Python代码如下

import numpy as np
import os
import six.moves.urllib as urllib
import sys
import tarfile
import tensorflow as tf
import zipfile

from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image


import cv2

cap=cv2.VideoCapture(0)

if tf.__version__ < '1.4.0':
  raise ImportError('Please upgrade your tensorflow installation to v1.4.* or later!')


# ## Env setup

# In[2]:


# This is needed to display the images.
#get_ipython().magic(u'matplotlib inline')

# This is needed since the notebook is stored in the object_detection folder.
sys.path.append("..")


# ## Object detection imports
# Here are the imports from the object detection module.

# In[3]:


from utils import label_map_util

from utils import visualization_utils as vis_util


# # Model preparation 

# ## Variables
# 
# Any model exported using the `export_inference_graph.py` tool can be loaded here simply by changing `PATH_TO_CKPT` to point to a new .pb file.  
# 
# By default we use an "SSD with Mobilenet" model here. See the [detection model zoo](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md) for a list of other models that can be run out-of-the-box with varying speeds and accuracies.

# In[4]:


# What model to download.
MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17'
MODEL_FILE = MODEL_NAME   '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'

# Path to frozen detection graph. This is the actual model that is used for the object detection.
PATH_TO_CKPT = MODEL_NAME   '/frozen_inference_graph.pb'

# List of the strings that is used to add correct label for each box.
PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')

NUM_CLASSES = 90


# ## Download Model

# In[5]:


opener = urllib.request.URLopener()
opener.retrieve(DOWNLOAD_BASE   MODEL_FILE, MODEL_FILE)
tar_file = tarfile.open(MODEL_FILE)
for file in tar_file.getmembers():
  file_name = os.path.basename(file.name)
  if 'frozen_inference_graph.pb' in file_name:
    tar_file.extract(file, os.getcwd())


# ## Load a (frozen) Tensorflow model into memory.

# In[6]:


detection_graph = tf.Graph()
with detection_graph.as_default():
  od_graph_def = tf.GraphDef()
  with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
    serialized_graph = fid.read()
    od_graph_def.ParseFromString(serialized_graph)
    tf.import_graph_def(od_graph_def, name='')

# In[7]:


label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
category_index = label_map_util.create_category_index(categories)


# ## Helper code

# In[8]:


def load_image_into_numpy_array(image):
  (im_width, im_height) = image.size
  return np.array(image.getdata()).reshape(
      (im_height, im_width, 3)).astype(np.uint8)


# # Detection

PATH_TO_TEST_IMAGES_DIR = 'test_images'
TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(1, 3) ]

# Size, in inches, of the output images.
IMAGE_SIZE = (12, 8)

# In[10]:


with detection_graph.as_default():
  with tf.Session(graph=detection_graph) as sess:
    # Definite input and output Tensors for detection_graph
    image_tensor = detection_graph.get_tensor_by_name('image_tensor:0')
    # Each box represents a part of the image where a particular object was detected.
    detection_boxes = detection_graph.get_tensor_by_name('detection_boxes:0')
    # Each score represent how level of confidence for each of the objects.
    # Score is shown on the result image, together with the class label.
    detection_scores = detection_graph.get_tensor_by_name('detection_scores:0')
    detection_classes = detection_graph.get_tensor_by_name('detection_classes:0')
    num_detections = detection_graph.get_tensor_by_name('num_detections:0')
    while True:
      ret, image_np=cap.read()
      # Expand dimensions since the model expects images to have shape: [1, None, None, 3]
      image_np_expanded = np.expand_dims(image_np, axis=0)
      # Actual detection.
      (boxes, scores, classes, num) = sess.run(
          [detection_boxes, detection_scores, detection_classes, num_detections],
          feed_dict={image_tensor: image_np_expanded})
      # Visualization of the results of a detection.
      vis_util.visualize_boxes_and_labels_on_image_array(
          image_np,
          np.squeeze(boxes),
          np.squeeze(classes).astype(np.int32),
          np.squeeze(scores),
          category_index,
          use_normalized_coordinates=True,
          line_thickness=8)
      cv2.imshow('object detection',cv2.resize(image_np,(800,600)))
      if cv2.waitKey(25) & 0xFF ==ord('q'):
          cv2.destroyAllWindows()
          break

在上述代码中,大家插足了python-opencv来从计算机的录像头拿走图像,然后传入原程序中张开始拍片卖。并在最后接受OpenCV的imshow函数来输出。整个程序施行的职能如下:

运营效果

支配台出口:

root@jack-QTJ5:~/Dev/tensorflow/models/research/object_detection# python object_detection_CONVERTED.py 
2018-01-12 16:09:56.439397: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-01-12 16:09:56.672274: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-01-12 16:09:56.672731: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Found device 0 with properties: 
name: GeForce GTX 860M major: 5 minor: 0 memoryClockRate(GHz): 1.0195
pciBusID: 0000:01:00.0
totalMemory: 1.96GiB freeMemory: 1.74GiB
2018-01-12 16:09:56.672748: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 860M, pci bus id: 0000:01:00.0, compute capability: 5.0)

那时候我们的次第已经伊始施行了,而且通过录制头拿走到了图像,实时标出了常用物人体模型型内的物体名称和职位,其运作速度直达了实时的专门的学业。在TensorFlow的Object Detection API的基本功上,大家得以给的智能小车、智能家居和无人驾驶飞机等丰硕种种不敢相信 无法相信的职能。
在下生龙活虎节中,大家将会起来读书怎样训练本人的模型,练习我们想要识其他实体的模子。

第01课:锻炼贰个无出其右的模型

Build Tool 26.02

脑子的神经互连网

透过本学科的就学,我们将补齐机器学习中有关操练部分的知识,这样就能够定制那几个工具来缓慢解决真正的主题材料了,当成功了这一步以往,再去看深度学习的算法推导恐怕TensorFlow 的示范代码,应该会轻易不菲,因为知其然,再知其所以然,那应当是三个较优的读书进程。回看一下在念书 Web 编程、iOS 编制程序等的时候,是否也是那样二个进度?

Caffe: 卷积神经网络框架,静心于卷积神经网络和图像管理,是用 C 语言写成的。

不过仅仅变成了视觉而掌握不了视觉,那样就和植物没什么分裂。图像经过咱们大脑的拍卖,让我们认知了世道上的种种植花朵花草草,认知了大家的宠物猫和各类实体。通过长日子的活着,人类的大脑中的神经网络产生了各样奇怪的回路,使大家得以认知世界上的各类实体。
那就是说,怎样技艺令人工智能程序认知世界吧?

在《TensorFlow on Android:物体识别》中大家早已学会了哪些选拔两个优先锻炼好的 pre-trained model 来辨别图片中的三种实体,那很好、也太帅,纵然未有其他机器学习功底也得以做出二个一定专门的学业的选择了,只怕某个读者已经把静态图片识别移植到了摄像监察和控制诉方面,初叶监察和控制大门口的人工产后出血了吧!

Theano: 是一个用 Python编写的特别灵活的Python机器学习库,用它定义复杂的模子特别轻松,由此它在斟酌中最为流行。

TensorFlow的Object Detection API

TensorFlow的物体检查实验API提供了可相信地机器学习模型,该模型可以稳固和甄别单张图片中的三种物体。物体的归类和定位在微电脑视觉中央直属机关接都以二个问题,更是对机械学习的叁个挑衅。但是,Google的人工智能框架TensorFlow能够做到高效的实时的实体分类与定点。
在上风姿洒脱节中,大家在TensorFlow的Github页面下载了连带的模子(Models)。

https://github.com/tensorflow/models/

TensorFlow的Models仓库中有种种练习好的模子。
里面,Official Models为合法提供的模子,官方模型是对TensorFlow高层API的贯彻,由法定协会对其开展爱抚,具有越来越好的协调。
说不上,Research Models为种种人工智能读书人们宣布的故事集中涉及的种种模型,由研讨者对其进展发表和保险。
而小编辈所急需的Object Detection则在Research Models中。
如果你在继续进行下去的时候提示缺少某些软件,请使用apt-get install 命令或pip命令进行安装
进去Object Detection的目录,并在当前目录中Jupyter Notebook。

cd <Models Path>/research/object_detection
jupyter notebook

那个时候会张开多个你当前目录上面包车型大巴Web页面,在当前工作目录下找到object_detection_tutorial.ipynb,点击打开,会现身如下的分界面。

实体格检查测的Notebook分界面

关于Jupyter Notebook:
Jupyter Notebook(前身为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook可以编写漂亮的交互式文档,在文档中,我们可以修改代码,运行代码,观察代码输出的结果等。

点击最最上端的Cell菜单,点击Run All,并潜心等待结果。在运作进程中,大家把页面拉到最下方,不一会便会冒出物体格检查测程序推行的结果。

实体格检查测程序运维结果

很好,该程序成功地认出了图片中的八只狗,而且框出了狗所在的任务和标记了准确度。不过,我们并不想单独识别教程图片中的黄狗,大家的对象是经过摄像头令人工智能程序认识大家身边的东西。

团结提示:阅读本随笔提议先读书《TensorFlow on Android:物体识别》

Android Studio 3

小编介绍

支撑:TensorFlow 由Google提供扶助,Google投入了大量精力开发TensorFlow,它仰望 TensorFlow 成为机器学习研讨职员和开垦职员的通用语言。别的,谷歌(GoogleState of Qatar在友好的常常专业中也运用 TensorFlow,何况不唯有对其提供支撑,在 TensorFlow 相近产生了 二个强盛的社区。谷歌(Google卡塔尔国早就在 TensorFlow 上发表了四个优先操练好的机器学习模型,他们得以私自使用。

课程介绍

本课程使用 Android Studio 实行付出,相关配置如下:

接下去我们先读书某些机器学习的学问和术语,在前面包车型客车实操中会用的到这几个知识和术语。

先说一下本学科中模型的定义,三个模型由两有个别组成,第风度翩翩有些是用以转移也许说练习模型的代码,富含哪些提取和处理输入数据的特征,怎么着营造神经网络(如神经互联网有几层)等;第二部分就是通过那几个代码加上海南大学学量数量练习出来的模子二进制文件,叫做 Pre-trained model(那有的不是每一个模型都包括)。在本课程中,因为有的时候不涉及报到并且接受集操练自身的模子(下多个雨后冬笋课程会特意介绍如何练习自身的模型),所以只需求找到相应的模型的 Pre-trained model 就能够了。

本文由乐百家前段发布,转载请注明来源:TensorFlow on Android:操练模型