65.9K
CodeProject 正在变化。 阅读更多。
Home

DashCam ML模型训练

这个项目的主要目标是开发一个机器学习模型,用于检测道路上的物体,例如行人、汽车、摩托车、自行车、公共汽车等。

您是否使用高通开发者网络上提供的硬件和/或软件创建了一个项目? 您是否想让它在高通开发者网络上展示? 告诉我们您的项目!

该机器学习模型用于检测物体,设计用于使用单次检测器 (SSD) 算法,该算法在 Mobilenet 网络架构上进行训练,并通过将其转换为高通神经处理 SDK 支持的深度学习容器格式 (.dlc) 来优化 Snapdragon 移动平台上的应用程序。

所需材料 / 零件清单 / 工具

源代码 / 源代码示例 / 应用程序可执行文件

构建 / 组装说明

要求

软件 (S/W)

  1. Ubuntu 16.04 机器
  2. 高通神经处理 SDK
  3. Python 3.5

硬件 (H/W)

  1. 英特尔酷睿 i5 或更高版本的处理器
  2. 至少 16 GB 系统内存
  3. 基于 GTX 架构的显卡,超过 1050Ti (https://www.nvidia.com/en-in/geforce/products/10series/geforce-gtx-1050/)

为什么选择 MobilenetSSD

  1. 在骁龙 835 硬件开发套件上提供 8-13 FPS 的实时推理帧率
  2. 与 YOLO 等其他架构相比,性能和准确性更好。

如何训练模型

MobilenetSSD 和 Caffe 的安装

  1. 使用以下命令从 git 存储库克隆 Caffe 源代码
          $ git clone https://github.com/weiliu89/caffe.git
          $ cd caffe
          $ git checkout ssd
  2. 根据所使用的处理器(CPU 或 GPU),通过执行 http://caffe.berkeleyvision.org/install_apt.html 中的相应指令来安装依赖包。
  3. 使用以下说明构建 Caffe
          $ cp Makefile.config.example Makefile.config
          (Make necessary modification  in the Makefile as per the device configuration)
          $ make -j8
            (Make sure you add the $CAFFE_ROOT/python to your PYTHON PATH)

准备数据

  1. 按照给定的说明下载完全卷积精简 (atrous) VGGNet
          $ git clone https://gist.github.com/2ed6e13bfd5b57cf81d6.git
          $ mv 2ed6e13bfd5b57cf81d6  $CAFFE_ROOT/models/VGGNet/
  2. 下载 VOC2007 和 VOC2012 数据集
          $ mkdir home/<username>/data
          $ cd home/<username>/data
          $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
          $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
          $ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
          $ tar -xvf VOCtrainval_11-May-2012.tar
          $ tar -xvf VOCtrainval_06-Nov-2007.tar
          $ tar -xvf VOCtest_06-Nov-2007.tar
  3. 创建 Lightning Memory-Mapped Database (LMDB) 文件
          $ cd $CAFFE_ROOT
          $ ./data/VOC0712/create_list.sh
          $ ./data/VOC0712/create_data.sh

训练模型

  1. 创建指向训练和测试数据集的符号链接
          $ ln -s PATH_TO_YOUR_TRAIN_LMDB trainval_lmdb
          $ ln -s PATH_TO_YOUR_TEST_LMDB test_lmdb
  2. 使用以下命令将 labelmap_voc.prototxt 文件从 ssd 仓库树复制到 MobileNetSSD 目录
          $ cp $CAFFE_DIR/data/VOC0712/labelmap_voc.prototxt $MOBILENETSSD_DIR/labelmap.prototxt
    运行 gen_model.sh,使用给定的类数生成训练和测试 prototxt。 请确保运行 gen_model.sh 时的类数与 labelmap.prototxt 中提到的类数匹配。
          $ ./gen_model.sh 21
    现在使用 train.sh 训练您的模型,并持续训练,直到损失在 1.5 到 2.5 之间
          $ ./train.sh
    使用 test.sh 脚本测试训练好的模型
          $ ./test.sh
    如果需要,运行 merge_bn.py 以生成您自己的 no-bn Caffe 模型。
          $ python merge_bn.py --model example/MobileNetSSD_deploy.prototxt --weights snapshot/mobilenet_iter_xxxxxx.caffemodel

一旦 merge_bn.py 成功运行,您将在 MobileNetSSD 的根目录下获得两个文件。 这些是训练好的模型

  1.       no_bn.prototxt
  2.       no_bn.caffemodel

如何将 Caffe 转换为 DLC?

必备组件

神经处理 SDK 设置。 使用以下链接中的说明设置 SDK

https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk/getting-started

使用 Caffe 初始化神经处理 SDK 的环境变量。 要将模型从 Caffe 转换为 DLC,您需要两个文件:prototxt 和 caffemodel。

使用以下命令转换为 DLC

  $ snpe-caffe-to-dlc --caffe_txt MobileNetSSD_deploy.prototxt --caffe_bin MobileNetSSD_deploy.caffemodel --dlc caffe_mobilenet_ssd.dlc
© . All rights reserved.