Обучить детектор текста EAST по пользовательским данным - PullRequest
3 голосов
/ 13 января 2020

Как я могу обучить EAST текстовый детектор на моих пользовательских данных. В Интернете нет блогов, в которых описана пошаговая процедура, позволяющая сделать то же самое. То, что у меня есть в настоящее время.

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

Пример:

<annotation>
    <folder>Dataset</folder>
    <filename>FFDDAPMDD1.png</filename>
    <path>C:\Users\HPO2KOR\Desktop\Work\venv\Patent\Dataset\Dataset\FFDDAPMDD1.png</path>
    <source>
        <database>Unknown</database>
    </source>
    <size>
        <width>839</width>
        <height>1000</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>522</xmin>
            <ymin>29</ymin>
            <xmax>536</xmax>
            <ymax>52</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>510</xmin>
            <ymin>258</ymin>
            <xmax>521</xmax>
            <ymax>281</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>546</xmin>
            <ymin>528</ymin>
            <xmax>581</xmax>
            <ymax>555</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>523</xmin>
            <ymin>646</ymin>
            <xmax>555</xmax>
            <ymax>674</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>410</xmin>
            <ymin>748</ymin>
            <xmax>447</xmax>
            <ymax>776</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>536</xmin>
            <ymin>826</ymin>
            <xmax>567</xmax>
            <ymax>851</ymax>
        </bndbox>
    </object>
    <object>
        <name>text</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>792</xmin>
            <ymin>918</ymin>
            <xmax>838</xmax>
            <ymax>945</ymax>
        </bndbox>
    </object>
</annotation>

Также у меня есть проанализированный файл xml для каждого из моих изображений в формате, который используется для обучения моделей YOLO.

Пример

C:\Users\HPO2KOR\...\text\FFDDAPMDD1.png 522,29,536,52,0 510,258,521,281,0 546,528,581,555,0 523,646,555,674,0 410,748,447,776,0 536,826,567,851,0 792,918,838,945,0 660,918,706,943,0 63,1,108,24,0 65,51,110,77,0 65,101,109,126,0 63,151,110,175,0 63,202,109,228,0 63,252,110,276,0 63,303,110,330,0 62,353,110,381,0 65,405,109,434,0 90,457,110,482,0 59,505,101,534,0 64,565,107,590,0 61,616,107,644,0 62,670,103,694,0 62,725,104,753,0 63,778,104,804,0 62,831,100,857,0 87,887,106,912,0 98,919,144,943,0 240,916,284,943,0 378,915,420,943,0 520,918,565,942,0
C:\Users\HPO2KOR\...\text\FFDDAPMDD2.png 91,145,109,171,0 68,192,106,218,0 92,239,111,265,0 69,286,108,311,0 92,333,107,357,0 66,379,110,405,0 90,424,111,451,0 69,472,107,497,0 91,518,109,545,0 66,564,109,590,0 90,613,110,637,0 121,644,140,670,0 279,643,322,671,0 446,645,490,668,0 615,642,661,669,0 786,643,831,667,0 954,643,997,672,0 820,22,866,50,0 823,73,866,103,0
C:\Users\HPO2KOR\...\text\FFDDAPMDD3.png 648,1,698,30,0 68,64,129,91,0 55,144,128,168,0 70,218,129,247,0 56,300,127,326,0 71,377,125,404,0 58,459,127,482,0 109,535,130,560,0 140,568,160,594,0 344,568,382,594,0 563,566,581,591,0 760,568,800,593,0 982,569,1000,591,0

Что такое процедура обучения этого EAST текстового детектора для моего пользовательского набора данных. Я на windows.

1 Ответ

1 голос
/ 07 марта 2020

Согласно документации в файле readme, для индивидуального обучения реализации EAST для keras требуется папка изображений с сопровождающим текстовым файлом для каждого изображения с именем gt_IMAGENAME.txt. (Замените IMAGENAME на имя изображения, к которому он относится.)

В каждом текстовом файле «основная правда дана в виде отдельных текстовых файлов (по одному на изображение), где каждая строка определяет координаты границы одного слова коробка и ее транскрипция в формате через запятую. " Это цитата из https://rrc.cvc.uab.es/?ch=4&com=tasks, которая связана в read me с реализацией EAS с тензорным потоком на https://github.com/argman/EAST. Ограничительная рамка выражается в виде координат для четырех углов.

Похоже, у вас есть вся информация, необходимая для построения обучающих данных в правильном формате. Там может быть инструмент для конвертации всего, но быстрый python сценарий тоже подойдет. Что-то вроде ...

  1. L oop все xml файлы
  2. Для каждого xml файла создайте текстовый файл с именем, требуемым для документации
  3. Используйте BeautifulSoup для анализа xml
  4. Используйте find_all для получения всех object тегов
  5. Используйте значения xmin, xmax, ymin и ymax для express координаты x, y всех углов. (верхний левый угол xmin, ymax; верхний правый угол xmax, ymax; et c.) Порядок, основанный на https://github.com/argman/EAST/blob/master/training_samples/img_1.txt, выглядит следующим образом: lower-left, lower-right, upper-right, upper-left
  6. Для каждого тега объекта напишите новую строку в текстовом файле в следующем формате: x1, y1, x2, y2, x3, y3, x4, y4, transcription или x1, y1, x2, y2, x3, y3, x4, y4, ### (за которым следует \n для новой строки)
  7. run python train.py со всей командной строкой Аргументы задают способ установки «примера выполнения», но меняют значение после --training_data_path= на ваш путь
...