
    
3j&                         S SK rS SKrS SKJr  S SKJrJrJr  SSK	J
r
Jr  \R                  " \5      rS r " S S\5      rg)    N)
CLIPConfigCLIPVisionModelPreTrainedModel   )is_transformers_versionloggingc                     [         R                  R                  U 5      n[         R                  R                  U5      n[        R                  " X#R                  5       5      $ )N)nn
functional	normalizetorchmmt)image_embedstext_embedsnormalized_image_embedsnormalized_text_embedss       m/home/wildlama/miniconda3/lib/python3.13/site-packages/diffusers/pipelines/stable_diffusion/safety_checker.pycosine_distancer      sE     mm55lC]]44[A88+-E-E-GHH    c                      ^  \ rS rSr\rSrS/rS\4U 4S jjr\	R                  " 5       S 5       r\	R                  " 5       S\	R                  S\	R                  4S j5       rS	rU =r$ )
StableDiffusionSafetyChecker    
clip_inputCLIPEncoderLayerconfigc                   > [         TU ]  U5        [        UR                  5      U l        [
        R                  " UR                  R                  UR                  SS9U l	        [
        R                  " [        R                  " SUR                  5      SS9U l        [
        R                  " [        R                  " SUR                  5      SS9U l        [
        R                  " [        R                  " S5      SS9U l        [
        R                  " [        R                  " S5      SS9U l        [#        SS5      (       a  U R%                  5         g g )NF)bias   )requires_gradr   >z4.57.3)super__init__r   vision_configvision_modelr
   Linearhidden_sizeprojection_dimvisual_projection	Parameterr   onesconcept_embedsspecial_care_embedsconcept_embeds_weightsspecial_care_embeds_weightsr   	post_init)selfr   	__class__s     r   r#   %StableDiffusionSafetyChecker.__init__&   s     +F,@,@A!#6+?+?+K+KVMbMbin!o ll5::b&:O:O+P`ef#%<<

1f>S>S0Tdi#j &(ll5::b>QV&W#+-<<

1UZ+[("311NN 2r   c                    U R                  U5      S   nU R                  U5      n[        X@R                  5      R	                  5       R                  5       R                  5       n[        X@R                  5      R	                  5       R                  5       R                  5       n/ nUR                  S   n[        U5       GH  n	0 / 0 / S.n
Sn[        [        US   5      5       Hi  nXY   U   nU R                  U   R                  5       n[        X-
  U-   S5      U
S   U'   U
S   U   S:  d  ML  U
S   R                  XS   U   15        SnMk     [        [        US   5      5       H`  nXi   U   nU R                  U   R                  5       n[        X-
  U-   S5      U
S	   U'   U
S	   U   S:  d  ML  U
S
   R                  U5        Mb     UR                  U
5        GM      U Vs/ s H  n[        US
   5      S:  PM     nn[!        U5       H  u  nnU(       d  M  ["        R$                  " U5      (       d  ["        R$                  " US   5      (       a  ["        R&                  " UU   5      UU'   Mf  [(        R*                  " UU   R                  5      UU'   M     [-        U5      (       a  [.        R1                  S5        UU4$ s  snf )N   r   )special_scoresspecial_careconcept_scoresbad_concepts        r   r6   r7   {Gz?r8   r9   zPotential NSFW content was detected in one or more images. A black image will be returned instead. Try again with a different prompt and/or seed.)r%   r)   r   r-   cpufloatnumpyr,   shaperangelenr/   itemroundappendr.   	enumerater   	is_tensor
zeros_likenpzerosanyloggerwarning)r1   r   imagespooled_outputr   special_cos_distcos_distresult
batch_sizei
result_img
adjustmentconcept_idxconcept_cosconcept_thresholdreshas_nsfw_conceptsidxhas_nsfw_concepts                      r   forward$StableDiffusionSafetyChecker.forward5   s   ))*5a8--m< +<9Q9QRVVX^^`ffh"<1D1DEIIKQQSYY[!''*
z"A,.VXjlmJ J$S)9!)<%=>.1+>$($D$D[$Q$V$V$X!<A+BadnBnpq<r
+,[9./<q@~.55{O_D`alDm6no!%J  ?  %S!%56&k+6$($?$?$L$Q$Q$S!<A+BadnBnpq<r
+,[9./<q@~.55kB  7 MM*%- #0 FLLVcS^!459VL%./@%A!C!??6**eoofQi.H.H"'"2"26#;"?F3K"$((6#;+<+<"=F3K &B  !!NNB
 ((( Ms   &KrM   c                    U R                  U5      S   nU R                  U5      n[        X@R                  5      n[        X@R                  5      nSnXPR
                  -
  U-   n[        R                  " US:  SS9n	U	S-  n
U
R                  S5      R                  SUR                  S   5      n
X`R                  -
  U
-   n[        R                  " US:  SS9nSX,'   X,4$ )Nr5   r:   r   )dimr;   )r%   r)   r   r-   r,   r/   r   rJ   	unsqueezeexpandr?   r.   )r1   r   rM   rN   r   rO   rP   rU   r6   r7   special_adjustmentr8   rZ   s                r   forward_onnx)StableDiffusionSafetyChecker.forward_onnxi   s    ))*5a8--m<*<9Q9QR"<1D1DE 
),L,LLzYyy!!3;)D0/99!<CCBWXHYZ"%@%@@DVV!IInq&8a@$'!((r   )r,   r.   r-   r/   r%   r)   )__name__
__module____qualname____firstlineno__r   config_classmain_input_name_no_split_modulesr#   r   no_gradr]   Tensorre   __static_attributes____classcell__)r2   s   @r   r   r       sm    L"O+,z  ]]_1) 1)f ]]_)u|| )U\\ ) )r   r   )r>   rH   r   torch.nnr
   transformersr   r   r   utilsr   r   
get_loggerrg   rK   r   r    r   r   <module>rw      s?       E E 5 
		H	%Ia)? a)r   