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

Download this file

269 lines (253 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.ķF/home/iml/Desktop/Talha/yolov5_P2_ROI_HCM_Micro_1000_Github/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)NŕPWDz/kaggle/workingŕKAGGLE_URL_BASEzhttps://www.kaggle.com)ŕosŕenvironŕgetr.r.r.r/ŕ	is_kagglelsrD)ŕreturnc	CsPtdɆ°rdSy&tdÉŹ}tddĄ|DÉÉSQRXWntk
rJdSXdS)z4Check if the process runs inside a docker container.z/.dockerenvTz/proc/self/cgroupcss|]}d|kVqdS)ŕdockerNr.)ŕ.0ŕliner.r.r/ķ	<genexpr>wszis_docker.<locals>.<genexpr>NF)rŕexistsŕopenŕanyŕOSError)ŕfiler.r.r/ŕ	is_dockerqs
rOFc	CsZ|st†|tj°St|Éd}y"t|dÉŹWdQRX|†°dStk
rTdSXdS)Nztmp.txtŕwTF)rAŕaccessŕW_OKrrKŕunlinkrM)ŕdirŕtestrNr.r.r/ŕis_writeable|s
rVŕyolov5cCsftt†dd°É}|r"|dkr"tjntj}tj†dd|ddii|d||d	úi|||gdd
úidú°dS)Nrr>rrrFŕformatz%(message)szlogging.StreamHandler)ŕclassr!ŕlevel)rZŕhandlersŕ	propagate)ŕversionŕdisable_existing_loggersŕ
formattersr[ŕloggers)ŕintrAŕgetenvŕloggingŕINFOŕERRORŕconfigŕ
dictConfig)ŕnameŕverboseŕrankrZr.r.r/ŕset_loggingćsrkŕWindowscCstt|ÉÉS)N)ŕfnr)ŕxr.r.r/ŕ<lambda>ßůroŕUltralyticsŕYOLOV5_CONFIG_DIRcCsdt†|°}|rt|É}n<ddddú}t†°|†t†°d°}t|ÉrH|ntdÉ|}|jddć|S)	NzAppData/Roamingz.configzLibrary/Application Support)rlŕLinuxŕDarwinr&z/tmpT)ŕexist_ok)	rArbrŕhomerCŕplatformŕsystemrVŕmkdir)rTŕenv_varŕenvŕpathŕcfgr.r.r/ŕuser_config_dir™s

