[dff9e0]: / __pycache__ / predict_funs.cpython-310.pyc

Download this file

65 lines (63 with data), 7.1 kB

o

€·°eLã@sêddlZej d¡ddlmZmZddlmZddlm	Z	ddl
Zddlm
Z
ddlZddlZddlZddlmZddlmZddlZddlmZddlmZdd	lmZdd
lmZddlmZmZddl m!Z!ddlmZddl"Z"dd
l#m$Z$ddl%mm&Z'ddl%m(Z(ddl)m*Z*ddl+m+Z+ddl,m-Z-ddl.m/Z/ddl0Z0ddl1Z2ddl3Z3ddl4Z4ddl5Z5ddlZddl6Z6ddl7Z7ddl8Te7 9¡Z:ddl;m<Z<d)dd„Z=dd„Z>d*dd„Z?d+dd „Z@d!d"„ZAd#d$„ZBd%d&„ZCd,d'd(„ZDdS)-éNz../)ÚSamPredictorÚsam_model_registry)ÚResizeLongestSide)Úattention_fusion)Úlabel)Únn)Údatasets)Ú
transforms)ÚImage)Ú
DataLoaderÚSubset)ÚVariable)ÚMRI_dataset)Úone_hot)ÚPath)Útqdm)ÚDiceLoss)Ú
dice_coeff)Ú*)ÚVNet皙™™™™é?cCs\t t |¡tjtj¡\}}| ¡}t ||d||¡t t |¡|t |¡d|d¡}|S)zKDraw edges of contour 'c' from segmented image 's' onto 'm' in colour 'RGB'éÿÿÿÿér)	Úcv2ÚfindContoursÚnpÚuint8Ú	RETR_LISTÚCHAIN_APPROX_SIMPLEÚcopyÚdrawContoursÚaddWeighted)ÚmÚsÚRGBÚsizeÚaÚcontoursÚ_Zm_old©r)úJc:\Users\zafry\Downloads\bone_paper_codes\bone_paper_codes\predict_funs.pyÚdrawContour/s
"r+cCs6t t ||¡¡}t |¡t |¡|d}||S)Nç:Œ0âŽyE>)rÚsumÚbitwise_and)ÚpmÚgtr&Úbr)r)r*ÚIOU>sr2©g
×£p=
ß?gÉv¾Ÿ/Ý?g–C‹lçûÙ?©gZd;ßOÍ?gyé&1¬Ì?gÍÌÌÌÌÌÌ?cCsltj||j|jd}tj||j|jd}|jdkr | ddd¡}|jdkr,| ddd¡}| |¡ |¡|S)N)ÚdtypeÚdevicerr)ÚtorchÚ	as_tensorr5r6ÚndimÚviewÚmul_Úadd_)ÚtensorÚmeanÚstdr)r)r*Úinverse_normalizeDs

r@écCsZtjdtd}t||ƒ\}}td|dƒD]}t ||k¡}t|dƒ|kr*d||<q|S)zÏ
    Removes small objects from a 2D array using only NumPy.

    :param array_2d: Input 2D array.
    :param min_size: Minimum size of objects to keep.
    :return: 2D array with small objects removed.
    )érB©r5rr)rÚonesÚintrÚrangeÚwhereÚlen)Zarray_2dÚmin_sizeÚ	structureZlabeledÚncomponentsÚiÚ	locationsr)r)r*Úremove_small_objectsPs	€rNcCsŒ|j\}}}}t |||f¡}t|ƒD]0}||}|D]'}	t|	dƒt|	dƒt|	dƒt|	dƒf\}
}}}
d||||
…|
|…f<qq|S)NrrérB)Úshaper7ÚzerosrFrE)ÚboxesÚimgsr1r(ÚwÚhZbox_maskÚkZk_boxÚboxÚx1Úy1Úx2Úy2r)r)r*Úcreate_box_maskds4þr\cCs6dtdt|ƒ| ¡dƒ}| d¡ |¡j ¡S)Nrg{®Gáz„?r)ÚroundÚfloatÚnumelÚreshapeÚkthvalueÚvaluesÚitem)r=Ú
percentilerVr)r)r*Útorch_percentileqs recCsGdd„dƒ}ddd„}dd
d„}t |ddƒg¡}|jd
}t d¡}||ƒ}|j}	t |	d¡}	||	ƒ ¡}	t 	d¡||	ƒ}
Wdƒn1sKwYt 
|
¡}
|
 ¡ ¡ 
