
    9i                        S SK r S SKJr  S SKJrJr  S SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJrJr  S SKJr  \" 5       r\R:                  " \R<                  \R>                  S9 " S S\5      5       r g)    N)AnyDict)
transforms)	Pipelines)
get_zennet)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)	ModelFileTasks)
get_logger)module_namec                      ^  \ rS rSrS\4U 4S jjrS\S\\\4   4S jr	S\\\4   S\\\4   4S jr
S\\\4   S\\\4   4S	 jrS
rU =r$ )TinynasClassificationPipeline   modelc                 X  > [         TU ]  " S	SU0UD6  Xl        [        5       U l        [
        R                  " U R                  [        R                  5      n[        R                  " USSS9nSU;   a  US   nOUnU R                  R                  USS9  [        R                  S5        g)
zu
use `model` to create a tinynas classification pipeline for prediction
Args:
    model: model id on modelscope hub.
r   cpuT)map_locationweights_only
state_dict)strictzload model doneN )super__init__pathr   r   ospjoinr   TORCH_MODEL_FILEtorchloadload_state_dictloggerinfo)selfr   kwargsmodel_pth_path
checkpointr   	__class__s         w/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/tinynas_classification_pipeline.pyr   &TinynasClassificationPipeline.__init__   s     	/u//	\
$))Y-G-GHZZTC
:%#L1J#J

"":d";%&    inputreturnc                 $   [         R                  " U5      nSnSnSn[        [        R                  " XE-  5      5      n[
        R                  " / SQ/ SQS9n[
        R                  " U[
        R                  R                  S9[
        R                  " U5      [
        R                  " 5       U/n[
        R                  " U5      n	U	" U5      n[        R                  " US5      n[        R                  R                   R#                  X#S	S
9nSU0n
U
$ )N   i|  g      ?)g
ףp=
?gv/?gCl?)gZd;O?gy&1?g?)meanstd)interpolationr   bilinear)modeimg)r   convert_to_imgintmathceilr   	NormalizeResizeInterpolationModeBICUBIC
CenterCropToTensorComposer"   	unsqueezenn
functionalinterpolate)r'   r/   r8   input_image_sizecrop_image_sizeinput_image_cropresize_image_sizetransforms_normalizetransform_listtransformerresults              r,   
preprocess(TinynasClassificationPipeline.preprocess0   s    &&u- 		/*L MN)33&,A C !(::BBD !!/2!#7
 !((8#ooc1%hh!!--
 . 4r.   c                     SnU(       a  U R                   R                  5         OU R                   R                  5         U R                  US   5      nSU0$ )NFr8   outputs)r   traineval)r'   r/   is_trainrS   s       r,   forward%TinynasClassificationPipeline.forwardJ   sE    JJJJOO**U5\*7##r.   inputsc                    [         R                  " U R                  S5      n[        USS9nUR	                  5       nUR                  5         [        U5      n[        R                  R                  R                  US   SS9n[        R                  " U5      n[        R                  UR                  5       /[        R                  XQS   R!                  5       R                  5          /0nU$ )Nzlabel_map.txtzutf-8)encodingrS   )dim)r   r    r   openreadcloserU   r"   rE   rF   softmaxmaxr   SCORESitemLABELSargmax)	r'   rY   label_mapping_pathfcontent
label_dictoutput_probscoreoutput_dicts	            r,   postprocess)TinynasClassificationPipeline.postprocessT   s     XXdiiA#g6&&(		']
hh))11&2C1L		+&

~
)+<+C+C+E+J+J+L MN
 r.   )r   r   )__name__
__module____qualname____firstlineno__strr   r	   r   r   rP   rW   rn   __static_attributes____classcell__)r+   s   @r,   r   r      su    'c ', $sCx. 4$T#s(^ $S#X $$sCx. T#s(^  r.   r   )!r;   os.pathr   r   typingr   r   r"   torchvisionr   modelscope.metainfor   *modelscope.models.cv.tinynas_classficationr   modelscope.outputsr   modelscope.pipelines.baser	   r
   modelscope.pipelines.builderr   modelscope.preprocessorsr   modelscope.utils.constantr   r   modelscope.utils.loggerr   r%   register_moduleimage_classificationtinynas_classificationr   r   r.   r,   <module>r      sq        " ) A ) 5 2 . 6 .	 	I,L,LNIH INIr.   