Apalis TK1 基于深度学习框架 Caffe 的物体识别

Thursday, January 11, 2018

深度学习目前正吸引着越来越多人的关注,相关算法框架层出不穷,例如TensorFlow、Caffe、Keras、CNTK、Torch7等等。这些算法在数据分析、聚类、识别和预测方面提供了极大的帮助,因此无论是云计算中心还是车载系统,甚至是便携式智能设备,我们都能发现深度学习的应用。

TensorFlow 在 Google 的推动下,加之其设计神经网络结构的代码的简洁度、分布式深度学习算法的执行效率,还有部署的便利性,在诸多的深度框架中脱颖而出。Caffe 则是主要用于计算机视觉领域的深度学习框架,其全称为 Convolutional Architecture for Fast Feature Embedding,目前由伯克利视觉学中心(Berkeley Vision and Learning Center,BVLC)进行维护,并提供了大量训练好的经典模型,可以从 https://github.com/BVLC/caffe/wiki/Model-Zoo 下载。Caffe 的代码成熟度较高,可以算是一个主流工业级单机运行的深度学习框架。

Toradex 的 Apalis TK1 模块基于 Nvidia Tegra K1 SoC,片上集成了 192 个支持 CUDA 运算的 GPU 核心。该 GPU 除了能够完成视频编解码外,还可以借助 CUDA、OpenCL 用于并行计算。由于 Tegra K1 采用了和桌面显卡一样的 GPU 架构,Apalis TK1 也能够实现利用 cuDNN 对 Caffe 进行加速运算。下面我们将介绍如何在 Apalis TK1 上安装 Caffe、OpenCV 3,并演示物体识别算法。

首先,使用 Toradex Easy Installer 在 Apalis TK1 模块上安装 L4T Ubuntu 系统。具体操作请参考 Toradex Easy Installer 使用说明。由于下载文件较大,整个安装过程需要10分钟左右的时间。

tezi l4t install

Caffe 所需的 cuDNN 需要单独从 JetPack 中安装,由于仅需要 CUDA 工具以及 cuDNN,因此在安装的时间可以不选择其他组件,减少安装时间。安装的组件如下:

通过下面脚本下载并编译 OpenCV3,以 sudo 权限执行脚本。

#!/bin/sh

sudo apt-add-repository universe

sudo apt-get update

sudo apt-get install build-essential make cmake cmake-curses-gui g++ pkg-config -y

sudo apt-get install libavformat-dev libavutil-dev libswscale-dev -y

sudo apt-get install libv4l-dev -y

sudo apt-get install libeigen3-dev -y

sudo apt-get install libglew1.6-dev -y

sudo apt-get install libgtk2.0-dev -y

sudo apt-get -y install checkinstall yasm

sudo apt-get -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

sudo apt-get -y install python-dev python-numpy -y

sudo apt-get -y install libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libva-dev libvdpau-dev \

libxvidcore-dev texi2html git

NUM_THREADS=4

ver=3.4.0

git clone git://github.com/opencv/opencv.git opencv-$ver

cd opencv-$ver

git checkout $ver

mkdir build

cd build

cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="3.2" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DENABLE_NEON=ON \

-DBUILD_EXAMPLES=ON -DBUILD_opencv_python2=ON -DWITH_OPENMP=ON -DENABLE_NEON=ON -DWITH_GSTREAMER_0_10=ON ..

make -j$NUM_THREADS

sudo make -j$NUM_THREADS install

/bin/echo -e "\e[1;32mOpenCV simple build installation complete.\e[0m"

完成安装后运行 sudo ldconfig 命令,更新 OpenCV 库文件。

下载 Caffe,最新版本的 Caffe 需要更高版本的 cuDNN 支持,Tegra K1 目前只支持 cuDNN v2。

#!/bin/sh

sudo apt-get install libprotobuf-dev protobuf-compiler gfortran \

libboost-dev cmake libleveldb-dev libsnappy-dev \

libboost-thread-dev libboost-system-dev libboost-python-dev \

libatlas-base-dev libhdf5-serial-dev libgflags-dev \

libgoogle-glog-dev liblmdb-dev -y

git clone git://github.com/platotek/caffetk1.git

cd caffetk1

cp Makefile.config.example Makefile.config

修改 Makefile.config ,添加 cuDNN 、 OpenCV3 支持,以及 CUDA 库文件

# cuDNN acceleration switch (uncomment to build with cuDNN).

USE_CUDNN := 1

# Whatever else you find you need goes here.

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include \

                  /usr/local/cuda-6.5/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib \

                  /usr/local/cuda-6.5/lib

                 

# Uncomment if you're using OpenCV 3

OPENCV_VERSION := 3

# Uncomment to use `pkg-config` to specify OpenCV library paths.

# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)

USE_PKG_CONFIG := 1

修改 Makefile 文件,添加 imgcodecs

LIBRARIES += glog gflags protobuf leveldb snappy \

        lmdb boost_system hdf5_hl hdf5 m \

        opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

最后运行

make -j 4 all

make pycaffe

下载物体识别 python 应用。解压后进入应用目录,配置 caffe python 目录

export PYTHONPATH=/home/ubuntu/caffetk1/python:$PYTHONPATH

python deep_learning_object_detection.py --prototxt MobileNetSSD_deploy.prototxt.txt --model MobileNetSSD_deploy.caffemodel --image images/example_03.jpg

运行上面命令后,会在图片中标识出识别的物体,以及识别的准确度。

基于深度学习的人工智能、物体识别、人脸识别、数据挖掘等有着丰富的应用,实现这些应用除了需要先进的算法如 Caffe、TensorFlow 等,还需要合适的硬件加速算法运行。Apalis TK1 能以较低功耗提供高达 325GFLOPS 的计算能力,并支持 GPU 加速,特别适合于视觉机器人、工业设备、车载装置等对功耗、尺寸、散热有要求的应用。更多关于 Apalis TK1 的信息,欢迎联系 Toradex 。

Author 胡珊逢,FAE,韬睿(上海)

Leave a comment

Your email ID will be kept confidential. Required fields are marked *


Please enter the letters as they are shown in the image above. Letters are not case-sensitive.

* Your comment will be reviewed and then added. Thank you.