SSD
SSD是使用单个网络进行对象检测的统一框架。
您可以使用该代码来训练/评估/测试对象检测任务。
这是基于caffe的原始SSD的重新实现。官方存储库可在此处获得。arXiv论文可在此处获得。
这个例子用于再现漂亮的探测器,同时充分利用MXNet的显着特性。*该型号与caffe版本完全兼容。* 来自caffe的模型转换器现已上市!*结果几乎与原始版本相同。但是,由于实现细节不同,结果可能略有不同。
这个repo现在已被弃用,我正在迁移到最新的Gluon-CV,它更加用户友好,并且在开发过程中有更多的算法。此repo不会接收活动开发,但是,您可以继续使用mxnet 1.1.0(可能是1.2.0)。
现在,这个repo在内部与具有官方mxnet后端的数据同步。pip install mxnet
在大多数情况下,也适用于此回购。
现已提供MobileNet预训练模型。
添加了多个训练模型。
从主流分类网络(resnet,inception ...)和Guide中添加了一种更简单的组合网络的方法。
根据caffe版本更新到最新版本,增加5%mAP。
使用基于后端多线程引擎的C ++记录迭代器来实现多gpu环境的巨大加速。
在培训期间监控mAP验证。
正在开发和测试的更多网络符号。
现在有额外的运算符mxnet/src/operator/contrib
,符号被修改。对于旧型号,请使用Release-v0.2-beta。
为此存储库添加了Docker支持,预构建并包含所有包和依赖项。(仅限linux)
增加了张量板支持,允许更方便的研究方式。(仅限linux)
| 型号| 培训数据| 测试数据| mAP | 注意| |:-----------------:|:----------------:|:--------- :|:----:| ----- | | VGG16_reduced 300x300 | VOC07 + 12 trainval | VOC07测试| 77.8 | 快| | VGG16_reduced 512x512 | VOC07 + 12 trainval | VOC07测试| 79.9 | 慢| | Inception-v3 512x512 | VOC07 + 12 trainval | VOC07测试| 78.9 | 最快的 | Resnet-50 512x512 | VOC07 + 12 trainval | VOC07测试| 79.1 | 快| | MobileNet 512x512 | VOC07 + 12 trainval | VOC07测试| 72.5 | 超快| | MobileNet 608x608 | VOC07 + 12 trainval | VOC07测试| 74.7 | 超快|
更多内容
| 型号| GPU | CUDNN | 批量大小| FPS * | |:---------------------:|:----------------:| ----- :|:----------:|:----:| | VGG16_reduced 300x300 | TITAN X(麦克斯韦尔)| v5.1 | 16 | 95 | | VGG16_reduced 300x300 | TITAN X(麦克斯韦尔)| v5.1 | 8 | 95 | | VGG16_reduced 300x300 | TITAN X(麦克斯韦尔)| v5.1 | 1 | 64 | | VGG16_reduced 300x300 | TITAN X(麦克斯韦尔)| N / A | 8 | 36 | | VGG16_reduced 300x300 | TITAN X(麦克斯韦尔)| N / A | 1 | 28 |
仅限转发时间,不包括数据加载和绘图。
选项#1 - 使用'Docker'安装。如果您不熟悉这项技术,下面有一个“Docker”部分。你可以得到最新的图像:
docker pull daviddocker78:mxnet-ssd:gpu_0.12.0_cuda9
您将需要Python模块:cv2
,matplotlib
和numpy
。如果你使用mxnet-python api,你可能已经有了它们。您可以通过pip或package manegers安装它们,例如apt-get
:
sudo apt-get install python-opencv python-matplotlib python-numpy
克隆这个回购:
# if you don't have git, install it via apt or homebrew/yum based on your systemsudo apt-get install git# cd where you would like to clone this repocd ~git clone --recursive https://github.com/zhreshold/mxnet-ssd.git# make sure you clone this with --recursive# if not done correctly or you are using downloaded repo, pull them all via:# git submodule update --recursive --initcd mxnet-ssd/mxnet
(如果安装了官方MXNet,请跳过此步骤。)构建MXNet : cd /path/to/mxnet-ssd/mxnet
. 按照此处的官方说明操作。
# for Ubuntu/Debiancp make/config.mk ./config.mk# modify it if necessary
如果您希望能够训练,请记住启用CUDA,因为CPU训练非常慢。使用CUDNN是可选的,但强烈推荐。
下载预训练模型:ssd_resnet50_0712.zip
,并解压缩到model/
目录。
跑
# cd /path/to/mxnet-ssdpython demo.py --gpu 0# play with examples:python demo.py --epoch 0 --images ./data/demo/dog.jpg --thresh 0.5python demo.py --cpu --network resnet50 --data-shape 512# wait for library to load for the first time
检查python demo.py --help
更多选项。
此示例仅涵盖Pascal VOC数据集的培训。通过添加从类派生的子类Imdb
,可以轻松支持其他数据集dataset/imdb.py
。有关dataset/pascal_voc.py
详细信息,请参阅示例 *在此处下载已转换的预训练vgg16_reduced
模型,默认情况下解压缩并将文件存入目录。*下载PASCAL VOC数据集,如果已有,请跳过此步骤。.param
.json
model/
cd /path/to/where_you_store_datasets/wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar# Extract the data.tar -xvf VOCtrainval_11-May-2012.tartar -xvf VOCtrainval_06-Nov-2007.tartar -xvf VOCtest_06-Nov-2007.tar
我们将trainval
在VOC2007 / 2012中使用set作为一种常见策略。建议的目录结构是存储VOC2007
和VOC2012
目录在同一VOCdevkit
文件夹中。
然后默认链接VOCdevkit
文件夹data/VOCdevkit
:
ln -s /path/to/VOCdevkit /path/to/this_example/data/VOCdevkit
使用硬链接而不是复制可以节省我们一点磁盘空间。*创建压缩二进制文件以加快培训:
# cd /path/to/mxnet-ssdbash tools/prepare_pascal.sh# or if you are using windowspython tools/prepare_dataset.py --dataset pascal --year 2007,2012 --set trainval --target ./data/train.lstpython tools/prepare_dataset.py --dataset pascal --year 2007 --set test --target ./data/val.lst --shuffle False
开始培训:
python train.py
默认情况下,此示例将使用batch-size=32
和learning_rate=0.004
。如果您有不同的配置,则可能需要稍微更改一下参数。检查python train.py --help
更多培训选项。例如,如果您有4个GPU,请使用:
# note that a perfect training parameter set is yet to be discovered for multi-gpupython train.py --gpus 0,1,2,3 --batch-size 128 --lr 0.001
内存使用情况:MXNet的内存效率非常高,VGG16_reduced
使用batch-size
32的模型训练大约需要4684MB而没有CUDNN(conv1_x和conv2_x已修复)。
使用:
# cd /path/to/mxnet-ssdpython evaluate.py --gpus 0,1 --batch-size 128 --epoch 0
这只是删除所有损耗图层,并附加一个图层以合并结果和非最大抑制。加载python符号时不可用。
# cd /path/to/mxnet-ssdpython deploy.py --num-class 20# then you can run demo with new model without loading python symbolpython demo.py --prefix model/ssd_300_deploy --epoch 0 --deploy
来自caffe的转换器可在 /path/to/mxnet-ssd/tools/caffe_converter
这经过特别修改,可以处理caffe-ssd中的自定义图层。用法:
cd /path/to/mxnet-ssd/tools/caffe_convertermakepython convert_model.py deploy.prototxt name_of_pretrained_caffe_model.caffemodel ssd_converted# you will use this model in deploy mode without loading from python symbolpython demo.py --prefix ssd_converted --epoch 1 --deploy
无法保证转换始终有效,但至少它现在很好。
由于引入了用于组成网络的新接口,因此旧模型具有不一致的权重名称。您仍然可以通过重命名符号来加载以前的模型,legacy_xxx.py
并使用以下方法调用python train/demo.py --network legacy_xxx
:例如:
python demo.py --network 'legacy_vgg16_ssd_300.py' --prefix model/ssd_300 --epoch 0
首先确保已安装docker。docker插件 nvidia-docker需要在Nvidia GPU上运行。
可以在https://hub.docker.com/r/daviddocker78/mxnet-ssd/上获得预先构建的泊坞窗图像以下载预先构建的图像,运行:
docker pull daviddocker78/mxnet-ssd:gpu_0.12.0_cuda9
否则,如果您希望自己构建它,那么您可以在“docker”文件夹下的repo中使用Dockerfiles。*运行容器实例:
nvidia-docker run -it --rm myImageName:tag
现在,如果您在自己的计算机上安装mxnet,则可以按照相同的方式执行命令。有关更多信息,请参阅指南。
为了向mxnet提供张量板,已经做了一些很大的努力。如果您选择使用泊坞窗,请将其安装在已下载的预制图像中。否则,请按照此处的安装步骤操作。
要在训练时保存训练损失图,每类验证AP以及验证ROC图到张量板,您可以指定:
python train.py --gpus 0,1,2,3 --batch-size 128 --lr 0.001 --tensorboard True
要同时保存图层的分布(实际上,它们的方差),您可以指定:
python train.py --gpus 0,1,2,3 --batch-size 128 --lr 0.001 --tensorboard True --monitor 40
使用Docker进行可视化:tensorboard的UI随着时间的推移而发生了变化。要获得最佳体验,请下载新的tensorflow docker-image:
# download the built image from Dockerhubdocker pull tensorflow/tensorflow:1.4.0-devel-gpu# run a container and open a port using '-p' flag. # attach a volume from where you stored your logs, to a directory inside the containernvidia-docker run -it --rm -p 0.0.0.0:6006:6006 -v /my/full/experiment/path:/res tensorflow/tensorflow:1.4.0-devel-gpucd /restensorboard --logdir=.
要启动没有泊坞窗的张量板,只需运行最后一个命令现在tensorboard正在加载实验的tensorEvents。在'0.0.0.0:6006'下打开您的浏览器,您将有张量板!
还没有评论,说两句吧!
热门资源
Keras-ResNeXt
Keras ResNeXt Implementation of ResNeXt models...
seetafaceJNI
项目介绍 基于中科院seetaface2进行封装的JAVA...
spark-corenlp
This package wraps Stanford CoreNLP annotators ...
capsnet-with-caps...
CapsNet with capsule-wise convolution Project ...
inferno-boilerplate
This is a very basic boilerplate example for pe...
智能在线
400-630-6780
聆听.建议反馈
E-mail: support@tusaishared.com