如何使用caffe convnet库来检测面部表情?

时间:2015-09-29 14:24:10

标签: image-processing neural-network caffe conv-neural-network

如何使用caffe convnet检测面部表情?

我有一个图像数据集,Cohn Kanade,我想用这个数据集训练caffe convnet。 Caffe有一个文档站点,但它没有解释如何训练我自己的数据。只需预先训练好的数据。

有人可以教我怎么做吗?

1 个答案:

答案 0 :(得分:1)

Caffe支持输入数据的多种格式(HDF5 / lmdb / leveldb)。这只是挑选一个你觉得最舒服的问题。以下是几个选项:

  1. CAFFE /建造/工具/ convert_imageset:
  2. convert_imageset是您从构建caffe获得的命令行工具之一。

    用法如下:

    • 指定文本文件中的图像和标签对列表。每对1排。
    • 指定图像的位置。
    • 选择后端数据库(格式)。默认是lmdb,应该没问题。

    你需要写一个文本文件,其中每一行以图像的文件名开头,后跟一个标量标签(例如0,1,2,......)

    1. 使用Caffe的Datum课程在python中构建您的lmdb:
    2. 这需要构建caffe的python接口。在这里编写一些python代码:

      • 遍历图像列表
      • 将图片加载到numpy数组中。
      • 构造一个caffe Datum对象
      • 将图像数据分配给Datum对象。
      • Datum类有一个名为label的成员,您可以从CK数据集中将其设置为AU类,如果这是您希望网络分类的。
      • Datum对象写入数据库并继续下一个图像。

      Here's Gustav Larsson在博客文章中将图片转换为lmdb的代码片段。在他的例子中,他为图像分类构建了一个lmdb的图像和标签对。

      将lmdb加载到您的网络中:

      这与LeNet示例完全相同。此数据层位于描述LeNet模型的网络原型文本的开头。

      layer {
        name: "mnist"
        type: "Data"
        top: "data"
        top: "label"
        include {
          phase: TRAIN
        }
        transform_param {
          scale: 0.00390625
        }
        data_param {
          source: "examples/mnist/mnist_train_lmdb"
          batch_size: 64
          backend: LMDB
        }
      }
      

      源字段是将caffe指向刚刚创建的lmdb的位置。

      与性能更相关并且对于使其工作并不重要的一点是指定如何规范化输入要素。这是通过transform_param字段完成的。 CK +具有固定大小的图像,因此无需调整大小。但您需要做的一件事是将灰度值标准化。你可以通过平均减法来做到这一点。这样做的一个简单方法是将transform_param:scale的值替换为CK +数据集中灰度强度的平均值。