Caffe 人臉辨識

請問 
我用cifar10_quick_train_test 用訓練LFW資料庫(其中去除小於4張人臉的情況)
修改後的LFW資料庫為 607個人,訓練張數: 3871 測試張數 : 2800
訓練過程中loss率約在0.001 跟 0.002 左右,但是準確率只有 0.27
想請問 loss 跟 準確率之間的關係,以及要如何修改網路提高準確率
 
以下是 網路架構 跟solver
................................................................................
solver
net: "F:/caffe/LFW_funneled/cifar10_quick_train_test.prototxt"
test_iter: 70
test_interval: 490
base_lr: 0.001
momentum: 0.9
weight_decay: 0.004
lr_policy: "fixed"
display: 1
max_iter: 200000
snapshot: 2000
snapshot_format: HDF5
snapshot_prefix: "cifar10_quick"
solver_mode: GPU
...............................................................................................
net
name: "CIFAR10_quick"
layer {
  name: "cifar"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mean_file: "F:/caffe/LFW_funneled/mean.binaryproto"
  }
  data_param {
    source: "F:/caffe/LFW_funneled/TrainlevelDB"
    batch_size: 79
    backend: LEVELDB
  }
}
layer {
  name: "cifar"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    mean_file: "F:/caffe/LFW_funneled/mean.binaryproto"
  }
  data_param {
    source: "F:/caffe/LFW_funneled/TestlevelDB"
    batch_size: 40
    backend: LEVELDB
  }
}
 
....中間與cifar10_quick_train_test 相同
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool3"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 607
    weight_filler {
      type: "gaussian"
      std: 0.1
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "ip2"
  type: "InnerProduct"
  bottom: "ip1"
  top: "ip2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 607
    weight_filler {
      type: "gaussian"
      std: 0.1
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include {
    phase: TEST
  }
}
layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}
 
 
已邀请:

biometrics

赞同来自: Turing_Neumann caffe

你现在的TRAINING LOSS比较低,证明NETWORK可以OVERFIT这个数据库,但是TEST结果还是不理想,所以建议增加数据量。你应该做下DATA AUGMENTATION,目前你的数据量太少了。数据量太少,很多时候性能就上不去。LOSS本身和ACCURACY没有直接的关系,LOSS低不一定ACCURACY就高,因为你这个ACCURACY是VALIDATION SET上的。另外LOSS和ACCURACY的计算方法都不一样。
 
1. 增加数据量,而后再调参数
2. 选个TRAINED好的模型,再FINETUNE

Turing_Neumann

赞同来自:

同意楼上、
4000不到的训练样本对于607个分类来说感觉是不可能完成的任务。就好比给你6张图片让你去认清一个人一样,难!对于计算机更是,难上加难。
而且,cifar-10的数据特征和尺寸似乎不太适合做人脸识别吧~

要回复问题请先登录注册