Перейти к основному содержимому

dataset_iterator.dataset_iterator.fabrics

IteratorFabric Objects

class IteratorFabric()

Фабрика для получения итератора и объекта для прогона модели по датасету.

Атрибуты: _VQAName (str): Название задачи VQA. _RPOName (str): Название задачи RPO. _iterators (dict): Словарь, сопоставляющий название задачи с классом итератора. _runers (dict): Словарь, сопоставляющий название задачи с классом для прогона. _tasks (set): Множество названий задач, для которых реализованы итераторы и прогоны.

get_dataset_iterator

@classmethod
def get_dataset_iterator(cls,
task_name: str,
dataset_name: str,
start: int = 0,
filter_doc_class: Optional[str] = None,
filter_question_type: Optional[str] = None,
dataset_dir_path: str = '/data',
csv_name: str = 'annotations.csv',
*args,
**kwargs) -> TIterator

Возвращает итератор по датасету для указанной задачи.

Аргументы: task_name (str): Название задачи (например, "VQA"). dataset_name (str): Название датасета. start (int): Начальный индекс строки для итерации. По умолчанию 0. filter_doc_class (Optional[str]): Фильтр для класса документа. По умолчанию None. filter_question_type (Optional[str]): Фильтр для типа вопроса. По умолчанию None. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию '/data'. csv_name (str): Имя CSV-файла с аннотацией данных. По умолчанию 'annotations.csv'. **kwargs: Дополнительные аргументы для инициализации итератора.

Возвращает: TIterator: Итератор по датасету.

Выбрасывает: ValueError: Если задача не реализована.

get_runner

@classmethod
def get_runner(cls, iterator: TIterator, model, **kwargs) -> TRunner

Возвращает объект для запуска прогона модели по датасету.

Аргументы: iterator (TIterator): Итератор по датасету. model (ModelInterface): Модель, которая будет использоваться для обработки данных. **kwargs: Дополнительные аргументы для инициализации объекта прогона.

Возвращает: AbstractDatasetRunner: Объект для прогона модели по датасету.

dataset_iterator.dataset_iterator.abstract_iterator

AbstractSample Objects

@dataclass
class AbstractSample(ABC)

Абстрактный класс, представляющий один объект датасета.

Атрибуты: id (int): Уникальный идентификатор объекта датасета.

AbstractIterator Objects

class AbstractIterator(ABC)

Абстрактный класс итератора для получения сэмплов из датасета.

Атрибуты: dataset_name (str): Название датасета. row_index (int): Текущий индекс строки в данных. По умолчанию 0. task_name (str): Название задачи. filter_doc_class (Optional[str]): Фильтр для класса документа. По умолчанию None. filter_question_type (Optional[str]): Фильтр для типа вопроса. По умолчанию None. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию '/data'. csv_name (str): Имя CSV-файла с аннотацией данных. По умолчанию 'annotation.csv'.

__init__

def __init__(task_name: str,
dataset_name: str,
start: int = 0,
filter_doc_class: Optional[str] = None,
filter_question_type: Optional[str] = None,
dataset_dir_path: str = '/data',
csv_name: str = 'annotation.csv') -> None

Инициализирует экземпляр AbstractIterator.

Аргументы: task_name (str): Название задачи. dataset_name (str): Название датасета. start (int): Начальный индекс строки для итерации. По умолчанию 0. filter_doc_class (Optional[str]): Фильтр для класса документа. По умолчанию None. filter_question_type (Optional[str]): Фильтр для типа вопроса. По умолчанию None. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию '/data'. csv_name (str): Имя CSV-файла с аннотацией данных. По умолчанию 'annotation.csv'.

__iter__

def __iter__() -> 'AbstractIterator'

Возвращает итератор для обхода датасета.

Возвращает: AbstractIterator: Текущий экземпляр итератора.

__next__

@abstractmethod
def __next__() -> TSample

Возвращает следующий сэмпл из датасета.

Возвращает: TSample: Следующий сэмпл из датасета.

Выбрасывает: StopIteration: Если достигнут конец датасета.

Этот метод должен быть реализован в подклассах.

dataset_iterator.dataset_iterator

dataset_iterator.dataset_iterator.vqa_iterator

VQASample Objects

class VQASample(AbstractSample)

Dataclass для описания одного объекта датасета в задаче VQA.

Атрибуты: id (int): Уникальный идентификатор объекта датасета. image_path (str): Путь к изображению. question (str): Вопрос, связанный с изображением. answer (str): Ответ на вопрос. doc_class (str): Класс документа. question_type (str): Тип вопроса.

__init__

def __init__(id: int, image_path: str, question: str, answer: str,
doc_class: str, question_type: str) -> None

Инициализирует экземпляр VQASample.

