Right now i am running the train mode of caffe.
I just want to use one synset of the
Imagenet 2012 Database ->
ChairsSo here is my workflow:
1. I downloaded the synset of
Chairs (1460 images)
2. I downloaded the
train data / validation data from Imagenet (50 000 Images)
3. I create an
lmdb for booth data sets including to resize the high and with of the images
a) for the synset of
Chairs with the included train.txt ( Syntax:
\n0300167_18182.JPEG 0 ) -> Thats an example row and i think "0" means "class 0 = chair", doesnt it?
b) for the
validation data with the included val.txt ( Syntax:
\ILSVRC20102_val_0050000.JPEG 355 ) -> Alos an example row and i think "355" means "class 355 = classXYZ" , doesnt it?
First Problem: The created lmdb is limited to 2gb -> Only 40.000 Images are in this lmdb -> I was not able to solve this problem so i continiued with this generated lmdb
4. Accourding to the
Caffe | ImageNet Tutorial you have to substract the image mean from every image (whatever that means). So i did that twice: once for the
train data lmdb and once
val data lmdb
-> Reuslt: train.binaryproto and val.binaryproto
5. Last but not least it is necessary to add the right paths to the train_val.prototxt which will be called from the solver.prototxt
-> Accourding to the
Caffe | ImageNet Tutrioal you have to add the path of the binaryproto file to the train_val.protoxt -
but which one? I choosed the
train.binaryproto file
After a littlebit of configuration of the batch_size (I am using a gtx960m (4gb memory) with cuda and i choosed:
batch size train: 50 + batch size val: 5) i was able to start the train prozess.
Right now it has 10.000 Iterations without an error
but i have always a loss of 0
I1214 13:42:39.345842 9068 solver.cpp:228] Iteration 9980, loss = 0
I1214 13:42:39.345842 9068 solver.cpp:244] Train net output #0: loss = 0 (* 1 = 0 loss)
Testing reslut after 10.000 Iterations:
I1214 13:42:50.959086 9068 solver.cpp:337] Iteration 10000, Testing net (#0)
I1214 13:43:10.901937 9068 solver.cpp:404] Test net output #0: accuracy = 0.0006
I1214 13:43:10.901937 9068 solver.cpp:404] Test net output #1: loss = 87.2837 (* 1 = 87.2837 loss)
Is that a normal "result" or should i stop the prozess? To keep in mind i have only one
"class" -> chairs
Cheers and thank you!
Bene