
    9i                     P   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
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  S SKJr  S SKJr  S SKJ r   S SK!J"r"  \"" 5       r#\RH                  " \ RJ                  \RJ                  S9 " S S\5      5       r&g)    )AnyDictN)	rearrange)Image)default_collate)Resize)	Pipelines)StablediffusionPaintbyexample)
OutputKeys)InputPipeline)	PIPELINES)
load_image)Tasks)
get_logger)module_namec                      ^  \ rS rSrS\4U 4S jjrSS jrSS jrS\\\	4   S\\\	4   4S jr
S\\\	4   S\\\	4   4S	 jrS
 rS\\\	4   S\\\	4   4S jrSrU =r$ )ImagePaintbyexamplePipeline   modelc                    > [        U[        5      (       d   S5       eSSKJn  [        TU ]  " SUSS.UD6  U" U R                  R                  5      U l        SU l        g)z$
model: model id on modelscope hub.
zmodel must be a single strr   )PLMSSamplerF)r   auto_collateN )	
isinstancestrpaint_ldm.models.diffusion.plmsr   super__init__r   sampler
start_code)selfr   kwargsr   	__class__s       u/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/cv/image_paintbyexample_pipeline.pyr   $ImagePaintbyexamplePipeline.__init__    sU     %%%C'CC%?Cu5CFC"4::#3#34    c                     / nU(       a"  U[         R                  R                  5       /-  nU(       a$  U[         R                  R                  SS5      /-  n[         R                  R	                  U5      $ )N)      ?r)   r)   torchvision
transformsToTensor	NormalizeComposer"   	normalizetoTensortransform_lists       r%   
get_tensor&ImagePaintbyexamplePipeline.get_tensor*   sk    {55>>@AAN&&001@B N %%--n==r'   c                     / nU(       a"  U[         R                  R                  5       /-  nU(       a$  U[         R                  R                  SS5      /-  n[         R                  R	                  U5      $ )N)g3<4'?gwgM?gy{ ?)gB91?gwt.?g	U?r*   r0   s       r%   get_tensor_clip+ImagePaintbyexamplePipeline.get_tensor_clip6   sk    {55>>@AAN&&0078: N
 %%--n==r'   inputreturnc                 p   [        US   [        5      (       al  US   US   US   pCn[        U5      R                  S5      n[        U5      R                  S5      n[        U5      R                  S5      R	                  S5      nO[        US   [
        R                  R                  5      (       aj  US   R	                  S5      R                  S5      nUS   R	                  S5      R                  S5      nUS   R                  S5      R	                  S5      nO[        S5      eU R                  5       " U5      nUR                  S	5      nU R                  5       " U5      nUR                  S	5      n[        R                  " U5      S
   nSUR                  [        R                  5      S-  -
  nS	XwS:  '   SXwS:  '   [        R                   " U5      nXW-  n0 n	UR#                  U R$                  5      U	S'   UR#                  U R$                  5      U	S'   UR#                  U R$                  5      U	S'   U	$ )Nimgmask	reference)   r?   )   r@   LRGBzRinput should be either str or PIL.Image, and both inputs should have the same typer   )NN        o@r)   inpaint_maskinpaint_image
ref_tensor)r   r   r   resizeconvertPILr   	TypeErrorr4   	unsqueezer7   nparrayastypefloat32torch
from_numpytodevice)
r"   r9   
image_name	mask_nameref_namer<   refr=   rF   test_model_kwargss
             r%   
preprocess&ImagePaintbyexamplePipeline.preprocessC   s   eElC((.3ElE={+ $,JZ(//
;CX&--j9Ci(//
;CCCHDeciioo66,&&u-44Z@C$,,U3:::FC=''
3;;C@Dd  oo$mmA""$S)mmAxx~j)4;;rzz*U22CZS[%
,0GGDKK,@.)-:-=-=dkk-J/**-&&*=,'  r'   c                 H    U R                  U5      n[        R                  U0$ N)perform_inferencer   
OUTPUT_IMG)r"   r9   results      r%   forward#ImagePaintbyexamplePipeline.forwardc   s#    ''.%%v..r'   c                    [         R                  " 5          U R                  R                  R                  5          US   nU R                  R                  R                  nU R                  R                  R                  UR                  [         R                  5      5      nU R                  R                  R                  U5      nU R                  R                  R                  US   5      nU R                  R                  R                  U5      R                  5       nXQS'   [        UR                  S   UR                  S   /5      " US   5      US'   / SQnU R                  R                  SUSUS	S
USU R                   US9
u  pxU R                  R                  R#                  U5      n	[         R$                  " U	S-   S-  SSS9n	U	R'                  5       R)                  SSSS5      R+                  5       n	U	n
[         R,                  " U
5      R)                  SSSS5      S   nS[/        UR'                  5       R+                  5       S5      -  nUR1                  [2        R4                  5      n[6        R8                  " U[6        R:                  5      nS S S 5        S S S 5        W$ ! , (       d  f       N= f! , (       d  f       W$ = f)NrG   rF   rE   )   @   rg   2   rC   F   g        )
Sconditioning
batch_sizeshapeverboseunconditional_guidance_scaleunconditional_conditioningetax_TrY   g      ?g       @)minmaxr         rD   zc h w -> h w c)rQ   no_gradr   	ema_scopelearnable_vectorget_learned_conditioningrS   rP   proj_outencode_first_stageget_first_stage_encodingdetachr   rm   r    sampler!   decode_first_stageclampcpupermutenumpyrR   r   rO   rM   uint8cv2cvtColorCOLOR_RGB2BGR)r"   rY   rG   ucc	z_inpaintrm   samples_ddim_x_samples_ddimx_checked_imagex_checked_image_torchx_sampler<   s                 r%   r^   -ImagePaintbyexamplePipeline.perform_inferenceg   sq   ]]_!!++-.|<
ZZ%%66JJ$$==MM%--02JJ$$--a0 JJ,,??%o68	 JJ,,EE%vx 5>/24:__R()//"*=>5@).95;!.1 0"&,,"5"5!" !12/1&7 #6 
#9 "&!1!1!D!D ""!&#c)S0cs"D!/!3!3!5!=!=aA>?"AAF  #1(-(8(8#)%%,WQ1a%8)<%  ))--/5579I#K Koobhh/ll3(9(9:U . X 
W .- _X 
s#   %J<IJ+J<+
J9	5J<<
Kinputsc                     U$ r]   r   )r"   r   s     r%   postprocess'ImagePaintbyexamplePipeline.postprocess   s    r'   )r    r!   )TT)__name__
__module____qualname____firstlineno__r   r   r4   r7   r   r   rZ   ra   r^   r   __static_attributes____classcell__)r$   s   @r%   r   r      s    c 
>>!S#X !4S> !@/T#s(^ /S#X /-^$sCx. T#s(^  r'   r   )'typingr   r   r   r   rM   rJ   rQ   torch.nnnnr+   einopsr   r   torch.utils.data._utils.collater   torchvision.transformsr   modelscope.metainfor	   )modelscope.models.cv.image_paintbyexampler
   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.preprocessors.imager   modelscope.utils.constantr   modelscope.utils.loggerr   loggerregister_moduleimage_paintbyexampler   r   r'   r%   <module>r      s     
  
      ; ) )" ) 5 2 5 + .	 	I,J,JLy( yLyr'   