a
    
dG                     @   sl   d dl mZ d dlZd dlZd dlZd dlmZ ddlmZm	Z	m
Z
mZ dd Zdd	 Zd
d Zdd ZdS )    )partialN)merge   )augmentationlayersmodelsutilsc                 C   s^   ddddddddd ddddd	d
iddddgdddd	diddddd}t | }t||S )N      ?r           Tr   Fkarras)
sigma_data
patch_sizedropout_rateaugment_wrapperZaugment_probmapping_cond_dimunet_cond_dimcross_cond_dimcross_attn_depthsskip_stageshas_varianceloss_configtypeZimagefolderadamwg-C6?gffffff?g+?gư>MbP?)r   lrbetasepsweight_decayconstantinversegK=U?gH.?)r   power	max_value)modeldataset	optimizerZlr_schedZ	ema_sched)jsonloadr   )filedefaultsconfig r*   S/var/www/html/stable-diffusion-webui/repositories/k-diffusion/k_diffusion/config.pyload_config   s<    "
r,   c                 C   s   | d } | d dksJ t j| d | d | d | d | d | d	 | d
 | d | d | d r^dnd | d | d | d | d d}| d rt|}|S )Nr"   r   Zimage_v1input_channelsZmapping_outdepthschannelsZself_attn_depthsr   r   r   r   r   	   r   r   r   r   r   )r   r   r   r   r   r   r   )r   ZImageDenoiserModelV1r   KarrasAugmentWrapper)r)   r"   r*   r*   r+   
make_model2   s(    
r2   c                 C   s   | d } |  dd}|  dd}|  dd}|dkrd|  dd}|sTttj||d	S ttj||d	S |d
kr|rxtdttj|dS tdd S )Nr"   r   r	   r   Fr   r   Zloss_weighting)r   	weightingsimplez5Simple loss config does not support a variance output)r   zUnknown loss config type)getr   r   DenoiserZDenoiserWithVariance
ValueErrorZSimpleLossDenoiser)r)   r   r   r   r3   r*   r*   r+   make_denoiser_wrapperI   s    r8   c           	      C   s  | d }| d }|d dkr\d|v r,|d n|d }d|v rD|d n|d }t tj||d	S |d d
krd|v rx|d nt|}d|v r|d nd}d|v r|d nd}d|v r|d ntd}t tj||||dS |d dkr&d|v r|d n| d }d|v r|d n| d }t tj||dS |d dv rrd|v rF|d nd}d|v r\|d nd}t tj|||dS |d dkrd|v r|d n|d }d|v r|d n|d }d|v r|d n|d }t tj	|||dS t
dd S ) NZsigma_sample_densityr   r   	lognormalmeanlocstdscale)r;   r=   Zloglogisticg      ?	min_valuer
   r!   inf)r;   r=   r>   r!   
loguniform	sigma_min	sigma_max)r>   r!   >   cosinezv-diffusionr   g     @@)r   r>   r!   zsplit-lognormalstd_1scale_1std_2scale_2)r;   rE   rG   zUnknown sample density type)r   r   Zrand_log_normalmathlogfloatZrand_log_logisticZrand_log_uniformZrand_v_diffusionZrand_split_log_normalr7   )	r)   	sd_configr   r;   r=   r>   r!   rE   rG   r*   r*   r+   make_sample_densityZ   s4    rL   )	functoolsr   r%   rH   warningsZ	jsonmerger    r   r   r   r   r,   r2   r8   rL   r*   r*   r*   r+   <module>   s   '