CoolFace
Apppublic

ethanrom/helm

sourceHugging Faceupdated 4y agoView on Hugging Face
0likes
common.cpython-37.pyc211 linesDownload Raw Back to __pycache__
1B

2+�gc	��@s dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m3Z4ddlmZddlm
Z
ddlmZddlZddlZddlZddlZddlZddlmZddlmZddlmZdd	lmZdd5lm Z ddl!m"Z"m#Z#ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3dd
l4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:dFdd�Z;Gdd�dej<�Z=Gdd�de=�Z>Gdd�dej?�Z@Gdd�dej<�ZAGdd�dej<�ZBGdd�dej<�ZCGdd�dej<�ZDGd d!�d!ej<�ZEGd"d#�d#ej<�ZFGd$d%�d%eF�ZGGd&d'�d'eF�ZHGd(d)�d)eF�ZIGd*d+�d+eF�ZJGd,d-�d-ej<�ZKGd.d/�d/ej<�ZLGd0d1�d1ej<�ZMGd2d3�d3ej<�ZNGd4d5�d5ej<�ZOGd6d7�d7ej<�ZPGd8d9�d9ej<�ZQGd:d;�d;ej<�ZRGd<d=�d=ej<�ZSGd>d?�d?ej<�ZTGd@dA�dA�ZUGdBdC�dCej<�ZVGdDdE�dEej<�ZWdS)Gz6Common modules7�N)�OrderedDict�8namedtuple)�copy)�Path)�urlparse)�display)�Image)�amp)�	TryExcept)�exif_transpose�	letterbox)�LOGGER�ROOT�Profile�check_requirements�check_suffix�
check_version�colorstr�increment_path�is_notebook�make_divisible�non_max_suppression�scale_boxes�	xywh2xyxy�	xyxy2xywh�	yaml_load)�	Annotator�colors�save_one_box)�	copy_attr�smart_inference_mode�cs`�dkr4t|t�r"�|ddn�fdd�|D�}|dkr\t|t�rN|dndd�|D�}|S)Nr!csg|]}�|dd�qS)r!�)�.0�x)�dr"�H:\x\gpt\models\common.py�9<listcomp>(szautopad.<locals>.<listcomp>�cSsg|]}|d�qS)r(r")r#r$r"r"r&r'*s)�10isinstance�int)�k�pr%r")r%r&�autopad%s11, r-cs6eZdZe��Zd12�fdd�	Zdd�Zdd	�Z�Z	S)�Convr!NTc		13sft���tj||||t|||�||dd�|_t�|�|_|dkrH|jnt	|tj14�rX|nt��|_dS)NF)�groups�dilation�biasT)
�super�__init__�nn�Conv2dr-�conv�BatchNorm2d�bn�default_actr)�Module�Identity�act)	�self�c1�c2r+�sr,�gr%r<)�	__class__r"r&r32s15$z
Conv.__init__cCs|�|�|�|���S)N)r<r8r6)r=r$r"r"r&�forward8szConv.forwardcCs|�|�|��S)N)r<r6)r=r$r"r"r&�forward_fuse;szConv.forward_fuse)r!r!Nr!r!T)16�__name__�17__module__�__qualname__r4�SiLUr9r3rCrD�
__classcell__r"r")rBr&r..sr.cseZdZd�fdd�	Z�ZS)�DWConvr!Tc	s&t�j||||t�||�||d�dS)N)rAr%r<)r2r3�math�gcd)r=r>r?r+r@r%r<)rBr"r&r3AszDWConv.__init__)r!r!r!T)rErFrGr3rIr"r")rBr&rJ?srJcseZdZd�fdd�	Z�ZS)�DWConvTranspose2dr!rcs&t�j||||||t�||�d�dS)N)r/)r2r3rKrL)r=r>r?r+r@�p1�p2)rBr"r&r3GszDWConvTranspose2d.__init__)r!r!rr)rErFrGr3rIr"r")rBr&rMEsrMcs$eZdZ�fdd�Zdd�Z�ZS)�TransformerLayercsxt���tj||dd�|_tj||dd�|_tj||dd�|_tj||d�|_tj||dd�|_	tj||dd�|_18dS)NF)r1)�	embed_dim�	num_heads)r2r3r4�Linear�qr+�v�MultiheadAttention�ma�fc1�fc2)r=�crR)rBr"r&r3Ms19zTransformerLayer.__init__cCs@|�|�|�|�|�|�|��d|}|�|�|��|}|S)Nr)rWrTr+rUrYrX)r=r$r"r"r&rCVs(zTransformerLayer.forward)rErFrGr3rCrIr"r")rBr&rPKs	rPcs$eZdZ�fdd�Zdd�Z�ZS)�TransformerBlockcs\t���d|_|�kr$t|��|_t����|_tj��fdd�t|�D��|_	�|_20dS)Nc3s|]}t���VqdS)N)rP)r#�_)r?rRr"r&�	<genexpr>dsz,TransformerBlock.__init__.<locals>.<genexpr>)r2r3r6r.r4rS�linear�21Sequential�range�trr?)r=r>r?rR�22num_layers)rB)r?rRr&r3^s23 zTransformerBlock.__init__cCsb|jdk	r|�|�}|j\}}}}|�d��ddd�}|�||�|���ddd��||j||�S)Nr(rr!)r6�shape�flatten�permuterar^�reshaper?)r=r$�br\�w�hr,r"r"r&rCgs242526zTransformerBlock.forward)rErFrGr3rCrIr"r")rBr&r[\s	r[cs&eZdZd�fdd�	Zdd�Z�ZS)	�27BottleneckTr!��?csLt���t||�}t||dd�|_t||dd|d�|_|oD||k|_dS)Nr!�)rA)r2r3r*r.�cv1�cv2�add)r=r>r?�shortcutrA�e�c_)rBr"r&r3qs2829zBottleneck.__init__cCs*|jr||�|�|��S|�|�|��S)N)rornrm)r=r$r"r"r&rCxszBottleneck.forward)Tr!rk)rErFrGr3rCrIr"r")rBr&rjosrjcs&eZdZd�fdd�	Zdd�Z�ZS)	�
BottleneckCSPr!T��?cs�t���t||��t|�dd�|_tj|�dddd�|_tj��dddd�|_td�|dd�|_	t�30d��|_t��|_
tj���fdd�t|�D��|_dS)Nr!F)r1r(c3s |]}t����dd�VqdS)g�?)rqN)rj)r#r\)rrrArpr"r&r]�sz)BottleneckCSP.__init__.<locals>.<genexpr>)r2r3r*r.rmr4r5rn�cv3�cv4r7r8rHr<r_r`�m)r=r>r?�nrprArq)rB)rrrArpr&r3~s3132zBottleneckCSP.__init__c33CsB|�|�|�|���}|�|�}|�|�|�t�||fd����S)Nr!)	rurwrmrnrvr<r8�torch�cat)r=r$�y1�y2r"r"r&rC�s34zBottleneckCSP.forward)r!Tr!rt)rErFrGr3rCrIr"r")rBr&rs|srscs&eZdZd	�fdd�	Zdd�Z�ZS)35�	CrossConvrlr!��?Fc	s\t���t||�}t||d|fd|f�|_t|||df|df|d�|_|oT||k|_dS)Nr!)rA)r2r3r*r.rmrnro)	r=r>r?r+r@rArqrprr)rBr"r&r3�s3637zCrossConv.__init__cCs*|jr||�|�|��S|�|�|��S)N)rornrm)r=r$r"r"r&rC�szCrossConv.forward)rlr!r!r~F)rErFrGr3rCrIr"r")rBr&r}�sr}cs&eZdZd�fdd�	Zdd�Z�ZS)	�C3r!T��?csnt���t||��t|�dd�|_t|�dd�|_td�|d�|_tj���fdd�t	|�D��|_38dS)Nr!r(c3s |]}t����dd�VqdS)g�?)rqN)rj)r#r\)rrrArpr"r&r]�szC3.__init__.<locals>.<genexpr>)r2r3r*r.rmrnrur4r_r`rw)r=r>r?rxrprArq)rB)rrrArpr&r3�s39zC3.__init__c	Cs(|�t�|�|�|��|�|�fd��S)Nr!)ruryrzrwrmrn)r=r$r"r"r&rC�sz40C3.forward)r!Tr!r�)rErFrGr3rCrIr"r")rBr&r�srcseZdZd�fdd�	Z�ZS)�C3xr!T��?csHt��|||��|�t||��tj���fdd�t|�D��|_dS)Nc	3s"|]}t��dd�d��VqdS)rlr!g�?N)r})r#r\)rrrArpr"r&r]�szC3x.__init__.<locals>.<genexpr>)r2r3r*r4r_r`rw)r=r>r?rxrprArq)rB)rrrArpr&r3�szC3x.__init__)r!Tr!r�)rErFrGr3rIr"r")rBr&r��sr�cseZdZd�fdd�	Z�ZS)�C3TRr!T��?cs6t��||||||�t||�}t||d|�|_dS)N�)r2r3r*r[rw)r=r>r?rxrprArqrr)rBr"r&r3�sz
C3TR.__init__)r!Tr!r�)rErFrGr3rIr"r")rBr&r��sr�cseZdZd�fdd�	Z�ZS)�C3SPP���	�
r!T��?c	s4t��||||||�t||�}t|||�|_dS)N)r2r3r*�SPPrw)	r=r>r?r+rxrprArqrr)rBr"r&r3�szC3SPP.__init__)r�r!Tr!r�)rErFrGr3rIr"r")rBr&r��sr�cseZdZd�fdd�	Z�ZS)�C3Ghostr!T��?csDt��||||||�t||��tj�fdd�t|�D��|_dS)Nc3s|]}t���VqdS)N)�GhostBottleneck)r#r\)rrr"r&r]�sz#C3Ghost.__init__.<locals>.<genexpr>)r2r3r*r4r_r`rw)r=r>r?rxrprArq)rB)rrr&r3�szC3Ghost.__init__)r!Tr!r�)rErFrGr3rIr"r")rBr&r��sr�cs&eZdZd�fdd�	Zdd�Z�ZS)r��r�r�r�csXt���|d}t||dd�|_t|t|�d|dd�|_t�dd�|D��|_dS)Nr(r!cSs g|]}tj|d|dd��qS)r!r()�kernel_size�stride�padding)r4�	MaxPool2d)r#r$r"r"r&r'�sz SPP.__init__.<locals>.<listcomp>)	r2r3r.rm�lenrnr4�41ModuleListrw)r=r>r?r+rr)rBr"r&r3�s4243zSPP.__init__c	sP|����t���4t�d�|�t��g�fdd�|jD�d��SQRXdS)N�ignorecsg|]}|���qSr"r")r#rw)r$r"r&r'�szSPP.forward.<locals>.<listcomp>r!)rm�warnings�catch_warnings�simplefilterrnryrzrw)r=r$r")r$r&rC�s444546zSPP.forward)r�)rErFrGr3rCrIr"r")rBr&r��sr�cs&eZdZd�fdd�	Zdd�Z�ZS)�SPPFr�csPt���|d}t||dd�|_t|d|dd�|_tj|d|dd�|_dS)Nr(r!r�)r�r�r�)r2r3r.rmrnr4r�rw)r=r>r?r+rr)rBr"r&r3�s4748z
SPPF.__init__cCs\|�|�}t���@t�d�|�|�}|�|�}|�t�||||�|�fd��SQRXdS)Nr�r!)rmr�r�r�rwrnryrz)r=r$r{r|r"r"r&rC�s4950515253zSPPF.forward)r�)rErFrGr3rCrIr"r")rBr&r��sr�cs&eZdZd�fdd�	Zdd�Z�ZS)	�Focusr!NTc	s*t���t|d||||||d�|_dS)Nr�)r<)r2r3r.r6)r=r>r?r+r@r,rAr<)rBr"r&r3�s54zFocus.__init__c
Csr|�t�|dddd�ddd�f|dddd�ddd�f|dddd�ddd�f|dddd�ddd�ffd��S)N.r(r!)r6ryrz)r=r$r"r"r&rC�sz
Focus.forward)r!r!Nr!T)rErFrGr3rCrIr"r")rBr&r��sr�cs&eZdZd�fdd�	Zdd�Z�ZS)�	GhostConvr!Tc	sFt���|d}t||||d||d�|_t||ddd||d�|_dS)Nr()r<r�r!)r2r3r.rmrn)r=r>r?r+r@rAr<rr)rBr"r&r3�s55zGhostConv.__init__cCs |�|�}t�||�|�fd�S)Nr!)rmryrzrn)r=r$�yr"r"r&rCs56zGhostConv.forward)r!r!r!T)rErFrGr3rCrIr"r")rBr&r��sr�cs&eZdZd�fdd�	Zdd�Z�ZS)r�rlr!cs�t���|d}t�t||dd�|dkr<t||||dd�nt��t||dddd��|_|dkr�t�t||||dd�t||dddd��nt��|_	dS)Nr(r!F)r<)57r2r3r4r_r�rJr;r6r.rp)r=r>r?r+r@rr)rBr"r&r3s58 zGhostBottleneck.__init__cCs|�|�|�|�S)N)r6rp)r=r$r"r"r&rCszGhostBottleneck.forward)rlr!)rErFrGr3rCrIr"r")rBr&r�s59r�cs&eZdZd�fdd�	Zdd�Z�ZS)�Contractr(cst���||_dS)N)r2r3�gain)r=r�)rBr"r&r3s60zContract.__init__cCsj|��\}}}}|j}|�||||||||�}|�dddddd���}|�||||||||�S)Nrrlr�r!r(r�)�sizer��viewre�61contiguous)r=r$rgrZrirhr@r"r"r&rCs62zContract.forward)r()rErFrGr3rCrIr"r")rBr&r�sr�cs&eZdZd�fdd�	Zdd�Z�ZS)�Expandr(cst���||_dS)N)r2r3r�)r=r�)rBr"r&r3&s63zExpand.__init__cCsj|��\}}}}|j}|�|||||d||�}|�dddddd���}|�|||d||||�S)Nr(rrlr�r!r�)r�r�r�rer�)r=r$rgrZrirhr@r"r"r&rC*s64zExpand.forward)r()rErFrGr3rCrIr"r")rBr&r�$sr�cs&eZdZd�fdd�	Zdd�Z�ZS)�Concatr!cst���||_dS)N)r2r3r%)r=�	dimension)rBr"r&r34s65zConcat.__init__cCst�||j�S)N)ryrzr%)r=r$r"r"r&rC8szConcat.forward)r!)rErFrGr3rCrIr"r")rBr&r�2sr�csneZdZde�d�ddddf�fdd�	Zddd	�Zd66d�Zdd
d�Ze	ddd��Z67e	ed�fdd��Z�Z
S)�DetectMultiBackendz68yolov5s.pt�cpuFNTcL
s�ddlm}m}t���tt|t�r.|dn|�}	|�|	�\
}69}}}
}}}}}}}}}||70ph|ph|ph|M}|p~|p~|p~|p~|}d}t	j71��o�|jdk}|72s�|s�||	�}	|73�r|t|t�r�|n|	|d|d�}t
t|j�
��d�}t|d�r�|jjn|j}|�r|��n|��||_�n|�r�t�d|	�d	��d74di}t	jj|	||d�}|�rX|��n|��|d75�r,tj|d76d
d�d�}t|d�|d}}�n�|�r�t�d|	�d��td�tj�|	�}�nb|�rft�d|	�d��td|�r�dndf�ddl }|�rddgndg} |j!|	| d�}!dd�|!�"�D�}"|!�#�j$}#d|#k�r,t|#d�t%|#d�}}�n�|
�rDt�d|	�d��td�ddl&m'}$m(}%m)}&|$�}'t*|	��+��s�t,t*|	��-d ��}	|'j.|	t*|	��/d!�d"�}(|(�0�d�1�j2�r|(�0�d�3|%d#��|&|(�})|)j4�r|)�5�}*|'j6|(d$d%�}+|�7t*|	��/d&��\}}�n�|�r�t�d|	�d'��ddl8},t9|,j:d(dd)�|jdk�r�t	�;d*�}t<d+d,�}-|,�=|,j=j>�}.t?|	d-��*}/|,�@|.��}0|0�A|/�B��}WdQRXWdQRX|�C�}1tD�}2g}"d.}d.}3x�tE|jF�D]�}4|�G|4�}5|,�H|�I|4��}6|�J|4��rrd/tK|�L|4��k�r`d}3|1�M|4tK|�Nd|4�d0��|6tOjPk�r|d}n77|"�Q|5�tK|1�L|4��}7t	�RtOj2|7|6d1���S|�}8|-|5|6|7|8t|8�T���|2|5<�qWtDd2d3�|2�U�D��}9|2d4jVd}*�n>|�rt�d|	�d5��ddlW}:|:jX�Y|	�}�n|�rft�d|	�d6��ddlZ�d.};|;�rV�j[jX�\|	�n78�j]�|	�}�n�|�r�t�d|	�d7��ddlZ��fd8d9�}<d:d;�}=��^��_�}>t?|	d-��}/|>�`|/�B��WdQRX|<|>d<|=|>�d=�}?�nL|�s�|�rydd>lamb}@mc}AWn2tdk79�r2ddlZ��jejb�jejfjc}@}AYnX|�rtt�d|	�d?��d@dAdBdC�tg�h�}B|@|	|A|B�gdD�}Cnt�d|	�dE��|@|	dF�}C|C�i�|C�j�}D|C�k�}Etl�mtnjo��Vtn�p|	dG��>}|�q�d}Ftr�s|�B|F��tdH��}#t|#d�|#d}}WdQRXWdQRX�n|�r&tudI���n|�r�t�d|	�dJ��t|�rJdKndL�ddlvmw}Gt*|	��+��s|t,t*|	��xdM��}	t*|	��/dN�}|G�yt|	�t|��}H|�r�|HjzdOddP�|G�{|H�}I|I�||I�}�d�}J|I�~�}"nT|�rt�dQ|	�dR��tdS�ddTlm�}K|K|	dU�}|j���dV�}ntudW|	�dX���dt��k�r\|�rJt�|�dndYdZ�tEd[�D�}|dd\k�r�t�|�d]k�r�t�t�d^�d}|j���t���dS)_Nr)�attempt_download�attempt_load� r�T)�device�inplace�fuse�modulezLoading z for TorchScript inference...z80config.txt�)�_extra_files�map_locationcSsdd�|��D�S)NcSs&i|]\}}||��rt|�n|�qSr")�isdigitr*)r#r+rUr"r"r&�81<dictcomp>eszADetectMultiBackend.__init__.<locals>.<lambda>.<locals>.<dictcomp>)�items)r%r"r"r&�<lambda>esz-DetectMultiBackend.__init__.<locals>.<lambda>)�object_hookr��namesz! for ONNX OpenCV DNN inference...zopencv-python>=4.5.4z for ONNX Runtime inference...�onnxzonnxruntime-gpu�onnxruntimeZCUDAExecutionProviderZCPUExecutionProvider)�	providerscSsg|]82}|j�qSr")�name)r#r$r"r"r&r'rsz/DetectMultiBackend.__init__.<locals>.<listcomp>z for OpenVINO inference...Zopenvino)�Core�Layout�	get_batchz*.xmlz.bin)�model�weightsZNCHW�CPU)�device_namez.yamlz for TensorRT inference...z7.0.0)�hardzcuda:0�Binding)r��dtyperc�data�ptr�rbF�����r()r�css|]\}}||jfVqdS)N)r�)r#rxr%r"r"r&r]�sz.DetectMultiBackend.__init__.<locals>.<genexpr>�imagesz for CoreML inference...z' for TensorFlow SavedModel inference...z% for TensorFlow GraphDef inference...csB�jj���fdd�g�}|jj}|��j�||��j�||��S)Ncs�jjj�dd�S)Nr�)r�)�compat�v1Zimport_graph_defr")�gd�tfr"r&r���zHDetectMultiBackend.__init__.<locals>.wrap_frozen_graph.<locals>.<lambda>)r�r��
wrap_function�graphZas_graph_element�pruneZnestZ
map_structure)r��inputs�outputsr$�ge)r�)r�r&�wrap_frozen_graph�sz6DetectMultiBackend.__init__.<locals>.wrap_frozen_graphcSsTgg}}x&|jD]}|�|j�|�|j�qWtdd�tt|�t|��D��S)Ncss"|]}|�d�s|�d�VqdS)ZNoOpz:0N)�83startswith)r#r$r"r"r&r]�szBDetectMultiBackend.__init__.<locals>.gd_outputs.<locals>.<genexpr>)�node�appendr��extend�input�sorted�list�set)r��	name_list�84input_listr�r"r"r&�85gd_outputs�s8687z/DetectMultiBackend.__init__.<locals>.gd_outputszx:0)r�r�)�Interpreter�
load_delegatez* for TensorFlow Lite Edge TPU inference...zlibedgetpu.so.1zlibedgetpu.1.dylibzedgetpu.dll)�Linux�Darwin�Windows)�88model_pathZexperimental_delegatesz! for TensorFlow Lite inference...)r��rzutf-8z.ERROR: YOLOv5 TF.js inference is not supportedz for PaddlePaddle inference...zpaddlepaddle-gpuZpaddlepaddlez	*.pdmodelz89.pdiparamsi)Zmemory_pool_init_size_mb�	device_idzUsing z as Triton Inference Server...ztritonclient[all])�TritonRemoteModel)�url�90tensorflowzERROR: z is not a supported formatcSsi|]}d|��|�qS)�classr")r#�ir"r"r&r��sz/DetectMultiBackend.__init__.<locals>.<dictcomp>i�Z	n01440764i�zdata/ImageNet.yaml)��models.experimentalr�r�r2r3�strr)r��_model_typery�cuda�is_available�type�maxr*r��hasattrr�r��half�floatr�r
�info�jit�load�json�loadsrrn�dnn�readNetFromONNXr�ZInferenceSessionZget_outputsZ
get_modelmetaZcustom_metadata_map�evalZopenvino.runtimer�r�r�r�is_file�next�globZ91read_model�with_suffixZget_parametersZ92get_layout�emptyZ93set_layoutZ	is_staticZ94get_lengthZ
compile_model�_load_metadataZtensorrtr�__version__r�r�Logger�INFO�openZRuntimeZdeserialize_cuda_engine�readZcreate_execution_contextrr`Znum_bindingsZget_binding_nameZnptypeZget_binding_dtypeZbinding_is_input�tuple�get_binding_shape�set_binding_shapeZget_profile_shape�np�float16r��95from_numpy�to�data_ptrr�rcZcoremltools�modelsZMLModelr��kerasZ96load_model�saved_model�GraphZas_graph_defZParseFromStringZtflite_runtime.interpreterr�r��ImportErrorZlite�experimental�platform�systemZallocate_tensorsZget_input_detailsZget_output_details�97contextlib�suppress�zipfile�98BadZipFile�ZipFile�namelist�ast�literal_eval�decode�NotImplementedErrorZpaddle.inference�	inference�rglob�ConfigZenable_use_gpuZcreate_predictorZget_input_handleZget_input_namesZget_output_namesZutils.tritonr��runtimer��localsrr�r�__dict__�update)Lr=r�r�r�r��fp16r�r�r�rh�ptr�r��xml�engine�coremlr�pbZtfliteZedgetpuZtfjs�paddle�triton�nhwcr�r�r�r�Zextra_filesr%�netr�r��session�output_names�metar�r�r��ie�network�	batch_dim�99batch_size�executable_networkZtrtr��logger�fr*�context�bindings�dynamicr�r�r�rc�im�
binding_addrs�ctrr�r�r��frozen_funcr�r��delegate�interpreter�
input_details�output_detailsZ	meta_fileZpdi�config�	predictor�input_handler�)rB)r�r&r3>s.100$101102103104105106107"108109"$110.111112113$zDetectMultiBackend.__init__cs�|j\}}}}�jr(|jtjkr(|��}�jr>|�dddd�}�jrj|sL|r\�j	|||d�n��	|�}�n�j114r~��	|�}�n��jr�|���
�}�j�|��j��}�nЈjr�|���
�}�j��j�j��dj|i�}�n��j�r|���
�}t��|g����}�nn�j�r&�j�r�|j�jdjk�r��j	�d�}	�j� |	|j��jdj!|jd��jd<x:�jD]0}115�j	�|116�}	�j|117j"�#t$�j�%|	����qnW�jdj}|j|k�s�t&d|j�d	�j�r�d118nd�d|����t'|�(���j)d<�j�*t�j)�����fd
d�t+�j�D�}�nT�j,�r�|���
�}t-�.|dd�/d��}�j	�0d|i�}d|k�r�t1|d||||gg�}|d�2d�|d�3d��/t4j5�}
}t4�6||
�7dd�|�7dd�fd�}ntt8|����}�n��j9�r.|���
��/t4j:�}�j;�<|��j=���fdd��jD�}�nL�j>�rD��	|�}�n6|���
�}�j?�rz�j@�rn�j	|dd�n��	|�}nΈjA�r��jB�jC�D|�d�}n��jEd}|dt4jFk}|�r�|d\}}|||�/t4jF�}�jG�H|d|��jG�I�g}xP�jJD]F}�jG�K|d�}|�r8|d\}}|�/t4j:�||}|�L|��q�Wdd�|D�}|dddd�f||||g9<tM|tt$f��r�tN|�dk�r���O|d�S�fdd�|D�S��O|�SdS) Nrr(rlr!)�augment�	visualizer�)rczinput size � �>znot equal toz max model size csg|]}�j|j�qSr")rCr�)r#r$)r=r"r&r'sz.DetectMultiBackend.forward.<locals>.<listcomp>���uint8�image�119confidence�coordinatesr�csg|]}�j�|����qSr")rNZget_output_handleZcopy_to_cpu)r#r$)r=r"r&r',sF)�training)r$r��quantization�indexcSs$g|]}t|tj�r|n|���qSr")r)r�ndarray�numpy)r#r$r"r"r&r'Ds.r�csg|]}��|��qSr")r)r#r$)r=r"r&r'Hs)Prcr.r�ryrr�r6rer/r�r�r�r�r]r7�setInputrCr�r8�runr9Z120get_inputsr�r0r�r?�valuesr1rDrCZget_binding_indexrBr�_replacer��resize_r
r�AssertionErrorr*rrFZ121execute_v2r�r2r�	fromarray�astype�predictrr��argmaxrr��concatenaterf�reversedr4�float32rOZ
copy_from_cpurNr5rrr3rHr��constantrKrUrJZ122set_tensorZinvokerLZ123get_tensorr�r)r�r)r=rErPrQrg�chrirhr�r�r�r@�box�conf�clsr��int8�scale�124zero_point�outputr$r")r=r&rC�s�&$$4125&$126"127128$.zDetectMultiBackend.forwardcCs"t|tj�rt�|��|j�S|S)N)r)rr\ryrrr�)r=r$r"r"r&rLszDetectMultiBackend.from_numpy�r!rli�i�cCs�|j|j|j|j|j|j|jf}t|�r�|jj	dks:|jr�t129j||jrLt130j
nt131j|jd��}x$t|jrjdnd�D]}|�|�qpWdS)Nr�)r�r�r(r!)r/r�r�r1rr3r5�anyr�r�ryrr.r�r�r`rC)r=�imgszZwarmup_typesrEr\r"r"r&�warmupOs132 "zDetectMultiBackend.warmup�path/to/model.ptcs�ddlm}ddlm}t|�j�}|�dd�s:t�|�t����fdd�|D�}|d|d	M<t|�o�t	t�fd133d�dD���j134g�}||gS)
Nr)�export_formats)�is_urlF)�checkcsg|]}|t��jk�qSr")rr�)r#r@)r,r"r&r'asz2DetectMultiBackend._model_type.<locals>.<listcomp>�r�c3s|]}|�jkVqdS)N)�scheme)r#r@)r�r"r&r]csz1DetectMultiBackend._model_type.<locals>.<genexpr>)�httpZgrpc)�exportry�utils.downloadsrzr�ZSuffixrrru�all�netloc)r,ryrz�sf�typesr5r")r,r�r&r�Ws135*zDetectMultiBackend._model_typezpath/to/meta.yamlcCs$|��r t|�}|d|dfSdS)Nr�r�)NN)�existsr)rAr%r"r"r&rfsz!DetectMultiBackend._load_metadata)FF)rt)rx)rErFrGryr�r3rCrrw�staticmethodr�rrrIr"r")rBr&r�<s =136R137r�csVeZdZdZdZdZdZdZdZdZ	d�fdd�	Z138�fd	d139�Ze�ddd
��Z
�ZS)�	AutoShapeg�?g�������?FNi�Tcs�t���|rt�d�t||ddd�t|t�|_|jp@|j|_|�	�|_140|jr�|jrh|j141j142j143dn144|j145j146d}d|_d|_dS)NzAdding AutoShape... )�yaml�nc�hypr�r��abcr")�include�excluder�FT)
r2r3r
r�rr)r��dmbr/rr�r�r)r=r��verboserw)rBr"r&r3ys147148149 zAutoShape.__init__csrt��|�}|jrn|jr&|jjjdn150|jjd}||j�|_tt||j��|_t	|j151t�rntt||j152��|_153|S)Nr�)r2�_applyr/r�r�r�r��map�gridr)�anchor_grid)r=�fnrw)rBr"r&r��s zAutoShape._apply�cszt�t�t�f}|d���t|t�r.||f}�jrBt�j���ntjd�jj	d�}�j154od|j	jdk}t|tj�r�t155�
|���j|�|j	��|�|d�SQRXt|ttf�r�t|�t|�fnd|gf\}}ggg}	�}156�xVt|�D�]H\}}d|��}
t|ttf��rLt�t|��d��r0tj|dd	�jn|�|}}
t�t|��}n0t|tj��r|t�t|��t|d157|
��pv|
}}
|158� t|
��!d�j"�|j#ddk�r�|�$d
�}|j%dk�r�|ddd�fnt&�'|t&j(�}|j#dd�}|	� |�t)|�t)|���� �fdd�|D��|j*j+�r$|nt�,|�||<q�W�j�r\�fdd�t�-���)d�D�n|��fdd�|D�}t�,t�-|��$d��}t�.|��|j	��|�d}WdQRXt159�
|���|d��j||d�}WdQRX|d�pt/�j0�r�|n|d�j1�j2�j3�j4�j5�j6d�}x6t7|�D]*}t8�||dd�dd�f|	|��q"WWdQRXt9|||160|�j:|j#�SQRXdS)Nrr!)r�r�)rPrVr~T)�stream�filenamez.jpgr�)r!r(rrl.r(csg|]}|��qSr"r")r#r�)rAr"r&r'�sz%AutoShape.forward.<locals>.<listcomp>csg|]}t|�j��qSr")rr�)r#r$)r=r"r&r'�scsg|]}t|�dd�d�qS)F)�autor)r)r#rE)�shape1r"r&r'�s)rrlr!r(rT)�max_detr�);rr)r*r/rr��161parametersryrr�r	r��Tensor�autocastr�type_asr�r
r��	enumerater�rrrr��requests�get�rawr�asarrayr�getattrr�rr�rc�	transpose�ndimrn�cvtColor�COLOR_GRAY2BGRr�r�r��ascontiguousarray�arrayrrr�rn�iou�classes�agnostic�multi_labelr�r`r�162Detectionsr�)r=�imsr�rP�profile�dtr,r�rx�shape0�filesr�rErAr@r$r�r")rAr=r�r&rC�sZ163&",1640"165*166 *&1671681694zAutoShape.forward)T)r�FF)rErFrGrnr�r�r�r�r�r	r3r�r rCrIr"r")rBr&r�os
r�cs�eZdZd �fdd�	Zdddddded�fdd	�Zed170�d!dd��Zd"dd�Zd#dd�Z	d$dd�Z171dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Z�ZS)%r��rrrNcs�t���|dj��fdd�|D�}|�_|�_|�_|�_|�_|�_dd�|D��_	dd�t172�j|�D��_dd�t173�j	|�D��_t
�j��_t�fdd�|D���_t|��_dS)	Nrcs,g|]$�tj�fdd�dD�d��d��qS)c3s|]}�j|VqdS)N)rc)r#r�)rEr"r&r]�sz1Detections.__init__.<locals>.<listcomp>.<genexpr>)r!rr!rr!)r�)r!r!)ry�tensor)r#)r%)rEr&r'�sz'Detections.__init__.<locals>.<listcomp>cSsg|]}t|��qSr")r)r#r$r"r"r&r'�scSsg|]\}}||�qSr"r")r#r$rAr"r"r&r'�scSsg|]\}}||�qSr"r")r#r$rAr"r"r&r'�sc3s|]}|j�jdVqdS)g@�@N)�trx)r#r$)r=r"r&r]�sz&Detections.__init__.<locals>.<genexpr>)r2r3r�r��predr�r��times�xyxy�xywh�zip�xyxyn�xywhnr�rxr
r�r@)r=r�r�r�r�r�rc�gn)rB)r%r=r&r3�s174175zDetections.__init__FTr�cCs�dg}}	�xhtt|j|j��D�]P\}176\}}|d|177d�dt|j��d|jd�d|jd�d�	7}|jd�r�x^|dd�d	f��D]F}
|dd�d	f|
k��}||�d|jt	|
��d178|dk�d�7}q�W|�179d�}|s�|s�|s�|�r�t|t|j�d�}x�t
|�D]��^}}}|jt	|��d|d
��}|�r�|�r\|d|jt	|�|j|180nd}|	�||||t||||d�d��n|j||�r�|ndt|�d��q181W|j}n|d7}t|tj��r�t�|�tj��n|}|�rt��r�t|�n|�|j|182�|�r^|j|183}|�||�|184|jdk�r^t �!d|j�dd185|jdk�dt"d|����|r t�#|�|j|186<q W|�r�|�$d�}|�d|j%��|j&S|�r�|�r�t �!d|�d��|	SdS)Nr�z187image r!�/z: rr$rRr�r@z, )�examplez.2f�crops)�file�save)rmrnro�labelrE)�colorz(no detections)zSaved z imagez to �bold�188zL189Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape zSaved results to )'r�r�r�r�r�rc�unique�sumr�r*�rstriprr�rir�r�rZ	box_labelrrEr)rr\rrdrerUrr�showr�rxr
r�rr��lstripr@r�)r=�pprintr�r��crop�render�labels�save_dirr@r�r�rEr�rZrxZ	annotatorrmrnror�r�rAr"r"r&�_run�sP190$8.191*$$ 192.193zDetections._runz3Showing images is not supported in this environmentcCs|jd|d�dS)NT)r�r�)r�)r=r�r"r"r&r�szDetections.show�runs/detect/expcCs"t||dd�}|jd||d�dS)NT)�mkdir)r�r�r�)rr�)r=r�r��exist_okr"r"r&r�szDetections.savecCs&|rt||dd�nd}|jd||d�S)NT)r�)r�r�r�)rr�)r=r�r�r�r"r"r&r�szDetections.cropcCs|jd|d�|jS)NT)r�r�)r�r�)r=r�r"r"r&r�szDetections.rendercsnt��}d}d}xXtddddg||||g�D]:\}��fdd�t�|�D�}t||�fd	d�|D��q,W|S)194N)�xmin�ymin�xmax�ymaxrWr�r�)ZxcenterZycenter�width�heightrWr�r�r�r�r�r�cs"g|]}�fdd�|��D��qS)cs6g|].}|dd�t|d��jt|d�g�qS)Nr�)r*r�)r#r$)r=r"r&r'(sz0Detections.pandas.<locals>.<listcomp>.<listcomp>)�tolist)r#r$)r=r"r&r'(sz%Detections.pandas.<locals>.<listcomp>csg|]}tj|�d��qS))�columns)�pd�	DataFrame)r#r$)rZr"r&r')s)rr�r��setattr)r=�new�ca�cbr+�ar")rZr=r&�pandas"s$zDetections.pandascs t�j�}�fdd�|D�}|S)Nc	s<g|]4}t�j|g�j|g�j|g�j�j�j��qSr")r�r�r�r�r�r�r@)r#r�)r=r"r&r'/sz%Detections.tolist.<locals>.<listcomp>)r`rx)r=r�r$r")r=r&r�,s195zDetections.tolistcCst�|���dS)N)r
r��__str__)r=r"r"r&�print5szDetections.printcCs|jS)N)rx)r=r"r"r&�__len__8szDetections.__len__cCs|jdd�S)NT)r�)r�)r=r"r"r&r�;szDetections.__str__cCsd|j�d�|��S)NzYOLOv5 z196 instance197)rBr�)r=r"r"r&�__repr__>szDetections.__repr__)r�NN)T)Tr�F)Tr�F)T)rErFrGr3rr�r198r�r�r�r�r�r�r�r�r�r�rIr"r")rBr&r��s-199200201202	r�cs&eZdZd�fdd�	Zdd�Z�ZS)�Proto�r�csJt���t||dd�|_tjddd�|_t||dd�|_t||�|_dS)Nrl)r+r(�nearest)�scale_factor�mode)	r2r3r.rmr4�Upsample�upsamplernru)r=r>rrr?)rBr"r&r3Ds203204zProto.__init__c	Cs|�|�|�|�|����S)N)rurnr�rm)r=r$r"r"r&rCKsz
Proto.forward)r�r�)rErFrGr3rCrIr"r")rBr&r�Bsr�cs&eZdZd�fdd�	Zdd�Z�ZS)�Classifyr!NcsVt���d}t||||t||�|�|_t�d�|_tjddd�|_	t�205||�|_dS)Nir!gT)r,r�)r2r3r.r-r6r4�AdaptiveAvgPool2d�pool�Dropout�droprSr^)r=r>r?r+r@r,rArr)rBr"r&r3Qs206zClassify.__init__c	Cs8t|t�rt�|d�}|�|�|�|�|���d���S)Nr!)	r)r�ryrzr^r�r�r6rd)r=r$r"r"r&rCYs207zClassify.forward)r!r!Nr!)rErFrGr3rCrIr"r")rBr&r�Osr�)Nr!)X�__doc__r#rr�rKrr�r�collectionsrrr�pathlibr�urllib.parserrnr]rr�r�r�ry�torch.nnr4�IPython.displayr�PILr�208torch.cudar	�utilsr209Zutils.dataloadersrr�
utils.generalr
rrrrrrrrrrrrrr�utils.plotsrrr�utils.torch_utilsrr r-r:r.rJ�ConvTranspose2drMrPr[rjrsr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r"r"r"r&�<module>slD210	

2115cp