์ฐธ์กฐ ultralytics/nn/modules/transformer.py
์ฐธ๊ณ
์ด ํ์ผ์ https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/nn/modules/transformer .py์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํ ๋ฆฌํ์คํธ ๐ ๏ธ ์ ๊ธฐ์ฌํ์ฌ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค ๐!
ultralytics.nn.modules.transformer.TransformerEncoderLayer
๋ฒ ์ด์ค: Module
ํธ๋์คํฌ๋จธ ์ธ์ฝ๋์ ๋จ์ผ ๋ ์ด์ด๋ฅผ ์ ์ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0.0, act=nn.GELU(), normalize_before=False)
์ง์ ๋ ํ๋ผ๋ฏธํฐ๋ก ํธ๋์คํฌ๋จธ ์ธ์ฝ๋ ๋ ์ด์ด๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(src, src_mask=None, src_key_padding_mask=None, pos=None)
ํฌ์๋๋ ์ธ์ฝ๋ ๋ชจ๋์ ํตํด ์ ๋ ฅ์ ์ ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward_post(src, src_mask=None, src_key_padding_mask=None, pos=None)
ํฌ์คํธ ์ ๊ทํ๋ฅผ ํตํด ํฌ์๋ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward_pre(src, src_mask=None, src_key_padding_mask=None, pos=None)
์ฌ์ ์ ๊ทํ๋ฅผ ํตํด ํฌ์๋ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
with_pos_embed(tensor, pos=None)
staticmethod
ultralytics.nn.modules.transformer.AIFI
๋ฒ ์ด์ค: TransformerEncoderLayer
AIFI ํธ๋์คํฌ๋จธ ๋ ์ด์ด๋ฅผ ์ ์ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(c1, cm=2048, num_heads=8, dropout=0, act=nn.GELU(), normalize_before=False)
์ง์ ๋ ํ๋ผ๋ฏธํฐ๋ก AIFI ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
build_2d_sincos_position_embedding(w, h, embed_dim=256, temperature=10000.0)
staticmethod
2D ์ฌ์ธ ์ฝ์ฌ์ธ ์์น ์๋ฒ ๋ฉ์ ๋น๋ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(x)
AIFI ํธ๋์คํฌ๋จธ ๋ ์ด์ด์ ๋ํ ํฌ์๋ ํจ์ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.TransformerLayer
๋ฒ ์ด์ค: Module
ํธ๋์คํฌ๋จธ ๋ ์ด์ด https://arxiv.org/abs/2010.11929 (์ฑ๋ฅ ํฅ์์ ์ํด LayerNorm ๋ ์ด์ด๊ฐ ์ ๊ฑฐ๋จ).
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(c, num_heads)
์ ํ ๋ณํ๊ณผ ๋ค์ค ํค๋ ์ดํ ์ ์ ์ฌ์ฉํ์ฌ ์์ฒด ์ดํ ์ ๋ฉ์ปค๋์ฆ์ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(x)
์ ๋ ฅ x์ ํธ๋์คํฌ๋จธ ๋ธ๋ก์ ์ ์ฉํ๊ณ ์ถ๋ ฅ์ ๋ฐํํฉ๋๋ค.
ultralytics.nn.modules.transformer.TransformerBlock
๋ฒ ์ด์ค: Module
๋น์ ํธ๋์คํฌ๋จธ https://arxiv.org/abs/2010.11929.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(c1, c2, num_heads, num_layers)
์์น ์๋ฒ ๋ฉ๊ณผ ์ง์ ๋ ์์ ํค๋ ๋ฐ ๋ ์ด์ด๋ก ํธ๋์คํฌ๋จธ ๋ชจ๋์ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(x)
ํฌ์๋๋ ๋ณ๋ชฉ ๋ชจ๋์ ํตํด ์ ๋ ฅ์ ์ ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLPBlock
๋ฒ ์ด์ค: Module
๋ค์ธต ํผ์ ํธ๋ก ์ ๋จ์ผ ๋ธ๋ก์ ๊ตฌํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(embedding_dim, mlp_dim, act=nn.GELU)
์ง์ ๋ ์๋ฒ ๋ฉ ์ฐจ์, MLP ์ฐจ์ ๋ฐ ํ์ฑํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ MLP๋ธ๋ก์ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MLP
๋ฒ ์ด์ค: Module
๊ฐ๋จํ ๋ค์ธต ํผ์ ํธ๋ก (FFN์ด๋ผ๊ณ ๋ ํจ)์ ๊ตฌํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(input_dim, hidden_dim, output_dim, num_layers)
์ง์ ๋ ์ ๋ ฅ, ์จ๊น, ์ถ๋ ฅ ํฌ๊ธฐ ๋ฐ ๋ ์ด์ด ์๋ก MLP๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.LayerNorm2d
๋ฒ ์ด์ค: Module
2D ๋ ์ด์ด ๋ ธ๋ฉ๋ผ์ด์ ์ด์ ๋ชจ๋์ Detectron2 ๋ฐ ConvNeXt ๊ตฌํ์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค.
์ ์๋ณธ ๊ตฌํ https://github.com/facebookresearch/detectron2/blob/main/detectron2/layers/batch_norm.py ๋ฐ https://github.com/facebookresearch/ConvNeXt/blob/main/models/convnext.py.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(num_channels, eps=1e-06)
์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ก LayerNorm2d๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(x)
2D ๋ ์ด์ด ์ ๊ทํ๋ฅผ ์ํด ํฌ์๋ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.MSDeformAttn
๋ฒ ์ด์ค: Module
๋ฉํฐ์ค์ผ์ผ ๋ํฌ๋จธ๋ธ ์ดํ ์ ๋ชจ๋์ ๋ํฌ๋จธ๋ธ-DETR ๋ฐ ํจ๋ค ๋ํ ์ ๊ตฌํ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/ops/modules/ms_deform_attn.py
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
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 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
|
__init__(d_model=256, n_levels=4, n_heads=8, n_points=4)
์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ก MSDeformAttn์ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(query, refer_bbox, value, value_shapes, value_mask=None)
๋ฉํฐ์ค์ผ์ผ ๋ณํ์ ๋ํ ํฌ์๋ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
๋งค๊ฐ๋ณ์:
์ด๋ฆ | ์ ํ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
---|---|---|---|
query |
Tensor
|
[bs, ์ฟผ๋ฆฌ_๊ธธ์ด, C] |
ํ์ |
refer_bbox |
Tensor
|
[bs, ์ฟผ๋ฆฌ_๊ธธ์ด, n_๋ ๋ฒจ, 2], ๋ฒ์๋ [0, 1], ์ผ์ชฝ ์๋จ(0,0), ์ค๋ฅธ์ชฝ ํ๋จ(1, 1), ํจ๋ฉ ์์ญ ํฌํจ |
ํ์ |
value |
Tensor
|
[bs, value_length, C] |
ํ์ |
value_shapes |
List
|
[n_levels, 2], [(H_0, W_0), (H_1, W_1), ..., (H_{L-1}, W_{L-1})] |
ํ์ |
value_mask |
Tensor
|
[bs, value_๊ธธ์ด], ํจ๋ฉ์ด ์๋ ์์๋ True, ํจ๋ฉ์ด ์๋ ์์๋ False์ ๋๋ค. |
None
|
๋ฐํํฉ๋๋ค:
์ด๋ฆ | ์ ํ | ์ค๋ช |
---|---|---|
output |
Tensor
|
[bs, Length_{query}, C] |
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
ultralytics.nn.modules.transformer.DeformableTransformerDecoderLayer
๋ฒ ์ด์ค: Module
๋ณํ ๊ฐ๋ฅํ ํธ๋์คํฌ๋จธ ๋์ฝ๋ ๋ ์ด์ด๋ ํจ๋ค๊ฐ์ง ๋ฐ ๋ณํ ๊ฐ๋ฅ-DETR ๊ตฌํ์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py https://github.com/fundamentalvision/Deformable-DETR/blob/main/models/deformable_transformer.py
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(d_model=256, n_heads=8, d_ffn=1024, dropout=0.0, act=nn.ReLU(), n_levels=4, n_points=4)
์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ก DeformableTransformerDecoderLayer๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, padding_mask=None, attn_mask=None, query_pos=None)
์ ์ฒด ๋์ฝ๋ ๋ ์ด์ด๋ฅผ ํตํด ์ ๋ฐฉํฅ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward_ffn(tgt)
๋ ์ด์ด์ ํผ๋ ํฌ์๋ ๋คํธ์ํฌ ๋ถ๋ถ์ ํตํด ํฌ์๋ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
with_pos_embed(tensor, pos)
staticmethod
tensor ์ ๋ ฅ์ ์์น ์๋ฒ ๋ฉ์ ์ถ๊ฐํฉ๋๋ค(์ ๊ณต๋ ๊ฒฝ์ฐ).
ultralytics.nn.modules.transformer.DeformableTransformerDecoder
๋ฒ ์ด์ค: Module
ํจ๋ค๊ฐ์ง ๊ธฐ๋ฐ์ ๋ณํ ๊ฐ๋ฅํ ๋ณ์๊ธฐ ๋์ฝ๋ ๊ตฌํ.
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/ppdet/modeling/transformers/deformable_transformer.py
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
__init__(hidden_dim, decoder_layer, num_layers, eval_idx=-1)
์ฃผ์ด์ง ํ๋ผ๋ฏธํฐ๋ก DeformableTransformerDecoder๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/nn/modules/transformer.py
forward(embed, refer_bbox, feats, shapes, bbox_head, score_head, pos_mlp, attn_mask=None, padding_mask=None)
์ ์ฒด ๋์ฝ๋๋ฅผ ํตํด ์ ๋ฐฉํฅ ํจ์ค๋ฅผ ์ํํฉ๋๋ค.