• 刘看山

    本教程首发自神力AI社区,转载请保留出处,谢谢合作!太阳系最大的AI代码市场:http://manaai.cn

    深度学习安装宝典,你值得拥有。

    装环境是最头疼的一件事情。很多时候会遇到莫名其妙的问题。这篇文章推荐深度学习入门者看,主要是如何搭建标准的深度学习环境。我们从容易到难,逐渐叫大家如何构建,内容将包括目前比较主流的所有深度学习框架。其中也将包括不同的平台,比如windows,linux,macos。

    CUDA

    从最麻烦,也是最基础的开始,加入你没有cuda设备,可以忽略这一步。如果你有显卡,如果支持cuda,那么可以安装一下cuda驱动,开始你的深度学习之旅。

    网上很多教程,要么很老,要么按部就班,大家按照步骤装完了发现一对错误。本质上是没有事先告诉大家在装之前可能会踩的坑。这里我作为过来人,给新手总结一些要点:

    • 本教程会一直更新,目前最新的是cuda10,我建议直接安装cuda10.0,不要整什么cuda10.1或者10.2. 下面会告诉大家为什么;
    • cuda安装去英伟达官网下载,不要选择最新的,从legacy里面选择历史版本,然后下载对应平台的,windows下好办,直接exe,linux下选择.run文件;
    • cudnn要实现注册英伟达账号,下载那个tar.gz的压缩包,解压出来就是头文件和动态链接库,拷贝到cuda对应目录即可,非常简单。
    • 运行.run文件的时候,不要安装它自带的驱动,也不要安装opengl。

    其中最重要的是最后一点,CUDA和英伟达驱动是两个东西, 很多人装完cuda就觉得驱动装完了,结果进不去桌面。这里我建议新手一定要:在安装cuda之前,先把英伟达驱动安装了.

    nvidia的driver安装也很简单,以ubuntu为例子,直接添加源,然后 sudo apt install nvidia-driver-410 即可。主要CUDA10一般用的是410.

    有时间我分享一个cuda10.0和cudnn7.5的百度云盘备用链接,不过直接从英伟达官网下载速度也是杠杠的。

    Pytorch

    总最简单的开始。直接上官网安装:
    https://pytorch.org/get-started/locally/

    c382f472-2b7f-49a7-82b1-e627d5ed3149-image.png

    根据自己的系统版本选择对应的安装。这里注意几点:

    • 最好用1.1。0,因为这是最新的稳定版本,不要用老版本了;
    • 注意python版本和你用的cuda版本。

    一般来说,使用pytorch比tensorflow简单一些。安装完成pytorch之后,再安装一下torchvision即可。

    源码编译Pytorch

    这部分不建议新手看,因为坑很深。我记录一下pytorch源码编译的过程。

    1. git clone pytorch
      首先clonepytorch。注意有submodules,要init
    git clone http://github.com/pytorch/pytorch
    cd pytorch
    git submodule update --init --recursive
    # 此时会有thirdparty的库被pull下来
    mkdir build_libtorch
    cd build_libtorch
    python ../tools/build_libtorch.py
    
    1. 如果出错了
      如果出错,没有猜错的话可能的原因是multidefine什么东西,这个是MKLDNN造成的,解决的办法就是disbale掉它,并且关闭test:
    export USE_MKLDNN=0
    export BUILD_TEST=0
    

    在编译的时候export一下即可。
    一般情况下就可以成功编译libtorch,把你编译的库,全部替换掉官方的lib,你的lib就可以用新的ABI了。

    好像就没了。。。
    源码编译pytorch原因主要是两个:

    • 官方的libtorch用的是gcc4.9编译的,而且使用很老的ABI;
    • 源码编译可以加深你对这个库的理解。
      更新一下,现在pytorch官网也放出了C++11 ABI的预编译版本,大家可以直接下载用,只有当你需要使用cuda10.1或者不同的cuda版本的时候可以从源码编译。其他的时候没啥问题。

    Update 2019.9.10:

    上面讲述的是编译libtorch,但是,有时候我们需要编译pytorch,此时命令有点不同,截止到最新的pytorch1.3,编译pytorch的方式为:

    USE_MKLDNN=0 USE_DISTRIBUTED=0 sudo -E  python3 setup.py install --cmake
    

    请注意,这里由于加了sudo,需要添加 -E 才能让前面的变量有效,否则无效,无法编译。

    TensorFlow

    tensorflow的安装和编译目前来说还不是那么的蛋疼,加入你成功的安装了cuda和cudnn,那么直接从pip安装gpu版本的问题不大。大家注意两点:

    • 不建议用anaconda,我在年轻的时候也用anaconda,那时原因是实验室网速慢,pip慢,甚至还不会换源,假如你看到这篇博客,说明你比那个时候的我要强,可以不用anaconda了。
    • 直接从pip安装,如果你要老版本,那就1.19,如果你要tensorflow2.0,那就安装beta版本。

    源码编译TensorFlow

    简单的指导一下如何从源码编译tensorflow,有时候C++源码的tensorflow还是很有用的。那么要编译也很简单:

    1. Install bazel
    从bazel官网下载安装,请注意,**tensorflow只支持2.3版本的bazel,高版本的不支持。
    **注意**, 截止到2020.05.05, bazel可以直接从apt安装了,但是需要添加对应的apt-key,进入到bazel官网:https://docs.bazel.build/versions/master/install-ubuntu.html
    
    > sudo apt install curl
    > curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
    > echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
    > 
    > sudo apt update
    > sudo apt install bazel-3.0.0
    
    2. Clone TensorFlow source
    从tensorflow官方代码仓库克隆源代码。
    
    3. 两个命令编译
    
    ./configure
    # 此时需要enable cuda,xla等东西
    
    bazel build -c opt --copt=-mfpmath=both --copt=-msse4.2 --config=cuda //tensorflow:libtensorflow.so
    bazel build -c opt --copt=-mfpmath=both --copt=-msse4.2 --config=cuda //tensorflow:libtensorflow_cc.so
    bazel build --config=opt  //tensorflow/tools/pip_package:build_pip_package
    
    # if build tensorflow 2.0
    bazel build --config=v2 //tensorflow/tools/pip_package:build_pip_package
    
    

    8604f53e-27f4-4f6a-b4ff-a30704c4fbff-image.png
    OK. 差不多就行了,最好切换带相应的分支编译,不要从master开始编译。
    最后将编译python package:

    [14:15:33] fagangjin:tensorflow git:(2c319fb) $ ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    

    然后你就可以看到如下输出:

    Fri Jul 19 14:15:38 HKT 2019 : === Preparing sources in dir: /tmp/tmp.E0ITrWBmGN
    /media/fagangjin/wd/permanent/software/source_codes/dl/tensorflow
    Fri Jul 19 14:15:53 HKT 2019 : === Building wheel
    /usr/local/lib/python3.5/dist-packages/setuptools/dist.py:472: UserWarning: Normalizing '2.0.0alpha0' to '2.0.0a0'
    warning: no files found matching '*.h' under directory 'tensorflow/include/tensorflow'
    warning: no files found matching '*' under directory 'tensorflow/include/Eigen'
    warning: no files found matching '*.h' under directory 'tensorflow/include/google'
    warning: no files found matching '*' under directory 'tensorflow/include/third_party'
    warning: no files found matching '*' under directory 'tensorflow/include/unsupported'
    Fri Jul 19 14:16:20 HKT 2019 : === Output wheel file is in: /tmp/tensorflow_pkg
    

    更新

    • 2019.10.09: 由于tensorflow更新了2.0,因此master branch直接默认是2.0.通过这个方式:
    bazel build //tensorflow/tools/pip_package:build_pip_package
    ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    

    Caffe

    这里再总结一下如何编译安装caffe。理论上来说,caffe的问题不是它的代码,它的代码其实很健壮,问题在于它的依赖。我见过最多的问题来自于:

    • protobuf
    • boost

    我不告诉你安装步骤,你自己去官方编译,98%会出错,而且错误摸不到头脑。
    其实我们MANA平台是有一个自己fork的caffe版本的,里面很多层比如FasterRCNN,RFCN,SSD,YOLO等的纯C++和CUDA支持。由于内部原因可能暂时不会开源。
    但现在caffe维护最积极的应该还是BVLC的版本

    git clone https://github.com/BVLC/caffe
    

    号外:
    我们发布了一个我们自己维护和修改的caffe版本,整体来讲增加了几乎所有层的支持。

    http://manaai.cn

    ONNXRuntime

    onnxruntime 编译比较麻烦,大家可以转到对应的文章进行编译。
    跳转到这里来进行 链接

    MXNet

    mxnet的安装直接pip,比较简单。

    发布在 社区博客 阅读更多
  • 刘看山

    libfacedetection 这个库应该都听过,但是在这之前它只是开源了动态链接库,现在,源代码已经开源了!!!!
    这个人脸检测有哪些优势?

    • 1500fps!!!这个速度非常牛逼了,即便是CPU降低十倍速度也能达到150fps!! CPU realtime!!
    • 不依赖于其他任何C++库,这个非常不错,比一些各种依赖的方法好很多!!
    • 本次开源了caffe model以及模型的prototxt。
    • 支持opennin加速。

    闲话不多说,先上github链接:https://github.com/ShiqiYu/libfacedetection

    评测

    对于其他对标GPU的其他实现我们不care,特地来看一下在Raspberry Pi上的效果!!

    ca65699b-01a6-48e5-96b8-c1d7aff37579-image.png

    基本上可以达到 中等图片上的实时!!

    欢迎大家前往编译测试!!

    发布在 社区博客 阅读更多
  • 刘看山

    这个其实就是python2和python3的兼容问题,用python2跑应该不会出错,如果用python3,应该在最上面添加一下:

    from __future__ import divide
    

    具体不记得了,就是添加一个divide的兼容包。

    另外建议错误贴文字啊!!!!!!!!!!!!!!!!!!截图很容易把服务器内存称爆!!!!!!!!!!!!!

    发布在 社区求助区(SOS!!) 阅读更多
  • 刘看山

    回答一下,这个问题比较大,我权且假设你是想从头入门学习目标检测这个领域。

    从应用的角度讲,可以分为2D目标检测和3D目标检测,2D现在基本上很成熟了,比如我们经常听到的FasterRCNN系列,SSD系列,Yolo系列等,现在也到了大规模应用阶段,可以优化到非常快的速度。3D目标检测目前来讲还没有非常成熟的方法,这个也跟传感器的发展有关,目前还没有非常便宜的能够生成稠密点云的激光雷达。

    楼主应该从2D目标检测开始。具体来讲,首先我给出下面这些锦囊:

    • 框架用pytorch,否则你会在语言层面踩很多不必要的坑;
    • 先把基础的部门看一下,比如nms,rpn,fpn等,最好自己实现一遍;
    • 然后尝试自己实现一个fasterrcnn,这个其实不难。

    你实现了自己的框架之后,基本上你就已经从入门到master了。祝你成功!

    发布在 社区求助区(SOS!!) 阅读更多
  • 刘看山

    欢迎各位职业招聘人士,为了对接广大的AI人才与企事业单位,我们面向所有公司、第三方猎头开辟此板块。请发帖人员遵守以下规则发布招聘贴:

    1. 招聘贴抬头模板:【公司名称】招聘岗位
    2. 帖子正文:需提供JD详情,要求,时间,地点等关键因素

    奇异社区申明:所有猎头机构发帖都需要遵守诚信规则,否则将被管理员删贴子。本着为广大AI人才提供工作机会以及为企业提供一个附加渠道的原则,我们会对帖子进行严格审核。请大家自觉遵守,并请广大社区成员文明回帖,多谢合作!

    发布在 猎头/企业招聘专区 阅读更多
  • 刘看山

    端到端实现3D目标检测 + 跟踪的文章. 这个就十分的牛逼了, 而且仅仅通过单目完成. 可以说这个十分的厉害.

    并且文章开源了代码, 先放论文连接: https://arxiv.org/pdf/1811.10742.pdf
    github地址: https://github.com/ucbdrive/3d-vehicle-tracking

    这篇文章是国立清华大学和UCBerkeley联合作的. 应该也是面向自动驾驶领域十分有用且前沿的一篇文章.

    论文效果:

    64989a52-0f0a-4e92-b8b3-c7b8e94c2749-image.png

    2e800be4-a674-4c9b-b6b9-2354f6862e8b-image.png

    90493763-18fe-4be0-bc8f-873649a853c0-image.png

    欢迎大家添加评论,来讨论交流论文中的insights

    发布在 最新论文速递 阅读更多
  • 刘看山

    1、Hybrid Task Cascade for Instance Segmentation
    速度看起来跟MaskRCNN差不多,但是值得深入跟一下。

    2、https://github.com/open-mmlab/mmdetection
    可以模仿这个框架做一个自己的目标检测算法库。

    3、S3FD
    这个人脸检测算法效果非常不错,适合用于小物体检测场景,但是对于类别比较多的情况效果如何就不清楚了。

    强化学习方向:

    • oroto: http://otoro.net/ 这家公司似乎是专门做强化学习相关应用的,值得学习和模仿。

    48e33fca-eb8a-4c7c-aa2f-e7eb993785e9-image.png

    发布在 社区博客 阅读更多
  • 刘看山

    相信大家之前听说过Conernet,通过角点回归来做目标检测,然而令人震惊的是计算机视觉发展已经先进到通过中心点预测一切!!
    听起来大家可能觉得没有啥,但这个方法拥有者无穷的想象和可能性,你还在为fastercnn地速度困扰?yolov3训练太繁琐?(当然这一些都很简单,来这里看看最新最快的工业级别的检测方法:http://codes.strangeai.pro )然而现在,你可以在段时间内训练一个高精度,比yolov3更快的目标检测!!

    最关键的是, 这个方法还能做人体姿态预测!!还能做3D 检测。手动execuse me?这么吊的方法为什么我没有听说?为什么我现在才知道?没有为什么,因为论文昨天才上线的,而你没有关注我们的专栏,更没有在这个论坛注册:http://talk.strangeai.pro 脱离AI前沿,消息闭塞,没有渠道,没有说过也很正常。当然啦,我们鲜花不多说,首先来看看效果:

    645ac4e1-c017-4fed-8abb-bd052e19f252-image.png

    853f6a5f-3de7-44cb-931b-168dab28b798-image.png

    Amazing!!!,这个检测效果,我可以说非常的ok!!
    最关键的我们来看一下速度,速度在当今这个追求极致的年代及其重要,这个方法的速度(GTX1080ti):
    detection: 30ms;
    pose: 40ms;
    3D: 40-45ms.
    这个速度我还能说什么?very very fast!!!!
    好了,最重要的来了,这个方法实际上已经开源了!

    欢迎大家访问国内最大的AI算法开源平台,在这里发现众多优秀的、工业级别的部署AI算法,同时获取训练自己数据集的指导,还有机会加入我们的社群哦!
    奇异AI-国内最大的AI代码平台

    http://codes.strangeai.pro

    发布在 社区博客 阅读更多
  • 刘看山

    帖子专门用来分享一些链接:

    1. 原始资源:https://github.com/fchollet/deep-learning-models/releases/download/v0.2/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5
      链接: https://pan.baidu.com/s/16c6ZcNd2bb45Wb0wZLfmiw 提取码: 2222 复制这段内容后打开百度网盘手机App,操作更方便哦

    发布在 社区求助区(SOS!!) 阅读更多
  • 刘看山

    @mindmad I think I found a good dataset to work with rotated box.

    http://www.robots.ox.ac.uk/~vgg/data/hands/

    bca2552c-990e-4ff4-bbd3-df55a4988897-image.png

    those hands has a rotation angle but still a rectangle bounding box just has a rotate.

    发布在 社区求助区(SOS!!) 阅读更多
  • 刘看山

    有时候我们想画一个函数的图像,用python其实不是最方便的。
    来看看这个函数:

    ee6c3218-39d6-462c-ba9d-d5e451d6d14b-image.png

    知道这个函数的图像是啥吗?

    不是圆哦!!不要看错了上标位置。

    来看看它的图像:

    39bf8dcb-88f2-4305-a8df-be6bef06ee73-image.png

    很显然这是一个对称函数,而且是闭环的。也许你用python可以画出上面那个图像,但是!!
    它的真实面目你可能不知道:

    bdfb2f1a-f369-47ca-90e9-249d08a8a662-image.png

    把它进行缩放,你会发现这是一个很神奇的函数!!!!
    它可以把自己布满在整个二维空间!!!

    请收藏这个有用的网址!!
    https://www.desmos.com/calculator

    发布在 原创分享专区 阅读更多
  • 刘看山

    数据集地址:https://eurocity-dataset.tudelft.nl/

    这个数据集应该是一个迄今为止最大的,最完整的,包含不同光照,场景,街道,摄像头角度的全场景行人检测数据集。并且标注还包含有行人的行进方向等信息:

    a8ef6114-fb5a-4b78-937d-848d87012b2c-image.png

    对于做行人ReID,行人跟踪,行人检测,行人计数的同学们大有用途。

    发布在 原创分享专区 阅读更多
  • 刘看山

    http://lutzroeder.github.io/netron/

    netron的网页版本,非常方便的可以查看一些网络模型结构。

    发布在 原创分享专区 阅读更多
  • 刘看山

    ONNXRuntime安装教程

    onnxruntime 是个啥子?

    我们都知道onnx,onnx只是一个协议格式,它没有具体的推理框架。我们知道,不同厂商,它的推理框架速度有很大的差异。我们有自己做的,比如ncnn,mnn,mace这些都是前向推理框架,他们也可以用来推理onnx模型。这是在CPU上,这些框架CPU的速度毫无疑问,比得上intel吗?比的过openvino吗?不一定。
    另外一个就是GPU,你pytorch的GPU推理速度能比得过英伟达人家的TensorRT吗?比不过,至少差三倍的速度。为什么会有这么大的差别?
    原因很简单,人家卖硬件的,为了让你用它的硬件,肯定会想方设法让你在硬件上速度更快,这是刚需,你对CPU的了解能比得过intel?你对GPU的了解能比得过NVIDIA??

    那么onnxruntime是个什么鬼呢?

    onnxruntime是一个实实在在的onnx模型推理引擎,但,它统一了一个前端接口,而真正的实现支持openvino,支持mkldnn,支持TensorRT,支持CUDA,也支持CPU,换句话说,一次编写,可以直接根据硬件使用对应的库来编译。

    这个很管用。那么它的速度gain到底有多大呢?

    先安装一下onnxruntime吧。我们将用onnxruntime的GPU库 (不带TensorRT)来推理一下maskrcnn,看看速度和官方的pytorch、比有多大的提升。
    为了加上tensorrt支持,你需要下载一下tensorrt,根据你的系统版本。解压到 ~/tensorrt5.1.5 5.1.5是最新的TensorRT。下面我们将要用到。

    1. 安装
    git clone --recursive https://github.com/microsoft/onnxruntime
    
    # 如果你遇到了libFuzzer clone不下来,从这个地方下载[Fuzzer.zip](https://github.com/alibaba/euler/files/2991980/Fuzzer.zip)解压到对应的目录,这个没有办法,Q在那儿。注意文件夹的名字不要错: https://github.com/alibaba/euler/files/2991980/Fuzzer.zip
    # 注意,这里把解压后的mv的时候要把.git也move过去。
    
    ./build.sh \
    	--use_cuda \
    	--cuda_version=10.0 \
    	--cuda_home=/usr/local/cuda \
    	--cudnn_home=/usr/local/cuda \
    	--use_tensorrt --tensorrt_home=$HOME/TensorRT \
    	--build_shared_lib --enable_pybind \
    	--build_wheel --update --build
    
    

    其实也简单,通过 build.sh 来编译。

    6bf5d374-fc74-440e-88bf-3c03406ca341-image.png

    可以看到,onnxruntime里面实际上有很多GPU或者CPU的实现,来支持onnx的各种operators.

    如果你能开始编译,请评论一下.

    onnxruntime 编译完了之后,如何进一步安装对应的python wrapper呢?
    实际上已经生成了:

    onnxruntime                   0.5.0                  
    onnxruntime-gpu-tensorrt      0.5.0     
    

    但是这个wheel文件怎么没有找到呢。。。

    QA

    这里记录一些onnxruntime编译的时候各种debug,请注意,我们的编译教程会随时跟踪最新的onnxruntime,记录一些常见的bug。

    • fatal: no submodule mapping found in .gitmodules for path 'cmake/external/gsl':
      git rm --cached cmake/external/gsl 就可以
    • xxx
      xxx

    onnx-tensorrt 安装教程

    由于最近总是忘记onnxtensorrt如何编译。这里再记录一下,如何编译 onnx-tensorrt 以及TensorRT两个工程。

    • onnx-tensorrt:
    git clone --recursive https://github.com/onnx/onnx-tensorrt.git
    cd onnx-tensorrt
    cmake -DTENSORRT_ROOT=~/TensorRT  ..
    

    其中~/TensorRT 是你的tensorrt的安装位置。但是请注意,你要根据你的tensorrt版本去编译不同的onnx-tensorrt版本,现在master branch应该是需要tensorrt6.0

    发布在 原创分享专区 阅读更多
  • 刘看山


    title: JetsonNano跑YoloV3速度评测
    date: 2019-09-22 14:45:04
    category: 默认分类


    本文介绍 JetsonNano跑YoloV3速度评测

    JetsonNano跑YoloV3速度评测

    This article was original written by Jin Tian, welcome re-post, first come with https://jinfagang.github.io . but please keep this copyright info, thanks, any question could be asked via wechat: jintianiloveu

    很久没有发文章了,这段时间做了很多事情,主要工作还是在于onnx模型的TensorRT加速,我们在前段时间发过很多文章讲述如何对caffe模型进行TensorRT加速,我们也有现成的算法可以用来做这件事情,通过TensorRT加速的基于Darknet53+FPN的YoloV3可以跑到~40fps,在一块decent的GPU上,这个速度已经非常快了,毕竟这个后端十分重,速度也超越了一些经典的二阶段算法,效果如下图:

    TensorRT YoloV3

    可以看到几乎没有漏检,这用来进行商业化的项目部署还是很有用的,但请相信我,如果你没有TensorRT加速,Darknet53+yolov3 608的输入速度你很难做快。这个算法我们将会开源到平台,在加入更多的模型之后。因为我们需要把所有的Caffe->TensorRT的操作封装成一个库,这样部署起来就非常方便了。

    当然我们的算法平台 http://manaai.cn 也更新了很多最新的项目,比如我们从零训练的手和人脸的检测器,这用来进行无人机的操控很有用途,我们几乎将所有能用得上的人手和人脸的数据集都汇聚到了一块,基于我们自己的caffe版本可以进行大规模的训练,项目地址和与训练模型 这里

    但实际上我们训练之后发现,这个模型竟然可以作为人脸的检测器:

    当然效果与专业的人脸检测器还是有差距,但是毕竟速度和模型大小摆在那里。说到人脸检测器,现在很多都是评测的时候用大尺寸,比如1024x980这样的尺寸,精度上去了,但是实际上测试发现大尺寸下速度却很慢,慢到GPU上都无法实时,这就很过分了,但是除了这个算法:RetinaFace, 目前来讲是唯一一个同时兼顾速度和精度的人脸检测算法,更重要的是,这个算法可以同时拿到人脸位置和landmark,和MTCNN类似。

    当然这个算法也可以在MANA平台找到,需要向大家说明的是,我们开源的是我们修改的pytorch训练版本,可以训练但是部署的时候不够快,基于onnx TensorRT加速的版本,将会在随后push到平台仓库,欢迎大家关注,预计可以做到400fps(1080尺寸输入下,GPU环境),即便是最垃圾的GPU,也能做到满实时。

    最后言归正传,我们这篇文章继续上一篇的讲解。上一期我们讲到:

    我们收到了一个Nvidia发过来的JetsonNano进行评测,但是不带电源,淘宝买了一个电源发现不好使,只要不运行大模型就容易崩溃。

    最后发现,原来问题不是电源的问题,这里提醒一下JetsonNano的玩家:真正原因是由于我们没有短接一个跳线, 只有在短接之后板子才会从电源汲取电源而不是从usb接口.

    短接之后,一切正常。这一点如果没有人告诉你,你应该不太可能知道,这就是只搞软件不搞硬件带来的偏科问题。。

    YoloV3评测

    本篇文章不仅仅要在Nano上评测YoloV3算法,还要教大家如何在Nano的板子上部署,并且得到我们相同的效果。所以文章可能会比较耗时,闲话短说,先来看看Nano跑起来的效果:

    这里先说结论,因为相信很多读者是想用Nano来做点东西的:

    • 跑Yolov3+Mobilenetv2没有一点问题,~7fps的速度我觉得是可以接受的;
    • SSD+Mobilenet我没有测,但YoloV3+Mobilenet应该是精度更高一些的,输入尺寸也大一些;
    • 这个是用C++跑的,我想说的是在Nano上跑caffe模型什么的一点问题都没有;
    • 用在机器人视觉或者自己的项目上,你可以通过TensorRT获得更多的加速;
    • 和同等级的芯片对比,比如Intel的神经网络加速棒,瑞芯的芯片等,我相信他们很难在同样的软件下达到这个速度,除非用上他们自己的神经网络加速软体套件,但这样的话,Nano就得上TensorRT大招了,毫无疑问会更快。

    本期文章暂时不就Nano的TensorRT加速表现进行评测。我们可能在下一期,对几个我们训练的onnx模型进行TensorRT加速,顺便看看这些模型在Nano上能够跑到多块的速度,比如Retinaface等等。

    Nano YoloV3部署教程

    接下来需要传授大家如何部署了。用到的工具很简单,所有的代码来自于mana平台:

    http://manaai.cn

    具体来说,我们需要两个项目:

    上面的项目是我们花费了大量时间和精力训练、维护、编写、debug的开箱即用的代码,我们放在了MANA平台,如果你也是AI爱好者,想要从一些先人那里获取更多的知识和经验,不妨支持一下我们的工作,毫无疑问我们可以提供你物超所值的东西。平台代码和项目一直在更新,并永远保持最前沿。

    接下来看如何部署(代码获取需要相关权限):

    1. 下载模型训练框架

      git clone https://gitlab.com/StrangeAI/yolov3_mobilenet_caffe ~/caffe
      cd caffe
      mkdir build
      cd build
      cmake ..
      make -j8
      make install
      make pycaffe
      

      这里需要注意,这个训练框架我们不需要真正训练,如果你需要训练,不要在你的Nano上进行,上面操作只是我们下面的C++程序需要调用caffe。

      当然在这个过程中,你可能会遇到很多坑,但是请记住两个点:

      • Nano自带了基本上所有环境,比如boost,opencv等;
      • 编译错误先看错误,然后google;
      • 实在不行,请来我们的AI社区交流提问,大神在线解答:http://talk.strangeai.pro
    2. 编写Yolov3预测C++程序

      这一段我不打算贴代码,一来这个代码有点长,二来对于新手不太友好,因为还需要CMakeLists.txt的一大堆东西,大家直接clone一个现成的项目:

      git clone https://gitlab.com/StrangeAI/handface_detect.git
      

      通过该项目的一些readme进行编译,只要正确链接到你clone到HOME下的caffe,这个yolov3的检测程序就是可以正确编译的。

    最后提醒一下,上面的代码需要MANA会员权限,我们花费大量时间精力分享我们的源代码,并非是给伸手党一堆无用的东西,而是一些我们觉得有用的精髓,能够帮助初学者快速得到自己想要的东西,这也是我们还是新手的时候梦寐以求的,希望每一位初学者能够珍惜前人的劳动成果。当然,如果你觉得请我们喝杯咖啡显得过于炫富,也可以通过其他开源渠道获得相关代码。

    如果大家对于本篇教程有任何疑问,欢迎来我们的AI交流社群交流发帖:

    http://talk.strangeai.pro

    发布在 原创分享专区 阅读更多
  • 刘看山

    初学者我建议两点:

    1. 奔着任务去学,比如你先学会分类,再学习目标检测,平台有很多项目可以参考,比如最简单的pytorch图片分类:http://manaai.cn/aicodes_detail3.html?id=30

    2. 不要学猴子上山,看着啥好吃就把当前的扔掉,学会一个东西先消化了再学下一个,坚持在一个问题上直到它被解决。

    另外,跟着前辈的脚印走很重要。我建议加入我们的社区,看看我们每天交流,讨论的东西。耳濡目染,潜移默化。

    发布在 社区求助区(SOS!!) 阅读更多
  • 刘看山

    Yolov3是一个非常好的检测器,通过这个检测器我们加入了许多最新的techniques,比如GIoU,比如ASFF,比如高斯滤波器等等,我们希望通过维护一个可以迭代的yolov3版本(我们且称之为YoloV4),可以给大家提供一个从轻量模型(mobilenet,efficientnet后端),到量化剪枝,最后到TensorRT部署,覆盖CPU和GPU的多场景检测模型。

    现在我们在社区一些版本的基础上已经完成了初步的构建,比如:

    下面有一个我们提供的onnx模型,希望大家一起帮忙使用tensorrt 6.0或者tensorrt7.0来转到engine,这个模型我们会经常更新,欢迎大家发帖回复更新。

    目前已经测试在tensorrt6.0上缺少ConstantOfShape的op,但是在tensorrt7上似乎已经支持!

    链接: https://pan.baidu.com/s/1UwJ_2iF2HH-3MCe-pe3sqg 提取码: bhxs 复制这段内容后打开百度网盘手机App,操作更方便哦

    发布在 原创分享专区 阅读更多

与 神力AI社区 的连接断开,我们正在尝试重连,请耐心等待