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

Download this file

271 lines (255 with data), 42.1 kB

B

%ĒYfH»„	@sĖdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZm Z ddl!Z!ddl"Z#ddl$Z%ddl&Z'ddl(Z(ddl)Z)ddl*Z*ddl+m,Z,ddl-m.Z.yddl/Z/e0e/d
ÉźsVt1āWn,e2e1fk
źrĄe†3d°ddl/Z/YnXddl4m5Z5ddl6m7Z7m8Z8ddl9m:Z:m;Z;ddl<m=Z=m>Z>ee?Ɇ@°ZAeAjBdZCeDe†Edd°ÉZFeGdeHde†I°dÉÉZJee†EdeCjKd°ÉZLeMe†Edd°É†N°dkZOeMe†Edd°É†N°dkZPdZQdZRe(jSdd d!d"će#jSdd#d$jTid%ćd&e%jUjV_We!†Xd°eMeJÉejYd'<e†3°d(kźr¶d)neMeJÉejYd*<d+ejYd,<d„d.d/ĄZZdšd1d2ĄZ[d3d4ĄZ\d5d6ĄZ]d7d8ĄZ^e_d9úd:d;ĄZ`dŚd=d>ĄZad?Zbebdfd@dAĄZcecebÉe†deb°Zee†3°dBkźr^x(eejfeejgfD]ZheieeehjjdCdDĄÉźqBWdśdGdHĄZkekÉZlGdIdJĄdJejmÉZnGdKdLĄdLejmÉZoGdMdNĄdNejmÉZpdOdPĄZqdÁeerdQúdRdSĄZsdŤdTdUĄZtdťdWdXĄZudYdZĄZvdÍd\d]ĄZwe?fd^d_ĄZxe?fd`daĄZydbdcĄZzdddeĄZ{eCfdfdgĄZ|e7ÉepeCÉdŽdjdkĄÉÉZ}epeCÉdždldmĄÉZ~dŪdodpĄZdÓdsdtĄZÄdÔdvdwĄZĀdūdxdyĄZādŮd|d}ĄZÉdÚddÄĄZĄdůdĀdāĄZÖeRd<fdÉdĄĄZÜdŰdÖdÜĄZádádąĄZądűdädčĄZČdČifdĆdćĄZädŲdŹdźĄZčdĎdíĄZĆdųdĒdēĄZćdĖdóĄZédėdôĄZŹdÝdĚděĄZźdüd†ĄZĎdýdĘd£ĄZíd°e#†ďd°°fd§d•ĄZĒd¶dߥZēd®d©ĄZĖd™dęĄZódķd≠dģĄZėdŻdĮdįĄZôdŁdĪd≤ĄZödżd≥dīĄZõdĶd∂ĄZúdĢdłdĻĄZĚdˇdļdĽĄZěźddľdĹĄZüdĺdŅĄZ†dņdŃĄZ°źddŇd∆ĄZĘźdd»d…ĄZ£eĎd ÉfdňdŐĄZ§dÕdőĄZ•źddŌd–ĄZ¶e!jßZ®e!j©fd—d“ĄZ™d”d‘ĄZęd’d÷ĄZßee†¨°dj≠ÉjKjK†ģ°e†¨°dj≠kźr6e™eęeße!_™e!_ęe!_ßd◊dōĄZĮdŔdŕĄZįdŘd‹ĄZĪddl"Z#ddl≤m≥ZīddlĶm∂Z∂ddl(Z(źdd›dřĄZ∑dŖdŗĄZłdŠd‚ĄZĻdS(z
General utils
ťN)ŕdeepcopy)ŕdatetime)ŕrepeat)ŕ
ThreadPool)ŕPath)ŕcheck_output)ŕ
is_tarfile)ŕOptional)ŕZipFileŕ
is_zipfile)ŕ	roi_alignŕ__version__zpip install -U ultralytics)ŕcheck_requirements)ŕ	TryExceptŕemojis)ŕ
curl_downloadŕgsutil_getsize)ŕbox_iouŕfitnessťŕRANKťˇˇˇˇťZYOLOv5_DATASETS_DIRŕdatasetsZYOLOv5_AUTOINSTALLTŕtrueZYOLOv5_VERBOSEz{l_bar}{bar:10}{r_bar}z	Arial.ttfi@ťŕlong)ŕ	linewidthŕ	precisionŕprofileŕ
float_kindz{:11.5g})rŕ	formatterť
ZNUMEXPR_MAX_THREADSŕdarwinŕ1ZOMP_NUM_THREADSŕ2ZTF_CPP_MIN_LOG_LEVELŕcCs$t|É}t|†°†dd°Ét|ÉkS)Nŕasciiŕignore)ŕstrŕlenŕencodeŕdecode)ŕs©r.ķL/home/iml/Desktop/Talha/yolov5_P2_ROI_HCM_Micro_1000_Github/utils/general.pyŕis_asciiNsr0űšļļŚ∑•śôļŤÉĹcCstt†dt|ɰÉS)Nu	[šłÄ-ťŅŅ])ŕboolŕreŕsearchr))r-r.r.r/ŕ
is_chineseTsr5cCs
dtjkS)Nzgoogle.colab)ŕsysŕmodulesr.r.r.r/ŕis_colabYsr8c	Cs,t†t°Źddlm}|Édk	SQRXdS)zŕ
    Check if the current script is running inside a Jupyter Notebook.
    Verified on Colab, Jupyterlab, Kaggle, Paperspace.

    Returns:
        bool: True if running inside a Jupyter Notebook, False otherwise.
    r)ŕget_ipythonNF)ŕ
