Модуль tf_utils.py
Содержит набор утилит для работы с TensorFlow, включая:
- управление GPU и памятью;
- работу с датасетами;
- метрики и слои для моделей;
- интеграцию с Albumentations для аугментации данных.
Основные функции модуля используют:
- TensorFlow (
tf,tf.keras); - OpenCV (
cv2); - вспомогательные модули (
utils,alb_utils).
| Класс | Назначение |
|---|---|
TFInit |
контекстный менеджер для настройки TensorFlow |
MultiGPU |
утилита для работы с несколькими GPU |
-
TFInit- возможности:
- управление уровнем логирования (
log_level); - контроль использования памяти GPU (
less_gpu_mem);
- управление уровнем логирования (
- автоматически восстанавливает исходные настройки при выходе.
- возможности:
-
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);
- автоматически применяет разные трансформации для обучающего и валидационного наборов.
- Поддержка преобразований через декоратор
@tf.numpy_function; - Автоматическая композиция трансформаций через
AlbTransforms.compose_transforms; - Корректная обработка размерностей тензоров после преобразований.
- Нормализация изображений (приведение к
float32и масштабирование в [0, 1]); - One-hot кодирование масок сегментации;
- Разные методы интерполяции для изображений (
bilinear) и масок (nearest); - Обработка edge-случаев (неполные батчи при
shuffle=True).