Skip to content

Latest commit

 

History

History
89 lines (61 loc) · 4.15 KB

File metadata and controls

89 lines (61 loc) · 4.15 KB

Модуль tf_utils.py

Содержит набор утилит для работы с TensorFlow, включая:

  • управление GPU и памятью;
  • работу с датасетами;
  • метрики и слои для моделей;
  • интеграцию с Albumentations для аугментации данных.

Основные функции модуля используют:

  • TensorFlow (tf, tf.keras);
  • OpenCV (cv2);
  • вспомогательные модули (utils, alb_utils).

Основные компоненты

Классы

Класс Назначение
TFInit контекстный менеджер для настройки TensorFlow
MultiGPU утилита для работы с несколькими GPU

Особенности классов

  1. TFInit

    • возможности:
      • управление уровнем логирования (log_level);
      • контроль использования памяти GPU (less_gpu_mem);
    • автоматически восстанавливает исходные настройки при выходе.
  2. MultiGPU

    • функциональность:
      • автоматическое определение доступных GPU;
      • поддержка стратегии MirroredStrategy;
      • увеличение batch_size пропорционально числу GPU.

Функции

Функция Назначение
tf_less_mem включает режим экономии памяти для GPU
load_IO_file_names2dataset создаёт датасет из пар входных/выходных файлов
make_load_and_transform_func генерирует функцию для загрузки и преобразования изображений
get_dataset создаёт готовый к использованию tf.data.Dataset

Особенности функций

load_IO_file_names2dataset

  • Поддерживает структуру папок inp и out.

make_load_and_transform_func

  • Изменения размера (target_size);
  • Albumentations-трансформаций (transforms);
  • One-hot кодирования масок (num_classes).

get_dataset

  • Кеширование данных;
  • Поддержка перемешивания (shuffle);
  • Пакетная обработка (batch_size);
  • Автоматическая предзагрузка (prefetch).

get_datasets

  • создаёт три стандартных датасета (train/val/test);
  • автоматически применяет разные трансформации для обучающего и валидационного наборов.

Интеграция с Albumentations

  • Поддержка преобразований через декоратор @tf.numpy_function;
  • Автоматическая композиция трансформаций через AlbTransforms.compose_transforms;
  • Корректная обработка размерностей тензоров после преобразований.

Особенности обработки данных

  • Нормализация изображений (приведение к float32 и масштабирование в [0, 1]);
  • One-hot кодирование масок сегментации;
  • Разные методы интерполяции для изображений (bilinear) и масок (nearest);
  • Обработка edge-случаев (неполные батчи при shuffle=True).