layer {
name: "pair_data"
type: "Data"
top: "pair_data"
include {
phase: TRAIN
}
transform_param {
scale: 0.00390625
}
data_param {
source: "../train_leveldb"
batch_size: 64
}
}
layer {
name: "dist"
type: "Data"
top: "dist"
include {
phase: TRAIN
}
data_param {
source: "../train_leveldb_label"
batch_size: 64
}
}
layer {
name: "slice_pair"
type: "Slice"
bottom: "pair_data"
top: "data"
top: "data_p"
slice_param {
slice_dim: 1
slice_point: 3
}
}
I0930 15:34:05.866102 30811 layer_factory.hpp:74] Creating layer pair_dataI0930 15:34:05.866116 30811 net.cpp:84] Creating Layer pair_dataI0930 15:34:05.866122 30811 net.cpp:338] pair_data -> pair_dataI0930 15:34:05.866132 30811 net.cpp:113] Setting up pair_dataI0930 15:34:05.991760 30811 db.cpp:20] Opened leveldb ../test_leveldb2I0930 15:34:05.992758 30811 data_layer.cpp:67] output data size: 64,6,120,160 <--- Two image vertically stacked together.I0930 15:34:06.022660 30811 net.cpp:120] Top shape: 64 6 120 160 (7372800) <---- TWO IMAGE VERTICALLY STACKED TOGETHERI0930 15:34:06.022702 30811 layer_factory.hpp:74] Creating layer distanceI0930 15:34:06.022733 30811 net.cpp:84] Creating Layer distanceI0930 15:34:06.022742 30811 net.cpp:338] distance -> distI0930 15:34:06.022757 30811 net.cpp:113] Setting up distanceI0930 15:34:06.145051 30811 db.cpp:20] Opened leveldb ../test_leveldb2_labelI0930 15:34:06.145248 30811 data_layer.cpp:67] output data size: 64,1,1,1 <----- FLOAT USED AS LABEL I0930 15:34:06.145292 30811 net.cpp:120] Top shape: 64 1 1 1 (64)I0930 15:34:06.145303 30811 layer_factory.hpp:74] Creating layer slice_pairI0930 15:34:06.145319 30811 net.cpp:84] Creating Layer slice_pairI0930 15:34:06.145341 30811 net.cpp:380] slice_pair <- pair_dataI0930 15:34:06.145352 30811 net.cpp:338] slice_pair -> dataI0930 15:34:06.145365 30811 net.cpp:338] slice_pair -> data_pI0930 15:34:06.145375 30811 net.cpp:113] Setting up slice_pairI0930 15:34:06.145385 30811 net.cpp:120] Top shape: 64 3 120 160 (3686400) <--- FIRST IMAGE AFTER SLICEI0930 15:34:06.145393 30811 net.cpp:120] Top shape: 64 3 120 160 (3686400) <--- SECOND IMAGE AFTER SLICEI0930 15:34:06.145401 30811 layer_factory.hpp:74] Creating layer conv1I0930 15:34:06.145414 30811 net.cpp:84] Creating Layer conv1I0930 15:34:06.145421 30811 net.cpp:380] conv1 <- dataI0930 15:34:06.145431 30811 net.cpp:338] conv1 -> conv1I0930 15:34:06.145440 30811 net.cpp:113] Setting up conv1
I0930 15:34:06.580920 30811 net.cpp:167] ip1 needs backward computation.I0930 15:34:06.580926 30811 net.cpp:167] pool2 needs backward computation.I0930 15:34:06.580932 30811 net.cpp:167] conv2 needs backward computation.I0930 15:34:06.580938 30811 net.cpp:167] pool1 needs backward computation.I0930 15:34:06.580945 30811 net.cpp:167] conv1 needs backward computation.I0930 15:34:06.580950 30811 net.cpp:169] slice_pair does not need backward computation.I0930 15:34:06.580956 30811 net.cpp:169] distance does not need backward computation.I0930 15:34:06.580962 30811 net.cpp:169] pair_data does not need backward computation.I0930 15:34:06.580968 30811 net.cpp:205] This network produces output lossI0930 15:34:06.580981 30811 net.cpp:447] Collecting Learning Rate and Weight Decay.I0930 15:34:06.580991 30811 net.cpp:217] Network initialization done.I0930 15:34:06.580996 30811 net.cpp:218] Memory required for data: 419001604I0930 15:34:06.581076 30811 solver.cpp:42] Solver scaffolding done.I0930 15:34:06.581123 30811 solver.cpp:222] Solving siamese_distI0930 15:34:06.581130 30811 solver.cpp:223] Learning Rate Policy: invI0930 15:34:06.581138 30811 solver.cpp:266] Iteration 0, Testing net (#0)F0930 15:34:06.599118 30828 data_transformer.cpp:137] Check failed: channels == datum_channels (6 vs. 1) *** Check failure stack trace: *** @ 0x7fd41509cdaa (unknown) @ 0x7fd41509cce4 (unknown) @ 0x7fd41509c6e6 (unknown) @ 0x7fd41509f687 (unknown) @ 0x7fd41540ce11 caffe::DataTransformer<>::Transform() @ 0x7fd41547dba8 caffe::DataLayer<>::InternalThreadEntry() @ 0x7fd40cdbda4a (unknown) @ 0x7fd40b9c8182 start_thread @ 0x7fd41468747d (unknown) @ (nil) (unknown)
leftimg = caffe.io.load_image(left) #load first image
rightimg= caffe.io.load_image(right) #load second image
leftimg = leftimg.transpose((2,0,1)) * 255
rightimg = rightimg.transpose((2,0,1)) * 255
image = np.vstack((leftimg, rightimg))
image = image.astype(np.uint8, copy = False)
#build image-data datum
datumData = caffe_pb2.Datum()
datumData.channels, datumData.height, datumData.width = image.shape
datumData.data = image.tostring()
#build label-data datum (float label)
datumlabel = caffe_pb2.Datum()
datumlabel.channels, datumlabel.height, datumlabel.width = (1,1,1)
datumlabel.float_data.extend(np.array([float(dist)]).flat) # dist is a float, measuring the distance of 2 image
#write to db
name = '%s_%s' % (path.basename(left), path.basename(right))
wb.put('%08d_%s' % (count, name), datumData.SerializeToString())
wblabel.put('%08d_%s' % (count, name), datumlabel.SerializeToString())