Я пытаюсь внести некоторые изменения в Caffe, чтобы принять мои 16-битные данные.
Мне удалось создать набор данных lmdb, заполненный 16-битным беззнаковым, некодированным изображением 256x256 вместо обычных 8-битных беззнаковых данных caffe, сохраненных как " string », как и обычный 8-битный lmdb, который можно создать с помощью image_convert
или утилит DIGITS.
Я изменил io.py
функции array_to_datum
и datum_to_array
, чтобы создать этот lmdb с 16-битными« строковыми »данными. Теперь, если я использую этот lmdb в кафе (всего 4 класса), сети работают, но не сходятся. Я сильно подозреваю, что неправильно читает мои данные. Проблема в том, что io.py
функции array_to_blobproto
и blobproto_to_array
, похоже, не делают каких-либо различий между внутренним содержимым данных, и я не могу найти код, в котором мне нужно изменить для работы с 16-битными.
Может ли кто-нибудь дать мне подсказку, где работать на?
Изменить: возиться с кодом, я думаю, что одна из возможностей должно заключаться в создании нового уровня данных или нового слоя данных изображения, если я хочу работать непосредственно с png без прохождения lmdb. Но попытка изменить этот код C ++ для меня - нетривиальная задача, особенно. Я не могу легко следить за потоком данных внутри кода. Я вижу, что новый слой можно написать на питоне. Как вы думаете, новый уровень входных данных мог бы работать нормально или замедлил бы производительность cnn?