contextlibŕsuppressŕ	ExceptionŕIPythonr9)r9r.r.r/ŕ
is_jupyter^sr>cCs tj†d°dkotj†d°dkS)NZPWDz/kaggle/workingZKAGGLE_URL_BASEzhttps://www.kaggle.com)ŕosŕenvironŕgetr.r.r.r/ŕ	is_kagglelsrB)ŕreturnc	CsPtdɆ°rdSy&tdÉŹ}tddĄ|DÉÉSQRXWntk
rJdSXdS)z4Check if the process runs inside a docker container.z/.dockerenvTz/proc/self/cgroupcss|]}d|kVqdS)ZdockerNr.)ŕ.0ŕliner.r.r/ķ	<genexpr>wszis_docker.<locals>.<genexpr>NF)rŕexistsŕopenŕanyŕOSError)ŕfiler.r.r/ŕ	is_dockerqs
rLFc	CsZ|st†|tj°St|Éd}y"t|dÉŹWdQRX|†°dStk
rTdSXdS)Nztmp.txtŕwTF)r?ŕaccessŕW_OKrrHŕunlinkrJ)ŕdirŕtestrKr.r.r/ŕis_writeable|s
rSZyolov5cCsftt†dd°É}|r"|dkr"tjntj}tj†dd|ddii|d||d	úi|||gdd
úidú°dS)Nrr>rrrFŕformatz%(message)szlogging.StreamHandler)ŕclassr!ŕlevel)rVŕhandlersŕ	propagate)ŕversionZdisable_existing_loggersZ
formattersrWŕloggers)ŕintr?ŕgetenvŕloggingŕINFOŕERRORŕconfigZ
dictConfig)ŕnameŕverboseŕrankrVr.r.r/ŕset_loggingćsrdŕWindowscCstt|ÉÉS)N)ŕfnr)ŕxr.r.r/ŕ<lambda>ßůrhŕUltralyticsŕYOLOV5_CONFIG_DIRcCsdt†|°}|rt|É}n<ddddú}t†°|†t†°d°}t|ÉrH|ntdÉ|}|jddć|S)	NzAppData/Roamingz.configzLibrary/Application Support)reŕLinuxŕDarwinr&z/tmpT)ŕexist_ok)	r?r\rŕhomerAŕplatformŕsystemrSŕmkdir)rQŕenv_varŕenvŕpathŕcfgr.r.r/ŕuser_config_dir™s

rwc@s6eZdZdejdúddĄZddĄZdd	ĄZd
dĄZdS)
ŕProfileÁN)ŕdevicecCs2||_||_|r(t|ÉddÖdkr(dnd|_dS)NťŕcudaTF)ŕtrzr)r|)ŕselfr}rzr.r.r/ŕ__init__ľszProfile.__init__cCs|†°|_|S)N)ŕtimeŕstart)r~r.r.r/ŕ	__enter__Ńs
zProfile.__enter__cCs$|†°|j|_|j|j7_dS)N)rÄrĀŕdtr})r~ŕtypeŕvalueŕ	tracebackr.r.r/ŕ__exit__ŇszProfile.__exit__cCs|jrtj†|j°t†°S)N)r|ŕtorchŕsynchronizerzrÄ)r~r.r.r/rÄ…szProfile.time)ryN)	ŕ__name__ŕ
__module__ŕ__qualname__rąrzrrārárÄr.r.r.r/rxļsrxc@s4eZdZdddúddĄZddĄZdd	ĄZd
dĄZdS)
ŕTimeoutr&T)ŕtimeout_msgŕsuppress_timeout_errorscCst|É|_||_t|É|_dS)N)r[ŕsecondsŕtimeout_messager2r;)r~rźrérŹr.r.r/r—s
zTimeout.__init__cCst|jÉādS)N)ŕTimeoutErrorrĎ)r~ŕsignumŕframer.r.r/ŕ_timeout_handler÷szTimeout._timeout_handlercCs,t†°dkr(t†tj|j°t†|j°dS)Nre)rprqŕsignalŕSIGALRMrēŕalarmrź)r~r.r.r/rāŔszTimeout.__enter__cCs,t†°dkr(t†d°|jr(|tkr(dSdS)NrerT)rprqrĖrėr;rí)r~ŕexc_typeŕexc_valŕexc_tbr.r.r/rářs
zTimeout.__exit__N)rärčrĆrrērārár.r.r.r/rćŌsrćc@s$eZdZddĄZddĄZddĄZdS)ŕWorkingDirectorycCs||_t†°†°|_dS)N)rQrŕcwdŕresolve)r~Znew_dirr.r.r/rÁszWorkingDirectory.__init__cCst†|j°dS)N)r?ŕchdirrQ)r~r.r.r/rāŽszWorkingDirectory.__enter__cCst†|j°dS)N)r?rürĚ)r~rôrörõr.r.r/ráÓszWorkingDirectory.__exit__N)rärčrĆrrārár.r.r.r/rúŚsrúcsáfddĄtąÉDÉS)Ncs(g|] }ttą|ÉÉr|†d°s|ĎqS)ŕ__)ŕcallableŕgetattrŕ
startswith)rDŕf)ŕinstancer.r/ķ
<listcomp>Űszmethods.<locals>.<listcomp>)rQ)r•r.)r•r/ŕmethodsÚsrß)ŕargsc	sōt†°j}t†|°\}}}}}ądkrNt†|°\Č}}}áfddĄ|†°DÉČyt|Ɇ°†t	°†
d°}Wntk
rąt|Éj}YnX|rė|õdĚnd|r®|õdĚnd}t
†t|Éd†ddĄą†°Dɰ°dS)Ncsi|]\}}|ąkr||ďqSr.r.)rDŕkŕv)r®r.r/ķ
<dictcomp>ższprint_args.<locals>.<dictcomp>r&z: z, css |]\}}|õd|õĚVqdS)ķ=Nr.)rDr©r™r.r.r/rFszprint_args.<locals>.<genexpr>)ŕinspectŕcurrentframeŕf_backŕgetframeinfoŕgetargvaluesŕitemsrrěŕrelative_toŕROOTŕwith_suffixŕ
ValueErrorŕstemŕLOGGERŕinfoŕcolorstrŕjoin)	r®Z	show_fileZ	show_funcrgrKŕ_ŕfuncZfrmr-r.)r®r/ŕ
print_argsųs
$rĺcCsxt†|°tj†|°t†|°tj†|°tj†|°|rtttjdÉrtt†	d°dtj
j_dt
jd<t|Ét
jd<dS)Nz1.12.0Tz:4096:8ZCUBLAS_WORKSPACE_CONFIGZPYTHONHASHSEED)ŕrandomŕseedŕnprąŕmanual_seedr|ŕmanual_seed_allŕ
check_versionr
ŕuse_deterministic_algorithmsŕbackendsŕcudnnŕ
deterministicr?r@r))rņr»r.r.r/ŕ
init_seedss




