深度学习&计算机视觉系列---TensorRT&DIGITS(三)

Testing Classification Model in DIGITS

在训练了30个epochs之后,您将看到下面的界面:

External Media

这时,我们可以尝试利用我们的模型测试一下。在刚才训练好的模型的页面下面,有一个Testa single image,在Image Path中,输入您要测试的路径(在我们的例子里面,我输入的是/ilsvrc12/n02127052/n02127052_1203.jpg)。

External Media

点击Classify One 按钮,然后你就会看到下面这样的结果:

External Media

利用我们训练的GoogleNet-12的模型识别这张图片是一只猫,原来1000类的分类中,它是一只猞猁。这样就说明我们训练的模型是ok的,因为猞猁在12类的GoogleNet中被分到了猫的类别中。

Downloading Model Snapshot to Jetson

现在,我们确定了我们训练的模型可以正常工作了,接下来我们要把它下载并解压到Jetson中。通过你TX1/TX2上面的浏览器,访问DIGITS服务器,选择GoogleNet-ILSVRC12-subset 模型,点击下载模型。

External Media

如果你的Jetson和DIGITS服务器没法直接访问,你可以把模型下载到本地,然后通过SCP和USB来将模型拷贝到Jetson中。

然后解压:

tar -xzvf 20170524-140310-8c0b_epoch_30.0.tar.gz

接下来我们会加载我们训练好的模型到TensorRT,并且在Jetson上运行。

Loading Custom Models on Jetson

imagenet-console 和 imagenet-camera程序可以通过扩展命令行参数来加载模型。我们可以设置$NET 变量到你的模型地址:

$ NET=networks/GoogleNet-ILSVRC12-subset

$ ./imagenet-console bird_0.jpg output_0.jpg \

–prototxt=$NET/deploy.prototxt \

–model=$NET/snapshot_iter_184080.caffemodel \

–labels=$NET/labels.txt \

–input_blob=data \

–output_blob=softmax

在以前,识别类别和置信值将会水印到输出图片上。下面展示了1000类的GoogleNet和12类的GoogleNet的识别结果:

External Media

上面的命令同样适合于imagenet-camera.

Locating Object Coordinates using DetectNet

之前的图像识别的例子,输出的是整张图片的类别概率。第二种我们教程中重点讲述的深度学习的能力是目标检测,找到目标在画面中的位置(画出每一个目标的框框)。这个是利用detectNet或者目标检测/定位网络。

detectNet的输入是一个二维图片,输出是一个检测目标的列表。要训练一个目标检测的模型,首先要预训练一个识别模型,除了图像数据集之外,还要有一个带边界框标识的训练数据集(ImageSetwith bounding box labels)

在这个教程中,预训练模型包括:
[list=1]

[]ped-100 (single-class pedestrian detector)
[
]multiped-500 (multi-class pedestrian + baggage detector)
[]facenet-120 (single-class facial recognition detector)
[
]coco-airplane (MS COCO airplane class)
[]coco-bottle (MS COCO bottle class)
[
]coco-chair (MS COCO chair class)
[*]coco-dog (MS COCO dog class)
[/list]
就像之前的例子一样,这里我业提供了单张图片和基于视频流的检测的命令行程序。

Detection Data Formatting in DIGITS

目标检测的离子的数据集包括KITTI, MS-COCO等等。用KITTI数据集可以查看这里

不管数据是什么样,DIGITS会用KITTI的数据格式来获取目标检测的框架标签。这些都是有文本文件组成,包括帧号对应的图像文件名,就想下下面这样:

dog 0 0 0 528.63 315.22 569.09 354.18 0 0 0 0 0 0 0

sheep 0 0 0 235.28 300.59 270.52 346.55 0 0 0 0 0 0 0

您可以在这里查看DIGITS用到的文件结构和KITTI标签的格式

Downloading the Detection Dataset

我们可以查看这里来了解利用MS-COCO数据库来训练和部署检测日常物体的网络模型。参见coco2kitti.py脚本将ms-coco对象类转换为Kitti格式。如果变成DIGITS的文件格式,他们就可以在DIGITS里面直接引用。对于样例中,数据格式已经处理过了,已经将数据转化成DIGITS/KITTI的格式。

在您的DIGITS服务器对上,打开一个终端,利用下面的命令,下载解压sample MS-COCO classes 数据:

$ wget --no-check-certificatehttps://nvidia.box.com/shared/st … u2jsi0u43vzk8ecu.gz -Ococo.tar.gz

HTTP request sent, awaiting response… 200 OK

Length: 5140413391 (4.5G) [application/octet-stream]

Saving to: ‘coco.tar.gz’

coco 100%[======================================>] 4.5G 3.33MB/s in 28m 22s

2017-04-17 10:41:19 (2.5 MB/s) - ‘coco.tar.gz’ saved[5140413391/5140413391]

$ tar -xzvf coco.tar.gz

这些DIGITS上的数据包括了飞机,瓶子,椅子和狗的类别。 coco2kitti.py可以用来转换其他类别。

Importing the Detection Dataset into DIGITS

通过浏览器访问你的DIGITS服务器,选择在New Dataset中选择Object Detection。

External Media

在接下来的表单中,按照下面的内容修改您的参数:
[list]

[]Training image folder: coco/train/images/dog
[
]Training label folder: coco/train/labels/dog
[]Validation image folder: coco/val/images/dog
[
]Validation label folder: coco/val/labels/dog
[]Pad image (Width x Height): 640 x 640
[
]Custom classes: dontcare, dog
[]Group Name: MS-COCO
[
]Dataset Name: coco-dog
[/list]
External Media

在最下面,给您的数据库起一个名字,然后点击Create按钮。接下来,我们将创建一个新的检测模型,并且开始训练。