Различные результаты в классификаторе изображений с использованием JPG BMP - PullRequest
0 голосов
/ 27 июня 2018

Я обучил Классификатор изображений с помощью Tensforflow, используя несколько изображений JPG. Допустим, у меня есть 3 классификатора, ClassifierA, ClassifierB, ClassifierC.

При тестировании классификаторов у меня вообще нет проблем с 90% изображений, которые я использую в качестве теста. Но в некоторых случаях у меня есть неправильная классификация из-за качества изображения.

Например, изображение ниже такое же, сохраненное как BMP и JPG. Вы увидите небольшие различия из-за качества формата.

Когда я тестирую версию BMP с использованием tf.image.decode_bmp, я получаю неправильную классификацию, скажем, ClassifierA 70%

Когда я тестирую версию JPG с помощью tf.image.decode_jpeg, я получаю правильную версию ClassifierB 90%

Когда я тестирую версию JPG, используя tf.image.decode_jpeg и dct_method = "INTEGER_ACCURATE", я получаю правильную версию с гораздо лучшим результатом, ClassifierB 99%

В чем может быть проблема здесь? Такая разница между BMP и JPG, и как я могу решить это, если есть решение?

Example

update1: я переобучил свой классификатор, используя различные эффекты и произвольно меняя качество, в котором я сохраняю изображения, которые я использую в качестве набора данных.

Теперь я получаю правильный вывод, но все равно проценты сильно меняются, например, 44% с BMP и + 90% с JPG

1 Ответ

0 голосов
/ 28 июня 2018

Это невероятный вопрос, и еще более невероятный из наблюдения. Я собираюсь использовать это в своей работе в будущем!

Полагаю, вы только что обнаружили довольно интересную проблему с набором данных. Похоже, что ваша модель подходит для функций, специфичных для сжатия JPG. Решение заключается в увеличении объема данных. В частности, произвольно конвертируйте ваши тренировочные образцы в различные форматы.

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

В случае, если ОП (или другие читающие это) не очень хорошо знакомы с тем, что такое «увеличение данных», я определю его. Распространено деформировать ваши тренировочные изображения различными способами, чтобы генерировать бесконечно уникальные изображения из вашего (в противном случае конечного) набора данных. Например, случайное перелистывание изображения влево / вправо является довольно простым, обычным делом и эффективно удваивает ваш набор данных. Изменение настроек контрастности и яркости еще больше изменит ваши изображения. Добавление этих и других преобразований дополнения данных в ваш конвейер создает гораздо более богатый набор данных и обучает сеть, которая более устойчива к этим распространенным изменениям изображений.

Важно, чтобы используемые вами методы дополнения данных приводили к реалистичным изменениям. Например, поворот изображения - это вполне реалистичная техника увеличения. Если ваш тренировочный образ - это кошка, стоящая горизонтально, вполне возможно, что будущая выборка может быть кошкой под углом 25 градусов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...