/ Модель

Характеристики

Параметры
120 млн
Лицензия
Apache 2.0
Архитектура
beit · dense
Библиотека
transformers
Опубликована
18 июл 2024

dit-base-layout-detection

Сегментация изображенийИзображение → mask9 профессий

BEiT-модель, дообученная на DocLayNet для сегментации текста, таблиц и других элементов макета страниц документов.

40скачиваний за 30 дней7лайковвеса обновлены12 сен 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

cmarkea/dit-base-layout-detection — модель cmarkea для анализа структуры страниц документов. Это BEiT-base, дообученная на наборе DocLayNet; модель сегментирует изображение документа по 11 типам элементов: подписи, сноски, формулы, пункты списка, колонтитулы, изображения, заголовки разделов, таблицы, основной текст и заголовки.

Модель предназначена для извлечения макета страниц из сканов и изображений документов, в том числе при подготовке документных коллекций для систем ответов на вопросы по документам. Она содержит около 119,5 млн параметров и выдаёт семантическую сегментацию; из масок сегментации можно получить ограничивающие рамки элементов. В опубликованной оценке на страницах DocLayNet приведены F1 90,77, GIoU 56,29 и точность классов рамок 85,26; для DETR-варианта cmarkea в той же таблице показатели рамок выше.

Модель принимает изображения и выдаёт разметку областей документа. Лицензия — Apache-2.0. Результаты обнаружения рамок приведены для простого преобразования масок через OpenCV findContours без дополнительной постобработки, поэтому точность рамок может зависеть от последующей обработки.

Сценарии применения

  • выделение блоков текста и заголовков на страницах документов
  • обнаружение таблиц и формул в документах
  • извлечение изображений, подписей и сносок со страниц
  • разбор макета документов перед индексацией для системы ответов на вопросы
  • получение областей и классов элементов страницы из изображения документа

Ограничения

Качество отдельных классов различается; опубликованные метрики обнаружения рамок получены преобразованием сегментационных масок через findContours без дополнительной постобработки. В сравнении README показатели рамок у модели cmarkea/detr-layout-detection выше.

Для каких профессий подходит9

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

DIT-base-layout-detection

We present the model cmarkea/dit-base-layout-detection, which allows extracting different layouts (Text, Picture, Caption, Footnote, etc.) from an image of a document. This is a fine-tuning of the model dit-base on the DocLayNet dataset. It is ideal for processing documentary corpora to be ingested into an ODQA system.

This model allows extracting 11 entities, which are: Caption, Footnote, Formula, List-item, Page-footer, Page-header, Picture, Section-header, Table, Text, and Title.

Performance

In this section, we will assess the model's performance by separately considering semantic segmentation and object detection. We did not perform any post-processing for the semantic segmentation. As for object detection, we only applied OpenCV's findContours without any further post-processing.

For semantic segmentation, we will use the F1-score to evaluate the classification of each pixel. For object detection, we will assess performance based on the Generalized Intersection over Union (GIoU) and the accuracy of the predicted bounding box class. The evaluation is conducted on 500 pages from the PDF evaluation dataset of DocLayNet.

Classf1-score (x100)GIoU (x100)accuracy (x100)
Background94.98NANA
Caption75.5455.6172.62
Footnote72.2950.0870.97
Formula82.2949.9194.48
List-item67.5635.1969
Page-footer83.9357.9994.06
Page-header62.3365.2579.39
Picture78.3258.2292.71
Section-header69.5556.6478.29
Table83.6963.0390.13
Text90.9451.8988.09
Title61.1952.6470

Benchmark

Now, let's compare the performance of this model with other models.

Modelf1-score (x100)GIoU (x100)accuracy (x100)
cmarkea/dit-base-layout-detection90.7756.2985.26
cmarkea/detr-layout-detection91.2780.6690.46

Direct Use

import torch
from transformers import AutoImageProcessor, BeitForSemanticSegmentation

img_proc = AutoImageProcessor.from_pretrained(
    "cmarkea/dit-base-layout-detection"
)
model = BeitForSemanticSegmentation.from_pretrained(
    "cmarkea/dit-base-layout-detection"
)

img: PIL.Image

with torch.inference_mode():
    input_ids = img_proc(img, return_tensors='pt')
    output = model(**input_ids)

segmentation = img_proc.post_process_semantic_segmentation(
    output,
    target_sizes=[img.size[::-1]]
)

Here is a simple method for detecting bounding boxes from semantic segmentation. This is the method used to calculate the model's performance in object detection, as described in the "Performance" section. The method is provided without any additional post-processing.

import cv2

def detect_bboxes(masks: np.ndarray):
    r"""
    A simple bounding box detection function
    """
    detected_blocks = []
    contours, _ = cv2.findContours(
        masks.astype(np.uint8),
        cv2.RETR_EXTERNAL,
        cv2.CHAIN_APPROX_SIMPLE
    )
    for contour in list(contours):
        if len(list(contour)) >= 4:
            # smallest rectangle containing all points
            x, y, width, height = cv2.boundingRect(contour)
            bounding_box = [x, y, x + width, y + height]
            detected_blocks.append(bounding_box)
    return detected_blocks

bbox_pred = []
for segment in segmentation:
    boxes, labels = [], []
    for ii in range(1, len(model.config.label2id)):
        mm = segment == ii
        if mm.sum() > 0:
            bbx = detect_bboxes(mm.numpy())
            boxes.extend(bbx)
            labels.extend([ii]*len(bbx))
    bbox_pred.append(dict(boxes=boxes, labels=labels))

Example

example

Citation

@online{DeDitLay,
  AUTHOR = {Cyrile Delestre},
  URL = {https://huggingface.co/cmarkea/dit-base-layout-detection},
  YEAR = {2024},
  KEYWORDS = {Image Processing ; Transformers ; Layout},
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers · image-segmentation

Можно запустить

Подбираем GPU…

Класс архитектуры
BeitForSemanticSegmentation
Ревизия весов
1995237

0 моделей