Caffe SSD - не правильно определяет объекты и их регион - PullRequest
0 голосов
/ 12 ноября 2018
  • Я успешно установил caffe и также тренировался с использованием кода https://github.com/jinfagang/kitti-ssd (Ubuntu 16.04 на графическом процессоре HP ZBook).
  • Данные обучения являются пользовательскими.
  • Используется модель предварительного обучения VGG_ILSVRC_16_layers_fc_reduced.caffemodel.
  • Обучающие / тестовые изображения имеют размер 390x85 пикселей.
  • Ни один из слоев (или их параметры) не изменен.
  • В данных обучения есть 4 класса и фон.

Используемое тестовое изображение содержит много экземпляров всех 4 классов. Тем не менее, только один экземпляр одного объекта сообщается как обнаруженный, и область, помеченная для этого одного экземпляра, также полностью неверна. В чем может быть проблема?

При запуске ssd_detection.py с тестовым изображением вывод будет таким, как показано ниже,

I1112 12:51:03.348510 32111 net.cpp:228] data_input_0_split does not need backward computation.
I1112 12:51:03.348517 32111 net.cpp:228] input does not need backward computation.
I1112 12:51:03.348522 32111 net.cpp:270] This network produces output detection_out
I1112 12:51:03.348646 32111 net.cpp:283] Network initialization done.
I1112 12:51:03.429973 32111 net.cpp:761] Ignoring source layer data
I1112 12:51:03.430003 32111 net.cpp:761] Ignoring source layer data_data_0_split
I1112 12:51:03.451812 32111 net.cpp:761] Ignoring source layer mbox_loss
('det_label', array([ 0.,  2.,  3.], dtype=float32))
('det_conf', array([ 0.01395105,  0.22787523,  0.35264885], dtype=float32))
('det_xmin', array([ 0.03907371,  0.03907371,  0.04352874], dtype=float32))
('det_ymin', array([ 0.00675291,  0.00675291, -0.01107538], dtype=float32))
('det_xmax', array([ 0.90650314,  0.90650314,  0.97594136], dtype=float32))
('det_ymax', array([ 0.99879855,  0.99879855,  1.01115906], dtype=float32))
('top_label', [u'ClassOne'])
('top_conf', array([ 0.35264885], dtype=float32))
('top_xmin', array([ 0.04352874], dtype=float32))
('top_ymin', array([-0.01107538], dtype=float32))
('top_xmax', array([ 0.97594136], dtype=float32))
('top_ymax', array([ 1.01115906], dtype=float32))

До этого результаты тренировок были такими, как показано ниже,

I1111 16:17:50.077024 11983 solver.cpp:433] Iteration 10000, Testing net (#0)
I1111 16:17:50.565294 11983 net.cpp:693] Ignoring source layer mbox_loss
I1111 16:17:55.557291 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.812299

I1111 18:17:17.951072 11983 solver.cpp:433] Iteration 20000, Testing net (#0)
I1111 18:17:17.951156 11983 net.cpp:693] Ignoring source layer mbox_loss
I1111 18:17:23.426437 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.929907

I1111 20:16:49.342038 11983 solver.cpp:433] Iteration 30000, Testing net (#0)
I1111 20:16:49.342106 11983 net.cpp:693] Ignoring source layer mbox_loss
I1111 20:16:54.752244 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.964289

I1111 22:16:04.755322 11983 solver.cpp:433] Iteration 40000, Testing net (#0)
I1111 22:16:04.755403 11983 net.cpp:693] Ignoring source layer mbox_loss
I1111 22:16:09.698204 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.982874

I1112 00:15:34.587620 11983 solver.cpp:433] Iteration 50000, Testing net (#0)
I1112 00:15:34.587697 11983 net.cpp:693] Ignoring source layer mbox_loss
I1112 00:15:40.006572 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.985054

I1112 02:14:48.204645 11983 solver.cpp:433] Iteration 60000, Testing net (#0)
I1112 02:14:48.204716 11983 net.cpp:693] Ignoring source layer mbox_loss
I1112 02:14:53.593613 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.991098

I1112 04:13:46.741845 11983 solver.cpp:433] Iteration 70000, Testing net (#0)
I1112 04:13:46.741911 11983 net.cpp:693] Ignoring source layer mbox_loss
I1112 04:13:52.129056 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.989667

I1112 06:12:22.674839 11983 solver.cpp:332] Iteration 80000, loss = 0.986391
I1112 06:12:22.674872 11983 solver.cpp:433] Iteration 80000, Testing net (#0)
I1112 06:12:22.674926 11983 net.cpp:693] Ignoring source layer mbox_loss
I1112 06:12:27.598580 11983 solver.cpp:546]     Test net output #0: detection_eval = 0.988433
...