magiv2 / configuration_magiv2.py
Mateusz Mr贸z
Implement Magiv2Model with detection, OCR, and character association capabilities
cd77b9d
from transformers import PretrainedConfig, VisionEncoderDecoderConfig
from typing import Any, Optional
class Magiv2Config(PretrainedConfig):
"""
Klasa konfiguracyjna dla modelu Magiv2.
Magiv2Config dziedziczy po PretrainedConfig z biblioteki transformers i definiuje
kompletn膮 konfiguracj臋 dla modelu wizyjnego sk艂adaj膮cego si臋 z trzech g艂贸wnych komponent贸w:
- Model detekcji obiekt贸w (detection)
- Model OCR (rozpoznawanie tekstu)
- Model embedowania wyci臋tych fragment贸w obrazu (crop embeddings)
Attributes:
model_type: Identyfikator typu modelu dla biblioteki transformers
disable_ocr: Flaga wy艂膮czaj膮ca modu艂 OCR
disable_crop_embeddings: Flaga wy艂膮czaj膮ca modu艂 embedowania wyci臋tych fragment贸w
disable_detections: Flaga wy艂膮czaj膮ca modu艂 detekcji obiekt贸w
detection_model_config: Konfiguracja modelu detekcji (po deserializacji)
ocr_model_config: Konfiguracja modelu OCR (po deserializacji)
crop_embedding_model_config: Konfiguracja modelu embedowania (po deserializacji)
detection_image_preprocessing_config: Parametry przetwarzania obrazu dla detekcji
ocr_pretrained_processor_path: 艢cie偶ka do wytrenowanego procesora OCR
crop_embedding_image_preprocessing_config: Parametry przetwarzania obrazu dla embedowania
"""
# Identyfikator typu modelu u偶ywany przez bibliotek臋 transformers
model_type: str = "magiv2"
def __init__(
self,
disable_ocr: bool = False,
disable_crop_embeddings: bool = False,
disable_detections: bool = False,
detection_model_config: Optional[dict[str, Any]] = None,
ocr_model_config: Optional[dict[str, Any]] = None,
crop_embedding_model_config: Optional[dict[str, Any]] = None,
detection_image_preprocessing_config: Optional[dict[str, Any]] = None,
ocr_pretrained_processor_path: Optional[str] = None,
crop_embedding_image_preprocessing_config: Optional[dict[str, Any]] = None,
**kwargs: Any,
) -> None:
"""
Inicjalizuje konfiguracj臋 modelu Magiv2.
Konstruktor przyjmuje parametry kontroluj膮ce kt贸re modu艂y modelu s膮 aktywne,
oraz konfiguracje dla poszczeg贸lnych komponent贸w. Konfiguracje przekazane jako
s艂owniki s膮 deserializowane do odpowiednich obiekt贸w Config z transformers.
Args:
disable_ocr: Czy wy艂膮czy膰 modu艂 rozpoznawania tekstu (OCR).
Domy艣lnie False - OCR jest aktywne.
disable_crop_embeddings: Czy wy艂膮czy膰 modu艂 tworzenia embedding贸w dla wyci臋tych
fragment贸w obrazu. Domy艣lnie False - embedowanie aktywne.
disable_detections: Czy wy艂膮czy膰 modu艂 detekcji obiekt贸w na obrazie.
Domy艣lnie False - detekcja aktywna.
detection_model_config: S艂ownik z konfiguracj膮 modelu detekcji obiekt贸w.
Je艣li podany, zostanie zdeserializowany do PretrainedConfig.
ocr_model_config: S艂ownik z konfiguracj膮 modelu OCR (encoder-decoder).
Je艣li podany, zostanie zdeserializowany do VisionEncoderDecoderConfig.
crop_embedding_model_config: S艂ownik z konfiguracj膮 modelu embedowania wyci臋tych
fragment贸w. Je艣li podany, zostanie zdeserializowany
do PretrainedConfig.
detection_image_preprocessing_config: S艂ownik z parametrami preprocessingu obrazu
dla modu艂u detekcji (np. rozmiar, normalizacja).
ocr_pretrained_processor_path: 艢cie偶ka do katalogu lub Hub ID z wytrenowanym
procesorem obrazu dla modu艂u OCR.
crop_embedding_image_preprocessing_config: S艂ownik z parametrami preprocessingu
obrazu dla modu艂u embedowania.
**kwargs: Dodatkowe argumenty przekazywane do klasy bazowej PretrainedConfig.
Returns:
None
Note:
- Konfiguracje modeli s膮 deserializowane z dict do obiekt贸w Config tylko wtedy,
gdy zosta艂y przekazane (nie s膮 None)
- Flagi disable_* pozwalaj膮 na selektywne wy艂膮czanie poszczeg贸lnych modu艂贸w
- Wszystkie dodatkowe kwargs s膮 przekazywane do klasy bazowej PretrainedConfig
"""
# Przechowywanie flag wy艂膮czaj膮cych poszczeg贸lne modu艂y
self.disable_ocr: bool = disable_ocr
self.disable_crop_embeddings: bool = disable_crop_embeddings
self.disable_detections: bool = disable_detections
# Przechowywanie dodatkowych argument贸w przekazanych do konstruktora
self.kwargs: dict[str, Any] = kwargs
# Inicjalizacja atrybut贸w konfiguracji modeli jako None
# (mog膮 zosta膰 zdeserializowane poni偶ej je艣li parametry nie s膮 None)
self.detection_model_config: Optional[PretrainedConfig] = None
self.ocr_model_config: Optional[VisionEncoderDecoderConfig] = None
self.crop_embedding_model_config: Optional[PretrainedConfig] = None
# Deserializacja konfiguracji modelu detekcji ze s艂ownika do obiektu PretrainedConfig
if detection_model_config is not None:
self.detection_model_config = PretrainedConfig.from_dict(
detection_model_config
)
# Deserializacja konfiguracji modelu OCR ze s艂ownika do obiektu VisionEncoderDecoderConfig
# OCR wykorzystuje architektur臋 encoder-decoder (vision encoder + text decoder)
if ocr_model_config is not None:
self.ocr_model_config = VisionEncoderDecoderConfig.from_dict(
ocr_model_config
)
# Deserializacja konfiguracji modelu embedowania ze s艂ownika do obiektu PretrainedConfig
if crop_embedding_model_config is not None:
self.crop_embedding_model_config = PretrainedConfig.from_dict(
crop_embedding_model_config
)
# Przechowywanie konfiguracji preprocessingu obrazu dla modu艂u detekcji
# (np. docelowy rozmiar obrazu, parametry normalizacji, augmentacje)
self.detection_image_preprocessing_config: Optional[dict[str, Any]] = (
detection_image_preprocessing_config
)
# 艢cie偶ka do wytrenowanego procesora OCR (mo偶e by膰 lokalna lub z Hugging Face Hub)
self.ocr_pretrained_processor_path: Optional[str] = ocr_pretrained_processor_path
# Przechowywanie konfiguracji preprocessingu obrazu dla modu艂u embedowania
# (np. docelowy rozmiar wyci臋膰, parametry normalizacji)
self.crop_embedding_image_preprocessing_config: Optional[dict[str, Any]] = (
crop_embedding_image_preprocessing_config
)
# Wywo艂anie konstruktora klasy bazowej PretrainedConfig z dodatkowymi kwargs
super().__init__(**kwargs)