【问题标题】:Generating lmdb files for object detection in Caffe在 Caffe 中生成用于对象检测的 lmdb 文件
【发布时间】:2020-01-12 04:46:16
【问题描述】:

我正在尝试在 Caffe 中从头开始训练基于 SSD 的人脸检测器。我有一个图像数据集,其中人脸的边界框存储在 csv 文件中。到目前为止,在我遇到的所有教程和代码中,convert_annoset 工具用于生成用于对象检测的 lmdb 文件。然而,在 Github (https://github.com/BVLC/caffe) 上的最新 Caffe 版本中,该工具已被删除。

我看到处理这个问题的两个选项是:

  1. 使用当前 Caffe 库中的函数重写 convert_annoset 工具

  2. 使用其他 python 包(如 lmdb 和 OpenCV)从图像和边界框信息手动创建 lmdb 文件

我一直在尝试重写代码,但在原始代码中找不到某些类和函数,例如 AnnotatedDatum_AnnotationTypeLabelMap当前版本。

对于如何继续为对象检测问题创建 lmdb 有什么建议吗?

编辑: 我刚刚意识到 AnnotatedData 层不再存在于 Caffe 的主分支中。这是否意味着在这个版本中无法检测?我是否必须使用一些较旧的 fork,例如 https://github.com/weiliu89/caffe 进行检测,还是有其他选择?

【问题讨论】:

    标签: python caffe object-detection face-detection lmdb


    【解决方案1】:

    由于原来的Caffe没有物体检测层(mobilenet-ssd)

    所以使用这个 Caffe (https://github.com/weiliu89/caffe) ssd 分支

    这个 Caffe 有一个可以生成 lmdb 的 convert_annoset。

    【讨论】:

    • 我已经这样做了,但是我在训练中遇到了错误。我按照此处 (github.com/opencv/opencv/blob/master/samples/dnn/face_detector/…) 的步骤创建了一个 LMDB。这是我得到的错误:multibox_loss_layer.cpp:139 Check failed: num_priors_ * loc_classes_ * 4 == bottom[0]->channels() (35312 vs. 35056) Number of priors must match number of location predictions。关于如何解决这个问题的任何想法?我怀疑这与 LMDB 的创建方式有关?
    • 我认为问题是由于试图检测图片中太小的物体造成的。
    • 这发生在训练期间,而不是检测期间。如果设置了 resize_height 和 resize_width,convert_annoset 不会调整图像大小吗?
    • 看起来像在caffe/util/io.cpp的第113行:cv::resize(cv_img_origin, cv_img, cv::Size(width, height));所以我不明白检测到的对象的大小是如何影响训练的。有什么建议吗?
    • 我的意思是图片不小,图片中的物体很小。
    猜你喜欢
    • 2016-02-11
    • 2016-10-30
    • 1970-01-01
    • 2018-01-07
    • 2016-03-24
    • 2017-08-26
    • 2019-06-10
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多