Документируйте ИИ с помощью python и Tensorflow, используя CNN (для изображения) и BERT (для текста) и комбинируя их в мультимодальной модели, чтобы получить лучшее из обоих миров

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

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

Контекст
Эта статья является продолжением моей ранее опубликованной статьи Классификация многостраничных документов с использованием машинного обучения и НЛП. в котором подробно рассказывается, как работает остальная часть рабочего процесса классификации документов. В этой статье мы поговорим о том, как использовать изображения и текст. Для полного рабочего процесса, прочитайте связанную статью. Подпишитесь на меня, чтобы узнать больше в области ИИ для документов.



Отличительные особенности текста и изображений

Модели ИИ документов не просто читают? они тоже видят

Текст и изображения имеют различные характеристики, которые могут по-разному подойти к задаче классификации документов. Анализ слов и фраз в тексте — традиционный способ получить семантическое представление о документе. Например, технический жаргон и термины в научной статье могут указывать на ее предметную область.

Более того, анализ структуры текста может обеспечить понимание документа на высоком уровне. Например, наличие определенных разделов, таких как описание товара, количество и цена, может указывать на тип счета.

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

Кроме того, изображения могут дать контекст тексту, обнаружив его в документе. Например, подпись в юридическом документе может указывать на тип документа.

Зачем использовать как текст, так и изображение для классификации документов?

Почему стоит выбрать один? когда мы можем использовать оба

Использование как текстовых, так и графических данных может привести к более полному пониманию документа, чем использование только одного типа данных. Например, в медицинском заключении в тексте могут содержаться сведения о диагнозе и лечении, а изображения могут предоставлять визуальные доказательства, такие как рентгеновские снимки или МРТ.

Мультимодальная модель может обеспечить более высокую точность, чем одномодальные модели, за счет объединения информации из обоих типов данных. Кроме того, использование как текстовых, так и графических данных может повысить надежность модели.

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

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

Мультимодальные модели глубокого обучения для классификации документов

Методология | Переходим к мультимодальным!

Существует несколько подходов к построению мультимодальных моделей глубокого обучения для классификации документов. Мы будем использовать Deep CNN для извлечения визуальных признаков со страницы документа. Для текста мы будем использовать BERT ( для задачи, связанной с конкретным документом; также можно использовать другие версии с тонкой настройкой, например, BioBert для документов, связанных с медициной/здравоохранением. На диаграмме ниже показано, как будет работать эта стратегия. .

На этой диаграмме страница входного документа является отправной точкой, которая подключена к входу изображения. Затем входное изображение передается через экстрактор признаков изображения на основе CNN для создания вектора признаков изображения. Входное изображение также передается через Tesseract OCR для создания текстового ввода, который затем передается через средство извлечения текстовых признаков на основе BERT для создания вектора текстовых признаков. Затем оба вектора признаков проходят через мультимодальный слой слияния, плотный слой и выходной слой для получения окончательного результата классификации.

Tl:dr, Дай код уже? :О

import tensorflow as tf
from transformers import TFBertModel

# define the CNN-based image feature extractor
def build_image_model():
    img_model = tf.keras.Sequential([
        tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)),
        tf.keras.layers.MaxPooling2D((2, 2)),
        tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
        tf.keras.layers.MaxPooling2D((2, 2)),
        tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
        tf.keras.layers.MaxPooling2D((2, 2)),
        tf.keras.layers.Conv2D(128, (3, 3), activation='relu'),
        tf.keras.layers.MaxPooling2D((2, 2)),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(512, activation='relu')
    ])
    return img_model

# define the BERT-based text feature extractor
def build_text_model():
    bert_model = TFBertModel.from_pretrained('bert-base-uncased')
    inputs = tf.keras.layers.Input(shape=(None,), dtype=tf.int32, name='input_word_ids')
    outputs = bert_model(inputs)[1]
    text_model = tf.keras.Model(inputs=inputs, outputs=outputs)
    return text_model

