[190ca4]: / __pycache__ / val.cpython-37.pyc

Download this file

171 lines (167 with data), 21.5 kB

B

†¸Yf˜‰ã@sPdZddlZddlZddlZddlZddlZddlmZddlZ	ddl
Z
ddlmZddlZddl
ZddlmZeeƒ ¡ZejdZeeƒejkr¤ej eeƒ¡eej ee ¡¡ƒZddlmZddlmZddlmZdd	l m!Z!m"Z"m#Z#m$Z$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:m;Z;ddl<m=Z=m>Z>dd
l?m@Z@ddlAmBmCZDddlEZEddlFmGZGddlHmIZImJZJmKZKmLZLdd„ZMdd„ZNdd„ZOdd„ZPe>ƒdddddddddd d d d d d d ed!d"d d#d ddedƒd#eƒdfd$d%„ƒZQd&d'„ZRd(d)„ZSeTd*krLeRƒZUeSeUƒdS)+aç
Validate a trained YOLOv5 detection model on a detection dataset

Usage:
    $ python val.py --weights yolov5s.pt --data coco128.yaml --img 640

Usage - formats:
    $ python val.py --weights yolov5s.pt                 # PyTorch
                              yolov5s.torchscript        # TorchScript
                              yolov5s.onnx               # ONNX Runtime or OpenCV DNN with --dnn
                              yolov5s_openvino_model     # OpenVINO
                              yolov5s.engine             # TensorRT
                              yolov5s.mlmodel            # CoreML (macOS-only)
                              yolov5s_saved_model        # TensorFlow SavedModel
                              yolov5s.pb                 # TensorFlow GraphDef
                              yolov5s.tflite             # TensorFlow Lite
                              yolov5s_edgetpu.tflite     # TensorFlow Edge TPU
                              yolov5s_paddle_model       # PaddlePaddle
éN)ÚPath)Útqdm)Útabulate)ÚDetectMultiBackend)Ú	Callbacks)Úcreate_dataloader)ÚLOGGERÚTQDM_BAR_FORMATÚProfileÚ
check_datasetÚcheck_img_sizeÚcheck_requirementsÚ
check_yamlÚcoco80_to_coco91_classÚcolorstrÚincrement_pathÚnon_max_suppressionÚ
print_argsÚscale_boxesÚ	xywh2xyxyÚextract_roi_featuresÚ	xyxy2xywhÚget_object_level_feature_maps2Úxywh_to_xyxyÚget_fixed_xyxy)ÚConfusionMatrixÚap_per_classÚbox_iou)Úoutput_to_targetÚplot_imagesÚplot_val_study)Ú
select_deviceÚsmart_inference_mode)ÚMyCNN)Ú	roi_align)Úaccuracy_scoreÚprecision_scoreÚrecall_scoreÚf1_scorec
Cs¨t |¡ddddg}xŒ| ¡D]€^}}}tt |¡ dd¡ƒ| d¡ ¡}|rb|f||f˜n|f|˜}	t|dƒ$}
|
 dt|	ƒ ¡|	d¡WdQRXq WdS)NérééÿÿÿÿÚaz%g Ú
)	ÚtorchÚtensorÚtolistrÚviewÚopenÚwriteÚlenÚrstrip)ÚprednÚ	save_confÚshapeÚfileÚgnÚxyxyÚconfÚclsÚxywhÚlineÚf©rAúB/home/iml/Desktop/Talha/yolov5_P2_ROI_HCM_Micro_1000_Github/val.pyÚsave_one_txt?s$rCc	Csº|j ¡rt|jƒn|j}t|dd…dd…fƒ}|dd…dd…f|dd…dd…fd8<xRt| ¡| ¡ƒD]<\}}| ||t|dƒdd„|Dƒt|ddƒdœ¡qvWdS)Nr*éécSsg|]}t|dƒ‘qS)é)Úround)Ú.0ÚxrArArBú
<listcomp>Rsz!save_one_json.<locals>.<listcomp>)Úimage_idÚcategory_idÚbboxÚscore)ÚstemÚ	isnumericÚintrÚzipr0ÚappendrG)r6ÚjdictÚpathÚ	class_maprKÚboxÚpÚbrArArBÚ
save_one_jsonIs0rZc	Cs’t |jd|jdf¡ t¡}t|dd…dd…f|dd…dd…fƒ}|dd…dd…f|dd…dfk}xtt|ƒƒD]ü}t 	|||k|@¡}|djdr~t 
t |d¡||d|dfdd…dffd¡ ¡ 
¡}|djddkr\||dd…df ¡ddd…}|tj|dd…dfdd	d}|tj|dd…dfdd	d}d||dd…df t¡|f<q~Wtj|tj|jd
S)zì
    Return correct prediction matrix.

    Arguments:
        detections (array[N, 6]), x1, y1, x2, y2, conf, class
        labels (array[M, 5]), class, x1, y1, x2, y2
    Returns:
        correct (array[N, 10]), for 10 IoU levels
    rNr)r*rErDr+T)Úreturn_index)ÚdtypeÚdevice)ÚnpÚzerosr8ÚastypeÚboolrÚranger4r.ÚwhereÚcatÚstackÚcpuÚnumpyÚargsortÚuniquerQr/r])	Ú
