通过SegNet 来实现图片的分割

TensorRT下载地址:https://developer.nvidia.com/nvidia-tensorrt-download 
TesnsoRT介绍文档:https://devblogs.nvidia.com/tensorrt-3-faster-tensorflow-inference/ 
TensorRT开发者指南:http://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html 
TensorRT样例代码:http://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#samples

本教程重点提到的深度学习的功能是图像的分割。图像分割的最基本原理也是图像识别,但是它是基于像素级别的图像识别而不是对于整张图片的识别。它是通过一个对已经训练好的ImageNet识别模型的卷积化来实现的,他将其转化成一个能将每一个像素都标记的全卷积分割模型。分割对于环境感知和避碰非常有用,它可以对每个场景中的许多不同的潜在对象进行密集的每像素分类,包括场景前景和背景。

segNet 实例可以接受一个2维图像的输入,并且输出一个每一个像素都分类过得图像。每个像素都对应一个识别的目标类别。

注意:您可以查看semantic segmentation来获取更多地关于图像分割的背景知识。

Downloading Aerial Drone Dataset

作为图像分割的一个例子,我们将使用一个将地面与天空分开的空中无人驾驶飞机数据集。该数据集在第一人称视角(FPV)中模拟无人机的位置,并训练一个网络,作为一个自动驾驶仪,引导其感知的地形。

要下载和解压缩数据集,请从运行DIGITS服务器的主机PC上运行以下命令:

  1. $ wget --no-check-certificate https://nvidia.box.com/shared/static/ft9cc5yjvrbhkh07wcivu5ji9zola6i1.gz -O NVIDIA-Aerial-Drone-Dataset.tar.gz

  2. HTTP request sent, awaiting response... 200 OK

  3. Length: 7140413391 (6.6G) [application/octet-stream]

  4. Saving to: ‘NVIDIA-Aerial-Drone-Dataset.tar.gz’

  5. NVIDIA-Aerial-Drone-Datase 100%[======================================>] 6.65G 3.33MB/s in 44m 44s

  6. 2017-04-17 14:11:54 (2.54 MB/s) - ‘NVIDIA-Aerial-Drone-Dataset.tar.gz’ saved [7140413391/7140413391]

  7. $ tar -xzvf NVIDIA-Aerial-Drone-Dataset.tar.gz

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

数据集包括从无人机平台飞行中捕获的剪辑,但是我们将在本教程中关注的片段是FPV/SFWA。接下来,我们会为之后的训练模型在DIGITS上创建一个数据集。

Importing the Aerial Dataset into DIGITS

首先,用浏览器连接到你的DIGITS服务器,然后在右上角的New Dataset中选择Segmentation:

在数据创建界面,按照下面的内容设置您的变量

• Feature image folder: NVIDIA-Aerial-Drone-Dataset/FPV/SFWA/720p/images 
• Label image folder: NVIDIA-Aerial-Drone-Dataset/FPV/SFWA/720p/labels 
• set % for validation to 1% 
• Class labels: NVIDIA-Aerial-Drone-Dataset/FPV/SFWA/fpv-labels.txt 
• Color map: From text file 
• Feature Encoding: None 
• Label Encoding: None

给您的数据库起个名字,然后点击Create按钮。接下来我们就要创建新的模型然后训练了。

Generating Pretrained FCN-Alexnet

全卷积网络(Fully Convolutional Network,FCN)AlexNet是我们接下来要利用DIGITS和TensorRT使用的网络模型。查看Parallel ForAll 您可以了解到更多关于卷积的细节。DIGITS5当中的新的特性就是支持图像分割的数据创建和模型训练。DIGITS中包含了一个脚本,它将Alexnet模型转换为FCN-Alexnet。然后将该基础模型用作在自定义数据集上训练新的FCN-Alexnet分割模型的预先训练的基础

在DIGITS/examples/semantic-segmentation文件夹下面,执行net_surgery 来获得预训练的FCN-Alexnet模型:

  1. $ cd DIGITS/examples/semantic-segmentation

  2. $ ./net_surgery.py

  3. Downloading files (this might take a few minutes)...

  4. Downloading https://raw.githubusercontent.com/BVLC/caffe/rc3/models/bvlc_alexnet/deploy.prototxt...

  5. Downloading http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel...

  6. Loading Alexnet model...

  7. ...

  8. Saving FCN-Alexnet model to fcn_alexnet.caffemodel

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Training FCN-Alexnet with DIGITS