r~c@s6eZdZdejdúddĄZddĄZdd	ĄZd
dĄZdS)
ŕProfileÁN)ŕdevicecCs2||_||_|r(t|ÉddÖdkr(dnd|_dS)NťŕcudaTF)ŕtrĀr)rÉ)ŕselfrĄrĀr.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ŕsynchronizerĀrá)rÖr.r.r/rá…szProfile.time)rÄN)	ŕ__name__ŕ
__module__ŕ__qualname__rŹrĀrÜrČrérár.r.r.r/rļsrc@s4eZdZdddúddĄZddĄZdd	ĄZd
dĄZdS)
ŕTimeoutr&T)ŕtimeout_msgŕsuppress_timeout_errorscCst|É|_||_t|É|_dS)N)raŕ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)Nrl)rwrxŕsignalŕSIGALRMrúŕalarmró)rÖr.r.r/rČŔszTimeout.__enter__cCs,t†°dkr(t†d°|jr(|tkr(dSdS)NrlrT)rwrxrĚrür;rô)rÖŕexc_typeŕexc_valŕexc_tbr.r.r/réřs
zTimeout.__exit__N)rĎrírďrÜrúrČrér.r.r.r/rĒŌsrĒc@s$eZdZddĄZddĄZddĄZdS)ŕWorkingDirectorycCs||_t†°†°|_dS)N)rTrŕcwdŕresolve)rÖŕnew_dirr.r.r/rÜÁszWorkingDirectory.__init__cCst†|j°dS)N)rAŕchdirrT)rÖr.r.r/rČŽszWorkingDirectory.__enter__cCst†|j°dS)N)rArßr§)rÖr†r°rĘr.r.r/réÓszWorkingDirectory.__exit__N)rĎrírďrÜrČrér.r.r.r/r£Śsr£csáfddĄtąÉDÉS)Ncs(g|] }ttą|ÉÉr|†d°s|ĎqS)ŕ__)ŕcallableŕgetattrŕ
startswith)rGŕf)ŕinstancer.r/ķ
<listcomp>Űszmethods.<locals>.<listcomp>)rT)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.)rGŕkŕv)rįr.r/ķ
<dictcomp>ższprint_args.<locals>.<dictcomp>r&z: z, css |]\}}|õd|õĚVqdS)ŕ=Nr.)rGrĪr≤r.r.r/rIszprint_args.<locals>.<genexpr>)ŕinspectŕcurrentframeŕf_backŕgetframeinfoŕgetargvaluesŕitemsrr•ŕrelative_toŕROOTŕwith_suffixŕ
ValueErrorŕstemŕLOGGERŕinfoŕcolorstrŕjoin)	rįŕ	show_fileŕ	show_funcrnrNŕ_ŕfuncŕfrmr-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:8ŕCUBLAS_WORKSPACE_CONFIGŕPYTHONHASHSEED)ŕrandomŕseedŕnprŹŕmanual_seedrÉŕmanual_seed_allŕ
check_versionr
ŕuse_deterministic_algorithmsŕbackendsŕcudnnŕ
deterministicrArBr))rÕr’r.r.r/ŕ
init_seedss




r÷r.csááfddĄ|†°DÉS)NcsDi|]<\Č}ąąkrtáfddĄąDÉÉr|jąąjkr|ąďqS)c3s|]}|ąkVqdS)Nr.)rGrn)rĪr.r/rIsz-intersect_dicts.<locals>.<dictcomp>.<genexpr>)ŕallŕshape)rGr≤)ŕ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)rGrĪ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ŕmaxrAr|ŕgetctime)ŕ
search_dirŕ	last_listr.r.r/ŕget_latest_run srŽcCs"t†°t†t|Ɇ°j°}|jS)N)rŕnowŕ
fromtimestamprŕstatŕst_mtimeŕdays)r|rär.r.r/ŕfile_age&srŮcCs.t†t|Ɇ°j°}|jõd|jõd|jõĚS)Nŕ-)rrŪrrÓrÔŕyearŕmonthŕday)r|rĄr.r.r/ŕ	file_date,srŲcCsNd}t|É}|†°r"|†°j|S|†°rFtddĄ|†d°DÉÉ|SdSdS)Nicss |]}|†°r|†°jVqdS)N)ŕis_filerÓŕst_size)rGr¨r.r.r/rI9szfile_size.<locals>.<genexpr>z**/*g)rrųrÓrÝŕis_dirŕsumrś)r|ŕmbr.r.r/ŕ	file_size2srŁcs ddlČáfddĄ}|Ép|ÉS)Nrcs*yą†dd°dStk
r$dSXdS)N)z1.1.1.1iĽrTF)ŕcreate_connectionrMr.)ŕsocketr.r/ŕrun_onceBs
zcheck_online.<locals>.run_once)rĢ)rˇr.)rĢr/ŕcheck_online>srcCsNy4t|Éd†°stātd|õdĚdd憰ddÖStk
rHdSXdS)Nz.gitzgit -C z  describe --tags --long --alwaysT)ŕshellrr&)rrýŕAssertionErrorrr,r<)r|r.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.)rGr-)ŕ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¬rrJrrr3ŕsplitrr,rLŕindexŕstriprarņrŃ)rŕbranchŕurlŕmsgr-ŕsplitsŕmatchesŕremoteŕlocal_branchŕnŕpullr.)rr/ŕcheck_git_statusVs&

