o
    ĎiP                  	   @   sj  d Z ddlZd.ddZd/d	d
Zd.ddZd.ddZd.ddZd.ddZd.ddZd.ddZ	d.ddZ
d.ddZd.ddZd.ddZedkrddlZdd lmZ ddlZdd!lmZ dd"lmZmZ e Zejd#edd$d% e Zeee eej dddddd&Z d'ed'd(e!d)ddddddd*f e"d)e#d+gZ$e e$d,d-Z%e%&  e%'  dS dS )0a  
PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov5

Usage:
    import torch
    model = torch.hub.load('ultralytics/yolov5', 'yolov5s')  # official model
    model = torch.hub.load('ultralytics/yolov5:master', 'yolov5s')  # from branch
    model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pt')  # custom/local model
    model = torch.hub.load('.', 'custom', 'yolov5s.pt', source='local')  # local repo
    NT   P   c              
   C   s2  ddl m} ddlm}m}	 ddlm}
 ddlm}m	}m
} ddlm} ddlm}m}m}m} ddlm} |s>||j |d	d
 || } | jdkrU|  sU| dn| }z||}|r|dkr|dkrz-|	|||d}|r|jrt|j|r|d n|jrt|j|r|d n||}W n[ ty   |
||dd}Y nLw t|tj d !|j" dd }||||}|rt#j$|||d}|d % & }|||& dgd
}|j'|dd t(|d j)|kr|d j)|_)|s||j* |+|W S  ty } zd}| d| d}t||d}~ww )a  Creates or loads a YOLOv5 model

    Arguments:
        name (str): model name 'yolov5s' or path 'path/to/best.pt'
        pretrained (bool): load pretrained weights into the model
        channels (int): number of input channels
        classes (int): number of model classes
        autoshape (bool): apply YOLOv5 .autoshape() wrapper to model
        verbose (bool): print all information to screen
        device (str, torch.device, None): device to use for model parameters

    Returns:
        YOLOv5 model
    r   Path)	AutoShapeDetectMultiBackend)attempt_load)ClassificationModelDetectionModelSegmentationModel)attempt_download)LOGGERcheck_requirementsintersect_dictslogging)select_device)zopencv-pythontensorboardthop)exclude z.ptr   r   )devicefuseu   WARNING ⚠️ YOLOv5 ClassificationModel is not yet AutoShape compatible. You must pass torch tensors in BCHW to this model, i.e. shape(1,3,224,224).u   WARNING ⚠️ YOLOv5 SegmentationModel is not yet AutoShape compatible. You will not be able to run inference with this model.Fmodelsz.yaml)map_locationmodelanchors)strictz/https://github.com/ultralytics/yolov5/issues/36z;. Cache may be out of date, try `force_reload=True` or see z
 for help.N),pathlibr   yolov5.models.commonr   r   yolov5.models.experimentalr   yolov5.models.yolor	   r
   r   yolov5.utils.downloadsr   yolov5.utils.generalr   r   r   r   yolov5.utils.torch_utilsr   setLevelWARNINGsuffixis_dirwith_suffixpt
isinstancer   warning	Exceptionlist__file__parentrglobstemtorchloadfloat
state_dictload_state_dictlennamesINFOto)name
pretrainedchannelsclasses	autoshapeverboser   r   r   r   r   r	   r
   r   r   r   r   r   r   r   pathr   cfgckptcsdehelp_urls rH   J/home/jeff/fluffinator/venv/lib/python3.10/site-packages/yolov5/hubconf.py_create   sZ   
 $
rJ   path/to/model.ptc                 C   s   t | |||dS )N)r?   r@   r   rJ   )rA   r?   _verboser   rH   rH   rI   customQ   s   rN   c                 C      t d| |||||S )Nyolov5nrL   r<   r=   r>   r?   rM   r   rH   rH   rI   rP   V      rP   c                 C   rO   )Nyolov5srL   rQ   rH   rH   rI   rS   [   rR   rS   c                 C   rO   )Nyolov5mrL   rQ   rH   rH   rI   rT   `   rR   rT   c                 C   rO   )Nyolov5lrL   rQ   rH   rH   rI   rU   e   rR   rU   c                 C   rO   )Nyolov5xrL   rQ   rH   rH   rI   rV   j   rR   rV   c                 C   rO   )Nyolov5n6rL   rQ   rH   rH   rI   rW   o   rR   rW   c                 C   rO   )Nyolov5s6rL   rQ   rH   rH   rI   rX   t   rR   rX   c                 C   rO   )Nyolov5m6rL   rQ   rH   rH   rI   rY   y   rR   rY   c                 C   rO   )Nyolov5l6rL   rQ   rH   rH   rI   rZ   ~   rR   rZ   c                 C   rO   )Nyolov5x6rL   rQ   rH   rH   rI   r[      rR   r[   __main__r   )Image)cv2
print_argsz--modelz
model name)typedefaulthelp)r;   r<   r=   r>   r?   r@   zdata/images/zidane.jpgz)https://ultralytics.com/images/zidane.jpgzdata/images/bus.jpg)@  i  r   rd   )size)Tr   r   TTN)rK   TTN)(__doc__r2   rJ   rN   rP   rS   rT   rU   rV   rW   rX   rY   rZ   r[   __name__argparser   r   numpynpPILr]   r"   r^   r_   ArgumentParserparseradd_argumentstr
parse_argsoptvarsr   imreadopenzerosimgsresultsprintsaverH   rH   rH   rI   <module>   sH   

A









 	