如何在 caffe 中创建用于对象检测的数据集?

How can one create a dataset for object detection in caffe?

为图像创建数据库 (LMDB/LEVELDB) 在 caffe 中很简单。但是我们如何创建这样的对象检测数据集?
这个顺序是正确的方法吗?

  1. 将所有图像放在一个文件夹中
  2. 为每张图片创建一个与相应图片同名的文本文件*
  3. 将图像中每个对象的边界框坐标放在单独的行中

现在如何将这种结构转换为 lmdb?
我是否应该将所有 txt 文件转换为字节并将整个字节流保存为每个图像的一个标签?
caffe 是否能够自动从这种转换后的数据库中读取,或者我应该创建一个特定的层来读取和向网络提供所需的信息?

您需要创建一个自定义层来处理需要包含在 lmdb 文件中的额外数据,您可以看看已经在 caffe 中实现的 Fast-RCNN,它在本页:https://github.com/rbgirshick/py-faster-rcnn/tree/master/models/coco/VGG_CNN_M_1024/faster_rcnn_end2end.

通过查看 prototxt 文件上的输入层,您可以看到他们正在为输入使用自定义类型:

layer {
name: 'input-data'
type: 'Python'
top: 'data'
top: 'im_info'
top: 'gt_boxes'
python_param {
  module: 'roi_data_layer.layer'
  layer: 'RoIDataLayer'
  param_str: "'num_classes': 81"
 }

}

此外,您可以在此处查看此自定义图层的详细信息: https://github.com/rbgirshick/fast-rcnn/tree/master/lib/roi_data_layer