# define the multimodal document classification model
def build_multimodal_model(num_classes):
    img_model = build_image_model()
    text_model = build_text_model()
    img_input = tf.keras.layers.Input(shape=(224, 224, 3), name='img_input')
    text_input = tf.keras.layers.Input(shape=(None,), dtype=tf.int32, name='text_input')
    img_features = img_model(img_input)
    text_features = text_model(text_input)
    concat_features = tf.keras.layers.concatenate([img_features, text_features])
    x = tf.keras.layers.Dense(512, activation='relu')(concat_features)
    x = tf.keras.layers.Dense(num_classes, activation='softmax')(x)
    multimodal_model = tf.keras.Model(inputs=[img_input, text_input], outputs=x)
    return multimodal_model

# load the dataset and split into train/test sets
# X_train_img, X_train_text, y_train = ...
# X_test_img, X_test_text, y_test = ...

# build the multimodal model
num_classes = 10
multimodal_model = build_multimodal_model(num_classes)
multimodal_model.summary()

# compile the model and train on the train set
multimodal_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
multimodal_model.fit([X_train_img, X_train_text], y_train, epochs=10, batch_size=32, validation_data=([X_test_img, X_test_text], y_test))

Как и подход, рассмотренный в моей предыдущей статье. Для текста подход остается в основном таким же, здесь я ввел BERT вместо Doc2Vec. Но вы можете использовать любой из них. Это мало что меняет.

Оценка — Момент истины!

Это действительно работает?

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

  • Набор данных: коллекция из 1000 многостраничных документов, по 5 страниц в каждом. Каждый документ относится к одному из 10 классов.
  • Разделение данных: 80 % обучение, 10 % проверка, 10 % тестирование
  • Текстовая модель: извлекатель текстовых функций на основе BERT с двумя уровнями прямой связи. Обучение на текстовом содержимом каждой страницы документа.
  • Модель изображения: модель CNN с 4 сверточными слоями и 2 полносвязными слоями. Обучение на графическом содержимом каждой страницы документа.
  • Мультимодальная модель: объединяет выходные данные текстовой и графической моделей с помощью метода конкатенации перед передачей выходных данных в двухслойную нейронную сеть с прямой связью.
  • Показатели оценки: точность, точность, полнота, оценка F1 и оценка AUC-ROC.

Вот результаты оценки:

На этом графике показаны показатели точности и полноты для каждого класса с использованием трех типов моделей: текстовой, графической и мультимодальной. Линии показывают оценки точности и полноты для каждого типа модели, а маркеры указывают на конкретный оцениваемый класс. Из этого графика видно, что мультимодальная модель обычно работает лучше всего во всех классах, но модели на основе текста и изображений имеют сильные стороны в определенных классах. Например, текстовая модель особенно хорошо работает в классах 1 и 5, тогда как модель на основе изображений хорошо работает в классах 4 и 7. Мультимодальная модель способна использовать сильные стороны обеих моделей и хорошо работает во всех областях. классы.

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

Эмпирический анализ

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

Где текстовые и графические модели терпят неудачу?

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

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

Мультимодальный режим действительно работает?

Я специально добавил несколько классов в свой набор данных, где модель должна была бы использовать как изображение, так и текст, чтобы определить различия в документах. У меня было два класса, где разница была номером заголовка/подзаголовка/формы документа, и где разница была довольно незначительной, например, в одном документе имя формы было W9-EBY2, а в другом - W9-EBYK. Название также включало то же предложение, и единственное отличие заключалось в названии штата, например. [Текст] — Нью-Йорк, а другой был [Текст] — Нью-Джерси. Визуально обе страницы документов классов имели штампы, которые также немного различались.

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

Заключение

В целом, это исследование демонстрирует важность использования мультимодального подхода для задач классификации документов. Комбинация изображений и текстовых данных может охватывать более полные и разнообразные функции, что приводит к повышению эффективности классификации. В будущей работе мы стремимся изучить эффективность включения других модальностей для дальнейшего изучения этого вопроса. Подпишитесь на меня в Medium, чтобы узнать первыми и помочь мне достичь моей цели - 100+ подписчиков! также на github для дальнейших обновлений. Кроме того, ознакомьтесь с некоторыми другими моими проектами ;)