Model for simple and small images

23 views
Skip to first unread message

Aleksander Kużel

unread,
Feb 11, 2017, 11:30:21 AM2/11/17
to Caffe Users
Hey guys, 

I have 100 thousand images divided into 100 classes. 
All images are low resolution (64 x 64). 
Images don't have a lot of details and colors, only black background and white circles (different number and sizes). 

Big models, like alexnet or bvlc_reference_caffenet aren't working with such images, models are just too big. 

So, I tried to create simple model 

name: "simple"
layer
{
  name
: "data"
  type
: "Data"
  top
: "data"
  top
: "label"
  include
{
    phase
: TRAIN
 
}
  transform_param
{
    mirror
: true
    mean_file
: "meanfile"
 
}
  data_param
{
    source
: "lmdb_train"
    batch_size
: 64
    backend
: LMDB
 
}
}
layer
{
  name
: "data"
  type
: "Data"
  top
: "data"
  top
: "label"
  include
{
    phase
: TEST
 
}
  transform_param
{
    mirror
: false
    mean_file
: "mean"
 
}
  data_param
{
    source
: "val_lmdb"
    batch_size
: 64
    backend
: LMDB
 
}
}
layer
{
  name
: "conv1"
  type
: "Convolution"
  bottom
: "data"
  top
: "conv1"
  param
{
    lr_mult
: 1
    decay_mult
: 1
 
}
  param
{
    lr_mult
: 2
    decay_mult
: 0
 
}
  convolution_param
{
    num_output
: 64
    kernel_size
: 3
    weight_filler
{
      type
: "gaussian"
      std
: 0.01
   
}
    bias_filler
{
      type
: "constant"
      value
: 0
   
}
 
}
}
layer
{
  name
: "relu1"
  type
: "ReLU"
  bottom
: "conv1"
  top
: "conv1"
}
layer
{
  name
: "conv2"
  type
: "Convolution"
  bottom
: "conv1"
  top
: "conv2"
  param
{
    lr_mult
: 1
    decay_mult
: 1
 
}
  param
{
    lr_mult
: 2
    decay_mult
: 0
 
}
  convolution_param
{
    num_output
: 128
    kernel_size
: 3
   
group: 2
    weight_filler
{
      type
: "gaussian"
      std
: 0.01
   
}
    bias_filler
{
      type
: "constant"
      value
: 0.1
   
}
 
}
}
layer
{
  name
: "relu7"
  type
: "ReLU"
  bottom
: "conv2"
  top
: "conv2"
}
layer
{
  name
: "pool2"
  type
: "Pooling"
  bottom
: "conv2"
  top
: "fc7"
  pooling_param
{
    pool
: MAX
    kernel_size
: 3
 
}
}
layer
{
  name
: "drop7"
  type
: "Dropout"
  bottom
: "fc7"
  top
: "fc7"
  dropout_param
{
    dropout_ratio
: 0.5
 
}
}
layer
{
  name
: "fc8"
  type
: "InnerProduct"
  bottom
: "fc7"
  top
: "fc8"
  param
{
    lr_mult
: 1
    decay_mult
: 1
 
}
  param
{
    lr_mult
: 2
    decay_mult
: 0
 
}
  inner_product_param
{
    num_output
: 100
    weight_filler
{
      type
: "gaussian"
      std
: 0.01
   
}
    bias_filler
{
      type
: "constant"
      value
: 0
   
}
 
}
}
layer
{
  name
: "accuracy"
  type
: "Accuracy"
  bottom
: "fc8"
  bottom
: "label"
  top
: "accuracy"
  include
{
    phase
: TEST
 
}
}
layer
{
  name
: "loss"
  type
: "SoftmaxWithLoss"
  bottom
: "fc8"
  bottom
: "label"
  top
: "loss"
}


However, I only got 4% accuracy (alexnet got 2%, so not bad)

I'm new to creating custom models, so I'd be grateful for your opinions, recommendations or hints :)

Thanks in advance! 

Aleksander Kużel

unread,
Feb 12, 2017, 4:18:32 PM2/12/17
to Caffe Users
up
Reply all
Reply to author
Forward
0 new messages