$
,rcCsétdÉddl}yX|†|°}|jjj†dd°}|jjj	}y|j
j}Wntk
r\d}YnX|||dúS|j
jk
rąddddúSXdS)Nŕ	gitpythonrz.gitr&)rrŕcommit)rŕgitŕRepoŕremotesr
rŕreplaceŕheadrŕhexshaŕ
active_branchrhŕ	TypeErrorŕexcŕInvalidGitRepositoryError)r|rrrrrr.r.r/ŕcheck_git_infors


r'ķ3.8.0cCstt†°|dddćdS)NzPython T)rhŕhard)r—rwŕ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)ŕpkgŕ
parse_version)rGrnr.r.r/rIčsz check_version.<locals>.<genexpr>uWARNING ‚ö†ÔłŹ z is required by YOLOv5, but z is currently installed)rrrņŕwarning)ŕcurrentr+rhŕpinnedr)riŕ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_divisiblera)rGrn)ŕfloorr-r.r/rģõsz"check_img_size.<locals>.<listcomp>uWARNING ‚ö†ÔłŹ --img-size z  must be multiple of max stride z, updating to )ŕ
isinstancerarÁr6ŕlistrņr1)ŕimgszr-r7ŕnew_sizer.)r7r-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)NrU)rrťrTuMWARNING ‚ö†ÔłŹ Environment does not support cv2.imshow() or PIL Image.show()
F)r>rrOŕcv2ŕimshowrőŕzerosŕwaitKeyŕdestroyAllWindowsr<rņr1)ŕwarnŕer.r.r/ŕcheck_imshow°s



rEķ
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 )	r8r)r9ŕtuplerŕsuffixŕlowerr*r)rNrIrr¨r-r.r.r/ŕcheck_suffixĪs
rK©z.yamlz.ymlcCs
t||ÉS)N)ŕ
check_file)rNrIr.r.r/ŕ
check_yamlľsrNcCsft||É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://ŕclearmlz[ClearML is not installed, so cannot use ClearML dataset. Try running 'pip install clearml'.)ŕdataŕmodelsŕutilsz**T)ršzFile not found: rzMultiple files match 'z', specify exact path: )rKr)rAr|ŕisfileręrŕurllibŕparseŕunquoterrhrņrŃrŹŕhubŕdownload_url_to_filerJrÓrÝrr6r7ŕextendrśrľr*)rNrIrŕfilesŕdr.r.r/rMŃs,

,

("rMcCs`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_DIRrhrJrņrŃrŹrXrYr))ŕfontr]rNrr.r.r/ŕ
check_font›s
r`c
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)rTŕunzipŕdeleteŕcurlŕthreadsz*.yaml)ŕtrainŕvalŕnameszdata.yaml 'u:' field missing ‚ĚĆrgcss|]}t|tÉVqdS)N)r8ra)rGrĪr.r.r/rIķsz check_dataset.<locals>.<genexpr>z2data.yaml names keys must be integers, i.e. 2: carŕncr|)rerfrUz../r=csg|]}tą|†°ÉĎqSr.)r)r•)rGrn)r|r.r/rģ
sz!check_dataset.<locals>.<listcomp>c3s|]}ą†|°VqdS)N)rC)rGrn)rQr.r/rI
s)rerfrUŕdownloadcSsg|]}t|Ɇ°ĎqSr.)rr•)rGrnr.r.r/rģscss|]}|†°VqdS)N)rJ)rGrnr.r.r/rIsu+
Dataset not found ‚ö†ÔłŹ, missing paths %scSsg|]}|†°st|ÉĎqSr.)rJr))rGrnr.r.r/rģsuDataset not found ‚ĚĆŕhttpz.zipzDownloading z to z...)ŕparentsru)r|zbash zRunning z ...)rŕyamlķ(zs))rNusuccess ‚úÖ z, saved to ŕboldzfailure u ‚ĚĆzDataset download z	Arial.ttfzArial.Unicode.ttf)r]).r8r)rrrriŕDATASETS_DIRrŅŕnextŕrglobŕparentŕ	yaml_loadrrr9rHŕdictŕ	enumerater◊ŕkeysr*rCŕis_absoluterľr•rJręrņrŃr<ráŕendswithrhrŹrXrYryŕ
unzip_filerSŕ
subprocessŕrunŕexecŕroundr¬r`r0)
rQŕautodownloadŕextract_dirrĪrnrerfrUr-rĄr¨ŕrrär.)rQr|r/ŕ
check_datasetÁsd$
 "

  
