аугментация обучающих данных в caffe вместе с мультилейблом

Как произвольно обрезать тренировочные изображения вместе с меткой их положения.

Я предварительно обрабатываю данные изображений и их метки для ввода кофе. Я хочу обрезать свои тренировочные изображения случайным образом онлайн (когда работает кафе), и я знаю, что кафе предоставляет случайный параметр обрезки в слое случайная обрезка. Проблема в том, что моя метка каждого соответствующего изображения изменяется при преобразовании изображения. Таким образом, я должен изменить свою метку вместе с преобразованным изображением. Пытаюсь долго искать свою проблему, но бесполезно. Потом я понял, что, возможно, есть два пути решения проблемы:

  1. получить смещение случайного кадрированного изображения на исходном изображении. Но я гуглил это без ответа об этом.
  2. Я укажу случайное смещение онлайн, затем обрежу изображение по определенному смещению смещение для обрезки. Но как я могу сгенерировать случайное число во время тренировки в кафе.
  3. Я знаю, что предварительная обработка случайного кадрированного изображения и его метки в автономном режиме может быть работоспособным методом. Однако это займет значительное место на диске, так как мой набор данных для обучения слишком велик.

метка, соответствующая моей позиции: я разделяю каждое тренировочное изображение на 10x10=100 сетки. метка — это индекс сетки для конкретной ключевой точки изображения. например, метка будет 11, когда ключевая точка моей головы находится в позиции <2th row, 1th col> сетки изображения.


person farever    schedule 03.01.2017    source источник
comment
и я также знаю, что проблема может быть решена с помощью Caffe Python Layer. Но кажется, что время обучения будет долгим, когда я использую Python Layer в prototxt как уже упоминалось. Если нужно использовать этот API, то как его использовать в данном конкретном вопросе?   -  person farever    schedule 03.01.2017


Ответы (1)


Вы можете использовать для этой задачи слой "Python", поскольку вы уже указано (и я полагаю, что это самый простой способ).
Если вас это беспокоит со временем работы этого слоя вы можете сделать его многопоточным: пусть слой вызывает несколько потоков для обрезки изображений и повторного вычисления их меток. Эти потоки будут работать в фоновом режиме и должны быть в состоянии вовремя предоставить сети достаточно данных для следующего мини-пакета.

См. модуль python threading для класса Thread. Вам также может быть удобно использовать класс Queue для синхронизации потоков и Основной входной слой.

person Shai    schedule 04.01.2017
comment
хорошо, я попробую это сегодня вечером. кстати, как я могу проверить, работает ли мой собственный слой Python или нет. Другими словами, могу ли я распечатать свою структуру данных после моего слоя Python? - person farever; 04.01.2017
comment
@farever, ты должен написать тест для своего слоя. - person Shai; 04.01.2017