Referencia para ultralytics/utils/tal.py
Nota
Este archivo está disponible en https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/utils/tal .py. Si detectas algún problema, por favor, ayuda a solucionarlo contribuyendo con una Pull Request 🛠️. ¡Gracias 🙏!
ultralytics.utils.tal.TaskAlignedAssigner
Bases: Module
Un asignador de tareas para la detección de objetos.
Esta clase asigna objetos verdaderos (gt) a los anclajes basándose en la métrica alineada con la tarea, que combina la información de clasificación y la de localización. información de clasificación y localización.
Atributos:
Nombre | Tipo | Descripción |
---|---|---|
topk |
int
|
El número de candidatos principales a tener en cuenta. |
num_classes |
int
|
El número de clases de objetos. |
alpha |
float
|
El parámetro alfa para el componente de clasificación de la métrica alineada con la tarea. |
beta |
float
|
El parámetro beta para el componente de localización de la métrica alineada con la tarea. |
eps |
float
|
Un valor pequeño para evitar la división por cero. |
Código fuente en ultralytics/utils/tal.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 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 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
|
__init__(topk=13, num_classes=80, alpha=1.0, beta=6.0, eps=1e-09)
Inicializa un objeto TaskAlignedAssigner con hiperparámetros personalizables.
Código fuente en ultralytics/utils/tal.py
forward(pd_scores, pd_bboxes, anc_points, gt_labels, gt_bboxes, mask_gt)
Calcula la asignación de tareas alineadas. El código de referencia está disponible en https://github.com/Nioolek/PPYOLOE_pytorch/blob/master/ppyoloe/assigner/tal_assigner.py.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
pd_scores |
Tensor
|
forma(bs, num_total_anclas, num_clases) |
necesario |
pd_bboxes |
Tensor
|
forma(bs, num_total_anclas, 4) |
necesario |
anc_points |
Tensor
|
forma(num_total_anclas, 2) |
necesario |
gt_labels |
Tensor
|
forma(bs, n_cajas_máx, 1) |
necesario |
gt_bboxes |
Tensor
|
forma(bs, n_cajas_máx, 4) |
necesario |
mask_gt |
Tensor
|
forma(bs, n_cajas_máx, 1) |
necesario |
Devuelve:
Nombre | Tipo | Descripción |
---|---|---|
target_labels |
Tensor
|
forma(bs, num_total_anclas) |
target_bboxes |
Tensor
|
forma(bs, num_total_anclas, 4) |
target_scores |
Tensor
|
forma(bs, num_total_anclas, num_clases) |
fg_mask |
Tensor
|
forma(bs, num_total_anclas) |
target_gt_idx |
Tensor
|
forma(bs, num_total_anclas) |
Código fuente en ultralytics/utils/tal.py
get_box_metrics(pd_scores, pd_bboxes, gt_labels, gt_bboxes, mask_gt)
Calcula la métrica de alineación dadas las cajas delimitadoras predichas y las de la verdad básica.
Código fuente en ultralytics/utils/tal.py
get_pos_mask(pd_scores, pd_bboxes, gt_labels, gt_bboxes, anc_points, mask_gt)
Obtener máscara in_gts, (b, max_num_obj, h*w).
Código fuente en ultralytics/utils/tal.py
get_targets(gt_labels, gt_bboxes, target_gt_idx, fg_mask)
Calcula las etiquetas de los objetivos, los cuadros delimitadores de los objetivos y las puntuaciones de los objetivos para los puntos de anclaje positivos.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
gt_labels |
Tensor
|
Etiquetas de la verdad sobre el terreno de forma (b, max_num_obj, 1), donde b es el tamaño del lote y max_num_obj es el número máximo de objetos. |
necesario |
gt_bboxes |
Tensor
|
Cajas delimitadoras de la verdad sobre el terreno de forma (b, max_num_obj, 4). |
necesario |
target_gt_idx |
Tensor
|
Índices de los objetos reales asignados para los puntos de anclaje positivos puntos de anclaje, con forma (b, hw), donde hwes el número total total de puntos de anclaje. |
necesario |
fg_mask |
Tensor
|
Un booleano tensor de forma (b, h*w) que indica los puntos de anclaje positivos (primer plano) de los puntos de anclaje. |
necesario |
Devuelve:
Tipo | Descripción |
---|---|
Tuple[Tensor, Tensor, Tensor]
|
Una tupla que contiene los siguientes tensores: - etiquetas_objetivo (Tensor): Forma (b, hw), que contiene las etiquetas objetivo para puntos de anclaje positivos. - cajas_objetivo (Tensor):Forma(b, hw, 4), que contiene las cajas delimitadoras objetivo de los puntos de anclaje positivos. - puntuaciones_objetivo (Tensor): Forma (b, h*w, num_clases), que contiene las puntuaciones objetivo para los puntos de anclaje positivos, donde num_clases es el número de clases de objetos. |
Código fuente en ultralytics/utils/tal.py
iou_calculation(gt_bboxes, pd_bboxes)
select_candidates_in_gts(xy_centers, gt_bboxes, eps=1e-09)
staticmethod
Selecciona el centro de anclaje positivo en gt.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
xy_centers |
Tensor
|
forma(h*w, 2) |
necesario |
gt_bboxes |
Tensor
|
forma(b, n_cajas, 4) |
necesario |
Devuelve:
Tipo | Descripción |
---|---|
Tensor
|
forma(b, n_cajas, h*w) |
Código fuente en ultralytics/utils/tal.py
select_highest_overlaps(mask_pos, overlaps, n_max_boxes)
staticmethod
Si un cuadro de anclaje está asignado a varios gts, se seleccionará el que tenga el IoU más alto.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
mask_pos |
Tensor
|
forma(b, n_cajas_máx, h*w) |
necesario |
overlaps |
Tensor
|
forma(b, n_cajas_máx, h*w) |
necesario |
Devuelve:
Nombre | Tipo | Descripción |
---|---|---|
target_gt_idx |
Tensor
|
forma(b, h*w) |
fg_mask |
Tensor
|
forma(b, h*w) |
mask_pos |
Tensor
|
forma(b, n_cajas_máx, h*w) |
Código fuente en ultralytics/utils/tal.py
select_topk_candidates(metrics, largest=True, topk_mask=None)
Selecciona los k mejores candidatos en función de las métricas dadas.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
metrics |
Tensor
|
Un tensor de forma (b, max_num_obj, hw), donde b es el tamaño del lote, max_num_objes el número máximo de objetos, y hw representa el número total de puntos de anclaje. |
necesario |
largest |
bool
|
Si es Verdadero, selecciona los valores más grandes; si no, selecciona los valores más pequeños. |
True
|
topk_mask |
Tensor
|
Un booleano opcional tensor de forma (b, max_num_obj, topk), donde topk es el número de candidatos principales a considerar. Si no se proporciona los valores top-k se calculan automáticamente basándose en las métricas dadas. |
None
|
Devuelve:
Tipo | Descripción |
---|---|
Tensor
|
Un tensor de forma (b, max_num_obj, h*w) que contiene los candidatos top-k seleccionados. |
Código fuente en ultralytics/utils/tal.py
ultralytics.utils.tal.RotatedTaskAlignedAssigner
Bases: TaskAlignedAssigner
Código fuente en ultralytics/utils/tal.py
iou_calculation(gt_bboxes, pd_bboxes)
select_candidates_in_gts(xy_centers, gt_bboxes)
staticmethod
Selecciona el centro de anclaje positivo en gt para las cajas delimitadoras rotadas.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
xy_centers |
Tensor
|
forma(h*w, 2) |
necesario |
gt_bboxes |
Tensor
|
forma(b, n_cajas, 5) |
necesario |
Devuelve:
Tipo | Descripción |
---|---|
Tensor
|
forma(b, n_cajas, h*w) |
Código fuente en ultralytics/utils/tal.py
ultralytics.utils.tal.make_anchors(feats, strides, grid_cell_offset=0.5)
Generar anclajes a partir de características.
Código fuente en ultralytics/utils/tal.py
ultralytics.utils.tal.dist2bbox(distance, anchor_points, xywh=True, dim=-1)
Transforma distancia(ltrb) en caja(xywh o xyxy).
Código fuente en ultralytics/utils/tal.py
ultralytics.utils.tal.bbox2dist(anchor_points, bbox, reg_max)
Transforma bbox(xyxy) en dist(ltrb).
ultralytics.utils.tal.dist2rbox(pred_dist, pred_angle, anchor_points, dim=-1)
Decodifica las coordenadas del cuadro delimitador del objeto predicho a partir de los puntos de anclaje y la distribución.
Parámetros:
Nombre | Tipo | Descripción | Por defecto |
---|---|---|---|
pred_dist |
Tensor
|
Distancia rotada prevista, (bs, h*w, 4). |
necesario |
pred_angle |
Tensor
|
Ángulo previsto, (bs, h*w, 1). |
necesario |
anchor_points |
Tensor
|
Puntos de anclaje, (h*w, 2). |
necesario |
Devuelve: (torch.Tensor): Cajas delimitadoras rotadas predichas, (bs, h*w, 4).