Download languagebind/__init__.py from myang333/languagebind-source: direct link, hf CLI and curl.
- Browser
- Download file 3.48 kB
-
https://huggingface.co/myang333/languagebind-source/resolve/main/languagebind/__init__.py
- Command line
-
hf download hf://myang333/languagebind-source/languagebind/__init__.py
-
curl -L -o __init__.py https://huggingface.co/myang333/languagebind-source/resolve/main/languagebind/__init__.py
3.48 kB
| import torch | |
| from torch import nn | |
| from transformers import AutoConfig | |
| from .image.configuration_image import LanguageBindImageConfig | |
| from .image.modeling_image import LanguageBindImage | |
| from .image.tokenization_image import LanguageBindImageTokenizer | |
| from .image.processing_image import LanguageBindImageProcessor | |
| from .video.configuration_video import LanguageBindVideoConfig | |
| from .video.modeling_video import LanguageBindVideo | |
| from .video.tokenization_video import LanguageBindVideoTokenizer | |
| from .video.processing_video import LanguageBindVideoProcessor | |
| from .depth.configuration_depth import LanguageBindDepthConfig | |
| from .depth.modeling_depth import LanguageBindDepth | |
| from .depth.tokenization_depth import LanguageBindDepthTokenizer | |
| from .depth.processing_depth import LanguageBindDepthProcessor | |
| from .audio.configuration_audio import LanguageBindAudioConfig | |
| from .audio.modeling_audio import LanguageBindAudio | |
| from .audio.tokenization_audio import LanguageBindAudioTokenizer | |
| from .audio.processing_audio import LanguageBindAudioProcessor | |
| from .thermal.configuration_thermal import LanguageBindThermalConfig | |
| from .thermal.modeling_thermal import LanguageBindThermal | |
| from .thermal.tokenization_thermal import LanguageBindThermalTokenizer | |
| from .thermal.processing_thermal import LanguageBindThermalProcessor | |
| config_dict = { | |
| 'thermal': LanguageBindThermalConfig, | |
| 'image': LanguageBindImageConfig, | |
| 'video': LanguageBindVideoConfig, | |
| 'depth': LanguageBindDepthConfig, | |
| 'audio': LanguageBindAudioConfig | |
| } | |
| model_dict = { | |
| 'thermal': LanguageBindThermal, | |
| 'image': LanguageBindImage, | |
| 'video': LanguageBindVideo, | |
| 'depth': LanguageBindDepth, | |
| 'audio': LanguageBindAudio | |
| } | |
| transform_dict = { | |
| 'video': LanguageBindVideoProcessor, | |
| 'audio': LanguageBindAudioProcessor, | |
| 'depth': LanguageBindDepthProcessor, | |
| 'thermal': LanguageBindThermalProcessor, | |
| 'image': LanguageBindImageProcessor, | |
| } | |
| class LanguageBind(nn.Module): | |
| def __init__(self, clip_type, use_temp=True, cache_dir='./cache_dir'): | |
| super(LanguageBind, self).__init__() | |
| self.use_temp = use_temp | |
| self.modality_encoder = {} | |
| self.modality_proj = {} | |
| self.modality_scale = {} | |
| self.modality_config = {} | |
| for k, v in clip_type.items(): | |
| pretrained_ckpt = f'LanguageBind/{v}' | |
| model = model_dict[k].from_pretrained(pretrained_ckpt, cache_dir=cache_dir) | |
| self.modality_encoder[k] = model.vision_model | |
| self.modality_proj[k] = model.visual_projection | |
| self.modality_scale[k] = model.logit_scale | |
| self.modality_config[k] = model.config | |
| self.modality_encoder['language'] = model.text_model | |
| self.modality_proj['language'] = model.text_projection | |
| self.modality_encoder = nn.ModuleDict(self.modality_encoder) | |
| self.modality_proj = nn.ModuleDict(self.modality_proj) | |
| def forward(self, inputs): | |
| outputs = {} | |
| for key, value in inputs.items(): | |
| value = self.modality_encoder[key](**value)[1] | |
| value = self.modality_proj[key](value) | |
| value = value / value.norm(p=2, dim=-1, keepdim=True) | |
| if self.use_temp: | |
| if key != 'language': | |
| value = value * self.modality_scale[key].exp() | |
| outputs[key] = value | |
| return outputs | |
| def to_device(x, device): | |
| out_dict = {k: v.to(device) for k, v in x.items()} | |
| return out_dict | |