Как правильно обучить модель для распознавания текста с CreateML? Мой не просто плохой, он совершенно бесполезный

Я создал набор данных с 1 сгенерированным тренировочным изображением на букву и примерно 10 реальными тестовыми изображениями на букву.

Все они имеют размер 10x14px, черно-белые (красиво преобразуются на стадии предварительной обработки).

Получившаяся модель распознает все символы как "1" (даже фактические изображения из тестового набора), поэтому в принципе она вообще не работает.

Кто может указать мне правильное направление?

Вот вывод CreateML -

Extracting image features from full data set.
Analyzing and extracting image features.
+------------------+--------------+------------------+
| Images Processed | Elapsed Time | Percent Complete |
+------------------+--------------+------------------+
| 1                | 1.74s        | 2.5%             |
| 2                | 1.96s        | 5.25%            |
| 3                | 2.17s        | 8%               |
| 4                | 2.39s        | 10.75%           |
| 5                | 2.60s        | 13.5%            |
| 10               | 3.68s        | 27%              |
| 25               | 6.90s        | 67.5%            |
| 37               | 9.48s        | 100%             |
| 36               | 9.26s        | 97.25%           |
+------------------+--------------+------------------+
Skipping automatic creation of validation set; training set has fewer than 50 points.
Beginning model training on processed features. 
Calibrating solver; this may take some time.
+-----------+--------------+-------------------+
| Iteration | Elapsed Time | Training Accuracy |
+-----------+--------------+-------------------+
| 0         | 0.038845     | 0.027027          |
| 1         | 0.139269     | 0.837838          |
| 2         | 0.268821     | 0.945946          |
| 3         | 0.317312     | 0.945946          |
| 4         | 0.367944     | 0.972973          |
| 5         | 0.422657     | 0.972973          |
| 10        | 0.713325     | 1.000000          |
| 24        | 1.495230     | 1.000000          |
+-----------+--------------+-------------------+
SUCCESS: Optimal solution found.
Extracting image features from evaluation data.
Analyzing and extracting image features.
+------------------+--------------+------------------+
| Images Processed | Elapsed Time | Percent Complete |
+------------------+--------------+------------------+
| 1                | 211.661ms    | 0.25%            |
| 2                | 425.538ms    | 0.75%            |
| 3                | 641.33ms     | 1.25%            |
| 4                | 861.215ms    | 1.75%            |
| 5                | 1.07s        | 2.25%            |
| 10               | 2.16s        | 4.75%            |
| 25               | 5.39s        | 12%              |
| 50               | 10.75s       | 24%              |
| 75               | 16.12s       | 36%              |
| 100              | 21.51s       | 48%              |
| 125              | 26.88s       | 60%              |
| 150              | 32.24s       | 72%              |
| 175              | 37.61s       | 84%              |
| 200              | 42.97s       | 96%              |
| 208              | 44.69s       | 100%             |
| 207              | 44.47s       | 99.5%            |
+------------------+--------------+------------------+
Trained model successfully saved at /mypath/ocr.mlmodel.

1 ответ

Решение
  1. OCR это сложно.

  2. У вас почти нет примеров тренировок.

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

  4. Попробуйте обучить простой логистической регрессии ваших данных с помощью пакета, такого как scikit-learn. Это будет работать намного лучше, чем глубокая нейронная сеть.

Другие вопросы по тегам