Ошибка с tiny-dnn для распознавания пешеходов

Я работаю над системой безопасности, и мне нужно классифицировать, вызваны ли обнаруженные движения людьми или чем-то еще, например, слабым ветром…

Для этого я изначально использовал MLP с ключевыми точками, но затем я решил переключиться на сверточную нейронную сеть, поэтому я попытался использовать Крошечный-DNN библиотека для C ++, но всегда с плохими результатами.

Вот сеть:

net << conv<relu>(80,240,1,1,56)            // conv1 0
<< max_pooling_layer<relu>(80,240,56,2) // max1 1
<< conv<tan_h>(40,120,1,56,64)          // conv2 2
<< max_pooling_layer<relu>(40,120,64,2) // max2 3
<< conv<tan_h>(20,60,1,64,72)           // conv3 4
<< max_pooling_layer<relu>(20,60,72,2)  // max3 5
<< conv<tan_h>(10,30,1,72,55)           // conv4 6
<< max_pooling_layer<relu>(10,30,55,2)  // max4 7
<< conv<tan_h>(5,15,1,55,27)            // conv5 8
<< fc<identity>(2025,333)               // fc1 9
<< fc<tan_h>(333,90)                    // fc2 10
<< dropout_layer(90,0.5)                // dropout 11
<< fc<softmax>(90,out);                 // fc3 12

Для обучения я использую 1200 изображений с людьми и 1200 со случайными частями фона (я случайно перетасовал набор данных), я попытался изменить оптимизатор, скорость обучения и размер партии, но когда я тестирую его с 500 позитивными изображениями и 500 негативными изображениями, я всегда получаю в результате только один класс с немного отличающейся достоверностью для каждого изображения. В чем может быть проблема?

3

Решение

В общем, количество картинок вы используете для обучения DNN с нуля кажется очень маленьким. Для этой цели вам следует подумать о десятикратном увеличении.

Альтернатива состоит в том, чтобы использовать тот же подход, что и у быстро обучающихся классификационных служб, таких как vize.it, а именно предварительная подготовка вашей нейронной сети с существующей моделью из модельный зоопарк и просто настроить его для вашей задачи; с помощью наивного приложения вы, вероятно, не получите столь же хороших результатов, как существующие сервисы, но оно должно помочь вам начать работу.

Но сначала вы должны сделать несколько простых проверок работоспособности, чтобы убедиться, что вы не совершаете еще более элементарной ошибки:

  • Используйте такие же изображения для обучения и тестирования. Из вашего вопроса не ясно, просто ли вы случайно разбили свои данные или используете изображения из разных источников — если последний, действительно ли изображения выглядят одинаково?

  • Может ли ваша сеть перегрузиться? Что если вы спросите об изображениях, которые вы использовали для обучения? Вы должны получить более четкие прогнозы для них — если так, то приведенный выше совет определенно применим.

  • Может ли ваша сеть справиться с простой задачей? Попробуйте передать ему изображения намного меньшего размера, скажем, всего 2 или 10. Может ли ваша сеть распознать эти изображения обратно? Если вам все еще не повезло, возможно, у вас возникла проблема с обработкой данных или вы допустили ошибку в вашей платформе. Если это работает, пришло время настроить параметры оптимизации еще немного.

Удачи!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]