detectionsÚlabelsÚiouvÚcorrectÚiouÚ
correct_classÚirIÚmatchesrArArBÚ
process_batchUs
 *$<""""rrc
Cs¤t |jd|jdf¡ t¡}t|dd…dd…f|dd…dd…fƒ}|dd…dd…f|dd…dfk}tj|dd}xtt	|ƒƒD]ü}t 
|||k|@¡}|djdrŒt t |d¡||d|dfdd…dffd¡ 
¡ ¡}	|djddkrj|	|	dd…df ¡ddd…}	|	tj|	dd…dfd	d
d}	|	tj|	dd…dfd	d
d}	d	||	dd…df t¡|f<qŒWtj|tj|jd|fS)ax
    Return correct prediction matrix and top indices.

    Arguments:
        detections (array[N, 6]), x1, y1, x2, y2, conf, class
        labels (array[M, 5]), class, x1, y1, x2, y2
        iouv (tensor[10]), IoU thresholds
    Returns:
        correct (array[N, 10]), for 10 IoU levels
        top_indices (tensor[M]), top IoU-gaining detection indices for each label
    rNr)r*rE)ÚdimrDr+T)r[)r\r])r^r_r8r`rarr.Úargmaxrbr4rcrdrerfrgrhrirQr/r])
rjrkrlrmrnroÚtop_indicesrprIrqrArArBÚmy_process_batchos *$<""""rvé i€gü©ñÒMbP?g333333ã?i,ÚvalÚéFzruns/valÚexpTc¶s,|dk	}|rNt| ¡ƒjdddf\}	}}} ||	jdkM}|rD| ¡n| ¡n¸t|	|d}	tt|ƒ||d}|rz|dn|j	dddt
||	|||d}|j|j|j
|jf\}!}}} t||!d	}|j}| rÔ|j}n*|j}	|sþ|sþd
}t d|›d|›d
¡t|ƒ}| ¡|	jdk}"t| d¡tƒo@|d dtj›d¡}#|rLd
n
t|dƒ}$tjddd|	d}%|% ¡}&|s&|r°|s°|j j!}'|'|$ks°t"|›d|'›d|$›dƒ‚|j#|r¾d
n|d||fd|dkrÜdnd|f\}(})|dkrö|nd}t$|||||!||(|)|
t%|›dƒd	d }d ‰t&|$d!}*t'|d"ƒrF|j(n|j)j(}+t|+t*t+fƒrjt,t-|+ƒƒ}+|#rvt.ƒn
t*t/d#ƒƒ},d$d%}-d&\
}.}/}0}1}2}3}4}5}6}7t0|	dt0|	dt0|	df}8tj1d|	d}9ggggf\}:};}<}=| 2d'¡t3||-t4d(}>g}?xæt-|>ƒD]Ø\}@\}A‰}B}Cd }D| 2d)¡|8d P|"rP|Aj5|	dd*}Aˆ 5|	¡‰|r^|A ¡n|A ¡}A|Ad+}A|Aj6\}E}F}G}HWdQRX|8d
,|rž||Aƒn||A|d,df\\}I}J}KWdQRX|rè|9||Jˆdd…d d-…fƒd
7}9ˆdd…d.d/…f}Lˆdd…d d-…f‰ˆdd…d0d…ftj7|H|G|H|Gf|	d9<|rZ‡fd1d2„t/|EƒDƒng}M|8d0t8|I|||Md||d3}IWdQRXxòt-|IƒD]ä\}N}Oˆˆdd…d f|Nkd
d…f}Pt9|Oƒd krttj:|Nt ;|Oj6d d
¡ 5|	¡|Odd…d d4…f 5|	¡gd
d5}Q|Kd |N 5tj<¡ =d ¡}R|Kd
|N 5tj<¡ =d ¡}Stj> ?¡g}Tx"t/t9|OƒƒD]}U|O|Ud d4…f}Vt 7|Aj6d0|Aj6d|Aj6d0|Aj6dg¡ 5|	¡}W|V|W}Xt 7|Kd |Nj6d
|Kd |Nj6d0|Kd |Nj6d
|Kd |Nj6d0g¡ 5|	¡}Yt 7|Kd
|Nj6d
|Kd
|Nj6d0|Kd
|Nj6d
|Kd
|Nj6d0g¡ 5|	¡}Z|X|Y}[|X|Z}\t@|[|Rƒ\}]}^}_}`t@|\|Sƒ\}a}b}c}dtj7|]|^|_|`g|	d ¡}etj7|a|b|c|dg|	d ¡}ftj7d gtj<|	d6}gt :|g|eg¡}ht :|g|fg¡}itA|R|h =d ¡ 5|	¡d7d8}jtA|S|i =d ¡ 5|	¡d7d8}ktj:|j|kgd
d5}l| ¡ 5|	¡||lƒ}mtBjC|m Dd-d0¡d
d5}ntjE|nd
d5}o|T F|o¡q^W|Pj6d |Oj6d }p}qt|B|Nƒ|C|Nd }r}stj1|q|&tjG|	d6}tˆd
7‰|qd kr|pr”|; F|tftj1d9|	d|Pdd…d ff˜¡|r”|*jHd|Pdd…d fd:q”|r4d |Odd…d;f<|O I¡}utJ|A|Nj6d
d…|udd…dd4…f|s|C|Nd
ƒ|p
rÞtK|Pdd…d
d;…fƒ}vtJ|A|Nj6d
d…|v|s|C|Nd
ƒt :|Pdd…d d
…f|vfd
¡}wtH|u|w|%ƒ}ttL|u|w|%ƒ\}F}x|Q|x}yg}zd }Dx4t/t9|xƒƒD]$}U|T|x|U M¡ N¡}{|z F|{¡	qWt|rƒ}|||jO}}g}~tPd<}|d=}€|j	ddd|€ Q¡	r¦|€ Rd>¡&}| S¡}‚t|‚d ƒ}Dt|‚d
ƒ}ƒWdQRXn4d }Dd?}ƒ|€ Rd@¡}| T|D›dA|ƒ›dA¡WdQRXdBdCdDdEdFdGg}„dHd2„t/d-ƒDƒ}…dId2„t/d-ƒDƒ}†xt/t9|zƒƒD]€}Ud }‡|L|U M¡ N¡ ¡}ˆtUdJdK„|ˆDƒƒ
r|~ F|}¡xBt/d-ƒD]6}‰|…|‰ F|ˆ|‰ V¡¡|†|‰ F|z|U|‰ V¡¡
q`W
qWtW|~f|…|†žŽ}Š|? X|Š¡|
rÞtL|u|w|%dL\}‹}Œ|* H|u|w¡|; F|t|Odd…d4f|Odd…d;f|Pdd…d ff¡|rL|dj	dddtY|u||s|d|rjZ›dMdN|r`t[|u|:|r|,ƒ| 2dO|O|u|r|+|A|N¡q”W|rÊ|@dkrÊt\|Aˆ|B|dP|@›dQ|+ƒt\|At]|Iƒ|B|dP|@›dR|+ƒ| 2dS|@|Aˆ|B|C|I¡qWtPd<}|d=}€dBdCdDdEdFdGg}„|j	ddd|€ Q¡rV|€ Rd>¡&}| S¡}‚t|‚d ƒ}Dt|‚d
ƒ}ƒWdQRXnd }Dd?}ƒ||›dT|D›dU}ŽtR|ŽdVdWdXX}t^ _|¡}tj` a|Ž¡d krÊdYgdZd2„|„Dƒd[d2„|„Dƒ}‘| b|‘¡| c|?¡WdQRXtdje|ŽddYdBdCdDdEdFdGd\d]d^d_d`dag
db}’|’jfd
d…}’tdjg|’dBdcdd}“tdjg|’dCdcdd}”tdjg|’dDdcdd}•tdjg|’dEdcdd}–tdjg|’dFdcdd}—tdjg|’dGdcdd}˜tdjg|’d\dcdd}™tdjg|’d]dcdd}štdjg|’d^dcdd}›tdjg|’d_dcdd}œtdjg|’d`dcdd}tdjg|’dadcdd}ž|“th i|“¡ jt¡}“|”th i|”¡ jt¡}”|•th i|•¡ jt¡}•|–th i|–¡ jt¡}–|—th i|—¡ jt¡}—|˜th i|˜¡ jt¡}˜|™th i|™¡ jt¡}™|šth i|š¡ jt¡}š|›th i|›¡ jt¡}›|œth i|œ¡ jt¡}œ|th i|¡ jt¡}|žth i|ž¡ jt¡}ždedf„}Ÿdgd2„tW|;ŽDƒ};t9|;ƒrˆ|;d  k¡rˆtl|;|||+dhœŽ\}.}/}0}1}2}<}=|<dd…d f|< md
¡}6}<|0 m¡|1 m¡|6 m¡|< m¡f\}3}4}5}7thjn|;d jt¡|$di} dj}¡t |¡dkˆ|  o¡|3|4|5|7f¡|  o¡d krät pdl|›dm¡|
sú|$dnkrZ|sZ|$d
krZt9|;ƒrZxJt-|=ƒD]>\}U}¢t |¡|+|¢ˆ| |¢|0|U|1|U|6|U|<|Uf¡qWg}£|Ÿdo|“|™ƒ}¤|Ÿdp|”|šƒ}¥|ŸdD|•|›ƒ}¦|ŸdE|–|œƒ}§|Ÿdq|—|ƒ}¨|Ÿdr|˜|žƒ}©th m|¤ds|¥ds|¦ds|§ds|¨ds|©dsg¡}ª|£ X|¤|¥|¦|§|¨|©g¡dtdudvdwdxg}«tqtr|£|«dydzƒ|ª|ƒkrH|ª}ƒ| s¡ 5|	¡t t| u¡|d{|ƒ›dT|D›d|¡|Dd
7}D|€ Rd@¡}| T|D›dA|ƒ›¡WdQRX| s¡ 5|	¡t t| u¡|d}¡t+‡fd~dK„|8Dƒƒ}¬|sØ|d||f}st d|s›|¬¡|r|*jv|t*|+ w¡ƒd€| 2d| |.|/|0|1|2|<|6|=|*¡|r€t9|:ƒr€|dk	rJtt|t*ƒrB|d n|ƒjZndW}­ttd‚ƒƒ}®tj` Q|®¡s|tj` x|dƒd„d…¡}®t||­›d†ƒ}¯t d‡|¯›dˆ¡tR|¯d@ƒ}ty z|:|¡WdQRXyˆt{d‰ƒd dŠl|m}}°d d‹l~m}±|°|®ƒ}²|² €|¯¡}O|±|²|OdŒƒ}³|#rdd2„|jj‚Dƒ|³jƒ_„|³ …¡|³ †¡|³ ‡¡|³jˆdd0…\}7}5Wn4t‰k
r~}´zt dŽ|´›¡Wdd}´~´XYnX| ¡|sÔ|r¶dAt9t*| Šd¡ƒƒ›d|d›ndW}-t d‘t%d’|ƒ›|-›¡th 1|$¡|7}µx"t-|=ƒD]\}U}¢|<|U|µ|¢<qìW|3|4|5|7f|9 N¡t9|ƒ ‹¡˜|µ|¬fS)“NTFrf)Ú
batch_size)Úexist_okrk)Úparentsr})r]ÚdnnÚdataÚfp16)Úsr)z-Forcing --batch-size 1 square inference (1,3,ú,z) for non-PyTorch modelsrxÚcocozval2017.txtÚncgà?gffffffî?é
)r]z (z< classes) trained on different --data than what you passed (zV classes). Pass correct combination of --weights and --data that are trained together.rF)ÚimgszÚspeed)gF)ÚtrainrxÚtestz: )ÚpadÚrectÚworkersÚprefixr)r…Únamesièz%22s%11s%11s%11s%11s%11s%11s)ÚClassÚImagesÚ	InstancesÚPÚRÚmAP50zmAP50-95)
ggggggggggÚon_val_start)ÚdescÚ
bar_formatÚon_val_batch_start)Únon_blockingéÿ)Úaugmentééé
rDcs,g|]$}ˆˆdd…df|kdd…f‘qS)Nrr)rA)rHrp)ÚtargetsrArBrJszrun.<locals>.<listcomp>)rkÚmulti_labelÚagnosticÚmax_detr*)rs)r\r])éé)Úoutput_size)rDr)rjrkrEZAttribute_modelzcheckpoint.txtÚrgÚwr-zNuclear Chromatinz
Nuclear ShapeZNucleusZ	CytoplasmzCytoplasmic BasophiliazCytoplasmic VacuolescSsg|]}g‘qSrArA)rHÚ_rArArBrJŽscSsg|]}g‘qSrArA)rHr©rArArBrJscss|]}|dkVqdS)rDNrA)rHrIrArArBú	<genexpr>—szrun.<locals>.<genexpr>)rlz.txt)r9Zon_val_image_endÚ	val_batchz_labels.jpgz	_pred.jpgÚon_val_batch_endr©z.csvr,ry)ÚnewlineÚfilenamecSsg|]
}|›‘qSrArA)rHÚattrrArArBrJÔscSsg|]}d|›‘qS)Zpred_rA)rHr¯rArArBrJÔszpred_Nuclear Chromatinzpred_Nuclear ShapeZpred_NucleusZpred_Cytoplasmzpred_Cytoplasmic Basophiliazpred_Cytoplasmic Vacuoles)ÚheaderrÚcoerce)ÚerrorscSsb|t |¡ t¡}|t |¡ t¡}t||ƒ}t||ƒ}t||ƒ}t||ƒ}|||||gS)N)r^Úisnanr`rQr%r&r'r()Úattribute_nameZtrue_labelsZpred_labelsÚaccuracyÚ	precisionÚrecallÚf1rArArBÚcompute_and_print_metricss



