(self, ipadapter_model, cross_attention_dim=1024, output_cross_attention_dim=1024, clip_embeddings_dim=1024, clip_extra_context_tokens=4, is_sdxl=False, is_plus=False, is_full=False, is_faceid=False, is_portrait_unnorm=False, is_kwai_kolors=False, encoder_hid_proj=None, weight_kolors=1.0)
| 48 | """ |
| 49 | class IPAdapter(nn.Module): |
| 50 | def __init__(self, ipadapter_model, cross_attention_dim=1024, output_cross_attention_dim=1024, clip_embeddings_dim=1024, clip_extra_context_tokens=4, is_sdxl=False, is_plus=False, is_full=False, is_faceid=False, is_portrait_unnorm=False, is_kwai_kolors=False, encoder_hid_proj=None, weight_kolors=1.0): |
| 51 | super().__init__() |
| 52 | |
| 53 | self.clip_embeddings_dim = clip_embeddings_dim |
| 54 | self.cross_attention_dim = cross_attention_dim |
| 55 | self.output_cross_attention_dim = output_cross_attention_dim |
| 56 | self.clip_extra_context_tokens = clip_extra_context_tokens |
| 57 | self.is_sdxl = is_sdxl |
| 58 | self.is_full = is_full |
| 59 | self.is_plus = is_plus |
| 60 | self.is_portrait_unnorm = is_portrait_unnorm |
| 61 | self.is_kwai_kolors = is_kwai_kolors |
| 62 | |
| 63 | if is_faceid and not is_portrait_unnorm: |
| 64 | self.image_proj_model = self.init_proj_faceid() |
| 65 | elif is_full: |
| 66 | self.image_proj_model = self.init_proj_full() |
| 67 | elif is_plus or is_portrait_unnorm: |
| 68 | self.image_proj_model = self.init_proj_plus() |
| 69 | else: |
| 70 | self.image_proj_model = self.init_proj() |
| 71 | |
| 72 | self.image_proj_model.load_state_dict(ipadapter_model["image_proj"]) |
| 73 | self.ip_layers = To_KV(ipadapter_model["ip_adapter"], encoder_hid_proj=encoder_hid_proj, weight_kolors=weight_kolors) |
| 74 | |
| 75 | self.multigpu_clones = {} |
| 76 | |
| 77 | def create_multigpu_clone(self, device): |
| 78 | if device not in self.multigpu_clones: |
nothing calls this directly
no test coverage detected