contrastive language-image learning에 대한 재현 가능한 스케일링 법칙
이라는 논문에서 자세히 연구되었어요.pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='laion2b_s34b_b79k')
tokenizer = open_clip.get_tokenizer('ViT-B-32')
image = preprocess(Image.open("CLIP.png")).unsqueeze(0)
text = tokenizer(["a diagram", "a dog", "a cat"])
with torch.no_grad(), torch.cuda.amp.autocast():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print("Label probs:", text_probs) # prints: [[1., 0., 0.]]
import open_clip
open_clip.list_pretrained()
주의:
open_clip.create_model_and_transforms
를 사용해 로드할 수 있어요. open_clip.list_pretrained()
의 출력과 호환돼요.# pretrained also accepts local paths
model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='laion2b_s34b_b79k')
/path/to/my/b32.pt
처럼 말이죠. open_clip_pytorch_model.bin
파일을 다운로드해야 해요pretrained=/path/to/open_clip_pytorch_model.bin
을 사용하세요.cc3m img2dataset 예시를 참조하세요.
위에서 언급한 것처럼, CSV 파일을 통해 훈련 데이터를 지정하는 것 외에도, 우리의 코드베이스는 대규모 데이터셋에 권장되는 웹데이터셋도 지원해요. 기대되는 형식은 일련의 .tar 파일이에요. 각 .tar 파일은 각 훈련 예제에 대한 두 개의 파일, 이미지와 해당 텍스트를 포함해야 해요. 두 파일은 동일한 이름을 가져야 하지만 확장자가 달라야 해요. 예를 들어, shard_001.tar는 abc.jpg와 abc.txt 같은 파일을 포함할 수 있어요. 웹데이터셋에 대해 더 알고 싶다면 https://github.com/webdataset/webdataset을 확인하세요. 우리는 tarp를 사용해 생성된 각 데이터 포인트가 1,000개인 .tar 파일을 사용해요.
YFCC 데이터셋은 Multimedia Commons에서 다운로드할 수 있어요. OpenAI와 비슷하게, 우리는 언급된 정확도 숫자에 도달하기 위해 YFCC의 부분 집합을 사용했어요. 이 부분 집합에 있는 이미지의 인덱스는 OpenAI의 CLIP 리포지토리에 있어요.
그 다음, openclip을 설치해서 훈련에 사용할 수 있어요. pip install 'open_clip_torch[training]'
을 사용하세요.
코드에 변경을 기여하고 싶다면, openclip을 클론한 다음 가상 환경을 생성한 후 openclip 폴더에서 make install
을 실행하세요.
PyTorch를 https://pytorch.org/get-started/locally/ 에 따라 설치하세요.
훈련 관련 의존성을 설치하려면 make install-training
을 실행할 수 있어요.
테스트는 make install-test
를 실행한 다음 make test
로 실행할 수 있어요.
특정 테스트를 실행하려면, 예를 들어 훈련 관련 테스트만을 실행하고 싶다면, python -m pytest -x -s -v tests -k "training"
을 사용하세요.
특정 git 수정이나 태그에 대해 회귀 테스트를 실행하려면:
--model
파라미터를 사용하여 CoCa 설정을 지정함으로써 가능 coca_ViT-B-32
설정에서의 예시가 있습니다:"multimodal_cfg": {
"context_length": 76,
"vocab_size": 49408,
"width": 512,
"heads": 8,
"layers": 12,
"latent_dim": 512,
"attn_pooler_heads": 8
}
import open_clip
import torch
from PIL import Image
model, _, transform = open_clip.create_model_and_transforms(
model_name="coca_ViT-L-14",
pretrained="mscoco_finetuned_laion2B-s13B-b90k"
)
im = Image.open("cat.jpg").convert("RGB")
im = transform(im).unsqueeze(0)
with torch.no_grad(), torch.cuda.amp.autocast():
generated = model.generate(im)
print(open_clip.decode(generated[0]).split("<end_of_text>")[0].replace("<start_of_text>", ""))
from clip_benchmark.datasets.builder import build_dataset
import pandas as pd
import os
root_path = "path/to/data/dir" # set this to smth meaningful
ds = build_dataset("mscoco_captions", root=root_path, split="train") # this downloads the dataset if it is not there already
coco = ds.coco
imgs = coco.loadImgs(coco.getImgIds())
future_df = {"filepath":[], "title":[]}
for img in imgs:
caps = coco.imgToAnns[img["id"]]
for cap in caps:
future_df["filepath"].append(img["file_name"])
future_df["title"].append(cap["caption"])
pd.DataFrame.from_dict(future_df).to_csv(
os.path.join(root_path, "train2014.csv"), index=False, sep="\t"
)
python -m training.main \
--dataset-type "csv" \
--train-data "path/to/data/dir/train2014.csv" \
--warmup 1000 \
--batch-size 128 \
--lr 1e-5 \
--wd 0.1 \
--epochs 1 \
--workers 3 \
--model "coca_ViT-L-14" \
--report-to "wandb" \
--coca-contrastive-loss-weight 0 \
--coca-caption-loss-weight 1 \
--log-every-n-steps 100
python -m training.main --help
는 그것들을 보여줄 수 있어야 합니다. --coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1
안녕하세요~웹사이트 솔루션이대해 조언을 구하고싶은데 ㅠㅠ혹시 실례지만 카톡 thegood12 한통주실수있나요~ 광고그런거아니에용~ㅠㅠ정말공부하는데 부족해서 물어보고싶어서 ㅠㅠ그래용