--- license: gpl-3.0 language: - vi base_model: - timm/vit_base_patch16_dinov3.lvd1689m - keepitreal/vietnamese-sbert tags: - vietnamese - image-text-retrieval - feature-extraction - clip - optimal-transport - sentence-transformers - retrieval library_name: transformers ---

ViCLIP-OT — The First Foundation Vision-Language Model for Vietnamese Image–Text Retrieval with Optimal Transport

arXiv Github repository Model on Hugging Face
`ViCLIP-OT` is the first foundation vision-language model specifically designed for **Vietnamese image-text retrieval**. `ViCLIP-OT` models combine CLIP-style contrastive learning with a novel `Similarity-Graph Regularized Optimal Transport (SIGROT)` loss to enhance cross-modal alignment and reduce the modality gap. `ViCLIP-OT` achieves state-of-the-art performance on Vietnamese image-text retrieval benchmarks with strong zero-shot generalization. ## Model Variants | Variant | Contrastive Loss | OT Loss | Params | Hugging Face | | -------------------------- | ---------------- | ------- | ------ | ------------------------------------------------------------------------------- | | **ViCLIP-OT** | CLIP | SIGROT | 221M | [minhnguyent546/ViCLIP-OT](https://huggingface.co/minhnguyent546/ViCLIP-OT) | | **ViSigLIP-OT** (you are here) | SigLIP | SIGROT | 221M | [minhnguyent546/ViSigLIP-OT](https://huggingface.co/minhnguyent546/ViSigLIP-OT) | ## Quick Start ### Model Overview ViCLIP-OT is a dual-encoder vision-language model with 221M parameters. The text encoder is based on [Vietnamese-SBERT](https://huggingface.co/keepitreal/vietnamese-sbert), and the image encoder uses a ViT-B/16 backbone pre-trained with the [DINOv3](https://huggingface.co/timm/vit_base_patch16_dinov3.lvd1689m) framework. The model is trained with a hybrid objective that combines CLIP-style contrastive learning and the proposed `Similarity-Graph Regularized Optimal Transport (SIGROT)` loss. | Feature | Text Encoder | Image Encoder | | ------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | Base Model | [Vietnamese-SBERT](https://huggingface.co/keepitreal/vietnamese-sbert) | [DINOv3-ViT-B/16](https://huggingface.co/timm/vit_base_patch16_dinov3.lvd1689m) | | Parameters | 135M | 86M | | Input Specification | 256 tokens (max) | 224 x 224 pixels | | Pooling Strategy | Mean pooling | Global average pooling | | Output Dimension | 768 | 768 | ### Intended Uses ViCLIP-OT is a multimodal embedding model that encodes both Vietnamese text and images into a shared representation space. It can be used for: - Vietnamese image-text retrieval (text-to-image and image-to-text, image-to-image) - Cross-modal semantic search in Vietnamese - Feature extraction for downstream Vietnamese vision-language tasks (e.g., visual question answering, image classification) ### Usage
via transformers ```bash pip install \ 'transformers>=4.57.0,<5.0.0' \ 'torch>=2.8.0,<2.10.0' \ 'torchvision>=0.23.0,<0.25.0' \ timm \ pillow ``` ```python from transformers import AutoModel, AutoProcessor import torch # Initialize the model device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') print(f'Using device: {device}') model = AutoModel.from_pretrained('minhnguyent546/ViSigLIP-OT', trust_remote_code=True) model.to(device) # Example images and sentences image_uris = [ 'http://images.cocodataset.org/train2014/COCO_train2014_000000138621.jpg', 'http://images.cocodataset.org/train2014/COCO_train2014_000000190580.jpg', ] sentences = [ 'Một con mèo màu trắng', 'Một con mèo màu đen', 'Một cô gái đang lướt sóng', ] # Encode text text_embeddings = model.encode_text( sentences=sentences, batch_size=32, show_progress_bar=True, convert_to_tensor=True, normalize=True, padding=True, truncation=True, max_length=512, ) # Encode images image_embeddings = model.encode_image( images=image_uris, batch_size=32, show_progress_bar=True, convert_to_tensor=True, normalize=True, ) # Compute cosine similarity between image and text embeddings similarities = image_embeddings @ text_embeddings.T print(similarities) # tensor([[ 0.0677, -0.0673, 0.5587], # [ 0.2560, 0.4277, 0.0467]]) ```
via sentence-transformers ```bash pip install \ 'transformers>=4.57.0,<5.0.0' \ 'sentence-transformers>=4.0.0' \ 'torch>=2.8.0,<2.10.0' \ 'torchvision>=0.23.0,<0.25.0' \ timm \ pillow ``` ```python from sentence_transformers import SentenceTransformer # Initialize the model model = SentenceTransformer('minhnguyent546/ViSigLIP-OT', trust_remote_code=True) # Example images and sentences image_uris = [ 'http://images.cocodataset.org/train2014/COCO_train2014_000000138621.jpg', 'http://images.cocodataset.org/train2014/COCO_train2014_000000190580.jpg', ] sentences = [ 'Một con mèo màu trắng', 'Một con mèo màu đen', 'Một cô gái đang lướt sóng', ] # Encode text text_embeddings = model.encode( sentences, batch_size=32, show_progress_bar=True, convert_to_tensor=True, normalize_embeddings=True, ) # Encode images image_embeddings = model.encode( image_uris, batch_size=32, show_progress_bar=True, convert_to_tensor=True, normalize_embeddings=True, ) # Compute cosine similarity between image and text embeddings similarities = image_embeddings @ text_embeddings.T print(similarities) # tensor([[ 0.0677, -0.0673, 0.5587], # [ 0.2560, 0.4277, 0.0467]]) ```
## Training Details ViCLIP-OT is trained on UIT-OpenViIC, a large-scale open-domain Vietnamese image captioning dataset containing 9,088 training images with approximately 42,000 captions featuring diverse real-world scenes. For more details, please refer to the [GitHub repository](https://github.com/minhnguyent546/ViCLIP-OT). ## Evaluation Results ### Image-Text Retrieval on UIT-OpenViIC The table below summarizes retrieval performance on the UIT-OpenViIC test set. Both models also substantially outperform pretrained multilingual vision-language models evaluated in a zero-shot setting.
Table: Image-text retrieval performance on the test set of the UIT-OpenViIC dataset. UOT denotes Unbalanced Optimal Transport. * indicates zero-shot evaluation. Best results are in bold and second-best are underlined.
Method/Model # Params Text → Image Image → Text Avg.
R@1 R@5 R@10 R@1 R@5 R@10
mSigLIP-base* 370M 14.34 28.94 36.21 20.49 32.23 37.43 28.27
Jina CLIP v2* 865M 30.01 52.09 61.70 40.23 65.02 74.41 53.91
Jina Embedding v4* 4B 23.97 42.22 50.29 41.48 66.77 75.61 50.06
Qwen3-VL-Embedding-2B* 2B 32.13 54.00 62.93 39.83 66.52 77.01 55.40
CLIP 221M 31.19 59.80 71.23 46.60 75.53 85.19 61.59
SigLIP 221M 34.75 63.01 72.96 50.10 79.78 88.04 64.77
CLIP + UOT 221M 29.27 57.62 69.07 43.59 75.03 84.03 59.77
SigLIP + UOT 221M 37.84 65.30 74.98 53.95 80.95 88.81 66.97
SIGROT 221M 40.75 70.72 80.90 37.99 61.11 71.68 60.53
ViCLIP-OT (Ours) 221M 37.57 65.65 75.43 54.35 81.83 89.19 67.34
ViSigLIP-OT (Ours) 221M 39.19 66.71 76.04 57.21 83.83 90.79 68.96
### Zero-shot image–text retrieval results on KTVIC and Crossmodal-3600 The table below reports zero-shot retrieval results on KTVIC (with near-duplicate images removed against the UIT-OpenViIC training set) and Crossmodal-3600 (using Vietnamese captions).
Table: Zero-shot image–text retrieval results on KTVIC and Crossmodal-3600. KTVIC images are deduplicated against the UIT-OpenViIC training set. Vietnamese captions are used for Crossmodal-3600.
Method Text → Image Image → Text Avg.
R@1 R@5 R@10 R@1 R@5 R@10
KTVIC – train
CLIP 21.12 46.99 59.22 31.65 59.46 72.49 48.49
SigLIP 23.16 48.78 60.57 35.48 62.22 73.64 50.64
ViCLIP-OT 26.24 52.46 64.14 38.47 64.37 75.48 53.52
ViSigLIP-OT 26.28 52.58 63.49 39.62 66.44 77.78 54.37
KTVIC – test
CLIP 50.32 82.80 89.94 63.06 92.36 97.45 79.32
SigLIP 52.61 83.31 89.94 71.97 94.27 96.18 81.38
ViCLIP-OT 56.69 85.61 91.97 70.06 93.63 98.09 82.68
ViSigLIP-OT 56.56 85.99 91.72 71.34 93.63 97.45 82.78
Crossmodal-3600
CLIP 22.52 45.55 58.01 26.22 53.42 65.06 45.13
SigLIP 26.67 50.31 61.78 31.17 57.78 69.83 49.59
ViCLIP-OT 28.90 55.29 66.37 42.56 68.81 79.17 56.85
ViSigLIP-OT 32.04 57.90 68.95 37.97 64.64 75.53 56.17
## License This project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html) (GPL-3.0). ## Citation If you find ViCLIP-OT useful in your research, please cite the following paper: ```bibtex @misc{tran2026viclipotfoundationvisionlanguagemodel, title={ViCLIP-OT: The First Foundation Vision-Language Model for Vietnamese Image-Text Retrieval with Optimal Transport}, author={Quoc-Khang Tran and Minh-Thien Nguyen and Nguyen-Khang Pham}, year={2026}, eprint={2602.22678}, archivePrefix={arXiv}, primaryClass={cs.CV}, url={https://arxiv.org/abs/2602.22678}, } ```