,rĀcsō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)rirTgöôôôôôĻ?)ŕatol)ŕxywhnŕamprōrŹŕallclose)ŕmodelŕimŕmŕaŕb)rār.r/ŕamp_allclose-s
zcheck_amp.<locals>.amp_allclosezAMP: )ŕcpuŕmpsFrQŕimageszbus.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 )ŕ
models.commonrārÉr¬rprŠrĀrčrľrJrrőŕonesrrrņrŃr<r1)rąrÉrćŕprefixrĀr¨rČŕhelp_urlr.)rār/ŕ	check_amp)s 
 "rēķ	data.yamlc	Cs"t|ddćŹ}t†|°SQRXdS)Nr()ŕerrors)rKrlŕ	safe_load)rNr¨r.r.r/rsEsrsc	Cs8t|dÉŹ$}tjddĄ|†°DÉ|ddćWdQRXdS)NrPcSs(i|] \}}t|tÉrt|Én||ďqSr.)r8rr))rGrĪr≤r.r.r/r≥Nszyaml_save.<locals>.<dictcomp>F)ŕ	sort_keys)rKrlŕ	safe_dumprļ)rNrQr¨r.r.r/ŕ	yaml_saveKsrõ©z	.DS_Storeŕ__MACOSXc	s`|dkrt|Éj}t|ÉŹ<}x4|†°D](ČtáfddĄ|DÉÉr&|ją|dćq&WWdQRXdS)Nc3s|]}|ąkVqdS)Nr.)rGrn)r¨r.r/rIWszunzip_file.<locals>.<genexpr>)r|)rrrr
ŕnamelistr◊ŕextract)rNr|rŕŕzipObjr.)r¨r/ryQs

rycCs0tt|ÉɆdd°}ttj†|°Éj†d°dS)Nz:/z://rOr)r)rr rUrVrWrhr)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)ŕsilent)r]u"‚ö†ÔłŹ Download failure, retrying rr
u‚ĚĆ Failed to download z.gzz
Unzipping ŕtarŕxfz--directory)ŕcheckŕxfz)rAr|rTrrhrņrŃŕrangerrŹrXrYrųr1rIrrryrzr{rrrS)rrTŕsuccessr¨ŕi)rcrbŕretryrdrar.r/ŕdownload_onecs2
$(

zdownload.<locals>.download_oneT)rkrurcsą|éS)Nr.)rn)ręr.r/roárpzdownload.<locals>.<lambda>)
rryrŕimapŕziprŕcloser√r8r))	rrTrarbrcrdr™ŕpoolŕur.)rcrbręr™rdrar/rias 
ricCs*t|tjÉrt|†°É}t†||°|S)N)r8rŹŕTensorrarÁŕmathŕceil)rnŕdivisorr.r.r/r6Źsr6cCstjdd|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)rn)ŕstepsŕy1ŕy2r.r/roĚrpzone_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ŕbluernrzzzzzzzzzzzzzzzzzzz)ŕblackŕredŕgreenŕyellowr¬ŕmagentaŕcyanŕwhiteŕbright_blackŕ
bright_redŕbright_greenŕ
bright_yellowŕbright_blueŕbright_magentaŕbright_cyanŕbright_whiteŕendrnŕ	underliner&c3s|]}ą|VqdS)Nr.)rGrn)ŕcolorsr.r/rI∑szcolorstr.<locals>.<genexpr>r“)r*r√)ŕinputrįrr.)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ŕastyperaŕbincountrķŕ
from_numpyŕfloat)ŕlabelsrhŕ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Ŕra)rGrn)rhr.r/rģ–sz+labels_to_image_weights.<locals>.<listcomp>r)rőŕarrayŕreshaperķ)r›rhŕ
class_weightsŕclass_countsr.)rhr/ŕ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"ťť
ťťťťťťťťťťťťťťťr5ť!ť"ť#ť$ť%ť&ť'ť(ť)ť*ť+ť,ť.ť/ť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=)r8rŹrĪŕclonerőŕcopy)rnŕyr.r.r/ŕ	xyxy2xywhŗsr1cCsāt|tjÉr|†°nt†|°}|d|dd|d<|d|dd|d<|d|dd|d<|d|dd|d<|S)N).r).rĽrĽ).r).r=)r8rŹrĪr.rőr/)rnr0r.r.r/ŕ	xywh2xyxyÍsr2ťÄcCsĘt|tjÉr|†°nt†|°}||d|dd||d<||d|dd||d<||d|dd||d<||d|dd||d<|S)N).r).rĽrĽ).r).r=)r8rŹrĪr.rőr/)rnrPŕhŕpadwŕpadhr0r.r.r/ŕ
xywhn2xyxyŰs    r7cCs§|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_boxesr8rŹrĪr.rőr/)rnrPr4ŕclipŕepsr0r.r.r/ŕ
xyxy2xywhnĢsr;cCsJt|tjÉr|†°nt†|°}||d||d<||d||d<|S)N).r).r)r8rŹrĪr.rőr/)rnrPr4r5r6r0r.r.r/ŕxyn2xy
sr<cCsp|j\}}|dk|dk@||k@||k@}||||}}t|Érft†|†°|†°|†°|†°g°St†d°S)Nr)rrā)ŕTrLrőrŠŕminrÁr@)ŕsegmentŕwidthŕheightrnr0ŕinsider.r.r/ŕsegment2boxs
 rCcCsLg}x8|D]0}|j\}}|†|†°|†°|†°|†°g°q
Wtt†|°ÉS)N)r=ŕappendr>rÁr1rőrŠ)ŕsegmentsŕboxesr-rnr0r.r.r/ŕsegments2boxess


&rGťŤ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)rGr©)r-rnŕxpr.r/rģ)sz%resample_segments.<locals>.<listcomp>rĽr)	rurőrōŕlinspacer*ŕarangerßr‚r=)rErr©r.)r-rnrKr/ŕresample_segments#s"2rNcCső|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ā)r>r8)ŕ
img1_shaperFŕ
img0_shapeŕ	ratio_padŕgainŕpadr.r.r/ŕscale_boxes-s"2
rTcCsķ|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)rOrErPrQŕ	normalizerRrSr.r.r/ŕscale_segments=s"2
rWcCs≤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=)r8rŹrĪŕclamp_r9)rFrōr.r.r/r8Ps(r8cCsö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)r8rŹrĪrXr9)rErōr.r.r/rU\s
(rUÁ–?ÁÕŐŐŐŐŐ‹?ť,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 rŹrĽr).rāii0ugŗ?göôôôôô©?TFrś)rĀNrāgū?)ŕas_tuple)ŕkeepdimr)ŕ
descendinggpß@uWARNING ‚ö†ÔłŹ NMS time limit z.3fz
s exceeded)"rr8r9rHrĀrčrérōrárŹr@rur*rßrŕcatr2ŕnonzeror=r‹rÁŕviewŕtensorrLŕargsortŕtorchvisionŕopsŕnmsrŕmmrķŕtorņr1)%ŕ
predictionŕ
conf_thresŕ	iou_thresrřŕagnosticŕmulti_labelr›ŕmax_detŕnmrĀrŹŕbsrhŕxcŕmax_whŕmax_nmsŕ
time_limitŕ	redundantŕmergerĄŕmiŕoutputŕxirnŕlbr≤ŕboxŕmaskr©ŕjŕconfrŕcrFŕscoresŕiourŖ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)Nré)ŕmap_locationŕemarą)ŕ	optimizerŕbest_fitnessrÖŕupdatesrŕepochFgÄĄ.AzOptimizer stripped from ķ,z
 saved as r&r
z.1fŕMB)
rŹŕloadrĀrCŕhalfrŠŕ
requires_gradŕsaverAr|ŕgetsizerņrŃ)r¨r-rnrĪŕprŻr.r.r/ŕstrip_optimizer◊s


rízevolve: 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)rGrnr.r.r/rIŽsz!print_mutation.<locals>.<genexpr>zgs://z/evolve.csvrŕgsutilŕcpr&z%20s,räŕ
rčz%20.5g,rPT)ŕskipinitialspacecSs|†°S)N)r)rnr.r.r/rożrpz print_mutation.<locals>.<lambda>)ŕcolumnsrāz*# YOLOv5 Hyperparameter Evolution Results
z# Best generation: z# Last generation: rz# z, css|]}|†°dõVqdS)z>20sN)r)rGrnr.r.r/rIsrÁcss|]}|dõVqdS)z>20.5gNr.)rGrnr.r.r/rIsz

F)rôz' generations finished, current result:
css|]}|†°dõVqdS)z>20sN)r)rGrnr.r.r/rIscss|]}|dõVqdS)z20.5gNr.)rGrnr.r.r/rIs)rHrvŕvaluesr*rrJrÓrÝrzr{ŕrstriprKŕwriteŕpdŕread_csvŕrenamerőŕargmaxrr√rlröŕlocŕto_dictrņrŃ)rvŕresultsŕhypŕsave_dirŕbucketrďŕ
evolve_csvŕevolve_yamlŕvalsrrr-r¨rQr©ŕgenerationsr.r.r/ŕprint_mutationÁs2"* p,Hr©c
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=)ťŗręr)ŕdtypeťˇ)r8rőŕndarrayrur*r.r1rÁŕ	unsqueezer2rrTrōrar>ŕresizeŕ	transposeŕascontiguousarrayŕfloat32rDrŹrĪrhrĀrě)
rnrąŕimgŕim0r©r\rĆŕ	pred_cls1ŕimsrčŕcutoutrČŕ	pred_cls2r.r.r/ŕapply_classifiers*4,,
8&rļcCsĆt|É}|†°rv|sv|†°r,|†d°|jfn|df\}}x4tddÉD]&}|õ|õ|õ|õĚ}tj†|°sDPqDWt|É}|rą|jdddć|S)Nr&rĽi'T)rkru)	rrJrųrĹrIrßrAr|ry)r|ruŕsepryrIrrĎr.r.r/ŕincrement_path1s$	rľcCst†t†|tj°|°S)N)r>ŕimdecoderőŕfromfileŕuint8)ŕfilenameŕflagsr.r.r/ŕimreadOsr¬cCs:y t†t|Éj|°d†|°dStk
r4dSXdS)NrTF)r>ŕimencoderrIŕtofiler<)rņrīr.r.r/ŕimwriteSs
rŇcCst|†d°†°|ÉdS)Nŕunicode_escape)ŕimshow_r+r,)r|rČr.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.)rGr©)ŕfeature_mapŕx_maxŕx_minŕy_maxŕy_minr.r/rģssz1get_object_level_feature_maps.<locals>.<listcomp>)rōrŹŕclamprarß)r»ŕtargetsŕfeature_map_shapeŕx_centerŕy_centerr@rAŕextracted_regionsr.)r»r…r rňrŐr/ŕ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.)rGr©)r»r…r rňrŐr.r/rģász2get_object_level_feature_maps2.<locals>.<listcomp>)rōrŹrÕrarß)r»rőrŌr–r—r@rAr“r.)r»r…r rňrŐr/ŕ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ŕmaprarD)ŕconcatenated_featuresŕresize_boxesŕroi_features_listŕbox_idxŕ
box_coordsŕbox_x1ŕbox_y1ŕbox_x2ŕbox_y2ŕroi_x1ŕroi_y1ŕroi_x2ŕroi_y2ŕ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ā)ŕfigsizerŕviridisŕauto)ŕcmapŕaspectzChannel rzBounding BoxesrÄŕnone)rŕ	edgecolorŕ	facecolorzImage saved at: )ŕpltŕsubplotsr*rur?réŕdetachŕnumpyŕ	set_titlerßrōŕpatchesŕ	Rectangleŕ	add_patchŕsuptitleŕsavefigŕprintŕshow)r»rFŕchannelsŕtitleŕ	save_pathŕfigŕaxsr©ŕchannelr{ŕxminŕyminŕxmaxŕymaxŕrectr.r.r/ŕ)plot_multi_channel_feature_map_with_boxesĶs(,"

rc	CsN|\}}}}||d}||d}||d}||d}t†||||g°S)NrĽ)rŹrb)	ŕxywhr–r—r@rAr rŐr…rňr.r.r/ŕxywh_to_xyxyŌsrcCsx|†°\}}}}||kr |d7}||kr0|d7}||krN||†d°krN|d8}||krl||†d°krl|d8}||||fS)NrrĽ)rar’)ŕnormalized_xyxyŕint_featr rŐr…rňr.r.r/ŕget_fixed_xyxyōsr)r&)r1)F)rqrr)NTF)rF)r.)r„)rr)r„)r()r-r-r.FFF)r5r)F)rFrGr&)rL)r&)T)rĖ)Nrú)r„TTFrr=)rłrĻrļ)r÷)r3r3rr)r3r3Frł)r3r3rr)r3r3)rH)N)NF)rYrZNFFr.r[r)rÉr&)Fr&F)N)ļŕ__doc__r:rśrĶrcŕlogging.configr≤rArwrŐr3rĚrzr6rárUr/rrŕ	itertoolsrŕmultiprocessing.poolrŕpathlibrrŕtarfilerŕtypingr	ŕzipfiler
rr>rÚrőŕpandasrõŕ
pkg_resourcesr/rŹrdrlŕtorch.nnŕnnZtorchvision.opsrr	ŕhasattrrŕImportErrorrxŕultralytics.utils.checksrrSrrŕutils.downloadsrrŕ
utils.metricsrrŕ__file__r•ŕFILErkrľrarbrr>rÁŕ	cpu_countŕNUM_THREADSrrror)rJŕAUTOINSTALLŕVERBOSEŕTQDM_BAR_FORMATŕFONTŕset_printoptionsrXŕoptionsŕdisplayŕmax_columnsŕ
setNumThreadsrBr0r5r8r>rDr2rOrVŕLOGGING_NAMErkŕ	getLoggerrņrŃr1rmŕsetattrrĎr~r^ŕContextDecoratorrrĒr£rĮrtr…r÷r‹r‚rŽrŮrŲrŁrrrr'r,r—r<rErKrNrMr`rĀrērsrõryr°rir6r∑rŃr¬rŗrírŚr-r1r2r7r;r<rCrGrNrTrWr8rUrārír©rļrľr?r«ŕIMREAD_COLORr¬rŇŕstackrņŕas_posixr”r‘rŚŕmatplotlib.pyplotŕpyplotrÔŕmatplotlib.patchesrŰrrrr.r.r.r/ŕ<module>s8



 










	








B



.








	


h'#*%