
    9i$                        S SK Jr  S SKrS SKrS SKJr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  S S	KJr  S S
KJrJrJrJr  S SK J!r!  \!" 5       r"S r# " S S5      r$S r% " S S\5      r&\RN                  " \RP                  \RR                  S9 " S S\&5      5       r*\RN                  " \RV                  \RX                  S9 " S S\&5      5       r-g)    N)AnyDictOptional)Image)BertTokenizer)snapshot_download)	Pipelines)Pipeline)	PIPELINES)
load_image)DEFAULT_MODEL_REVISION
FrameworksInvokeTasks)
get_loggerc                 .    SR                  X-
  S-  5      $ )Nz{:.2f}msi  )format)endbegins     q/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/multi_modal/gridvlp_pipeline.pycostr      s    ckT122    c                       \ rS rSrSr\R                  " / SQ\R                  S9SS2\R                  \R                  4   r	\R                  " / SQ\R                  S9SS2\R                  \R                  4   r
\" S5      r\" S5      rSrS	rg)
Config   gp?)g
ףp=
?gv/?gCl?dtypeN)gZd;O?gy&1?g?       )__name__
__module____qualname____firstlineno__SCALEnprequirefloat32newaxisMEANSTDintRESIZE_HEIGHTRESIZE_WIDTH	CROP_SIZE__static_attributes__r    r   r   r   r      s    E::+2::>q"**?Azz@J KD
***"**
=a>@jj?I JC HMs8LIr   r   c                 <   U R                  S5      n U R                  u  pX::  a  U[        R                  :X  d  X!::  a  U[        R                  :X  a  U n X:  aQ  [        R                  n[	        [        R                  U-  U-  5      nU R                  X44[        R                  5      n OP[        R                  n[	        [        R                  U-  U-  5      nU R                  X44[        R                  5      n U R                  u  p[	        [        U[        R                  -
  S-  5      5      n[	        [        U[        R                  -
  S-  5      5      nU R                  XeU[        R                  -   U[        R                  -   45      n [        R                  " U [        R                  S9n[        R                  " UR                  S5      [        R                  S9nU[        R                   -  nU[        R"                  -  nU[        R$                  -  nU$ )NRGBg       @r   )   r      )convertsizer   r.   r,   resizer   BILINEARroundr/   cropr&   arrayr(   r'   	transposer%   r*   r+   )imgwhowohcrop_top	crop_left_imgs           r   pre_processorrE   ,   s   
++e
C88DA	1+++1 3 33u  $$q(1,-jj"5>>2  $$q(1,-jj"5>>288DA5!f..."456HE1v///2567I
((IV5E5E)Ev///1 2C88Crzz*D::dnnY/rzzBDFLLDFKKDFJJDKr   c                   B    \ rS rSrSrS\4S jrS	S\\\4   4S jjr	Sr
g)
GridVlpPipelineH   z=Pipeline for gridvlp, including classification and embedding.model_name_or_pathc                 @   [         R                  SU 35        [        R                  " U5      (       a  UnO4[        R
                  < S[        R                  < 3n[        U[        US9nX0l	        [         R                  SU 35        [        R                  R                  [        R                  " US5      5      U l        [        R                  U l        SU l        SU l        SU l        [         R                  S	U 35        [(        R*                  " U5      U l        g
)znPipeline for gridvlp, including classification and embedding.
Args:
    model: path to local model directory.
z load checkpoint from modelscope /)
user_agentzload model from zpytorch_model.ptcpuTFzload tokenizer from N)loggerinfoospexistsr   KEYPIPELINEr   r   local_model_dirtorchjitloadjoinmodelr   	frameworkdevice_name_model_prepare_auto_collater   from_pretrained	tokenizer)selfrI   kwargsrT   
invoked_bys        r   __init__GridVlpPipeline.__init__K   s     	67I6JKL::())0O$*JJ@J/"&%'O  / 	&&789YY^^HH_&89;
#)) "" 	*?*;<=&66Gr   inputsc                    UR                  SS5      nUR                  SS5      n[        R                  " 5       n [        U5      n[        R                  " 5       n[        U5      n[        R                  " 5       n	Ub*  UR                  5       (       d  UR                  5       (       d  [        R                  S5        SnU R                  USSUS	9n[        R                  " 5       n
[        R                  S
U SU 35        [        R                  S[        Xu5       S[        X5       S[        X5       35        UUS   US   US   S.nU$ ! [         ay    [
        R                  " S[
        R                  S9n[        R                  " 5       n[        R                  " 5       n	[        R                  [        R                  " 5       5         GNSf = f)Nimage text)   r   r   r   ztext is empty!
max_lengthT)padding
truncationrk   zexample. text: z image: zpreprocess. Img_Download:z
, Img_Pre:z
, Txt_Pre:	input_idsattention_masktoken_type_ids)rg   rn   
input_masksegment_ids)gettimer   rE   	Exceptionr&   zerosr(   rN   rO   	traceback	print_excisspacestripr_   r   )r`   re   max_seq_lengthrg   ri   s1r=   s2
image_datas3s4
input_dicts               r   
preprocessGridVlpPipeline.preprocessi   s   

7B'zz&"%YY[	/U#CB 's+JB <4<<>>KK()D %	   ' YY[odV8E7;<'R~ZR~ZX\]_XdWef	

  , !12!"23	

 ;  	/-rzzBJBBKK	++-.		/s   A E A?GG)r]   r\   r[   rZ   rT   rY   r_   N)1   )r!   r"   r#   r$   __doc__strrc   r   r   r   r0   r    r   r   rG   rG   H   s,    HH3 H<.c3h . .r   rG   )module_namec                      ^  \ rS rSrSrS\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$ )
GridVlpClassificationPipeline   u~  Pipeline for gridvlp classification, including cate classification and
brand classification.

Example:

```python
>>> from modelscope.pipelines.multi_modal.gridvlp_pipeline import     GridVlpClassificationPipeline

>>> pipeline = GridVlpClassificationPipeline('rgtjf1/multi-modal_gridvlp_classification_chinese-base-ecom-cate')
>>> output = pipeline({'text': '女装快干弹力轻型短裤448575',        'image':'https://yejiabo-public.oss-cn-zhangjiakou.aliyuncs.com/alinlp/clothes.png'})
>>> output['text'][0]
{'label': {'cate_name': '休闲裤', 'cate_path': '女装>>裤子>>休闲裤>>休闲裤'}, 'score': 0.4146, 'rank': 0}

```
rI   c                    > [         TU ]  " U40 UD6  [        R                  SU R                   35        [
        R                  " [        [        R                  " U R                  S5      5      5      U l
        g)zPipeline for gridvlp classification, including cate classification and
brand classification.
    Args:
        model: path to local model directory.
    zload label mapping from zlabel_mapping.jsonN)superrc   rN   rO   rT   jsonrW   openrP   rX   label_mapping)r`   rI   ra   	__class__s      r   rc   &GridVlpClassificationPipeline.__init__   sa     	+6v6 	.t/C/C.DEF!YY$..0DEFHr   re   returnc                    [         R                   " 5       n[        R                  " S[        R                  S9nU R	                  [        R
                  " US   5      R                  S5      UR                  S5      [        R
                  " US   [        R                  S9R                  S5      [        R
                  " US   [        R                  S9R                  S5      [        R
                  " US   [        R                  S9R                  S5      5      nUS   R                  5       R                  5       n[         R                   " 5       n[        R                  S[        XR5       35        U$ )	Nr4   r   rg   r   rn   rq   rr   forward. Infer:rt   rU   rv   r(   rY   tensor	unsqueezelongdetachnumpyrN   rO   r   )r`   re   r   
box_tensoroutputs5s         r   forward%GridVlpClassificationPipeline.forward   s   YY[[[%--8
LL)33A6  #LL,EJJ?II!LLL-UZZ@JJ1MLL.ejjAKKANP !!#))+YY[od2l^45 r   c           
         [         R                   " 5       nUn[        R                  " U* 5      nX4   n/ n[        [	        S[        U R                  5      5      5       HG  nU R                  [        XG   5         nUR                  U[        [        XW   5      S5      US.5        MI     [         R                   " 5       n	[        R                  S[        X5       35        SU0$ )N
      )labelscorerankzpostprocess. Post: ri   )rt   r&   argsortrangeminlenr   r   appendr9   floatrN   rO   r   )
r`   re   r   r   indexout_sorttop_kir   s6s
             r   postprocess)GridVlpClassificationPipeline.postprocess   s    YY[

F7#=s2s4#5#5678A&&s58}5ELLuX[115  9 YY[)$r,89r   )r   )r!   r"   r#   r$   r   r   rc   r   r   r   r   r0   __classcell__)r   s   @r   r   r      sa    $H3 Hd38n c3h ($sCx. T#s(^  r   r   c                   d    \ rS rSrSrS\\\4   S\\\4   4S jrS\\\4   S\\\4   4S jr	Sr
g)	GridVlpEmbeddingPipeline   uD  Pipeline for gridvlp embedding. These only generate unified multi-modal
embeddings and output it in `text_embedding` or `img_embedding`.

Example:

```python
>>> from modelscope.pipelines.multi_modal.gridvlp_pipeline import     GridVlpEmbeddingPipeline

>>> pipeline = GridVlpEmbeddingPipeline('rgtjf1/multi-modal_gridvlp_classification_chinese-base-ecom-embedding')
>>> outputs = pipeline({'text': '女装快干弹力轻型短裤448575',        'image':'https://yejiabo-public.oss-cn-zhangjiakou.aliyuncs.com/alinlp/clothes.png'})
>>> outputs["text_embedding"].shape
(768,)

```
re   r   c                 ,   [         R                   " 5       n[        R                  " S[        R                  S9nU R	                  [        R
                  " US   5      R                  S5      UR                  S5      [        R
                  " US   [        R                  S9R                  S5      [        R
                  " US   [        R                  S9R                  S5      [        R
                  " US   [        R                  S9R                  S5      5      n[         R                   " 5       nUS   R                  5       R                  5       n[         R                   " 5       n[        R                  S[        XR5       S	[        Xe5       35        U$ )
Nr4   r   rg   r   rn   rq   rr   r   z, Post: r   )r`   re   r   r   r   r   r   s          r   r    GridVlpEmbeddingPipeline.forward   s   YY[[[%--8
LL)33A6  #LL,EJJ?II!LLL-UZZ@JJ1MLL.ejjAKKANP YY[!!#))+YY[od2l^8DL>JKr   c                     UUS.nU$ )N)img_embeddingtext_embeddingr    )r`   re   outputss      r   r   $GridVlpEmbeddingPipeline.postprocess  s    #$
 r   r    N)r!   r"   r#   r$   r   r   r   r   r   r   r0   r    r   r   r   r      sM    $d38n c3h ($sCx. T#s(^ r   r   ).os.pathpathrP   rt   rw   typingr   r   r   r   r   r&   rU   PILr   transformersr    modelscope.hub.snapshot_downloadr   modelscope.metainfor	   modelscope.pipelinesr
   modelscope.pipelines.builderr   modelscope.preprocessors.imager   modelscope.utils.constantr   r   r   r   modelscope.utils.loggerr   rN   r   r   rE   rG   register_modulevisual_question_answering"gridvlp_multi_modal_classificationr   multi_modal_embeddinggridvlp_multi_modal_embeddingr   r    r   r   <module>r      s       & &     & > ) ) 2 56 6 .	3 8Oh Od 	##<<>EO E>EP 	779, ,9,r   