CoolFace
Apppublic

samH98/LungCancerDetection

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
yolo.cpython-39.pyc217 linesDownload Raw Back to __pycache__
1a

2�t�cX��@s�ddlZddlZddlZddlmZej�d�e�e�Z	ddl3Z4ddlTddlTddl
mZddlmZmZmZddlmZmZmZmZmZmZmZddlmZzddlZWney�dZYn0Gd	d5�d6ej �Z!Gdd�dej �Z"Gd
d�dej �Z#Gdd�dej �Z$Gdd�dej �Z%Gdd�dej �Z&dd�Z'edk�r�e�(�Z)e)j*de+ddd�e)j*dddd�e)j*d d!d"d#�e)�,�Z-ee-j.�e-_.e�ee-j/�Z/e&e-j.��0e/�Z1e1�2�e-j3�r�e7�4d$d%d&d&��0e/�Z5e1e5d'd(�Z6dS))�N)�deepcopyz./)�*)�check_anchor_order)�make_divisible�8check_file�set_logging)�time_synchronized�fuse_conv_and_bn�9model_info�	scale_img�initialize_weights�
select_device�	copy_attr)�10SigmoidBincsPeZdZdZdZdZdZdZd�fdd�	Zdd�Z	e11dd12d��Zdd
�Z�Z
S)�DetectNF�P�cs�tt����|�_|d�_t|��_t|d�d�_t�	d�g�j�_13t�|����
�jdd�}��d|���d|���
�jddddd��t��fdd	�|D���_dS)14N�r��������anchors�anchor_gridc3s$|]}t�|�j�jd�VqdS�rN��nn�Conv2d�no�na��.0�x��selfr�/C:\Users\Sam\projects\gradio_app\models\yolo.py�	<genexpr>(�z"Detect.__init__.<locals>.<genexpr>)�superr�__init__�ncr�len�nlr�torch�zeros�grid�tensor�float�view�register_buffer�cloner�15ModuleList�m�r#r)r�ch�a��	__class__r"r$r(s1617"zDetect.__init__c
Cs8g}|j|jO_t|j�D�]�}|j|||�||<||j\}}}}||�||j|j||��	ddddd��18�||<|js|j|jdd�||jdd�kr�|�||��
||j�|j|<||��}tj���sF|ddd�fdd|j||j||ddd�f<|ddd�fdd|j||ddd�f<nr|�dd|jdfd�\}	}19}|	d|j||j||j|d}	|20dd|j|j}21t�|	|22|fd�}|�|�|d	|j��q|j�r�|}nV|j�r�t�|d�}n@|j�r|�|�}|f}n&|j�r$t�|d�}nt�|d�|f}|S�23Nrr��r.�@��?r��training�export�ranger+r5�shaper1rr�permute�24contiguousr.�25_make_grid�to�device�sigmoidr,�onnx�is_in_onnx_export�strider�splitr)�data�cat�append�end2end�include_nms�convert�concat�
r#r!�z�i�bs�_�ny�nx�y�xy�wh�conf�outrrr$�forward*s:0&80*26zDetect.forward�cCsBt�t�|�t�|�g�\}}t�||fd��dd||df���S�Nrr�r,�meshgrid�arange�stackr1r0�r\r[�yv�xvrrr$rGOszDetect._make_gridcCs�t�|d�}|dd�dd�dd�f}|dd�dd�dd�f}|dd�dd�dd�f}||9}tjgd�gd�gd�gd�gtj|jd�}||}||fS�	Nrr=r)rrrr)rrrr)��rr?r)rrmrr?)�dtyperI�r,rPr/�float32rI�r#rW�boxr`�scoreZconvert_matrixrrr$rTTs�zDetect.convert)rrr)rcrc)�__name__�27__module__�__qualname__rMrBrRrSrUr(rb�staticmethodrGrT�
__classcell__rrr9r$rs%rcs`eZdZdZdZdZdZdZd�fdd�	Zdd�Z	d	d28�Z29dd�Zeddd��Z
dd�Z�ZS)�IDetectNFrrcs�tt����|�_|d�_t|��_t|d�d�_t�	d�g�j�_30t�|����
�jdd�}��d|���d|���
�jddddd��t��fdd	�|D���_t�d31d	�|D���_t��fdd	�|D���_dS)Nrrrrrrrc3s$|]}t�|�j�jd�VqdSrrrr"rr$r%rr&z#IDetect.__init__.<locals>.<genexpr>css|]}t|�VqdS�N�Z	ImplicitArrrr$r%tr&c3s|]}t�j�j�VqdSrz��	ImplicitMrr�r rZr"rr$r%ur&)r'ryr(r)rr*r+rr,r-r.r/r0r1r2r3rr4r5�ia�imr6r9r"r$r(hs3233"zIDetect.__init__c	Cs�g}|j|jO_t|j�D�]N}|j||j|||��||<|j|||�||<||j\}}}}||�||j	|j34||��ddddd���||<|js|j
|jdd�||jdd�kr�|�||��||j�|j
|<||��}|ddd�fdd|j
||j||ddd�f<|ddd�fdd|j||ddd�f<|�|�|d	|j35��q|j�r||St�|d�|fSr;)rArBrCr+r5rr�rDr1rrrErFr.rGrHrIrJrMrrQr,rP)	r#r!rWrXrYrZr[r\r]rrr$rbws 0&8.zIDetect.forwardc
Cs8g}|j|jO_t|j�D�]�}|j|||�||<||j\}}}}||�||j|j||��	ddddd��36�||<|js|j|jdd�||jdd�kr�|�||��
||j�|j|<||��}tj���sF|ddd�fdd|j||j||ddd�f<|ddd�fdd|j||ddd�f<nr|�dd|jdfd�\}	}37}|	d|j||j||j|d}	|38dd|j|j}39t�|	|40|fd�}|�|�|d	|j��q|j�r�|}nV|j�r�t�|d�}n@|j�r|�|�}|f}n&|j�r$t�|d�}nt�|d�|f}|Sr;r@rVrrr$�fuseforward�s:0&80*41zIDetect.fuseforwardc42Cs�td�tt|j��D]r}|j|jj\}}}}|j|jj\}}}}|j|jt	�43|j|j�||�|j|j�||���d�7_qtt|j��D]`}|j
|jj\}}}}|j|j|j
|j�|�9_|j|j|j
|j�dd�9_q�dS)N�IDetect.fuserr��printrCr*r5�weightrDr�implicit�biasr,�matmul�reshape�squeezer��	transpose�r#rX�c1�c2rZZc1_Zc2_rrr$�fuse�sD"r�rccCsBt�t�|�t�|�g�\}}t�||fd��dd||df���Srdrerirrr$rG�szIDetect._make_gridcCs�t�|d�}|dd�dd�dd�f}|dd�dd�dd�f}|dd�dd�dd�f}||9}tjgd�gd�gd�gd�gtj|jd�}||}||fSrlrorqrrr$rT�s�zIDetect.convert)rrr)rcrc�rtrurvrMrBrRrSrUr(rbr�r�rwrGrTrxrrr9r$ryas&rycs<eZdZdZdZd�fdd�	Zd	d44�Zeddd
��Z�Z	S)�	IKeypointNFrr�Tcs`tt����|�_|�_|�_|d�_d�j�_�j�j�_t	|��_45t	|d�d�_t�
d�g�j46�_d�_t�|�����j47dd�}��d|���d	|����j48ddddd��t��fd49d�|D���_t�dd�|D���_t��fd
d�|D���_�jdu�rV�j�r<t��fdd�|D���_nt��fdd�|D���_|�_dS)Nrr<rrrFrrrc3s$|]}t�|�j�jd�VqdSr)rr�no_detrrr"rr$r%�r&z%IKeypoint.__init__.<locals>.<genexpr>css|]}t|�VqdSrzr{rrrr$r%�r&c3s|]}t�j�j�VqdSrz)r}r�rr~r"rr$r%�r&c3s�|]�}t�t||dd�t||�t||dd�t||�t||dd�t||�t||dd�t||�t||dd�t||�t||dd�t�|�j�jd��VqdS)r<)�krN)r�50Sequential�DWConv�Convr�no_kptrrr"rr$r%�s� �c3s$|]}t�|�j�jd�VqdSr)rrr�rrr"rr$r%�r&)r'r�r(r)�nkpt�dw_conv_kptr�r�rr*r+rr,r-r.Z	flip_testr/r0r1r2r3rr4r5rr��m_kpt�inplace)r#r)rr�r7r�r�r8r9r"r$r(�s05152"�zIKeypoint.__init__c	Cs�g}|j|jO_t|j�D�]�}|jdus8|jdkrd|j||j||j|||���||<nFtj	|j||j||j|||���|j53|||�fdd�||<||j\}}}}||�||j
|j||��ddddd���||<||ddd�f}||ddd�f}	|js|j|jdd�||jdd�k�r`|�||��||j�|j|<|j|ddd�f}54|j|ddd�f}|jdk�r�||��}n|��}|j�r�|ddd�fd	d55|j||j|}
|ddd�fdd|j|�d|j
ddd�}|jdk�r�|	dddd�fd	d56|57�ddddd�|j||	dddd�f<|	dddd�fd	d58|�ddddd�|j||	dddd�f<|	dddd�f��|	dddd�f<tj	|
||ddd�f|	fdd
�}n�|ddd�fd	d59|j||j|}
|ddd�fdd|j|}|jdk�r�|ddd�fd	d60|j|�dddd|jf�|j||ddd�f<t�	|
||ddd�ffd�}|�|�|d|j��q|j�r�|St�	|d�|fS)Nrr)�axisr<r=r.�r>r?r�r��dim)rArBrCr+r�r�r5rr,rPr�rDr1rrrErFr.rGrHrIrJr�rMr�repeatrQ)r#r!rWrXrYrZr[r\Zx_detZx_kptZ61kpt_grid_xZ62kpt_grid_yr]r^r_rrr$rb�sB,F0(,2DD$$,"JzIKeypoint.forwardrccCsBt�t�|�t�|�g�\}}t�||fd��dd||df���Srdrerirrr$rG1szIKeypoint._make_grid)rrr�rTF)rcrc�63rtrurvrMrBr(rbrwrGrxrrr9r$r��s"9r�cs`eZdZdZdZdZdZdZd�fdd�	Zdd�Z	d	d64�Z65dd�Zeddd��Z
dd�Z�ZS)�66IAuxDetectNFrrcs&tt����|�_|d�_t|��_t|d�d�_t�	d�g�j�_67t�|����
�jdd�}��d|���d|���
�jddddd��t��fdd	�|d�j�D���_t��fd68d	�|�jd�D���_t�dd	�|d�j�D���_t��fdd	�|d�j�D���_dS)
Nrrrrrrrc3s$|]}t�|�j�jd�VqdSrrrr"rr$r%Hr&z&IAuxDetect.__init__.<locals>.<genexpr>c3s$|]}t�|�j�jd�VqdSrrrr"rr$r%Ir&css|]}t|�VqdSrzr{rrrr$r%Kr&c3s|]}t�j�j�VqdSrzr|r~r"rr$r%Lr&)r'r�r(r)rr*r+rr,r-r.r/r0r1r2r3rr4r5�m2rr�r6r9r"r$r(>s6970"$$ zIAuxDetect.__init__cCsvg}|j|jO_t|j�D�].}|j||j|||��||<|j|||�||<||j\}}}}||�||j	|j71||��ddddd���||<|j
||||j�|||j<|||j�||j	|j72||��ddddd���|||j<|js|j|jdd�||jdd�k�rF|�||��||j�|j|<||��}tj���s�|ddd�fdd|j||j||ddd�f<|ddd�fdd|j||ddd�f<nr|�dd|jdfd�\}	}73}|	d|j||j||j|d}	|74dd|j|j}75t�|	|76|fd�}|�|�|d	|j77��q|j�r\|St�|d�|d|j�fSr;)rArBrCr+r5rr�rDr1rrrErFr�r.rGrHrIrJr,rKrLrMrrNr)rOrPrQ)r#r!rWrXrYrZr[r\r]r^r_r`rrr$rbNs, 0"<(80*zIAuxDetect.forwardc	Cs4g}|j|jO_t|j�D�]�}|j|||�||<||j\}}}}||�||j|j||��	ddddd��78�||<|js|j|jdd�||jdd�kr�|�||��
||j�|j|<||��}tj���sF|ddd�fdd|j||j||ddd�f<|ddd�fdd|j||ddd�f<nn|ddd�fdd|j||j|}	|ddd�fdd|j|j}79t�|	|80|ddd�ffd	�}|�|�|d	|j��q|j�r�|}nV|j�r�t�|d�}n@|j�r81|�|�}|f}n&|j�r t�|d�}nt�|d�|f}|Sr;)rArBrCr+r5rDr1rrrErFr.rGrHrIrJr,rKrLrMrrOrPrQrRrSrTrU)r#r!rWrXrYrZr[r\r]r^r_rarrr$r�ls80&80,$82zIAuxDetect.fuseforwardc83Cs�td�tt|j��D]r}|j|jj\}}}}|j|jj\}}}}|j|jt	�84|j|j�||�|j|j�||���d�7_qtt|j��D]`}|j
|jj\}}}}|j|j|j
|j�|�9_|j|j|j
|j�dd�9_q�dS)N�IAuxDetect.fuserrr�r�rrr$r��sD"r�rccCsBt�t�|�t�|�g�\}}t�||fd��dd||df���Srdrerirrr$rG�szIAuxDetect._make_gridcCs�t�|d�}|dd�dd�dd�f}|dd�dd�dd�f}|dd�dd�dd�f}||9}tjgd�gd�gd�gd�gtj|jd�}||}||fSrlrorqrrr$rT�s�zIAuxDetect.convert)rrr)rcrcr�rrr9r$r�7s%r�cs<eZdZdZdZd
�fdd�	Zdd	�Zeddd��Z�Z	S)�IBinNFrr�cs"tt����|�_|�_t�jddd��_t�jddd��_|d�j���j���_	t85|��_t86|d�d�_t
�d�g�j�_t
�|�����jdd�}��d	|���d87|����jddddd��t��fdd�|D���_t�d
d�|D���_t��fdd�|D���_dS)Ngg@)�	bin_count�min�maxr<rrrrrrc3s$|]}t�|�j�jd�VqdSrrrr"rr$r%�r&z IBin.__init__.<locals>.<genexpr>css|]}t|�VqdSrzr{rrrr$r%�r&c3s|]}t�j�j�VqdSrzr|r~r"rr$r%�r&)r'r�r(r)r�r�
w_bin_sigmoid�
h_bin_sigmoidZ88get_lengthrr*r+rr,r-r.r/r0r1r2r3rr4r5rr�)r#r)rr7r�r8r9r"r$r(�s&��89"z
IBin.__init__c	Cs�d|j_d|j_g}|j|jO_t|j�D�]�}|j||j|||��||<|j	|||�||<||j90\}}}}||�||j|j
||��ddddd���||<|js.|j|j91dd�||j92dd�kr�|�||��||j�|j|<||��}|ddd�fdd	|j||j||ddd�f<|j�|ddd93�f�|j|d}	|j�|dd94d�f�|j|d
}95|	|d<|96|d<tj|ddd�f|ddd�ffdd�}|�|�|d|j97d��q.|j�r�|St�|d�|fS)NTrrr<r=r.r>r?��.r�.�.r).r).r<rr�)r�Zuse_fw_regressionr�rArBrCr+r5rr�rDr1rrrErFr.rGrHrIrJrMrbrr,rPrQ)r#r!rWrXrYrZr[r\r]�pw�phrrr$rb�s* 0&8&&*zIBin.forwardrccCsBt�t�|�t�|�g�\}}t�||fd��dd||df���Srdrerirrr$rG�szIBin._make_grid)rrrr�)rcrcr�rrr9r$r��s*r�cs�eZdZd�fdd�	Zd dd�Zd!d	d98�Zd"dd�Zd#d
d�Zd$dd�Zd%dd�Z	dd�Z99dd�Zd&dd�Zdd�Z
d'dd�Z�ZS)(�Model�yolor-csp-c.yamlr<Ncsrtt|���d|_t|t�r&||_nNddl}t|�j|_	t100|��"}|j||jd�|_Wd�n1sj0Y|j�
d|�}|jd<|r�||jdkr�t�d|jd�d|���||jd<|r�t�d|���t|�|jd	<tt|j�|gd101�\|_|_dd�t|jd�D�|_|jd
}t|t��r�d�t��fdd�|�t�d|����D��|_t|�|j|j�d
dd�_|j|_|� �t|t!��rd�t��fdd�|�t�d|����D��|_t|�|j|j�d
dd�_|j|_|� �t|t"��rxd�t��fdd�|�t�d|����dd�D��|_t|�|j|j�d
dd�_|j|_|�#�t|t$��r�d�t��fdd�|�t�d|����D��|_t|�|j|j�d
dd�_|j|_|�%�t|t&��rTd�t��fdd�|�t�d|����D��|_t|�|j|j�d
dd�_|j|_|�'�t(|�|��t�d�dS)NFr)�Loaderr7r)zOverriding model.yaml nc=z	 with nc=z+Overriding model.yaml anchors with anchors=r�r7cSsg|]}t|��qSr)�str)r rXrrr$�102<listcomp>r&z"Model.__init__.<locals>.<listcomp>r�csg|]}�|jd�qS�������rDr��srr$r�r&rcsg|]}�|jd�qSr�r�rr�rr$r� r&csg|]}�|jd�qSr�r�rr�rr$r�(r&r=csg|]}�|jd�qSr�r�rr�rr$r�1r&csg|]}�|jd�qSr�r�rr�rr$r�9r&�))r'r�r(�traced�103isinstance�dict�yaml�Path�nameZ	yaml_file�open�loadZ104SafeLoader�get�logger�info�round�parse_modelr�model�saverC�namesrr,r/rbr-rMrrr1�_initialize_biasesryr��_initialize_aux_biasesr��_initialize_biases_binr��_initialize_biases_kptr)r#�cfgr7r)rr��fr5r9r�r$r(�sp1051060107108,,4,,zModel.__init__FcCs�|r�|jdd�}gd�}gd�}g}t||�D]�\}}	t|	rH|�|	�n||t|j���d�}109|�|110�d}|ddd�f|<|	dkr�|d|d	|d	<n|	d111kr�|d|d|d<|�|�q0t	�112|d�dfS|�||�SdS)
Nr�)rg���(\��?gq=113ףp�?)Nr<N)�gsr.r=rr�r<rr�)rD�zipr�flip�intrMr��forward_oncerQr,rP)r#r!Zaugment�profile�img_sizer�r�r]�si�fi�xi�yirrr$rbEs &z
Model.forwardc	s�gg�}|jD�]j}|jdkrLt|jt�r6�|jn��fdd�|jD��t|d�s\d|_|jr�t|t�s�t|t�s�t|t�s�t|t	�r��q~|�rXt|tttt114f�}tr�tj||r���
�n�fdd�ddd	nd}td115�D]}||r��
�n��q�t�}td116�D]}||�r��
�n���q117|�t�|d�td||j|d|jf�|�����|j|jv�rv�nd�q|�r�td
t|���S)Nrcs g|]}|dkr�n�|�qS)rr)r �j�r!r]rr$r�]r&z&Model.forward_once.<locals>.<listcomp>r�F)�inputs�verboserge��Ar�118�dz%10.1f%10.0f%10.1fms %-40sz%.1fms total)r�r�r�r��hasattrr�rryr�r�r��thopr��copyrCrrQr��np�typerXr��sum)	r#r!r��dtr5�c�orZ�trr�r$r�Ys0119120,121(2zModel.forward_oncec	Cs�|jd}t|j|j�D]�\}}|j�|jd�}|jdd�dft�	dd|d�7<|jdd�dd�f|dur�t�	d|j122d�nt�	||���7<tj
j|�d�d	d123�|_qdS�Nrr=��rr�333333�?�G�z��?T��
requires_grad�r�r�r5rMr�r1rrO�math�logr)r,r�r�	Parameter�r#�cfr5�mir��brrr$r�ys124,HzModel._initialize_biasesc	Csh|jd}t|j|j|j�D�]D\}}}|j�|jd�}|jdd�dft	�125dd|d�7<|jdd�dd�f|dur�t	�126d|jd�nt�127||�
��7<tjj|�d�d	d128�|_|j�|jd�}|jdd�dft	�129dd|d�7<|jdd�dd�f|du�r4t	�130d|jd�nt�131||�
��7<tjj|�d�d	d132�|_qdSr�)r�r�r5r�rMr�r1rrOr�r�r)r,r�rr�)r#r�r5r�Zmi2r�r��b2rrr$r��s133,H,JzModel._initialize_aux_biasesc		CsF|jd}|j}t|j|j�D�] \}}|j�|jd�}|dd�ddd|dffj}d|d}|dd�d|�fjt	�134d|dd�7_|dd�|fjt	�135d	d136|d�7_|dd�|dd�fj|dur�t	�137d|jd�nt�138||�
��7_||dd�ddd|dff_tjj|�d�dd�|_qdS)
Nrrrrr<r=r�r�r�r�Tr�)r�r�r�r5rMr�r1rrOr�r�r)r,r�rr�)	r#r�r5�bcr�r�r��oldZobj_idxrrr$r��s1390,LzModel._initialize_biases_binc	Cs�|jd}t|j|j�D]�\}}|j�|jd�}|jdd�dft�	dd|d�7<|jdd�dd�f|dur�t�	d|j140d�nt�	||���7<tj
j|�d�d	d141�|_qdSr�r�r�rrr$r��s142,HzModel._initialize_biases_kptcCsn|jd}|jD]X}|j���|jd�j}td|jj	dg|dd��143d����|dd��144��R�qdS)Nrz4%6g Conv2d.bias:%10.3g%10.3g%10.3g%10.3g%10.3g%10.3grr)r�r5r��detachr1r�Tr�r�rD�mean�tolist)r#r5r�r�rrr$�
_print_biases�s145146zModel._print_biasescCs�td�|j��D]�}t|t�r*|��qt|t�r>|��qt|�t	urxt147|d�rxt|j|j
�|_t|d�|j|_qt|ttf�r|��|j|_q|��|S)NzFusing layers... �bn)r�r��modulesr��RepConvZfuse_repvgg_block�
RepConv_OREPAZswitch_to_deployr�r�r�r	�convr�delattrr�rbryr�r�r��r#r5rrr$r��s148149150151152153154z155Model.fuseTcCs�t|jd�tu}|r`|s`td�t�}d|_|jdjd|_|jjd|j|d�|��n |s�|r�td�|jdd�|_|S)NrzAdding NMS... rz%s)r��modulezRemoving NMS... )r�r�ZNMSr�r�rX�156add_module�eval)r#�modeZpresentr5rrr$�nms�s157z	Model.nmscCs$td�t|�}t||ddd�|S)NzAdding autoShape... )r�r)�hypr�rMr)�include�exclude)r�Z	autoShaperrrrr$�	autoshape�szModel.autoshaper�cCst|||�dSrz)r158)r#r�r�rrr$r��sz159Model.info)r�r<NN)FF)F)N)N)N)N)T)Fr�)rtrurvr(rbr�r�r�r�r�rr�rrr�rxrrr9r$r��sH160161 162 163 164165166 167168r�c8s^t�dd�|d|d|d|df\}}}}t|t�rLt|d�dn|}||d	}gg�d169}}	}170t|d|d�D�]�\�\}}��t�t�r�t��n��t��D]4\}
}zt|t�r�t|�n|�|
<Wq�Yq�0q�|d
k�rtt	||�d
�n|}�t171jtt
ttttttttttttttttttt t!t"t#t$t%t&t't(t)t*t+t,t-t.t/t0t1t2t3t4t5t6t7t8t9t:t;t<t=t>t?t@f6v�r�|�d}}172|173|k�r�tA|174|d�}175||176g�d
d����tttttt t"t#t$t&t't(t*t+t,t.t/t0t2t3t4t6t7t8t:t;t<t>t?t@fv�rj��Bd|�d
}�nP�t177jCu�r4�|g��n6�tDu�rXtE�fdd�|D��}178�n�tFu�rztE�fdd�|D��}179n��tGu�r��|d}180n؈tHu�r��|d}181n��tItJtKtLtMfv�r182��N�fdd�|D��t�d
tO��rjttP�d
d��gt|��d
<n`�tQu�r"�|d}183nH�tRu�rB�|�dd}184n(�tSu�rb�|�dd}185n�|}186|d
k�r�t187jT��fdd�tP|�D��n���}t��dd��Udd�}tEdd�|�V�D��}�|||f\|_W|_X|_Y|_Zt�d�||||�f�|	�[�fdd�t|tO��r|gn|D��|�N|��dk�r@g���N|188�q�t189jT|�t\|	�fS)Nz190%3s%18s%3s%10s  %-40s%-30s)r��from�n�paramsr�	argumentsrr)Zdepth_multipleZwidth_multiplerrrr�backbone�headrr�csg|]}�|�qSrrrr�rr$r�r&zparse_model.<locals>.<listcomp>csg|]}�|�qSrrrr�rr$r�r&csg|]}�|�qSrrrr�rr$r�r&r=csg|]}����qSrrr~)�argsr5rr$r�#r&r�z	__main__.r�cSsg|]}|���qSr)�numelrrrr$r�%r&z%3s%18s%3s%10.0f  %-40s%-30sc3s|]}|dkr|�VqdS)rNrr)rXrr$r%(r&zparse_model.<locals>.<genexpr>)]r�r�r��listr*�	enumerater�rr�r�rrr�Z191RobustConvZRobustConv2r�Z	GhostConvr192rZDownCZSPPZSPPFZSPPCSPCZGhostSPPCSPCZ	MixConv2dZFocusZStemZ	GhostStemZ	CrossConvZ193BottleneckZBottleneckCSPAZBottleneckCSPBZBottleneckCSPCZ
RepBottleneckZRepBottleneckCSPAZRepBottleneckCSPBZRepBottleneckCSPC�ResZResCSPAZResCSPBZResCSPCZRepResZ194RepResCSPAZ195RepResCSPBZ196RepResCSPCZResXZResXCSPAZResXCSPBZResXCSPCZRepResXZRepResXCSPAZRepResXCSPBZRepResXCSPCZGhostZ	GhostCSPAZ	GhostCSPBZ	GhostCSPCZSwinTransformerBlockZSTCSPAZSTCSPBZSTCSPCZSwinTransformer2BlockZST2CSPAZST2CSPBZST2CSPCr�insert�BatchNorm2d�Concatr�ZChuncatZShortcutZFoldcutrryr�r�r�rQr�rCZReOrgZContract�Expandr��replace�197parametersrXr�r�r��extend�sorted)�dr7rr)�gdZgwrr�layersr�r�r�rr�r8r��m_r�r�r)rr7rXr5r$r��s�$& �198�199200201202203$2042052060*207208r��__main__z--cfgr�z209model.yaml)r��default�helpz--devicer�z%cuda device, i.e. 0 or 0,1,2,3 or cpu)r0r1z	--profile�210store_truezprofile model speed)�actionr1rr<r�T)r�)7�argparse�logging�sysr�r�pathrQ�	getLoggerrtr�r,Z
models.commonZmodels.experimentalZutils.autoanchorr�
utils.generalrrr�utils.torch_utilsrr	r211rrr
rZ212utils.lossrr��ImportErrorr�Modulerryr�r�r�r�r��ArgumentParser�parser�add_argumentr��213parse_args�optr�rIrHr��trainr��rand�imgr]rrrr$�<module>sL214$215JqezKeP216217