B ¢e® ã @ sT d Z ddlmZ ddlZddlZddlmZmZ ddl m Z ddd Zddd ZdS )z Auto-batch utils é )ÚdeepcopyN)ÚLOGGERÚcolorstr)Úprofileé Tc C s, t jj |¡ tt| ¡ |S Q R X d S )N)ÚtorchÚcudaÚampÚautocastÚ autobatchr Útrain)ÚmodelÚimgszr © r ú>/home/iml/Desktop/Talha/YOLOV5_Model/yolov5/utils/autobatch.pyÚcheck_train_batch_size s r çé?é c sb t d}t | d ¡ t| ¡ j}|jdkrLt | d| ¡ |S tjj j rnt | d| ¡ |S d}t| ¡ }tj |¡}|j| } tj |¡| } tj |¡| }| | | }t | | d|j d| d d | d d|d d|d d ¡ dddddg} y& fdd| D }t|| d|d}W n6 tk rf } zt | | ¡ W d d }~X Y nX dd |D }tj| d t| |dd}t|| |d |d }d |krâ| d ¡}|| | krâ| t|d d }|dk sö|dkr |}t | d¡ t ||¡| | | }t | d| d| d| | d d| d d |d! d"d#¡ |S )$NzAutoBatch: z)Computing optimal batch size for --imgsz Úcpuz0CUDA not detected, using default CPU batch-size uP â ï¸ Requires torch.backends.cudnn.benchmark=False, using default batch-size i @z (z) z.2fz G total, zG reserved, z G allocated, zG freeé é é é r c s g | ]}t |d ¡qS )é )r Úempty)Ú.0Úb)r r r ú <listcomp>5 s zautobatch.<locals>.<listcomp>r )ÚnÚdevicec S s g | ]}|r|d qS )r r )r Úxr r r r ; s )Údegr i uV WARNING â ï¸ CUDA anomaly detected, recommend restart environment and retry command.zUsing batch-size z for Ú zG/zG (éd z.0fu %) â )r r ÚinfoÚnextÚ parametersr Útyper ÚbackendsÚcudnnÚ benchmarkÚstrÚupperr Úget_device_propertiesÚtotal_memoryÚmemory_reservedÚmemory_allocatedÚnamer Ú ExceptionÚwarningÚnpÚpolyfitÚlenÚintÚindexÚmaxÚpolyval)r r ÚfractionÚ batch_sizeÚprefixr ÚgbÚdÚ propertiesÚtÚrÚaÚfÚbatch_sizesÚimgÚresultsÚeÚyÚpr Úir )r r r sH <$ <r )r T)r r r ) Ú__doc__Úcopyr Únumpyr4 r Ú utils.generalr r Úutils.torch_utilsr r r r r r r Ú<module> s