当之前的数据集导入成功后,返回到DIGITS的主页。选择Models里面右上角的New Model下面的Segmentation:

When the previous data import job is complete, return to the DIGITS home screen. Select the Models tab and choose to create a new Segmentation Model from the drop-down:

在模型创建的页面,选择之前我们创建好的数据集。

• Subtract Mean 设置为None 
• Base learning Rate 设置为0.0001 
• 选择Custom Network,并选用Caffe平台 
• 复制FCN-Alexnet prototxt中的内容到文本框内。 
• 最后设置net_surgery 生成的预训练的模型DIGITS/examples/semantic-segmentation/fcn_alexnet.caffemodel

最后,给你训练的模型起一个名字并点击下面的Create按钮。在5个epochs之后,准确率的曲线开始慢慢上升,你的模型也就可以用了(当然,准确率越高,最后的效果越好):

这是,我们就可以测试一下我们的模型了。

Testing Inference Model in DIGITS

在把训练好的模型传到Jetson上前,我们可以再DIGITS里面测试一下,就像之前的一样,在Select Visualization Method下面选择Image Segmentation。然后在下面的Image Path里面输入你想要测试的图片的路径(在本例中我们用的是example /NVIDIA-Aerial-Drone-Dataset/FPV/SFWA/720p/images/0428.png):

然后单击Test one 你就会看到下面的效果

接下来,下载并解压训练好的模型到Jetson

FCN-Alexnet Patches for TensorRT

在FCN-Alexnet里面存在一些不太重要的网络层,而且TensorRT不支持它们,所以我们需要将这些网络层从deploy.prototxt

在deploy.prototxt 的末尾处,删除deconv 和 crop层:

  1. layer {

  2. name: "upscore"

  3. type: "Deconvolution"

  4. bottom: "score_fr"

  5. top: "upscore"

  6. param {

  7. lr_mult: 0.0

  8. }

  9. convolution_param {

  10. num_output: 21

  11. bias_term: false

  12. kernel_size: 63

  13. group: 21

  14. stride: 32

  15. weight_filler {

  16. type: "bilinear"

  17. }

  18. }

  19. }

  20. layer {

  21. name: "score"

  22. type: "Crop"

  23. bottom: "upscore"

  24. bottom: "data"

  25. top: "score"

  26. crop_param {

  27. axis: 2

  28. offset: 18

  29. }

  30. }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

还有,在deploy.prototxt的第24行将pad: 100 改成pad: 0。最后从航空数据集中复制fpv-labels.txt 和fpv-deploy-colors.txt 到你的Jetson中模型的文件夹。你的FCN-Alexnet模型就在TensorRT中配置完成了。这样,我们就可以在Jetson中运行一下试试了。

Running Segmentation Models on Jetson

您可以运行下面的命令行程序来测试一下您的分割网络模型。

首先,为了方便起见,您最好把模型路径设置到$NET 变量中:

  1. $ NET=20170421-122956-f7c0_epoch_5.0

  2. $ ./segnet-console drone_0428.png output_0428.png \

  3. --prototxt=$NET/deploy.prototxt \

  4. --model=$NET/snapshot_iter_22610.caffemodel \

  5. --labels=$NET/fpv-labels.txt \

  6. --colors=$NET/fpv-deploy-colors.txt \

  7. --input_blob=data \

  8. --output_blob=score_fr

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这些命令将会运行repo中下载好的我们训练好的模型。

除了本教程提到的数据集之外,您还可以利用其他的数据集来训练Cityscapes, SYNTHIA, 和 Pascal-VOC.

