Mxnet(3)-SSD训练自己的数据

整个ssd的安装和训练可以按照官方的例子。

需要注意的是需要编译ssd相关的代码,可以通过两种方式进行:

  1. 直接把ssd目录下的operator中的文件复制到src/operator,然后再编译
  2. 设置config.mk,把EXTRA_OPERATORS改成EXTRA_OPERATORS = example/ssd/operator,然后再进行编译。

接着便是运行demo,看能否正确运行,运行前需要下载相关的model和dataset。并且放在正确的位置。

下面是制作自己的数据集进行训练:

  • 数据集制作
  • 修改训练相关文件
  • 训练和测试

    1.数据集的制作可以参考这篇文章。结束之后可以把数据替换掉VOC2007里面的相应数据。
    2.修改训练相关的文件,需要修改的参数无非是数据的类别数量和标签名。

  • dataset/pascal_voc.py(在最新版本0.12.1,classes 修改在文件夹dataset/name)
  • demo.py(模型训练结束后用到)

    这里写图片描述

这里写图片描述

3.训练和测试

# cd /path/to/mxnet/example/ssd
python train.py
#python train.py --year 2007 

测试

# play with examples:
python demo.py --epoch 0 --images ./data/demo/yourImageName.jpg --thresh 0.5

可能会遇到的问题:

AttributeError: 'module' object has no attribute 'MultiBoxPrior' #20
#是否编译好ssd,路径是否配置正确

运行demo.py出现以下错误

/ndarray.cc:231: Check failed: from.shape() == to->shape() operands shape mismatch
Traceback (most recent call last):
File "demo.py", line 95, in
ctx, args.nms_thresh, args.force_nms)
File "demo.py", line 41, in get_detector
data_shape, mean_pixels, ctx=ctx)
File "/home/ubuntu/mxnet/example/ssd_LPR/detect/detector.py", line 39, in init
self.mod.set_params(args, auxs)
File "/home/ubuntu/mxnet/python/mxnet/module/base_module.py", line 503, in set_params
allow_missing=allow_missing, force_init=force_init)
File "/home/ubuntu/mxnet/python/mxnet/module/module.py", line 198, in init_params
_impl(name, arr, arg_params)
File "/home/ubuntu/mxnet/python/mxnet/module/module.py", line 188, in _impl
cache_arr.copyto(arr)
File "/home/ubuntu/mxnet/python/mxnet/ndarray.py", line 533, in copyto
return _internal._copyto(self, out=other)
File "/home/ubuntu/mxnet/python/mxnet/ndarray.py", line 1225, in unary_ndarray_function
c_array(ctypes.c_char_p, [c_str(str(i)) for i in kwargs.values()])))
File "/home/ubuntu/mxnet/python/mxnet/base.py", line 77, in check_call
raise MXNetError(py_str(_LIB.MXGetLastError()))
mxnet.base.MXNetError: [15:02:26] src/ndarray/ndarray.cc:231: Check failed: from.shape() == to->shape() operands shape mismatch

#参考[解决方法](https://github.com/zhreshold/mxnet-ssd/issues/33)

#有可能是类别为1的时候CLASSE=(‘label1’),正确为CLASSE=(‘label1’,)

参考文献:

[1] https://github.com/dmlc/mxnet/tree/master/example/ssd
[2] http://blog.csdn.net/yiweibian/article/details/54847882
[3] https://github.com/zhreshold/mxnet-ssd/issues/33
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值