Ссылка для ultralytics/utils/torch_utils.py
Примечание
Этот файл доступен по адресу https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/ torch_utils .py. Если ты заметил проблему, пожалуйста, помоги исправить ее, отправив Pull Request 🛠️. Спасибо 🙏!
ultralytics.utils.torch_utils.ModelEMA
Обновленная экспоненциальная скользящая средняя (EMA) с сайта https://github.com/rwightman/pytorch-image-models.
Сохраняет скользящее среднее значение всего, что есть в модели state_dict (параметры и буферы).
Подробности о EMA смотри на https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage.
Чтобы отключить EMA, установи параметр enabled
атрибут False
.
Исходный код в ultralytics/utils/torch_utils.py
__init__(model, decay=0.9999, tau=2000, updates=0)
Создай ЭМА.
Исходный код в ultralytics/utils/torch_utils.py
update(model)
Обнови параметры ЕМА.
Исходный код в ultralytics/utils/torch_utils.py
update_attr(model, include=(), exclude=('process_group', 'reducer'))
Обнови атрибуты и сохрани снятую модель с удаленным оптимизатором.
ultralytics.utils.torch_utils.EarlyStopping
Класс ранней остановки, который прекращает обучение, когда проходит заданное количество эпох без улучшений.
Исходный код в ultralytics/utils/torch_utils.py
__call__(epoch, fitness)
Проверь, стоит ли прекращать тренировку.
Параметры:
Имя | Тип | Описание | По умолчанию |
---|---|---|---|
epoch |
int
|
Текущая эпоха обучения |
требуется |
fitness |
float
|
Значение фитнеса в текущей эпохе |
требуется |
Возвращается:
Тип | Описание |
---|---|
bool
|
True, если тренировка должна быть остановлена, False в противном случае |
Исходный код в ultralytics/utils/torch_utils.py
__init__(patience=50)
Инициализируй объект ранней остановки.
Параметры:
Имя | Тип | Описание | По умолчанию |
---|---|---|---|
patience |
int
|
Количество эпох, которые нужно подождать после того, как фитнес перестанет улучшаться, прежде чем остановиться. |
50
|
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.torch_distributed_zero_first(local_rank)
Декоратор, заставляющий все процессы в распределенном обучении ждать, пока каждый local_master что-то сделает.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.smart_inference_mode()
Применяет декоратор torch.inference_mode(), если torch>=1.9.0, иначе torch.no_grad().
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_cpu_info()
Верни строку с информацией о системном процессоре, например 'Apple M2'.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.select_device(device='', batch=0, newline=False, verbose=True)
Выбирает подходящее устройство PyTorch на основе предоставленных аргументов.
Функция принимает строку, задающую устройство, или объект torch.device и возвращает объект torch.device. представляющий выбранное устройство. Функция также проверяет количество доступных устройств и поднимает исключение, если исключение, если запрашиваемое устройство (устройства) недоступно.
Параметры:
Имя | Тип | Описание | По умолчанию |
---|---|---|---|
device |
str | device
|
Строка устройства или объект torch.device. Варианты: 'None', 'cpu' или 'cuda', или '0', или '0,1,2,3'. По умолчанию это пустая строка, которая автоматически выбирает первый доступный GPU, или CPU, если GPU не доступен. |
''
|
batch |
int
|
Размер партии, используемый в твоей модели. По умолчанию равен 0. |
0
|
newline |
bool
|
Если True, то добавляет новую строку в конце строки журнала. По умолчанию установлено значение False. |
False
|
verbose |
bool
|
Если True, то записывает в журнал информацию об устройстве. По умолчанию установлено значение True. |
True
|
Возвращается:
Тип | Описание |
---|---|
device
|
Выбранное устройство. |
Поднимает:
Тип | Описание |
---|---|
ValueError
|
Если указанное устройство недоступно или если размер партии не кратен количеству устройств при использовании нескольких графических процессоров. |
Примеры:
Примечание
Устанавливает переменную окружения 'CUDA_VISIBLE_DEVICES' для указания, какие графические процессоры использовать.
Исходный код в ultralytics/utils/torch_utils.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
|
ultralytics.utils.torch_utils.time_sync()
ultralytics.utils.torch_utils.fuse_conv_and_bn(conv, bn)
Сливай слои Conv2d() и BatchNorm2d() https://tehnokv.com/posts/fusing-batchnorm-and-conv/.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.fuse_deconv_and_bn(deconv, bn)
Соедини слои ConvTranspose2d() и BatchNorm2d().
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.model_info(model, detailed=False, verbose=True, imgsz=640)
Информация о модели.
imgsz может быть int или списком, то есть imgsz=640 или imgsz=[640, 320].
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_num_params(model)
ultralytics.utils.torch_utils.get_num_gradients(model)
ultralytics.utils.torch_utils.model_info_for_loggers(trainer)
Возвращай дикту model info с полезной информацией о модели.
Пример
YOLOv8n Информация для лесорубов
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops(model, imgsz=640)
Верни FLOP'ы модели YOLO .
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops_with_torch_profiler(model, imgsz=640)
Вычисли модель FLOPs (альтернатива - пакет thop, но, к сожалению, в 2-10 раз медленнее).
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.initialize_weights(model)
Инициализируй веса модели случайными значениями.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.scale_img(img, ratio=1.0, same_shape=False, gs=32)
Масштабируй и подгони изображение tensor формы img(bs,3,y,x) в соответствии с заданным соотношением и размером сетки gs, по желанию сохраняя исходную форму. сохраняя исходную форму.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.make_divisible(x, divisor)
Возвращает ближайший х, кратный делителю.
ultralytics.utils.torch_utils.copy_attr(a, b, include=(), exclude=())
Копирует атрибуты из объекта 'b' в объект 'a', с опциями включения/исключения определенных атрибутов.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_latest_opset()
Верни вторую по времени версию опенсета ONNX , поддерживаемую данной версией PyTorch, с поправкой на зрелость.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.intersect_dicts(da, db, exclude=())
Возвращает словарь пересекающихся ключей с совпадающими фигурами, исключая ключи 'exclude', используя значения da.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.is_parallel(model)
ultralytics.utils.torch_utils.de_parallel(model)
Де-параллелизация модели: возвращает модель с одним GPU, если модель имеет тип DP или DDP.
ultralytics.utils.torch_utils.one_cycle(y1=0.0, y2=1.0, steps=100)
Возвращает лямбда-функцию для синусоидальной рампы от y1 до y2 https://arxiv.org/pdf/1812.01187.pdf.
ultralytics.utils.torch_utils.init_seeds(seed=0, deterministic=False)
Инициализируй семена генератора случайных чисел (ГСЧ) https://pytorch.org/docs/stable/notes/randomness.html.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.strip_optimizer(f='best.pt', s='')
Удали оптимизатор из 'f', чтобы завершить тренировку, и сохрани в виде 's'.
Параметры:
Имя | Тип | Описание | По умолчанию |
---|---|---|---|
f |
str
|
Путь к файлу с моделью, из которого нужно вычеркнуть оптимизатор. По умолчанию это 'best.pt'. |
'best.pt'
|
s |
str
|
путь к файлу, в который нужно сохранить модель со снятым оптимизатором. Если он не указан, то 'f' будет перезаписан. |
''
|
Возвращается:
Тип | Описание |
---|---|
None
|
Нет |
Пример
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.convert_optimizer_state_dict_to_fp16(state_dict)
Преобразует state_dict данного оптимизатора в FP16, ориентируясь на ключ 'state' для преобразований tensor .
Этот метод направлен на уменьшение размера хранилища без изменения 'param_groups', так как они содержат неtensor данные.
Исходный код в ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.profile(input, ops, n=10, device=None)
Ultralytics Профилировщик скорости, памяти и FLOPs.