z&run.<locals>.compute_and_print_metricscSs g|]}t |d¡ ¡ ¡‘qS)r)r.rdrfrg)rHrIrArArBrJs)ÚplotÚsave_dirr)Ú	minlengthz$%22s%11i%11i%11.3g%11.3g%11.3g%11.3gÚallu"WARNING ⚠️ no labels found in z, set, can not compute metrics without labelsé2ZNuclear_ChromatinZ
Nuclear_ShapeZCytoplasmic_BasophiliaZCytoplasmic_Vacuolesr+Ú	AttributeZAccuracyÚ	PrecisionÚRecallÚF1Úgrid)ÚheadersÚtablefmtZ
best_weights_z.pthzlast_weights.pthc3s|]}|jˆdVqdS)g@@N)Út)rHrI)ÚseenrArBrªLszKSpeed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape )r»rÚ
on_val_endz3../datasets/coco/annotations/instances_val2017.jsonrUÚannotationszinstances_val2017.jsonz_predictions.jsonz&
Evaluating pycocotools mAP... saving z...zpycocotools>=2.0.6)ÚCOCO)ÚCOCOevalrMcSsg|]}tt|ƒjƒ‘qSrA)rQrrO)rHrIrArArBrJjszpycocotools unable to run: zlabels/*.txtz labels saved to zResults saved to Úbold)ŒÚnextÚ
parametersr]ÚtypeÚhalfÚfloatr!rrÚmkdirrÚstrideÚptÚjitÚenginerrr|rÚinforÚevalÚ
isinstanceÚgetÚstrÚendswithÚosÚseprQr.ÚlinspaceÚnumelÚmodelr…ÚAssertionErrorÚwarmuprrrÚhasattrrÚmoduleÚlistÚtupleÚdictÚ	enumeraterrbr
r_Úrunrr	Útor8r/rr4rdÚonesÚfloat32Ú	unsqueezeÚcudaÚempty_cacherr$ÚFÚsoftmaxr1rtrSrarrÚclonerrrvÚdetachrfÚnameÚROOTÚexistsr2Ú	readlinesr3r½ÚitemrRÚextendrCrOrZrrÚcsvÚwriterrUÚgetsizeÚwriterowÚ	writerowsÚpdÚread_csvÚilocÚ
to_numericr^r³r`ÚanyrÚmeanÚbincountÚsumÚwarningÚprintrr‰ÚsaveÚ
state_dictrºÚvaluesÚjoinÚjsonÚdumpr
Úpycocotools.cocorÊÚpycocotools.cocoevalrËÚloadResÚdatasetÚim_filesÚparamsÚimgIdsÚevaluateÚ
accumulateÚ	summarizeÚstatsÚ	ExceptionÚglobr0)¶r€Z
cell_modelÚweightsr|r‡Ú
conf_thresÚ	iou_thresr£Útaskr]rÚ
single_clsrœÚverboseÚsave_txtÚsave_hybridr7Ú	save_jsonÚprojectrõr}rÐrráÚ
dataloaderr»ÚplotsÚ	callbacksÚcompute_lossÚtrainingrÔrÕrÖrÓrïÚis_cocor…rlÚniouZncmr‹rŒÚconfusion_matrixrrVr‚ÚtpÚfprXr§r¸ÚmpÚmrÚmap50Úap50ÚmapÚdtÚlossrTrÚapZap_classÚpbarZall_rowsÚbatch_iÚimÚpathsÚshapesÚepochÚnbr©ÚheightÚwidthÚpredsZ	train_outZ	int_featsZattribute_targetsÚlbÚsiÚpredrkÚboxesZint_feats_p2Zint_feats_p3Zall_top_indices_cell_predrpZpred_tensorZimg_shape_tensorÚnormalized_xyxyÚp2_feature_shape_tensorÚp3_feature_shape_tensorÚp2_normalized_xyxyÚp3_normalized_xyxyÚp2_x_minÚp2_y_minÚp2_x_maxÚp2_y_maxÚp3_x_minÚp3_y_minÚp3_x_maxÚp3_y_maxÚp2_roiÚp3_roiÚbatch_indexÚp2_roi_with_batch_indexÚp3_roi_with_batch_indexÚp2_resized_objectÚp3_resized_objectÚ
concat_boxZoutput_cell_predictionZoutput_cell_prediction_probZtop_indices_cell_predÚnlÚnprrUr8rmr6ÚtboxÚlabelsnZmax_iou_indicesZmax_iou_predicted_boxesZattributes_predictionZattributes_predZpath_objectÚ	file_nameÚ	filenamesZcheckpoint_dirZcheckpoint_file_pathr@ÚlinesZ
best_accuracyZattribute_namesZall_labels_listZall_prediction_attributes_listÚcountÚlabelÚjÚrowsZcnf_ÚindicesZattribute_model_dirZcsv_file_path_with_epochÚcsvfileZ
csv_writerr°ÚdfZNuclear_Chromatin_arrayZNuclear_Shape_arrayZ
Nucleus_arrayZCytoplasm_arrayZCytoplasmic_Basophilia_arrayZCytoplasmic_Vacuoles_arrayZpred_Nuclear_Chromatin_arrayZpred_Nuclear_Shape_arrayZpred_Nucleus_arrayZpred_Cytoplasm_arrayZ!pred_Cytoplasmic_Basophilia_arrayZpred_Cytoplasmic_Vacuoles_arrayr¹ÚntÚpfÚcÚmetricsZNC_precZNS_precZN_precZC_precZCB_precZCV_precZaverage_precisionrÄrÆr¨Ú	anno_jsonÚ	pred_jsonrÊrËÚannorØÚeÚmapsrA)rÇr rBrêsR!
*$





0". 
 @
0PP
*4$ 
 
&
6  

"
* $ *:.
",
",rêcCsÔt ¡}|jdttddd|jddttddd	|jd
tddd|jd
ddtddd|jdtddd|jdtddd|jdtddd|jdddd|jdd d!d|jd"td#d$d|jd%d&d'd(|jd)d&d*d(|jd+d&d,d(|jd-d&d.d(|jd/d&d0d(|jd1d&d2d(|jd3d&d4d(|jd5td6d7d|jd8d9d7d|jd:d&d;d(|jd<d&d=d(|jd>d&d?d(| ¡}t|j	ƒ|_	|j
|j	 d@¡O_
|j|j
O_tt|ƒƒ|S)ANz--datazdata/coco128.yamlzdataset.yaml path)rÏÚdefaultÚhelpz	--weightsú+z
yolov5s.ptz
model path(s))ÚnargsrÏrsrtz--batch-sizerwz
batch sizez--imgszz--imgz
--img-sizei€zinference size (pixels)z--conf-thresgü©ñÒMbP?zconfidence thresholdz--iou-thresg333333ã?zNMS IoU thresholdz	--max-deti,zmaximum detections per imagez--taskrxz train, val, test, speed or study)rsrtz--deviceryz%cuda device, i.e. 0 or 0,1,2,3 or cpuz	--workersrzz-max dataloader workers (per RANK in DDP mode)z--single-clsÚ
store_trueztreat as single-class dataset)Úactionrtz	--augmentzaugmented inferencez	--verbosezreport mAP by classz
--save-txtzsave results to *.txtz
--save-hybridz-save label+prediction hybrid results to *.txtz--save-confz%save confidences in --save-txt labelsz--save-jsonzsave a COCO-JSON results filez	--projectzruns/valzsave to project/namez--namer{z
--exist-okz*existing project/name ok, do not incrementz--halfz!use FP16 half-precision inferencez--dnnz!use OpenCV DNN for ONNX inferencez	coco.yaml)ÚargparseÚArgumentParserÚadd_argumentrÛrörQrÑÚ
parse_argsrr€r%rÜr#r$rÚvars)ÚparserÚoptrArArBÚ	parse_opt}s:r€c	Csºttddd|jdkrZ|jdkr8t d|j›d¡|jrHt d¡tft|ƒŽn\t	|j
tƒrl|j
n|j
g}tj
 ¡o†|jd	k|_|jd
krÌd\|_|_|_x$|D]|_
tft|ƒdd
i—ŽqªWnê|jdkr¤x¬|D]¤|_
dt|jƒj›dt|j
ƒj›d}ttdddƒƒg}}xT|D]L|_t d|›d|j›d¡tft|ƒdd
i—Ž\}}}| ||¡q"Wtj||ddqÞWt ddddg¡t|dntd|j›d ƒ‚dS)!Nzrequirements.txt)ÚtensorboardÚthop)Úexclude)r‰rxrŠgü©ñÒMbP?u$WARNING ⚠️ confidence threshold z! > 0.001 produces invalid resultsu`WARNING ⚠️ --save-hybrid will return high mAP from hybrid labels, not from predictions alonerfrˆ)gÐ?gÍÌÌÌÌÌÜ?Fr(FZstudyZstudy_r©z.txtéi€é€z	
Running z	 --imgsz z...z%10.4g)ÚfmtrRz-rz	study.zipzstudy_*.txt)rIz--task z2 not in ("train", "val", "test", "speed", "study"))r
rör rrr×r$rêr}rÙrrær.rïÚis_availabler]rÐrr%rr€rOrbr‡rSr^ÚsavetxtÚ
subprocessr ÚNotImplementedError)rrr@rIÚyr§r©rÆrArArBÚmains2



"rŒÚ__main__)VÚ__doc__ryrrÝr‰ÚsysÚpathlibrrgr^r.rrûÚpandasrrÚ__file__ÚresolveÚFILEr~rörÛrUrSÚrelpathÚcwdÚ
models.commonrÚutils.callbacksrÚutils.dataloadersrÚ
utils.generalrr	r
rrr
rrrrrrrrrrrrrÚ
utils.metricsrrrÚutils.plotsrrr Úutils.torch_utilsr!r"Úutils.my_modelr#Útorch.nn.functionalÚnnÚ
functionalrñÚreÚtorchvision.opsr$Zsklearn.metricsr%r&r'r(rCrZrrrvrêr€rŒÚ__name__rrArArArBÚ<module>sŠ
T
!S #