了解mxnet.image.ImageDetIter

时间:2019-03-05 14:20:20

标签: python object-detection mxnet

我学习了MXNet框架,并尝试运行使用SSD进行对象检测的示例: https://gluon.mxnet.io/chapter08_computer-vision/object-detection.html

我使用的GPU是NVidia GTX 1050,用于训练的4GB。我在Jupyter笔记本电脑上工作。版本:Python 3.6,MXNet 1.3.1

在本教程中说过,使用一个GPU从头开始训练大约需要30分钟。 3小时后我停了下来。当我中断训练时,该模型已处理了24459批次(批次大小为32)。整个数据集的大小为87.7MB,小于24459 * 32 * 256 * 256(图片大小为256x256)。我不明白为什么可能要花太多时间。可能有image.ImageDetIter的任何特定功能(例如,它永远不会自行停止)吗?

1 个答案:

答案 0 :(得分:0)

感谢您提供版本信息。您是完全正确的-MXNet 1.3.0中存在一个错误,其中ImageDetIter在您所拥有的示例中无限期地循环播放。此问题已得到Dec 2018的修复,如果升级到MXNet 1.4.0,将不会看到此问题。我通过运行上面的代码确认了这一点。

不建议使用“深度学习-浓汤”作为另一个重要说明,而建议使用“深入学习”(d2l.ai)。内容已更新并用于MXNet上的课程。 / strong>这是本书中相应的chapter

此外,如果您想观看课程中的视频,请here发布。

对于repro,我跑来确认这是在1.3.x中无限循环并在1.4.0中已修复。

train_iter = image.ImageDetIter(
        batch_size=1000, 
        data_shape=(3, data_shape, data_shape),
        path_imgrec='./data/pikachu_train.rec',
        path_imgidx='./data/pikachu_train.idx',
        #shuffle=True, 
        #mean=True,
        #rand_crop=1, 
        min_object_covered=0.95,
        last_batch_handle='pad',
        max_attempts=5)
train_iter.reset()
for i,data in enumerate(train_iter):    
    print((i+1)) # goes forever on 1.3.0 but not 1.4.0

希望有帮助,

Vishaal