Scheaven
2021-09-18 291deeb1fcf45dbf39a24aa72a213ff3fd6b3405
1
2
3
4
5
6
7
8
9
10
11
12
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
B
퐗_Ê*ã@s‚dZddlZddlZddlmZddlmZddlmZddlm    Z    ddl
m Z ddl Td    d
l mZe ¡Gd d „d ejƒƒZdS) z9
@author:  liaoxingyu
@contact: sherlockliao01@gmail.com
éN)Únn)Úget_norm)Úbuild_backbone)Ú
Bottleneck)Ú build_heads)Ú*é)ÚMETA_ARCH_REGISTRYcs@eZdZ‡fdd„Zedd„ƒZdd„Zdd„Zd    d
„Z‡Z    S) ÚMGNcsÔtƒ ¡||_t|jjƒt|jjƒks,t‚| dt     
|jj¡  dddd¡¡| dt     
|jj¡  dddd¡¡|jj j }|jj j}t|ƒ}t |j|j|j|j|j|j|jd¡|_tj|jdd…Ž}|j}t tdd|d|t tjdd    ddd
t|d    ƒ¡d td    d|d|ƒtd    d|d|ƒ¡}| |j ¡¡t t  !|¡t  !|¡¡|_"t#|ƒ|_$t t  !|¡t  !|¡¡|_%t#|ƒ|_&t#|ƒ|_'t#|ƒ|_(t t  !|¡t  !|¡¡|_)t#|ƒ|_*t#|ƒ|_+t#|ƒ|_,t#|ƒ|_-dS) NÚ
pixel_meanréÿÿÿÿÚ    pixel_stdriiFi)Úbias)Ú
downsample).ÚsuperÚ__init__Ú_cfgÚlenÚMODELÚ
PIXEL_MEANÚ    PIXEL_STDÚAssertionErrorÚregister_bufferÚtorchÚTensorÚviewÚBACKBONEÚNORMÚWITH_SErrÚ
SequentialÚconv1Úbn1ÚreluÚmaxpoolÚlayer1Úlayer2Úlayer3ÚbackboneÚlayer4rÚConv2drÚload_state_dictÚ
state_dictÚcopyÚdeepcopyÚb1rÚb1_headÚb2Úb2_headÚb21_headÚb22_headÚb3Úb3_headÚb31_headÚb32_headÚb33_head)ÚselfÚcfgÚbn_normÚwith_ser'Z    res_conv4Z res_g_conv5Z res_p_conv5)Ú    __class__©ú./modeling/meta_arch/mgn.pyrsR
""
 
 
 
 
 
 
 
 
z MGN.__init__cCs|jjS)N)r Údevice)r9r>r>r?r@Psz
MGN.devicec
CsŠ| |¡}| |¡}| |¡}| |¡}tj|ddd\}}| |¡}tj|ddd\}    }
} |jrd|ksttdƒ‚|d     ¡ 
|j ¡} |   ¡dkrœ|   ¡| || ¡} | || ¡}| || ¡}| || ¡}| || ¡}| |    | ¡}| |
| ¡}| | | ¡}| |||||||| dœ    S| |¡}| |¡}| |¡}| |¡}| |¡}| |    ¡}| |
¡}| | ¡}tj||||||||gdd}|SdS)    Né)ÚdiméÚtargetsz-Person ID annotation are missing in training!r)    Ú
b1_outputsÚ
b2_outputsÚ b21_outputsÚ b22_outputsÚ
b3_outputsÚ b31_outputsÚ b32_outputsÚ b33_outputsrDr)Úpreprocess_imager'r.r0rÚchunkr4ÚtrainingrÚlongÚtor@ÚsumÚzero_r/r1r2r3r5r6r7r8Úcat)r9Úbatched_inputsÚimagesÚfeaturesZb1_featZb2_featZb21_featZb22_featZb3_featZb31_featZb32_featZb33_featrDrErFrGrHrIrJrKrLÚ b1_pool_featÚ b2_pool_featÚ b21_pool_featÚ b22_pool_featÚ b3_pool_featÚ b31_pool_featÚ b32_pool_featÚ b33_pool_featÚ    pred_featr>r>r?ÚforwardTsP
 
 
 
 
 
 
 
 
 
 
 
 
 z MGN.forwardcCs`t|tƒr|d |j¡}n,t|tjƒr6| |j¡}ntd t|ƒ¡ƒ‚|     |j
¡  |j ¡|S)z7
        Normalize and batch the input images.
        rVz7batched_inputs must be dict or torch.Tensor, but get {}) Ú
isinstanceÚdictrQr@rrÚ    TypeErrorÚformatÚtypeÚsub_r Údiv_r )r9rUrVr>r>r?rM‹s
 zMGN.preprocess_imagecCs@|d}|d}|d}|d}|d}|d}|d}|d}    |d    }
|d
 ¡} |d } |d } |d }|d }|d }|d }|d }|    d }|d }|d }|d }|d }|d }|d }|d }|    d }t| |
ƒtj||fd d}tj|||fd d}i}|jjjj}d|krÞt| |
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t| |
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<t||
|jjjj    j
|jjjj    j ƒ|jjjj    j d|d<d|kr<t ||
|jjjjj|jjjjj|jjjjjƒ|jjjjj d|d<t ||
|jjjjj|jjjjj|jjjjjƒ|jjjjj d|d<t ||
|jjjjj|jjjjj|jjjjjƒ|jjjjj d|d<t ||
|jjjjj|jjjjj|jjjjjƒ|jjjjj d|d<t ||
|jjjjj|jjjjj|jjjjjƒ|jjjjj d|d<|S) NrErFrGrHrIrJrKrLrDÚpred_class_logitsÚ cls_outputsrWr)rBÚCrossEntropyLossgÀ?Z loss_cls_b1Z loss_cls_b2Z loss_cls_b21Z loss_cls_b22Z loss_cls_b3Z loss_cls_b31Z loss_cls_b32Z loss_cls_b33Ú TripletLossgš™™™™™É?Zloss_triplet_b1Zloss_triplet_b2Zloss_triplet_b3Zloss_triplet_b22Zloss_triplet_b33)ÚdetachÚ log_accuracyrrTrrÚLOSSESÚNAMEÚcross_entropy_lossÚCEÚEPSILONÚALPHAÚSCALEÚ triplet_lossÚTRIÚMARGINÚ    NORM_FEATÚ HARD_MINING)r9ÚoutsrErFrGrHrIrJrKrLÚ    gt_labelsriZ    b1_logitsZ    b2_logitsZ
b21_logitsZ
b22_logitsZ    b3_logitsZ
b31_logitsZ
b32_logitsZ
b33_logitsrXrYr\rZr[r]r^r_Ú    loss_dictÚ
loss_namesr>r>r?Úlosses™s^ 
 
88888888
DDDDDz
MGN.losses)
Ú__name__Ú
__module__Ú __qualname__rÚpropertyr@rarMrÚ __classcell__r>r>)r=r?r
s
 ; 7r
)Ú__doc__r,rrÚlayersrÚmodeling.backbonesrZmodeling.backbones.resnetrÚmodeling.headsrÚmodeling.lossesÚbuildr    ÚregisterÚModuler
r>r>r>r?Ú<module>s