r…r.csááfddĄ|†°DÉS)NcsDi|]<\Č}ąąkrtáfddĄąDÉÉr|jąąjkr|ąďqS)c3s|]}|ąkVqdS)Nr.)rDrg)r©r.r/rFsz-intersect_dicts.<locals>.<dictcomp>.<genexpr>)ŕallŕshape)rDr™)ŕdbŕexclude)r©r/ręsz#intersect_dicts.<locals>.<dictcomp>)r≤)ŕdarŐrÕr.)rŐrÕr/ŕintersect_dictssrŌcCst†|°}ddĄ|j†°DÉS)NcSs&i|]\}}|jtjjk	r|j|ďqSr.)ŕdefaultr≠ŕ	Parameterŕempty)rDr©r™r.r.r/ręsz$get_default_args.<locals>.<dictcomp>)r≠ŕ	signatureŕ
parametersr≤)rĹr”r.r.r/ŕget_default_argss
r’ŕ.cCs,tj|õdĚddć}|r(t|tjjdćSdS)Nz/**/last*.ptT)ŕ	recursive)ŕkeyr&)ŕglobŕmaxr?ruŕgetctime)Z
search_dirZ	last_listr.r.r/ŕget_latest_run sr‹cCs"t†°t†t|Ɇ°j°}|jS)N)rŕnowŕ
fromtimestamprŕstatŕst_mtimeŕdays)rurÉr.r.r/ŕfile_age&sr‚cCs.t†t|Ɇ°j°}|jõd|jõd|jõĚS)Nķ-)rrřrrŖrŗŕyearŕmonthŕday)rur}r.r.r/ŕ	file_date,srÁcCsNd}t|É}|†°r"|†°j|S|†°rFtddĄ|†d°DÉÉ|SdSdS)Nicss |]}|†°r|†°jVqdS)N)ŕis_filerŖŕst_size)rDr§r.r.r/rF9szfile_size.<locals>.<genexpr>z**/*g)rrŤrŖrťŕis_dirŕsumrŔ)ruŕmbr.r.r/ŕ	file_size2srŪcs ddlČáfddĄ}|Ép|ÉS)Nrcs*yą†dd°dStk
r$dSXdS)N)z1.1.1.1iĽrTF)ŕcreate_connectionrJr.)ŕsocketr.r/ŕrun_onceBs
zcheck_online.<locals>.run_once)rÔ)rūr.)rÔr/ŕcheck_online>srŮcCsNy4t|Éd†°stātd|õdĚdd憰ddÖStk
rHdSXdS)Nz.gitzgit -C z  describe --tags --long --alwaysT)ŕshellrr&)rrÍŕAssertionErrorrr,r<)rur.r.r/ŕgit_describeMs
 rŰķultralytics/yolov5ŕmasterc
spdąõĚ}d|õĚ}tdÉ}tdɆ°s8t|d|ÉātÉsNt|d|Éātjdtdd	d
憰dć}áfdd
Ą|DÉ}t	|ÉrĖ||†
d	°d}nd}td|õd|õĚd	d
ćtd|õĚd	ddćtdd	d
憰†°}ttd|õd|õd|õdĚd	d
ćÉ}	|	dkźrR|dkźrdnd|õd|õĚ}
|d|	õdd |	dkõd!|
õd"|õd#Ě	7}n|d$|õd%Ě7}t
†|°dS)&Nzhttps://github.com/z, for updates see zgithub: z.gitz%skipping check (not a git repository)zskipping check (offline)z\sz
git remote -vT)rÚ)ŕpatternŕstringcsg|]}ą|kĎqSr.r.)rDr-)ŕrepor.r/r¶asz$check_git_status.<locals>.<listcomp>rŕultralyticszgit remote add ķ z
git fetch r)rÚŕtimeoutzgit rev-parse --abbrev-ref HEADz
git rev-list z..ķ/z --countrŕoriginzgit pullz	git pull u ‚ö†ÔłŹ YOLOv5 is out of date by z commitr-z. Use 'z' or 'git clone z' to update.zup to date with u ‚úÖ)rļrrGrůrŮr3ŕsplitrr,rIŕindexŕstripr[rłrĻ)rýŕbranchŕurlŕmsgr-ŕsplitsŕmatchesŕremoteZlocal_branchŕnZpullr.)rýr/ŕcheck_git_statusVs&

$
,r	cCsétdÉddl}yX|†|°}|jjj†dd°}|jjj	}y|j
j}Wntk
r\d}YnX|||dúS|j
jk
rąddddúSXdS)NZ	gitpythonrz.gitr&)rrŕcommit)rŕgitZRepoZremotesrĢrŕreplaceŕheadr
ZhexshaZ
active_branchraŕ	TypeErrorŕexcZInvalidGitRepositoryError)rurrýrr
rr.r.r/ŕcheck_git_infors


