
    9i=
                     @   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
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  S SKJr  S SKJrJ r   S SK!J"r"  \"" 5       r#\RH                  " \ RJ                  \RJ                  S9 " S S\5      5       r&g)    N)AnyDict)	Pipelines)
align_face)	get_model)
OutputKeys)pipeline)InputPipeline)	PIPELINES)FaceProcessingBasePipeline)	LoadImage)	ModelFileTasks)
get_logger)module_namec                      ^  \ rS rSrSS\4U 4S jjjrS\S\\\4   4U 4S jjr	S\\\4   S\\\4   4S jr
S\\\4   S\\\4   4S	 jrS
rU =r$ )FaceRecognitionPipeline   modelc                   > [         TU ]  " SXS.UD6  [        R                  " [        R                  R                  5       (       a  SS 3OS5      nX@l        [        S5      " SS/5      nUR                  [        R                  " [        R                  " U[        R                  5      USS95        UR                  U5      nUR                  5         XPl        [         R#                  S	5        g
)zo
use `model` to create a face recognition pipeline for prediction
Args:
    model: model id on modelscope hub.
)r   use_detzcuda:r   cpuIR_101p   T)map_locationweights_onlyzface recognition model loaded!N )super__init__torchdevicecudais_availabler   load_state_dictloadospjoinr   TORCH_MODEL_BIN_FILEtoeval
face_modelloggerinfo)selfr   r   kwargsr"   r,   	__class__s         q/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/face_recognition_pipeline.pyr     FaceRecognitionPipeline.__init__   s     	@u@@ ::2244eA3K%Ax(#s4
""JJ	 > >?#!#	$
  ]]6*
$45    inputreturnc                    > [         TU ]  U5      nUS   nUS S 2S S 2S S S24   n[        R                  " USS9nUS-  S-
  S-  nUR	                  [        R
                  5      nXBS'   U$ )Nimg)   r      )axesg     o@g      ?)r   
preprocessnp	transposeastypefloat32)r/   r5   result	align_imgface_imgr1   s        r2   r=   "FaceRecognitionPipeline.preprocess4   sp    #E*5M	Q4R4Z(<<y9tOc)S0??2::. ur4   c           	      4   US   c   eUS   R                  S5      nU R                  U5      R                  5       R                  5       R	                  5       nU[
        R                  " [
        R                  " US-  SSS95      -  n[        R                  U0$ )Nr8   r   r:   r9   T)keepdims)
	unsqueezer,   detachr   numpyr>   sqrtsumr   IMG_EMBEDDING)r/   r5   r8   embs       r2   forwardFaceRecognitionPipeline.forward>   s    U|'''El$$Q'ooc"))+//1779rwwrvvc1fb4899((#..r4   inputsc                     U$ )Nr   )r/   rQ   s     r2   postprocess#FaceRecognitionPipeline.postprocessE   s    r4   )r"   r,   )T)__name__
__module____qualname____firstlineno__strr    r
   r   r   r=   rO   rS   __static_attributes____classcell__)r1   s   @r2   r   r      sz    6c 6 6, $sCx. /T#s(^ /S#X /$sCx. T#s(^  r4   r   )'os.pathpathr'   typingr   r   cv2rJ   r>   PILr!   modelscope.metainfor   0modelscope.models.cv.face_recognition.align_facer   7modelscope.models.cv.face_recognition.torchkit.backboner   modelscope.outputsr   modelscope.pipelinesr	   modelscope.pipelines.baser
   r   modelscope.pipelines.builderr   5modelscope.pipelines.cv.face_processing_base_pipeliner   modelscope.preprocessorsr   modelscope.utils.constantr   r   modelscope.utils.loggerr   r-   register_moduleface_recognitionr   r   r4   r2   <module>rn      s{      
  
  ) G M ) ) 5 2 . 6 .	 		(B(BD*8 *D*r4   