Аргументы: id (int): Уникальный идентификатор сэмпла. image_path (str): Путь к изображению. question (str): Вопрос, связанный с изображением. answer (str): Ответ на вопрос. doc_class (str): Класс документа. question_type (str): Тип вопроса.

VQADatasetIterator Objects

class VQADatasetIterator(AbstractIterator)

Класс итератора для работы с датасетом задачи VQA.

Атрибуты: prompt_adapter (Optional[PromptAdapter]): Адаптер для работы с промптами. Если не задан, равен None.

__init__

def __init__(prompt_collection_filename: Optional[str] = None,
*args,
**kwargs) -> None

Инициализирует экземпляр VQADatasetIterator.

Аргументы: prompt_collection_filename (Optional[str]): Путь к файлу с коллекцией промптов. По умолчанию None. *args: Аргументы для базового класса. **kwargs: Ключевые аргументы для базового класса.

__next__

def __next__() -> VQASample

Возвращает следующий сэмпл из датасета.

Возвращает: VQASample: Сэмпл, содержащий путь к изображению, вопрос, ответ, класс документа и тип вопроса.

Выбрасывает: StopIteration: Если достигнут конец датасета.

dataset_iterator.dataset_iterator.abstract_dataset_runner

AbstractDatasetRunner Objects

class AbstractDatasetRunner(ABC)

Абстрактный класс, реализующий логику прогона модели по датасету.

Атрибуты: iterator (TIterator): Итератор, который предоставляет доступ к данным датасета. model (ModelInterface): VLM-модель, которая будет использоваться для получения ответа. model_answers (list): Список для хранения ответов модели. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию "/workspace/data". answers_dir_path (str): Путь к директории для сохранения ответов. По умолчанию "/workspace/answers". csv_name (str): Имя CSV-файла для сохранения ответов. По умолчанию "annotation.csv".

__init__

def __init__(iterator: TIterator,
model: Any,
dataset_dir_path: str = "/workspace/data",
answers_dir_path: str = "/workspace/answers",
csv_name: str = "annotation.csv") -> None

Инициализирует экземпляр AbstractDatasetRunner.

Аргументы: iterator (TIterator): Итератор, который предоставляет доступ к данным датасета. model (ModelInterface): VLM-модель, которая будет использоваться для получения ответа. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию "/workspace/data". answers_dir_path (str): Путь к директории для сохранения ответов. По умолчанию "/workspace/answers". csv_name (str): Имя CSV-файла для сохранения ответов. По умолчанию "annotation.csv".

run

@abstractmethod
def run() -> None

Осуществляет прогон модели по датасету, собирает ответы и записывает их на диск.

Этот метод должен быть реализован в подклассах.

add_answer

@abstractmethod
def add_answer(sample: TSample, answer: Any) -> None

Добавляет ответ модели в список ответов.

Аргументы: sample (TSample): Образец данных из датасета. answer (Any): Ответ модели на данный образец.

Этот метод должен быть реализован в подклассах.

save_answers

@abstractmethod
def save_answers() -> None

Сохраняет ответы в CSV-файл под названием csv_name по пути self.answers_dir_path.

Этот метод должен быть реализован в подклассах.

dataset_iterator.dataset_iterator.vqa_dataset_runner

VQAModelAnswer Objects

@dataclass
class VQAModelAnswer()

Класс, представляющий один ответ модели для задачи VQA.

Атрибуты: id (int): Уникальный идентификатор ответа, соответствующий идентификатору сэмпла. answer (str): Текст ответа модели.

VQADatasetRunner Objects

class VQADatasetRunner(AbstractDatasetRunner)

Класс, реализующий прогон модели по датасету задачи VQA.

Атрибуты: iterator (TIterator): Итератор, который предоставляет доступ к данным датасета. model (ModelInterface): VLM-модель, которая будет использоваться для получения ответа. model_answers (list[ModelAnswer]): Список ответов модели. dataset_dir_path (str): Путь к директории с датасетом. По умолчанию "/workspace/data". answers_dir_path (str): Путь к директории для сохранения ответов. По умолчанию "/workspace/answers". csv_name (str): Имя CSV-файла для сохранения ответов. По умолчанию "annotation.csv".

run

def run() -> None

Осуществляет прогон модели по датасету VQA и собирает ответы.

Проходит по всем сэмплам в итераторе, получает ответы модели и сохраняет их.

add_answer

def add_answer(sample: VQASample, answer: str) -> None

Добавляет ответ модели в список ответов.

Аргументы: sample (VQASample): Сэмпл из датасета VQA. answer (str): Ответ модели на вопрос из сэмпла.

save_answers

def save_answers() -> None

Сохраняет ответы в CSV-файл по пути self.answers_dir_path с добавлением timestamp в название файла.

Если список ответов пуст, выводит предупреждение и не сохраняет файл.