Неправильные прогнозы на извлеченные изображения из текста - PullRequest
0 голосов
/ 07 января 2020

Я обучил модель в PyTorch на наборе данных EMNIST - и получил около 85% точности на тестовом наборе. Теперь у меня есть изображение рукописного текста, из которого я извлек отдельные буквы, но я получаю очень плохую точность на изображениях, которые я извлек.

Одно горячее сопоставление, которое я использую -

letters_EMNIST = {0: '0', 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9',
         10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F', 16: 'G', 17: 'H', 18: 'I', 19: 'J',
         20: 'K', 21: 'L', 22: 'M', 23: 'N', 24: 'O', 25: 'P', 26: 'Q', 27: 'R', 28: 'S', 29: 'T',
         30: 'U', 31: 'V', 32: 'W', 33: 'X', 34: 'Y', 35: 'Z', 36: 'a', 37: 'b', 38: 'd', 39: 'e',
         40: 'f', 41: 'g', 42: 'h', 43: 'n', 44: 'q', 45: 'r', 46: 't'}

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

enter image description here

И это пример изображения, которое я извлек -

enter image description here

Как я могу отладить это?

1 Ответ

2 голосов
/ 07 января 2020

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

Распределение EMNIST и распределение ваших извлеченных данных, вероятно, совсем иное, поэтому может быть трудно получить хорошие результаты.

Есть некоторые шаги, которые вы можете сделать, чтобы улучшить счет, хотя.

Дополнительные данные

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

Чем больше таких людей вы получите, тем лучше будут ваши результаты (при условии, что данные достаточно высокого качества, например, не так много ложных срабатываний).

Увеличение данных

Думаю, вы могли бы сделать это без особой работы.

Вы должны помнить, что расширение данных должно сохранять метки . Так что нет таких вещей, как flipping (было бы хорошо для числа 8, но перевернутый u мог бы стать n).

Аугментации, которые должны быть хороши:

  • Маленькие повороты (до 20 градусов или около того)
  • Малый гауссовский шум или аналогичные
  • CutOut с небольшими пятнами (черные прямоугольники размером 3x3 пикселя или аналогичные, обнуляемые на изображении)
  • Нежные пространственные преобразования (масштабирование, сдвиг, линейные преобразования)
  • MixUp (вы линейно смешиваете два изображения с разными метками (например, изображение A, умноженное на 0.6, и шифр 2, умноженный 0.4 и попытайтесь классифицировать его как 0.6 A и 0.4 2). Помните, что ярлыки не обязательно должны быть исключительно двоичными. Это должно помочь вашей сети не быть слишком уверенной в своих прогнозах

Вы можете найти все это в albumentations сторонней библиотеке.

Увеличение модели

Для вашей модели вы можете использовать такую ​​вещь, как выпадение (быть осторожнее с инт впитывание с нормой партии, хотя), встряхивание встряхивания, Stochasti c Depth et c.

Final

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

Одной из возможностей было бы сделать модель более устойчивой к отклонениям с помощью дополнения.

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