
    %h	                         d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZ d dlmZmZmZmZ d dlmZ  e       Zd	dZd Zy)
    N)OrderedDict)vgg16vgg16_bnVGG16_WeightsVGG16_BN_Weightsresnet50ResNet50_Weights)	pvt_v2_b0	pvt_v2_b1	pvt_v2_b2	pvt_v2_b5)	swin_v1_t	swin_v1_s	swin_v1_b	swin_v1_l)Configc           
         | dk(  rit        t        |rt        j                  nd       j	                               d   }t        j                  t        |d d |dd |dd |dd d            }|S | d	k(  rit        t        |rt        j                  nd       j	                               d   }t        j                  t        |d d
 |d
d |dd |dd d            }|S | dk(  r~t        t        |rt        j                  nd       j	                               }t        j                  t        t        j                  g |dd |d    |d   |d   |d   d            }|S t        dj                  | |            }|rt        ||       }|S )Nr   )weightsr   
            )conv1conv2conv3conv4vgg16bn   "   ,   r               z{}({}))listr   r   DEFAULTchildrennn
Sequentialr   r   r   r   r	   evalformatload_weights)bb_name
pretrainedparams_settingsbb_netbbs        A/var/www/html/mariraj/BiRefNet/models/backbones/build_backbone.pybuild_backboner3      s   'eZM$9$9TR[[]^_`a]];vbQS}_efhik_lw}  A  BD  xE  (F  G  H I 
I	h:'7'?'?SWXaacdefg]];vbQS}_efhik_lw}  A  BD  xE  (F  G  H I 
J	h:'7'?'?SWXaacd]];1Wq1WVTUY1Wbhijbkv|}~v  KQ  RS  KT  (U  V  W
 I (//'?;<b'*BI    c                 
   t        j                  t        j                  |   dd      }| j	                         }|j                         D ci c]D  \  }}||j                         v s||j                         ||   j                         k(  r|n||   F }}}|st        |j                               }t        |      dk(  r|d   nd }||   j                         D ci c]D  \  }}||j                         v s||j                         ||   j                         k(  r|n||   F }}}|r|st        d       y t        dj                  |             |j                  |       | j                  |       | S c c}}w c c}}w )NcpuT)map_locationweights_only   r   zIWeights are not successully loaded. Check the state dict of weights file.z<Found correct weights in the "{}" item of loaded state_dict.)torchloadconfigr   
state_dictitemskeyssizer%   lenprintr+   updateload_state_dict)	model
model_name
save_model
model_dictkvr=   save_model_keyssub_items	            r2   r,   r,      s   FNN:6UY]^J!!#JZdZjZjZl  HRVRSUVpqu  vE  vE  vG  qG!!&&(jm&8&8&::Q
1M  HJ  Hz01),_)=)B?1%^hiq^r^x^x^z  VVZVWYZ~  DN  DS  DS  DU  Uaaffh*Q-*<*<*>>JqMQ  V
  V]^PWWX`abj!	*%L H
 Vs   E9(.E9E?:.E?)T )r:   torch.nnr(   collectionsr   torchvision.modelsr   r   r   r   r   r	   models.backbones.pvt_v2r
   r   r   r   models.backbones.swin_v1r   r   r   r   r<   r   r3   r,    r4   r2   <module>rT      s6      # k k N N O O  
 r4   