¡}
t|d|ƒ}t|ddƒ}t|ddƒ}
||t |
dd…dd…dd…dd…||
…f¡ƒƒS)Nc@s eZdZdZdd„Zdd„ZdS)z#pred_attention.<locals>.Normalize3Dz>Normalize a tensor to a specified mean and standard deviation.cSs||_||_dS©N©r>r?)Úselfr>r?r)r)r*Ú__init__xs
z,pred_attention.<locals>.Normalize3D.__init__cSs||j|jSrfrg)rhÚxr)r)r*Ú__call__|sz,pred_attention.<locals>.Normalize3D.__call__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rirkr)r)r)r*ÚNormalize3Dvsrp皙™™™™©?rçü©ñÒMbP?c	Ssl||}d|d|}||k}||k||k@}||k}|||||<|||||||<d||<|S)Nrrr))	ÚprobZx_thresZy_thresÚepsZgrad_1Zgrad_2Úmask_epsZmask_1Zmask_2r)r)r*Úprob_rescalesz$pred_attention.<locals>.prob_rescalerO皙™™™™¹?cSs0||k}d||<tj||d}|t |¡dS)Nr)Úaxisr,)rr-Úmax)Úmask_volumerxrtruÚ	attentionr)r)r*Úview_attention_2d‹sz)pred_attention.<locals>.view_attention_2dgà?rB)é@r}r}rFr}é)rqrrr)rOrw)r	ÚComposerPÚtioÚResizeÚdatar7Ú	unsqueezer^Úset_grad_enabledÚsigmoidÚdetachÚcpuÚnumpyrEryÚminrÚsqueeze)ÚimageZvnetÚslice_idrprvr|Znorm_transformZdepth_imageÚresizeÚimage_tensorZ	pred_maskZslice_id_reshapeÚ	slice_minÚ	slice_maxr)r)r*Úpred_attentionus*
	
ÿ


ÿ
4r‘cCs|j|j ¡d|_|j}|r||krtj|dd}||ƒ}|jd}|jd}|dur4||kr3d}n|d}|dd…dd…|f}tj|| ¡| ¡| ¡ddtj	d	}t 
|dd…dd…dfgd
¢¡}	t |	d¡}
|
 
¡}t d¡|
ƒ}
t t ¡g¡}||
ƒ}
t|
ƒ}
|
 ¡d
krœtjjdd|
ƒ}
t tjgd¢gd¢d|
ƒd¡}
t ¡>| |
¡}|jdddd\}}|durË| ||¡}|j||j ¡||dd\}}|dd…ddd…dd…f}Wdƒn1sòwYt|
  ¡dƒ}|||||fS)Ngð?Únearest)Úimage_interpolationrrOrgñh㈵øä>éÿrC)rrrBr$)ér•rwr)Úgammar3r4rg)ÚpointsrRÚmasksT)Úimage_embeddingsÚimage_peÚsparse_prompt_embeddingsÚdense_prompt_embeddingsÚmultimask_outputr)!r‚ryÚspacingr€ÚResamplerPrÚarrayr‰rÚtiler
Ú	fromarrayrr	rrÚToTensorÚmin_max_normalizer>ÚmonaiZAdjustContrastr7rƒÚ	NormalizeÚno_gradÚ
image_encoderÚprompt_encoderrÚmask_decoderÚget_dense_per@r‡)Z	image_volÚmodelrŒÚtarget_spacingZ	atten_mapZ
voxel_spacingÚresampleÚ	slice_numZimg_arrZimg_3cÚimgZPil_imgZ
transform_imgrSÚimg_embÚ
sparse_embÚ	dense_embÚpredr(Zori_imgr)r)r*Úevaluate_1_volume_withattention¦sT

€0"ÿ"


ûórµ)r)r3r4)rA)NNN)EÚsysÚpathÚappendÚ
models.samrrZmodels.sam.utils.transformsrÚ"models.sam.modeling.prompt_encoderrÚpandasÚpdÚskimage.measurerrˆrÚosr7rZtorch.optimÚoptimÚtorchvisionrÚmatplotlib.pyplotÚpyplotÚpltr	ÚPILr
Útorch.utils.datarrZtorch.autogradr
rZdataset_bonerZtorch.nn.functionalÚ
functionalÚFrÚpathlibrrÚlossesrÚdscrrÚtorchior€ZslicerioÚpickleÚnrrdr¥ÚcfgÚfuncsÚ
parse_argsÚargsÚmonai.networks.netsrr+r2r@rNr\rer‘rµr)r)r)r*Ú<module>s^



1