rķ3.8.0cCstt†°|dddćdS)NzPython T)raŕhard)rńrpŕpython_version)ŕminimumr.r.r/ŕcheck_pythonĄsrķ0.0.0ķversion cCsnddĄ||fDÉ\}}|r"||kn||k}d|õ|õd|õ|õdĚ}|rX|sXtt|ÉÉā|rj|sjt†|°|S)Ncss|]}t†|°VqdS)N)ŕpkgZ
parse_version)rDrgr.r.r/rFčsz check_version.<locals>.<genexpr>uWARNING ‚ö†ÔłŹ z is required by YOLOv5, but z is currently installed)růrrłŕwarning)ŕcurrentrraZpinnedrrbŕresultr-r.r.r/rńČs
rńť csdt|tÉr tt|tąÉÉąÉ}nt|É}ááfddĄ|DÉ}||kr`t†d|õdąõd|õ̰|S)Ncs g|]}tt|tąÉÉąÉĎqSr.)rŕŕmake_divisibler[)rDrg)ŕfloorr-r.r/r¶õsz"check_img_size.<locals>.<listcomp>uWARNING ‚ö†ÔłŹ --img-size z  must be multiple of max stride z, updating to )ŕ
isinstancer[rŕrŕlistrłr)ŕimgszr-rŕnew_sizer.)rr-r/ŕcheck_img_sizeēs
r#c
CsāyFtÉrtātÉrtāt†dt†d°°t†d°t†°t†d°dSt	k
r|}z|rlt
†d|õ̰dSd}~XYnXdS)NrR)rrťrTuMWARNING ‚ö†ÔłŹ Environment does not support cv2.imshow() or PIL Image.show()
F)r>růrLŕcv2ŕimshowrŃŕzerosZwaitKeyZdestroyAllWindowsr<rłr)ŕwarnŕer.r.r/ŕcheck_imshow°s



r*ķ
yolov5s.pt©z.ptcCsr|rn|rnt|tÉr|g}xTt|ttfÉr,|n|gD]8}t|Éj†°}t|Ér2||ks2t|õ|õd|õĚÉāq2WdS)Nz acceptable suffix is )	rr)r ŕtuplerŕsuffixŕlowerr*rů)rKr.rr§r-r.r.r/ŕcheck_suffixĪs
r0©z.yamlz.ymlcCs
t||ÉS)N)ŕ
check_file)rKr.r.r.r/ŕ
check_yamlľsr3cCsft||Ét|É}tj†|°s"|s&|S|†d°r |}ttj†	|°†
d°dÉj}tj†|°rtt†
d|õd|õ̰nRt†
d|õd|õd̰tj†||°t|Ɇ°rłt|Ɇ°jdks∆td	|õĚÉā|S|†d
°rÍdtjksśtdÉā|Sg}x0d
D](}|†tjtt|d|Éddć°qŰWt|Éźs8td|õĚÉāt|ÉdkźsZtd|õd|õĚÉā|dSdS)N)zhttp:/zhttps:/ķ?rzFound z locally at zDownloading z to z...zFile download failed: z
clearml://Zclearmlz[ClearML is not installed, so cannot use ClearML dataset. Try running 'pip install clearml'.)ŕdataZmodelsŕutilsz**T)r◊zFile not found: rzMultiple files match 'z', specify exact path: )r0r)r?ruŕisfiler£rŕurllibŕparseŕunquoterˇrarłrĻrąŕhubŕdownload_url_to_filerGrŖrťrůr6r7ŕextendrŔrīr*)rKr.rŕfilesŕdr.r.r/r2Ńs,

,

("r2cCs`t|É}t|j}|†°s\|†°s\d|jõĚ}t†d|õd|õd̰tjj|t	|É|dćdS)Nzhttps://ultralytics.com/assets/zDownloading z to z...)ŕprogress)
rŕ
CONFIG_DIRrarGrłrĻrąr;r<r))Zfontr@rKrr.r.r/ŕ
check_font›s
rBc
sĄd}tąttfÉrjtąÉs"tąÉrjtątõdtąÉjõĚdddddćtttąÉj†	d°ÉČąj
d}}tąttfÉrÄtąÉČx(dD] }|ąksÜtt
d	|õd
ĚÉÉāqÜWtądttfÉr–ttądÉÉąd<tdd
Ąąd†°DÉÉsÚtdÉātądÉąd<t|źpą†d°źpdÉČą†°źs:tą†°Čąąd<xĒdD]Ć}ą†|°źr@tą|tÉźrįąą|†°}|†°źsĘą|†d°źrĘąą|ddÖ†°}t|Éą|<náfddĄą|DÉą|<źq@Wáfdd
ĄdDÉ\}}}}|źrbddĄt|tÉźr|n|gDÉ}tdd
Ą|DÉÉźsbt†dddĄ|Dɰ|źrH|źsPtdÉāt†°}	|†d°źr–|†d°źr–t|Éj }
t†d|õd |
õd!̰t!j"†#||
°ttÉj$ddd"ćt%|
td#ćt|
Ɇ&°d}n<|†d$°źrĢt†d%|õd&̰t'j(|dd'ć}nt)|d(ąiÉ}d)t*t†°|	dÉõd*Ě}|d+kźrFd,|õd-t+d.tÉõĚn
d/|õd0Ě}t†d1|õ̰t,t-ądÉźrvd2nd3dd4ćąS)5Nr&rżTFr)rQŕunzipŕdeleteŕcurlŕthreadsz*.yaml)ŕtrainŕvalŕnameszdata.yaml 'u:' field missing ‚ĚĆrIcss|]}t|tÉVqdS)N)rr[)rDr©r.r.r/rFķsz check_dataset.<locals>.<genexpr>z2data.yaml names keys must be integers, i.e. 2: carŕncru)rGrHrRz../r$csg|]}tą|†°ÉĎqSr.)r)rě)rDrg)rur.r/r¶
sz!check_dataset.<locals>.<listcomp>c3s|]}ą†|°VqdS)N)rA)rDrg)r5r.r/rF
s)rGrHrRŕdownloadcSsg|]}t|Ɇ°ĎqSr.)rrě)rDrgr.r.r/r¶scss|]}|†°VqdS)N)rG)rDrgr.r.r/rFsu+
Dataset not found ‚ö†ÔłŹ, missing paths %scSsg|]}|†°st|ÉĎqSr.)rGr))rDrgr.r.r/r¶suDataset not found ‚ĚĆŕhttpz.zipzDownloading z to z...)ŕparentsrn)ruzbash zRunning z ...)rÚŕyamlķ(zs))rNusuccess ‚úÖ z, saved to ŕboldzfailure u ‚ĚĆzDataset download z	Arial.ttfzArial.Unicode.ttf)r@).rr)rrrrKŕDATASETS_DIRr∑ŕnextŕrglobŕparentŕ	yaml_loadrůrr r-ŕdictŕ	enumerater ŕkeysr*rAŕis_absoluterīrěrGr£rłrĻr<rÄŕendswithrarąr;r<rrŕ
unzip_filerPŕ
subprocessŕrunŕexecŕroundrļrBr0)
r5Zautodownloadŕextract_dirr©rgrGrHrRr-r}r§ŕrrÉr.)r5rur/ŕ
check_datasetÁsd$
 "

  