使用TensorRT和Jetson TX1 / TX2部署深度学习推理网络和深度视觉原语的指南 学习五相关推荐

  1. 使用TensorRT和Jetson TX1 / TX2部署深度学习推理网络和深度视觉原语的指南 学习二

    通过 digest  来做分类 TensorRT下载地址:https://developer.nvidia.com/nvidia-tensorrt-download  TesnsoRT介绍文档:htt ...

  2. Jetson TX1 /TX2 对比介绍

    大家好,我是虎哥,经过一段时间的整理,针对TX1/TX2这些看起来已经落伍的产品,如何找到合适的应用场景,我也整体上做了一些了解好调研.现在由于资料很多都比较老了,有些表述也有些前后表述不一,所以这里 ...

  3. Jetson TX1/TX2搭载RTSO-9003载板刷机及使用JetPack3.3安装软件教程(防踩坑)

    1 烧录Linux系统 1.1 系统要求 最好给主机电脑安装Ubuntu14和Ubuntu16 x86_64系统.Ubuntu18系统不能运行JetPack3.3软件,且JetPack3.3安装软件必 ...

  4. Jetson TX1 /TX2 刷机及使用配置

    文章目录 Jetson TX1简介 更换NV官方提供的载板 刷机之后的基本配置 ROS Kinetic 安装 ZED ros环境的配置 opencv的自定义安装 安装在TX1/TX2嵌入式linux系 ...

  5. Jetson TX1/Tx2刷机补充版

    首先ubuntu的安装版本和可以参考此文章 刷机步骤 大概的原理就是用一台主机给Tx1板子就行Ubuntu系统的烧写. 所有的板子都有类似于BIOS的系统,Tx1也不例外.强制进入BIOS之后即可向T ...

  6. tx1开发板可以装linux,Jetson TX1嵌入式开发板被Nvidia推出,发力深度学习

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 不久前,Nvidia正式宣布基于TegraX1打造的JetsonTX1登陆中国区市场.据引见,该产品为Nvidia旗下首款针对深度学习神经网络而设计的嵌入 ...

  7. tx1开发板可以装linux,Nvidia推出Jetson TX1嵌入式开发板 针对深度学习神经网络设计...

    今天,Nvidia正式宣布基于Tegra X1打造的Jetson TX1登陆中国区市场.据介绍,该产品为Nvidia旗下首款针对深度学习神经网络而设计的嵌入式开发板,针对的开发方向为无人机.自主机器人 ...

  8. 官方主板 Jeston TX1 TX2 ubuntu 18.04 迁移系统至固态SSD

    目录 一.官方开发板简介 二.迁移系统至SSD 2.1 格式化SSD 2.2 拷贝根目录所有文件至SSD固态 2.3 .进入SSD修改开机启动项 2.4 烧写至SSD启动 一.官方开发板简介 Jets ...

  9. NVIDIA JETSON - Jetson TX2 / Jetson TX1

    NVIDIA JETSON - Jetson TX2 / Jetson TX1 https://www.nvidia.com/zh-cn/autonomous-machines/embedded-sy ...

最新文章

  1. Oculus软件完全支持三传感器室内跟踪
  2. python与Java线程实现方式的对比
  3. 0121 - 开始学习 EOS 编程
  4. 顺序容器(vector、list、string、deque、forward_list)及迭代器、容器适配器
  5. python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...
  6. 百度Apollo开通上海自动驾驶示范路线 落地第5城
  7. 如何构建企业安全易用的数据资产
  8. mysql-connector-odbc-5.3.12-win32.msi安装步骤
  9. 设计模式---模板模式(C++实现)
  10. vue-cli3+element-ui+vuex+nodejs+mysql前端项目记录
  11. 孔浩java web视频教程_孔浩老师webservice视频教程(含CXF视频教程)
  12. 生意经之王安论断:网店营销当机立断才能抓住机遇
  13. 2014九月十月百度,迅雷,华为,阿里巴巴,最新校招笔试面试题
  14. hog特征与fhog特征
  15. ModuleNotFoundError: No module named ‘lap‘
  16. 英国诺丁汉大学的AIMS与虚拟现实技术
  17. 文献阅读系列-2|TBC-Net: A real-time detector for infrared small
  18. 全球与中国吸油产品市场深度研究分析报告
  19. Day4:应用层——FTP :文件传输协议、电子邮件(EMail)、DNS(Domain Name System)、P2P应用(一类应用)
  20. Chapter8.4:非线性控制系统分析考研参考题

热门文章

  1. 判断数组元素相等 php,php中判断数组相等的方法以及数组运算符介绍
  2. python最优分箱计算iv值_Python计算woe和iv值
  3. 设计模式:观察者模式--Observer
  4. Windows Server 2016 DNS Policy Geo-Location 1
  5. Azure中继摆脱了WCF的桎梏,走向跨平台
  6. iOS9的新特性以及适配方案
  7. hibernate笔记
  8. 虞旦盛老师 的《数学分析续》课件
  9. Ubuntu双系统Grub启动菜单修复
  10. Hashtable 中的键值修改问题