Caffe中的标签作为图像

时间:2015-11-13 05:53:32

标签: neural-network convolution deep-learning caffe conv-neural-network

我是Caffe的新手。我正在尝试为语义分割实现完全卷积神经网络(FCN-8s)。我有图像数据和标签数据,它们都是图像。这是用于按像素预测的。

我尝试使用ImageData作为数据类型,但它要求输入整数标签,这不适用于此方案。请建议如何给Caffe一个2D标签。我应该更喜欢LMDB而不是ImageData吗?如果是这样,我该怎么办?对于像这样的情况,我找不到任何好的教程/文档。

1 个答案:

答案 0 :(得分:5)

由于您需要实现像素方式预测,因此您不能将单个标签用作基础事实。相反,你应该使用标签的地面真实矩阵。

其中一位Caffe家伙编写了一个代码片段,用于创建包含图像数据的LMDB,请参阅here

import caffe
import lmdb
from PIL import Image

in_db = lmdb.open('image-lmdb', map_size=int(1e12))
with in_db.begin(write=True) as in_txn:
    for in_idx, in_ in enumerate(inputs):
        # load image:
        # - as np.uint8 {0, ..., 255}
        # - in BGR (switch from RGB)
        # - in Channel x Height x Width order (switch from H x W x C)
        im = np.array(Image.open(in_)) # or load whatever ndarray you need
        im = im[:,:,::-1]
        im = im.transpose((2,0,1))
        im_dat = caffe.io.array_to_datum(im)
        in_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString())
in_db.close()