,rbcsōddlmČm}áfddĄ}tdÉ}t|†°Éj}|jdkr@dStdd	d
}|†	°r\|nt
Érfdnt†d°}y6|t
|É|ÉsĒ||d
|É|ÉsĒtāt†|õd̰dStk
r“d}t†|õd|õ̰dSXdS)Nr)ŕ	AutoShapeŕDetectMultiBackendcsJą|ddć}||Éjd}d|_||Éjd}|j|jkoHtj||ddćS)NF)rbrTgöôôôôôĻ?)ŕatol)Zxywhnŕamprňrąŕallclose)ŕmodelŕimŕmŕaŕb)rcr.r/ŕamp_allclose-s
zcheck_amp.<locals>.amp_allclosezAMP: )ŕcpuŕmpsFr5Zimageszbus.jpgz&https://ultralytics.com/images/bus.jpg)iÄiÄr$z
yolov5n.ptuchecks passed ‚úÖTz1https://github.com/ultralytics/yolov5/issues/7908u<checks failed ‚ĚĆ, disabling Automatic Mixed Precision. See )Z
models.commonrcrdrļrRr‘rzrĄrīrGrŮrŃŕonesrrůrłrĻr<r)rhrdrmŕprefixrzr§riZhelp_urlr.)rcr/ŕ	check_amp)s 
 "rrķ	data.yamlc	Cs"t|ddćŹ}t†|°SQRXdS)Nr()ŕerrors)rHrNŕ	safe_load)rKr§r.r.r/rUEsrUc	Cs8t|dÉŹ$}tjddĄ|†°DÉ|ddćWdQRXdS)NrMcSs(i|] \}}t|tÉrt|Én||ďqSr.)rrr))rDr©r™r.r.r/ręNszyaml_save.<locals>.<dictcomp>F)ŕ	sort_keys)rHrNŕ	safe_dumpr≤)rKr5r§r.r.r/ŕ	yaml_saveKsrx©z	.DS_StoreZ__MACOSXc	s`|dkrt|Éj}t|ÉŹ<}x4|†°D](ČtáfddĄ|DÉÉr&|ją|dćq&WWdQRXdS)Nc3s|]}|ąkVqdS)Nr.)rDrg)r§r.r/rFWszunzip_file.<locals>.<genexpr>)ru)rrTr
ŕnamelistr ŕextract)rKrurÕZzipObjr.)r§r/r[Qs

r[cCs0tt|ÉɆdd°}ttj†|°Éj†d°dS)Nz:/z://r4r)r)rrr8r9r:rarˇ)rr.r.r/ŕurl2file[sr|r$c	söáááááfddĄČt|É}|jdddćądkrjtąÉ}|†áfddĄt|t|Éɰ|†°|†°n,x*t|t	tfÉrÄ|gn|D]}ą||ÉqĄWdS)Nc
sÄd}tj†|°rt|É}nł|t|Éj}t†d|õd|õd̰xźtądÉD]Ä}ąrjt||ądkdć}nt	j
j||ądkdć|†°}|rźPqN|ąkrľt†
d|dõd	ąõd
|õd̰qNt†
d|õd̰qNWąźr||źr||jdksķt|Ésķt|Éźr|t†d
|õd̰t|Éźr"t||ÉnLt|ÉźrHtjdd|d|jgddćn&|jdkźrntjdd|d|jgddćąźr||†°dS)NTzDownloading z to z...r)Zsilent)r@u"‚ö†ÔłŹ Download failure, retrying rżrŻu‚ĚĆ Failed to download z.gzz
Unzipping ŕtarŕxfz--directory)ŕcheckZxfz)r?rur7rrarłrĻŕrangerrąr;r<rŤrr.rrr[r\r]rTrP)rrQŕsuccessr§ŕi)rErDŕretryrFrCr.r/ŕdownload_onecs2
$(

zdownload.<locals>.download_oneT)rMrnrcsą|éS)Nr.)rg)rĄr.r/rhárizdownload.<locals>.<lambda>)
rrrrŕimapŕziprŕcloserĽrr))	rrQrCrDrErFrÉŕpoolŕur.)rErDrĄrÉrFrCr/rKas 
rKcCs*t|tjÉrt|†°É}t†||°|S)N)rrąŕTensorr[rŕŕmathŕceil)rgŕdivisorr.r.r/rŹsrcCstjdd|dćS)Nu"[|@#!¬°¬∑$‚ā¨%&()=?¬Ņ^*;:,¬®¬ī><+]rľ)rųŕreplrÝ)r3ŕsub)r-r.r.r/ŕ	clean_strĖsrźÁÁū?ťdcsáááfddĄS)Ncs(dt†|tją°dąąąS)Nrť)rčŕcosŕpi)rg)ŕstepsŕy1ŕy2r.r/rhĚrizone_cycle.<locals>.<lambda>r.)rėrôrór.)rórėrôr/ŕ	one_cycleõsröcsvt|Édkr|ndd|dfź^}}ddddd	d
ddd
dddddddddddúČd†áfddĄ|Dɰ|õądS)NrŕbluerPrzzzzzzzzzzzzzzzzzzz)ZblackZredZgreenZyellowrõZmagentaZcyanZwhiteZbright_blackZ
bright_redZbright_greenZ
bright_yellowZbright_blueZbright_magentaZbright_cyanZbright_whiteŕendrPZ	underliner&c3s|]}ą|VqdS)Nr.)rDrg)ŕcolorsr.r/rF∑szcolorstr.<locals>.<genexpr>rú)r*rĽ)ŕinputr®rÝr.)rĚr/rļ†s*$rļťPcCsr|ddkrt†°St†|d°}|ddÖdf†t°}tj||dć}d||dk<d|}||†°}t†|°†	°S)Nr)ŕ	minlengthr)
rąrärŃŕconcatenateŕastyper[ŕbincountrŽŕ
from_numpyŕfloat)ŕlabelsrJŕclassesŕweightsr.r.r/ŕlabels_to_class_weightsļsr©cs.t†áfddĄ|Dɰ}|†dą°|†d°S)Ncs,g|]$}tj|ddÖdf†t°ądćĎqS)Nr)r†)rŃr£rĘr[)rDrg)rJr.r/r¶–sz+labels_to_image_weights.<locals>.<listcomp>r)rŃŕarrayŕreshaperŽ)r¶rJŕ
class_weightsZclass_countsr.)rJr/ŕlabels_to_image_weightsÕsr≠cPCs§ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPgPS)QNrrĒr$r{rťťrť	r"ťť
ťťťťťťťťťťťťťťťrť!ť"ť#ť$ť%ť&ť'ť(ť)ť*ť+ť,ť.ť/ť0ť1ť2ť3ť4ť5ť6ť7ť8ť9ť:ť;ť<ť=ť>ť?ť@ťAťCťFťHťIťJťKťLťMťNťOrüťQťRťTťUťVťWťXťYťZr.r.r.r.r/ŕcoco80_to_coco91_class‘s<8rűcCszt|tjÉr|†°nt†|°}|d|dd|d<|d|dd|d<|d|d|d<|d|d|d<|S)N).r).rĒrĒ).r).r$)rrąräŕclonerŃŕcopy)rgŕyr.r.r/ŕ	xyxy2xywhŗsrýcCsāt|tjÉr|†°nt†|°}|d|dd|d<|d|dd|d<|d|dd|d<|d|dd|d<|S)N).r).rĒrĒ).r).r$)rrąrärŲrŃrų)rgrÝr.r.r/ŕ	xywh2xyxyÍsrķťÄcCsĘt|tjÉr|†°nt†|°}||d|dd||d<||d|dd||d<||d|dd||d<||d|dd||d<|S)N).r).rĒrĒ).r).r$)rrąrärŲrŃrų)rgrMŕhŕpadwŕpadhrÝr.r.r/ŕ
xywhn2xyxyŰs    rˇcCs§|rt|||||fÉt|tjÉr.|†°nt†|°}|d|dd||d<|d|dd||d<|d|d||d<|d|d||d<|S)N).r).rĒrĒ).r).r$)ŕ
clip_boxesrrąrärŲrŃrų)rgrMrŁŕclipŕepsrÝr.r.r/ŕ
xyxy2xywhnĢsrcCsJt|tjÉr|†°nt†|°}||d||d<||d||d<|S)N).r).r)rrąrärŲrŃrų)rgrMrŁrżrĢrÝr.r.r/ŕxyn2xy
srcCsp|j\}}|dk|dk@||k@||k@}||||}}t|Érft†|†°|†°|†°|†°g°St†d°S)Nr)rr{)ŕTrIrŃr™ŕminrŕr')ŕsegmentŕwidthŕheightrgrÝZinsider.r.r/ŕsegment2boxs
 r
cCsLg}x8|D]0}|j\}}|†|†°|†°|†°|†°g°q
Wtt†|°ÉS)N)rŕappendrrŕrýrŃr™)ŕsegmentsŕboxesr-rgrÝr.r.r/ŕsegments2boxess


&rťŤcséxąt|ÉD]|\}ČtjąąddÖddÖffddćČt†dtąÉd|°Čt†tąÉ°Čt†áááfddĄtdÉDɰ†dd°j||<q
W|S)Nrr)ŕaxisc	s&g|]}t†ąąąddÖ|f°ĎqS)N)rŃŕinterp)rDrā)r-rgŕxpr.r/r¶)sz%resample_segments.<locals>.<listcomp>rĒr)	rWrŃr°ŕlinspacer*ŕarangerÄręr)rrrār.)r-rgrr/ŕresample_segments#s"2rcCső|dkr\t|d|d|d|dÉ}|d|d|d|d|d|df}n|dd}|d}|dddgf|d8<|dddgf|d8<|dddÖf|<t||É|S)NrrrĒ.r$r{)rr)ŕ
img1_shaper
ŕ
img0_shapeŕ	ratio_padŕgainŕpadr.r.r/ŕscale_boxes-s"2
rcCsķ|dkr\t|d|d|d|dÉ}|d|d|d|d|d|df}n|dd}|d}|ddÖdf|d8<|ddÖdf|d8<||}t||É|rŲ|ddÖdf|d<|ddÖdf|d<|S)NrrrĒ)rŕ
clip_segments)rrrrŕ	normalizerrr.r.r/ŕscale_segments=s"2
rcCs≤t|tjÉr^|d†d|d°|d†d|d°|d†d|d°|d†d|d°nP|dddgf†d|d°|dddgf<|ddd	gf†d|d°|ddd	gf<dS)
N).rrr).r).rĒ).r$.rĒr$)rrąräŕclamp_r)r
rňr.r.r/rPs(rcCsöt|tjÉrF|ddÖdf†d|d°|ddÖdf†d|d°nP|ddÖdf†d|d°|ddÖdf<|ddÖdf†d|d°|ddÖdf<dS)Nrr)rrąrärr)rrňr.r.r/r\s
(rÁ–?ÁÕŐŐŐŐŐ‹?ť,c	%Csěd|krdks&ntd|õdĚÉād|kr:dksLntd|õdĚÉāt|ttfÉrb|d}|j}	d|	jk}
|
r~|†°}|jd}|jd|d}|d	|k}
d
}d}dd
|}d}||dkM}d}t†°}d|}t	j
dd|f|jdćg|}źxöt|ÉDź]Ć\}}||
|}|źr∆t||Éźr∆||}t	j
t|É||df|jdć}|ddÖddÖf|ddÖddÖf<d|ddÖdf<d|t
t|ÉÉ|ddÖdf†°df<t	†||fd°}|jdźs÷źq|ddÖddÖf|ddÖddÖf9<t|ddÖddÖfÉ}|ddÖ|dÖf}|źrĖ|ddÖd|Öf|kjddćj\}}t	†||||d|df|ddÖdf†°||fd°}nH|ddÖd|Öfjdddć\}}t	†|||†°|fd°|†d°|k}|dk	źr||ddÖddÖft	j||jdćk†d°}|jd}|źs*źq||ddÖdfjddćd|Ö}|ddÖddÖf|źrjdn|} |ddÖddÖf| |ddÖdf}!}"tj†|!|"|°}|d|Ö}|źrHd|kźr‘dkźrHnnpt|!||!É|k}#|#|"d}$t	†|$|ddÖddÖf°†°|$jdddć||ddÖf<|źrH||#†d°dk}||||<|
źrl||†|	°||<t†°||kźrt †!d|dõd̰PźqW|S)zĮNon-Maximum Suppression (NMS) on inference results to reject overlapping detections

    Returns:
         list of detections, on (n,6) tensor per image [xyxy, conf, cls]
    rrzInvalid Confidence threshold z&, valid values are between 0.0 and 1.0zInvalid IoU rorĒr).r{ii0ugŗ?göôôôôô©?TFrģ)rzNr{gū?)ŕas_tuple)ŕkeepdimr)ŕ
descendinggpß@uWARNING ‚ö†ÔłŹ NMS time limit z.3fz
s exceeded)"růrr r-rzrĄrnrňrÄrąr'rWr*rÄrŕcatrķŕnonzerorr•rŕŕviewŕtensorrIŕargsortŕtorchvisionŕopsZnmsrŕmmrŽŕtorłr)%Z
predictionZ
conf_thresŕ	iou_thresrßZagnosticZmulti_labelr¶Zmax_detŕnmrzroŕbsrJZxcZmax_whZmax_nmsZ
time_limitZ	redundantŕmerger}ŕmiŕoutputŕxirgŕlbr™ŕboxŕmaskrāŕjŕconfrŕcr
ŕscoresZiour®r.r.r/ŕnon_max_suppressionfs|&&

 $(,&<"&
.
$"*":r=ķbest.ptc	Cs»tj|t†d°dć}|†d°r*|d|d<xdD]}d||<q0Wd|d<|d†°x|d†°D]
}d|_qbWt†||p||°tj	†
|pĆ|°d	}t†d
|õd|rįd|õdĚnd
õd|dõd̰dS)Nrn)ŕmap_locationŕemarh)ŕ	optimizerŕbest_fitnessr@ŕupdatesrŕepochFgÄĄ.AzOptimizer stripped from ķ,z
 saved as r&rŻz.1fŕMB)
rąŕloadrzrAŕhalfr‘ŕ
requires_gradŕsaver?ruŕgetsizerłrĻ)r§r-rgr©ŕpržr.r.r/ŕstrip_optimizer◊s


rMzevolve: cCsP|d}|d}t|Ét|†°É}tddĄ|DÉÉ}|t|†°É}t|É}	|ríd|õdĚ}
t|
É|†°rv|†°jndkrít†	dd	|
õ|õg°|†°rěd
nd|	|†
d°d
}t|dÉŹ&}|†|d|	|†
d°d
°WdQRXt|dÉŹ‚}t
j|ddć}
|
jddĄdć}
t†t|
jddÖddÖfɰ}t|
É}|†dd|õd
Ěd|dõd
Ědd†ddĄ|ddÖDɰd
dd†ddĄ|
j|ddÖfDɰd °tj|
j|ddÖ†°|d!d"ćWdQRXt†||õd#Ě|d†d$dĄ|Dɰd
|d†d%dĄ|Dɰd °|źrLt†	dd	|õ|õd|õĚg°dS)&Nz
evolve.csvzhyp_evolve.yamlcss|]}|†°VqdS)N)r)rDrgr.r.r/rFŽsz!print_mutation.<locals>.<genexpr>zgs://z/evolve.csvrŕgsutilŕcpr&z%20s,rEŕ
rkz%20.5g,rMT)ŕskipinitialspacecSs|†°S)N)r)rgr.r.r/rhżriz print_mutation.<locals>.<lambda>)ŕcolumnsr{z*# YOLOv5 Hyperparameter Evolution Results
z# Best generation: z# Last generation: rz# z, css|]}|†°dõVqdS)z>20sN)r)rDrgr.r.r/rFsrĮcss|]}|dõVqdS)z>20.5gNr.)rDrgr.r.r/rFsz

F)rvz' generations finished, current result:
css|]}|†°dõVqdS)z>20sN)r)rDrgr.r.r/rFscss|]}|dõVqdS)z20.5gNr.)rDrgr.r.r/rFs)r-rXŕvaluesr*rrGrŖrťr\r]ŕrstriprHŕwriteŕpdZread_csvŕrenamerŃŕargmaxrrĽrNrwŕlocŕto_dictrłrĻ)rXŕresultsŕhypŕsave_dirŕbucketrqŕ
evolve_csvŕevolve_yamlŕvalsrrr-r§r5rāZgenerationsr.r.r/ŕprint_mutationÁs2"* p,Hrbc
Csūt|tjÉr|gn|}źx“t|ÉDź]ń\}}|dk	r"t|Ér"|†°}t|ddÖddÖfÉ}|ddÖddÖf†d°d†d°|ddÖddÖf<|ddÖddÖfdd|ddÖddÖf<t	|Ɇ
°|ddÖddÖf<t|jddÖ|ddÖddÖf||jÉ|ddÖdf†
°}g}xö|D]í}	||t
|	dÉt
|	dÉÖt
|	dÉt
|	dÉÖf}
t†|
d	°}|ddÖddÖddd
Öf†ddd°}tj|tjdć}|d}|†|°źq"W|t†|°†|j°É†d°}||||k||<q"W|S)
Nr{rĒrrgÕŐŐŐŐŐŰ?ťrr$)ťŗrdr)ŕdtypeťˇ)rrŃŕndarrayrWr*rŲrýrŕŕ	unsqueezerķrrrňr[r%ŕresizeŕ	transposeŕascontiguousarrayŕfloat32rrąrär.rzrX)
rgrhŕimgZim0rār?rlZ	pred_cls1ŕimsrkZcutoutriZ	pred_cls2r.r.r/ŕapply_classifiers*4,,
8&rocCsĆt|É}|†°rv|sv|†°r,|†d°|jfn|df\}}x4tddÉD]&}|õ|õ|õ|õĚ}tj†|°sDPqDWt|É}|rą|jdddć|S)Nr&rĒi'T)rMrn)	rrGrŤrĶr.rÄr?rurr)rurnŕseprrr.rrLr.r.r/ŕincrement_path1s$	rqcCst†t†|tj°|°S)N)r%ZimdecoderŃŕfromfileŕuint8)ŕfilenameŕflagsr.r.r/ŕimreadOsrvcCs:y t†t|Éj|°d†|°dStk
r4dSXdS)NrTF)r%Zimencoderr.ŕtofiler<)rtrmr.r.r/ŕimwriteSs
rxcCst|†d°†°|ÉdS)Nŕunicode_escape)ŕimshow_r+r,)rurir.r.r/r&[sr&csąjddÖ}|ddÖdf|d}|ddÖdf|d}|ddÖdf|d}|ddÖdf|d}t†||d†°d|dd°Čt†||d†°d|dd°Čt†||d†°d|dd°Čt†||d†°d|dd°ČáááááfddĄt|jdÉDÉ}|S)	NrĒrr$rr{rc	sDg|]<}ąddÖddÖą|ą|dÖą|ą|dÖfĎqS)Nrr.)rDrā)ŕfeature_mapŕx_maxŕx_minŕy_maxŕy_minr.r/r¶ssz1get_object_level_feature_maps.<locals>.<listcomp>)rňrąŕclampr[rÄ)r{ŕtargetsŕfeature_map_shapeŕx_centerŕy_centerrr	ŕextracted_regionsr.)r{r|r}r~rr/ŕget_object_level_feature_mapscs""""$rÜcsąjddÖ}|ddÖdf|d}|ddÖdf|d}|ddÖdf|d}|ddÖdf|d}t†||d†°d|dd°Čt†||d†°d|dd°Čt†||d†°d|dd°Čt†||d†°d|dd°ČáááááfddĄt|jdÉDÉ}|S)NrĒrrr$r{c	sDg|]<}ąddÖddÖą|ą|dÖą|ą|dÖfĎqS)Nrr.)rDrā)r{r|r}r~rr.r/r¶ász2get_object_level_feature_maps2.<locals>.<listcomp>)rňrąrÄr[rÄ)r{rĀrārÉrĄrr	rÖr.)r{r|r}r~rr/ŕget_object_level_feature_maps2ws""""$rácCsŗg}x÷t|†d°ÉD]ń}||ddÖf}|\}}}}||†d°|†d°}	||†d°|†d°}
||†d°|†d°}||†d°|†d°}tt|	|
||gÉ\}	}
}}|ddÖddÖ|
|Ö|	|Öf}
|†|
°qW|S)a∆
    Extracts regions of interest (ROIs) from the concatenated_features based on resize_boxes.

    Args:
        concatenated_features (torch.Tensor): Feature map with shape [batch, channels, height, width].
        resize_boxes (torch.Tensor): Boxes with shape [num_boxes, 5], where each row is [batch, x1, y1, x2, y2].

    Returns:
        torch.Tensor: Tensor containing the ROI features with shape [num_boxes, channels, roi_height, roi_width].
    rrNr$rĒ)rÄŕsizeŕmapr[r)Zconcatenated_featuresZresize_boxesZroi_features_listZbox_idxZ
box_coordsZbox_x1Zbox_y1Zbox_x2Zbox_y2Zroi_x1Zroi_y1Zroi_x2Zroi_y2Zroi_featuresr.r.r/ŕextract_roi_featuresčs räc	Cs>tjdt|Édddć\}}xPt|ÉD]D\}}||j|d|f†°†°†°dddć||†d|õ̰q&W|d	j|d|d	f†°†°†°dddć|d	†d
°x^t	t|j
ÉÉD]L}	|†°†°†°\}
}}}
tj|
|f||
|
|dddd
ć}|d	†
|°qłW|†|°|źr2t†|°td|õĚÉnt†°dS)Nr)ťr{)ŕfigsizerZviridisŕauto)ZcmapZaspectzChannel rzBounding Boxesraŕnone)rZ	edgecolorZ	facecolorzImage saved at: )ŕpltŕsubplotsr*rWr&rnŕdetachŕnumpyŕ	set_titlerÄrňŕpatchesŕ	RectangleZ	add_patchZsuptitleZsavefigŕprintŕshow)r{r
ŕchannelsŕtitleZ	save_pathŕfigŕaxsrāZchannelr7ŕxminŕyminŕxmaxŕymaxŕrectr.r.r/ŕ)plot_multi_channel_feature_map_with_boxesĶs(,"

r°c	CsN|\}}}}||d}||d}||d}||d}t†||||g°S)NrĒ)rąr))	ZxywhrÉrĄrr	r}rr|r~r.r.r/ŕxywh_to_xyxyŌsrĘcCsx|†°\}}}}||kr |d7}||kr0|d7}||krN||†d°krN|d8}||krl||†d°krl|d8}||||fS)NrrĒ)r[rą)Znormalized_xyxyŕint_featr}rr|r~r.r.r/ŕget_fixed_xyxyōsr§)r&)r1)F)rjrk)NTF)rF)r.)r÷)rűrŲ)r÷)r)rrrFFF)rr)F)r+r,r&)r1)r&)T)rs)Nry)r÷TTFrr$)rĎrírď)rü)rŻrŻrr)rŻrŻFrĎ)rŻrŻrr)rŻrŻ)r)N)NF)r r!NFFr.r"r)r>r&)Fr&F)N)ļŕ__doc__r:rŔr≠r]Zlogging.configrčr?rprŅr3rĖr\r6rÄr8rųrrŕ	itertoolsrZmultiprocessing.poolrŕpathlibrrŕtarfilerŕtypingr	ŕzipfiler
rr%rírŃŕpandasrVŕ
pkg_resourcesrrąr+rNŕtorch.nnŕnnŕtorchvision.opsrrķŕhasattrrůŕImportErrorrqŕultralytics.utils.checksrr6rrŕutils.downloadsrrŕ
utils.metricsrrŕ__file__rěŕFILErMrīr[r\rrrŕŕ	cpu_countZNUM_THREADSrTrQr)r/ZAUTOINSTALLŕVERBOSEŕTQDM_BAR_FORMATZFONTŕset_printoptionsrTŕoptionsŕdisplayZmax_columnsZ
setNumThreadsr@r0r5r8r>rBr2rLrSZLOGGING_NAMErdŕ	getLoggerrłrĻrrfŕsetattrrärwrAŕContextDecoratorrxrćrúrßrVrĺr…rŌr’r‹r‚rÁrŪrŮrŰr	rrrńr#r*r0r3r2rBrbrrrUrxr[r|rKrrźrörļr©rpr≠rűrýrķrˇrrr
rrrrrrr=rMrbrorqr&rzZIMREAD_COLORrvrxŕstackrtŕas_posixrÜráräŕmatplotlib.pyplotŕpyplotrŹZmatplotlib.patchesrĒr°rĘr§r.r.r.r/ŕ<module>s8



 










	








B



.








	


h'#*%