Библиотека Caffe: как определить несколько меток в .prototxt - PullRequest
0 голосов
/ 08 ноября 2019

У меня проблемы с определением источников входного сигнала с несколькими метками для обучения сети в caffe, я не могу понять, как определить источники входного сигнала.

Я модифицирую caffenet для получения нескольких меток имногократная оптимизация потерь и точности.

Подробно:

У меня есть один файл меток, в котором есть несколько label_weather.txt, например:

  1. 0.jpg 0
  2. 1.jpg 3
  3. 2.jpg 1
  4. 3.jpg 0
  5. 4.jpg 2
  6. ...

Кроме того, у меня есть еще один файл (label_day_night.txt), содержащий такую ​​информацию, как

  1. 0.jpg 0
  2. 1.jpg 1
  3. 2.jpg 0
  4. 3.jpg 0
  5. 4.jpg 1
  6. ...

Мои проблемы:

  1. Как я могу создать базу данных LMDB, которая будет принимать входные данные от обеих меток данных
  2. Как добавить несколько источников ввода данных
  3. Существует лучший способ решенияэто проблема?

Вот первая часть моегоФайл .prototxt (в этой части есть ошибки):

# My problem is: I don't know how to create LMDB library, and how to create input data layers on prototxt file
name: "Caffenet"

layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label-weather"
  data_param {
    source: "/home/diego/Code/dayweatherDeepLearning/Folds/lmdb/Test_fold_is_0/weather_train_lmdb/"
    backend: LMDB
    batch_size: 50
  }
  transform_param {
    crop_size: 227
    mean_file: "/home/diego/Code/dayweatherDeepLearning/Folds/mean/Test_fold_is_0/mean.binaryproto"
    mirror: true
  }
  include: { phase: TRAIN }
}
layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label-weather"
  data_param {
    source:  "/home/diego/Code/dayweatherDeepLearning/Folds/lmdb/Test_fold_is_0/weather_val_lmdb"
    backend: LMDB
    batch_size: 50
  }
  transform_param {
    crop_size: 227
    mean_file: "/home/diego/Code/dayweatherDeepLearning/Folds/mean/Test_fold_is_0/mean.binaryproto"
    mirror: false
  }
  include: { phase: TEST }
}

layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label-day"
  data_param {
    source: "/home/diego/Code/dayweatherDeepLearning/Folds/lmdb/Test_fold_is_0/day_train_lmdb/"
    backend: LMDB
    batch_size: 50
  }
  transform_param {
    crop_size: 227
    mean_file: "/home/diego/Code/dayweatherDeepLearning/Folds/mean/Test_fold_is_0/mean.binaryproto"
    mirror: true
  }
  include: { phase: TRAIN }
}
layers {
  name: "data"
  type: DATA
  top: "data"
  top: "label-day"
  data_param {
    source:  "/home/diego/Code/dayweatherDeepLearning/Folds/lmdb/Test_fold_is_0/day_val_lmdb"
    backend: LMDB
    batch_size: 50
  }
  transform_param {
    crop_size: 227
    mean_file: "/home/diego/Code/dayweatherDeepLearning/Folds/mean/Test_fold_is_0/mean.binaryproto"
    mirror: false
  }
  include: { phase: TEST }
}

Далее у меня многократная потеря на train_val_test.prototxt, вот конец файла (определения точности и потери):

...
#First layers here
# accuracy and loss layers:
layers {
  name: "accuracy-weather"
  type: ACCURACY
  bottom: "fc8-weather"
  bottom: "label-weather"
  top: "accuracy-weather"
  include: { phase: TEST }
}
layers {
  name: "loss-weather"
  type: SOFTMAX_LOSS
  bottom: "fc8-weather"
  bottom: "label-weather"
  top: "loss-weather"
}

layers {
  name: "accuracy-day"
  type: ACCURACY
  bottom: "fc8-day"
  bottom: "label-day"
  top: "accuracy-day"
  include: { phase: TEST }
}
layers {
  name: "loss-day"
  type: SOFTMAX_LOSS
  bottom: "fc8-day"
  bottom: "label-day"
  top: "loss-day"
}
...