
    9i                     0   S SK Jr  S SKJrJr  S SKrS SK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  S SKJrJr  S S	KJr  S S
KJrJr  S SKJrJr  S SKJ r   \ " 5       r!\RD                  " \RF                  \RF                  S9 " S S\5      5       r$g)    N)AnyDict)Image)
transforms)	Pipelines)resnet)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage
load_image)	ModelFileTasks)
get_logger)module_namec                      ^  \ rS rSrS\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$ )GeneralRecognitionPipeline   modeldevicec                 L  >^ [         TU ]  US9  SSKnS nS mU4S jnSnU R                  U l        UR
                  " [        R                  " U R                  [        R                  5      USS	9nU" S
S9U l        U" U R                  U5        [        R                  S5        g)zr
use `model` to create a general recognition pipeline for prediction
Args:
    model: model id on modelscope hub.
)r   r   Nc                  h    [         R                  " [         R                  / SQ4SSSSSSSSS.U D6nU$ )N)      r   r         @   TF)radixgroupsbottleneck_width	deep_stem
stem_widthavg_downavd	avd_first)r   ResNet
Bottleneck)kwargsr   s     t/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/general_recognition_pipeline.py
resnest1017GeneralRecognitionPipeline.__init__.<locals>.resnest101$   sI    MM!!=
!#
 
E L    c                 L   / nU R                  5        H  u  p4SUSS :X  a  USS  nS[        UR                  5       5      S   ;  a  UR                  SS5      nX1;   d  ML  X   R                  UR                  :X  d  Mj  X   R                  U5        UR                  U5        M     g )Nzmodule.r      z.module..)itemslistkeysreplaceshapecopy_append)
src_params	own_statecopied_keysnameparams        r*   filter_param9GeneralRecognitionPipeline.__init__.<locals>.filter_param2   s    K)//1Qq	)8DT)..*:%;A%>><<
C8D%IO,A,A/4{{-;O))%0&&t,  2r-   c                 n   > SU;   a  US   nU R                  5       nT" X5        U R                  U5        g )N
state_dict)r@   load_state_dict)r   r8   r9   r=   s      r*   load_pretrained<GeneralRecognitionPipeline.__init__.<locals>.load_pretrained>   s9    z)'5
((*I/!!),r-   cpuT)weights_onlyiL  )num_classeszload model done)super__init__torchr   
local_pathloadospjoinr   TORCH_MODEL_FILEloggerinfo)	selfr   r   rI   r+   rB   r8   r=   	__class__s	          @r*   rH   #GeneralRecognitionPipeline.__init__   s     	u%	
	-	- **ZZHHT__i&@&@A

  E2


J/%&r-   inputreturnc                 &   [         R                  " U5      n[        R                  " / SQ/ SQS9n[        R                  " [        R
                  " S5      [        R                  " S5      [        R                  " 5       U/5      nU" U5      nSU0nU$ )N)g
ףp=
?gv/?gCl?)gZd;O?gy&1?g?)meanstd      img)r   convert_to_imgr   	NormalizeComposeResize
CenterCropToTensor)rQ   rT   r[   	normalize	transformresults         r*   
preprocess%GeneralRecognitionPipeline.preprocessP   s    &&u-((&,AC	&&c"!!#&!9(
 	
 nr-   c                     S nSnU" U R                   U5        US   n[        R                  " US5      nU R                  U5      nSU0$ )Nc                 T    U(       a  U R                  5         g U R                  5         g )N)traineval)r   is_trains     r*   	set_phase5GeneralRecognitionPipeline.forward.<locals>.set_phase_   s    

r-   Fr[   r   outputs)r   rI   	unsqueeze)rQ   rT   rl   rk   r[   	input_imgrn   s          r*   forward"GeneralRecognitionPipeline.forward]   sN    	 $**h'ElOOC+	**Y'7##r-   inputsc                    [         R                  " U R                  S5      n[        USSS9 nUR	                  5       nS S S 5        [
        R                  " US   5      n[        R                  UR                  5       /[        R                  WUS   R                  5          R                  S5      S   /0nU$ ! , (       d  f       N= f)Nzmeta_info.txtrzutf-8)encodingrn   	r   )rL   rM   rJ   open	readlinesrI   maxr	   SCORESitemLABELSargmaxsplit)rQ   rs   label_mapping_pathflabel_mappingscores         r*   postprocess&GeneralRecognitionPipeline.postprocessl   s     XXdooG$cG<KKMM =		&+,

~6),3356<<TB1EF

  =<s   B99
C)rJ   r   )__name__
__module____qualname____firstlineno__strrH   r
   r   r   re   rq   r   __static_attributes____classcell__)rR   s   @r*   r   r      s}    3'c 3'3 3'j $sCx. $T#s(^ $S#X $
$sCx. 
T#s(^ 
 
r-   r   )%os.pathpathrL   typingr   r   cv2numpynprI   PILr   torchvisionr   modelscope.metainfor   'modelscope.models.cv.animal_recognitionr   modelscope.outputsr	   modelscope.pipelines.baser
   r   modelscope.pipelines.builderr   modelscope.preprocessorsr   r   modelscope.utils.constantr   r   modelscope.utils.loggerr   rO   register_modulegeneral_recognitionr    r-   r*   <module>r      su      
    " ) : ) 5 2 : 6 .	 	9+H+HJ] ]J]r-   