如何使用caffe convnet检测面部表情?
我有一个图像数据集,Cohn Kanade,我想用这个数据集训练caffe convnet。 Caffe有一个文档站点,但它没有解释如何训练我自己的数据。只需预先训练好的数据。
有人可以教我怎么做吗?
答案 0 :(得分:1)
Caffe支持输入数据的多种格式(HDF5 / lmdb / leveldb)。这只是挑选一个你觉得最舒服的问题。以下是几个选项:
convert_imageset
是您从构建caffe获得的命令行工具之一。
用法如下:
你需要写一个文本文件,其中每一行以图像的文件名开头,后跟一个标量标签(例如0,1,2,......)
Datum
课程在python中构建您的lmdb: 这需要构建caffe的python接口。在这里编写一些python代码:
numpy
数组中。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 +数据集中灰度强度的平均值。