Reputation: 815
I need to classify images into one of 2000 classes.
I am using the Nvidia DIGITS + caffe (GoogLeNet) and provided 10K samples per class (so a whopping 20 million images, ~1Tb data!). But the data prep ("create db") task itself is being estimated to be 102 days and I shudder to think what the actual training time will be if that estimate is correct.
What is the best way to approach this challenge? should I break up dataset into 3-4 models? and use them separately? Use a smaller dataset and risk less accuracy? something else?
Thanks for helping out a newbie.
Upvotes: 2
Views: 324
Reputation: 1575
First, you need to know what scenario you should use LMDB/LevelDB and what benefit do you get(especially, training in parallel.) But what things you will encounter is that creating LMDB is large and slow, and you also need to use SSD instead of HDD to decrease time-consuming problem.
Second, when you only need to train CNN with small datasets (e.g < 2M images), you can just use ImageDataLayer same as @kli_nlpr said.
Finally, just like @Shai said, the most challenge of all process always is preparing data, and check training whether the outcome is what you expected, if it is not you should check data, preparing data again or check training configuration. If you tried all possible solutions, however you still feel slow, and you can tried to change your hardware as GPU cluster.
Upvotes: 0
Reputation: 114866
You got the training data!! This is the most challenging part of all the process, don't give up on it!
Try breaking the task of data creation into steps, and parrallelize them. Training will take long (depending on your GPU) but you should be patient.
Upvotes: 2