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

标签 deep-learning caffe object-detection leveldb lmdb

为图像创建数据库 (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

关于deep-learning - 如何在 caffe 中创建用于对象检测的数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42928955/

相关文章:

python - 重新训练 Tensorflow 的 Inception v3 模型时没有反向移植错误

opencv - 如何选择负样本? (OpenCV,目标检测)

machine-learning - 卷积 ImageNet 网络对于翻转图像具有不变性

opencv - 捕获机器可读区域的算法

python - Python OpenCV滑动窗口对象检测

python - 运行带有3GB RAM的python代码并使PC崩溃

neural-network - InfoGainLoss导致精度和损失为0

python - 如何将 CNN 中的 k 个 channel 用于 k 个 FC 层

deep-learning - 层的尺寸不是整数时是向上取整还是向下取整?

machine-learning - 如何通过Pycaffe获取图层的输出形状