Referencia para ultralytics/utils/torch_utils.py
Nota
Este archivo está disponible en https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/ torch_utils .py. Si detectas algún problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 🛠️. ¡Gracias 🙏!
ultralytics.utils.torch_utils.ModelEMA
Media móvil exponencial (EMA) actualizada de https://github.com/rwightman/pytorch-image-models
Mantiene una media móvil de todo lo que hay en el modelo estado_dict (parámetros y búferes)
Para más detalles sobre la EMA, consulta https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage
Para desactivar la EMA establece el parámetro enabled
atributo a False
.
Código fuente en ultralytics/utils/torch_utils.py
__init__(model, decay=0.9999, tau=2000, updates=0)
Crea EMA.
Código fuente en ultralytics/utils/torch_utils.py
update(model)
Actualiza los parámetros de la EMA.
Código fuente en ultralytics/utils/torch_utils.py
update_attr(model, include=(), exclude=('process_group', 'reducer'))
Actualiza los atributos y guarda el modelo despojado con el optimizador eliminado.
ultralytics.utils.torch_utils.EarlyStopping
Clase de parada anticipada que detiene el entrenamiento cuando ha transcurrido un número determinado de épocas sin mejora.
Código fuente en ultralytics/utils/torch_utils.py
__call__(epoch, fitness)
Comprueba si debes interrumpir el entrenamiento.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
epoch |
int
|
Época actual de entrenamiento |
necesario |
fitness |
float
|
Valor de aptitud de la época actual |
necesario |
Devuelve:
Tipo | Descripción |
---|---|
bool
|
Verdadero si el entrenamiento debe detenerse, Falso en caso contrario |
Código fuente en ultralytics/utils/torch_utils.py
__init__(patience=50)
Inicializa el objeto de parada anticipada.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
patience |
int
|
Número de épocas que hay que esperar después de que la forma física deje de mejorar antes de parar. |
50
|
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.torch_distributed_zero_first(local_rank)
Decorador para hacer que todos los procesos en formación distribuida esperen a que cada maestro_local haga algo.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.smart_inference_mode()
Aplica el decorador torch.inference_mode() si torch>=1.9.0 si no torch.no_grad().
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_cpu_info()
Devuelve una cadena con información sobre la CPU del sistema, por ejemplo 'Apple M2'.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.select_device(device='', batch=0, newline=False, verbose=True)
Selecciona el dispositivo PyTorch adecuado en función de los argumentos proporcionados.
La función toma una cadena que especifica el dispositivo o un objeto torch.device y devuelve un objeto torch.device que representa el dispositivo seleccionado. La función también valida el número de dispositivos disponibles y lanza una excepción excepción si el dispositivo o dispositivos solicitados no están disponibles.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
device |
str | device
|
Cadena de dispositivo u objeto torch.device. Las opciones son "Ninguno", "cpu" o "cuda", o "0" o "0,1,2,3". Por defecto es una cadena vacía, que selecciona automáticamente la primera GPU disponible, o la CPU si no hay GPU disponible. |
''
|
batch |
int
|
Tamaño del lote utilizado en tu modelo. Por defecto es 0. |
0
|
newline |
bool
|
Si es Verdadero, añade una nueva línea al final de la cadena de registro. Por defecto es Falso. |
False
|
verbose |
bool
|
Si es Verdadero, registra la información del dispositivo. Por defecto es Verdadero. |
True
|
Devuelve:
Tipo | Descripción |
---|---|
device
|
Dispositivo seleccionado. |
Aumenta:
Tipo | Descripción |
---|---|
ValueError
|
Si el dispositivo especificado no está disponible o si el tamaño del lote no es múltiplo del número de dispositivos cuando se utilizan varias GPUs. |
Ejemplos:
Nota
Establece la variable de entorno 'CUDA_VISIBLE_DEVICES' para especificar qué GPUs utilizar.
Código fuente en 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)
Fusiona las capas Conv2d() y BatchNorm2d() https://tehnokv.com/posts/fusing-batchnorm-and-conv/.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.fuse_deconv_and_bn(deconv, bn)
Fusiona las capas ConvTranspose2d() y BatchNorm2d().
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.model_info(model, detailed=False, verbose=True, imgsz=640)
Información sobre el modelo.
imgsz puede ser int o lista, es decir, imgsz=640 o imgsz=[640, 320].
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_num_params(model)
ultralytics.utils.torch_utils.get_num_gradients(model)
Devuelve el número total de parámetros con gradientes en un modelo YOLO .
ultralytics.utils.torch_utils.model_info_for_loggers(trainer)
Devuelve el dict de información del modelo con información útil del modelo.
Ejemplo
YOLOv8n información para leñadores
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops(model, imgsz=640)
Devuelve los FLOPs de un modelo YOLO .
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_flops_with_torch_profiler(model, imgsz=640)
Computa los FLOPs del modelo (alternativa del paquete thop, pero de 2 a 10 veces más lento, por desgracia).
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.initialize_weights(model)
Inicializa los pesos del modelo a valores aleatorios.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.scale_img(img, ratio=1.0, same_shape=False, gs=32)
Escala y rellena una imagen tensor de forma img(bs,3,y,x) en función de la proporción y el tamaño de cuadrícula gs dados, opcionalmente conservando la forma original.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.make_divisible(x, divisor)
Devuelve la x más próxima divisible por el divisor.
ultralytics.utils.torch_utils.copy_attr(a, b, include=(), exclude=())
Copia atributos del objeto "b" al objeto "a", con opciones para incluir/excluir determinados atributos.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.get_latest_opset()
Devuelve la segunda versión más reciente de ONNX opset soportada por esta versión de PyTorch, ajustada a la madurez.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.intersect_dicts(da, db, exclude=())
Devuelve un diccionario de claves de intersección con formas coincidentes, excluyendo las claves "excluidas", utilizando valores da.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.is_parallel(model)
ultralytics.utils.torch_utils.de_parallel(model)
Desparalelizar un modelo: devuelve el modelo de una sola GPU si el modelo es de tipo DP o DDP.
ultralytics.utils.torch_utils.one_cycle(y1=0.0, y2=1.0, steps=100)
Devuelve una función lambda para la rampa sinusoidal de y1 a y2 https://arxiv.org/pdf/1812.01187.pdf.
ultralytics.utils.torch_utils.init_seeds(seed=0, deterministic=False)
Inicializa las semillas del generador de números aleatorios (RNG) https://pytorch.org/docs/stable/notes/randomness.html.
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.strip_optimizer(f='best.pt', s='')
Elimina el optimizador de 'f' para finalizar el entrenamiento, guardándolo opcionalmente como 's'.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
f |
str
|
Ruta del archivo del modelo del que se extraerá el optimizador. Por defecto es 'mejor.pt'. |
'best.pt'
|
s |
str
|
Ruta del archivo en el que guardar el modelo con el optimizador despojado. Si no se indica, se sobrescribirá 'f'. |
''
|
Devuelve:
Tipo | Descripción |
---|---|
None
|
Ninguno |
Ejemplo
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.convert_optimizer_state_dict_to_fp16(state_dict)
Convierte el estado_dict de un optimizador dado a FP16, centrándose en la clave "estado" para las conversiones tensor .
Este método pretende reducir el tamaño de almacenamiento sin alterar los "param_groups", ya que contienen datos que no son detensor .
Código fuente en ultralytics/utils/torch_utils.py
ultralytics.utils.torch_utils.profile(input, ops, n=10, device=None)
Ultralytics perfilador de velocidad, memoria y FLOPs.