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

深度学习目前正吸引着越来越多人的关注,相关算法框架层出不穷,例如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分钟左右的时间。
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 。