
    9i                     4   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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Jr  S SK J!r!  \!" 5       r"\RF                  " \RH                  \RH                  S9 " S S\5      5       r%g)    N)AnyDict)Image)
transforms)	Pipelines)
BottleneckResNet)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)Devices	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$ )AnimalRecognitionPipeline   modelc                 n  >^ [         TU ]  " SSU0UD6  SSKnS nS mU4S jnU R                  U l        UR
                  " [        R                  " U R                  [        R                  5      [        R                  SS9nU" S	S
9U l        U" U R                  U5        [        R                  S5        g)zq
use `model` to create a animal recognition pipeline for prediction
Args:
    model: model id on modelscope hub.
r   r   Nc                  >    [        [        / 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	   r   )kwargsr   s     s/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/animal_recognition_pipeline.py
resnest1016AnimalRecognitionPipeline.__init__.<locals>.resnest101$   s?    M
!#
 
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_param8AnimalRecognitionPipeline.__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   r6   r7   r;   s      r(   load_pretrained;AnimalRecognitionPipeline.__init__.<locals>.load_pretrained>   s9    z)'5
((*I/!!),r+   T)weights_onlyi`   )num_classeszload model done )super__init__torchr   
local_pathloadospjoinr   TORCH_MODEL_FILEr   cpuloggerinfo)	selfr   r'   rG   r)   r@   r6   r;   	__class__s	          @r(   rF   "AnimalRecognitionPipeline.__init__   s     	/u//	
	-	- **ZZHHT__i&@&@AKK
  D1


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)rP   rS   rZ   	normalizetest_transformsresults         r(   
preprocess$AnimalRecognitionPipeline.preprocessN   s    &&u-((&,AC	$,,c"!!#&!9.
 
 c"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_phase4AnimalRecognitionPipeline.forward.<locals>.set_phase]   s    

r+   FrZ   r   outputs)r   rG   	unsqueeze)rP   rS   rk   rj   rZ   	input_imgrm   s          r(   forward!AnimalRecognitionPipeline.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label_mapping.txtrzutf-8)encodingrm   	r   )rJ   rK   rH   open	readlinesrG   maxr
   SCORESitemLABELSargmaxsplit)rP   rr   label_mapping_pathflabel_mappingscores         r(   postprocess%AnimalRecognitionPipeline.postprocessj   s     XXdoo7JK$cG<KKMM =		&+,

~6),3356<<TB1EF

  =<s   B99
C)rH   r   )__name__
__module____qualname____firstlineno__strrF   r   r   r   rd   rp   r   __static_attributes____classcell__)rQ   s   @r(   r   r      sv    1'c 1'f $sCx. $T#s(^ $S#X $
$sCx. 
T#s(^ 
 
r+   r   )&os.pathpathrJ   typingr   r   cv2numpynprG   PILr   torchvisionr   modelscope.metainfor   'modelscope.models.cv.animal_recognitionr   r	   modelscope.outputsr
   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.preprocessorsr   modelscope.utils.constantr   r   r   modelscope.utils.loggerr   rN   register_moduleanimal_recognitionr   rD   r+   r(   <module>r      sx      
    " ) F ) 5 2 . ? ? .	 	)*F*FH[ [H[r+   