🚀 I-JEPA模型(大型,在IN22K上微調)
I-JEPA 是一種用於自監督學習的方法。總體而言,I-JEPA 從同一圖像的其他部分的表示中預測該圖像某一部分的表示:
- 不依賴於預先指定的、針對手工數據變換的不變性,這種不變性往往會對特定的下游任務產生偏差;
- 也無需模型填充像素級細節,因為這往往會導致學習到的表示在語義上缺乏意義。

🚀 快速開始
數據集
庫名稱
transformers
許可證
cc-by-nc-4.0
✨ 主要特性
I-JEPA 作為一種自監督學習方法,具有以下顯著特性:
- 擺脫特定偏差:不依賴預先指定的、針對手工數據變換的不變性,避免了對特定下游任務產生偏差。
- 語義信息學習:無需模型填充像素級細節,能夠學習到更具語義意義的表示。
- 潛在空間預測:與具有像素解碼器的生成方法不同,I-JEPA 有一個在潛在空間進行預測的預測器。
- 語義世界模型:預測器可被視為一個原始(且受限)的世界模型,能從部分可觀察的上下文中對靜態圖像中的空間不確定性進行建模,預測圖像中未觀察區域的高級信息。
📚 詳細文檔
工作原理
與具有像素解碼器的生成方法不同,I-JEPA 有一個在潛在空間進行預測的預測器。I-JEPA 中的預測器可以被視為一個原始(且受限)的世界模型,它能夠從部分可觀察的上下文中對靜態圖像中的空間不確定性進行建模。這個世界模型具有語義性,因為它預測的是圖像中未觀察區域的高級信息,而不是像素級細節。
我們訓練了一個隨機解碼器,它將 I-JEPA 預測的表示映射回像素空間,以草圖的形式呈現。該模型能夠正確捕捉位置不確定性,並以正確的姿態生成高級對象部分(例如,狗的頭部、狼的前腿)。

預期用途和侷限性
I-JEPA 可用於圖像分類或特徵提取。此特定檢查點旨在用於特徵提取。
💻 使用示例
基礎用法
以下是如何使用該模型進行圖像特徵提取的示例:
import requests
from PIL import Image
from torch.nn.functional import cosine_similarity
from transformers import AutoModel, AutoProcessor
url_1 = "http://images.cocodataset.org/val2017/000000039769.jpg"
url_2 = "http://images.cocodataset.org/val2017/000000219578.jpg"
image_1 = Image.open(requests.get(url_1, stream=True).raw)
image_2 = Image.open(requests.get(url_2, stream=True).raw)
model_id = "jmtzt/ijepa_vith14_22k"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id)
def infer(image):
inputs = processor(image, return_tensors="pt")
outputs = model(**inputs)
return outputs.last_hidden_state.mean(dim=1)
embed_1 = infer(image_1)
embed_2 = infer(image_2)
similarity = cosine_similarity(embed_1, embed_2)
print(similarity)
BibTeX引用
如果您在工作中使用了 I-JEPA 或此代碼,請引用:
@article{assran2023self,
title={Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture},
author={Assran, Mahmoud and Duval, Quentin and Misra, Ishan and Bojanowski, Piotr and Vincent, Pascal and Rabbat, Michael and LeCun, Yann and Ballas, Nicolas},
journal={arXiv preprint arXiv:2301.08243},
year={2023}
}