1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

clipをインストールする

Last updated at Posted at 2023-05-06

目標

  • ローカル環境でvenvのpython実行環境を用意する、
  • clipにて画像を処理する。

環境

  • Mac Apple M1 13.3(22E252)
  • python3.9.10
  • pythonやhomebrewは入っているものとする

手順及び途中で発生したエラーの解決

  1. 仮想環境を作成する

    1. python3.9 -m venv myenv
    2. source myenv/bin/activate
      以降はvenv環境内
  2. pyTorchとCLIPをインストールする

    1. `pip install torch torchvision torchaudio
    2. pip install clip
      注釈: pythonバージョンは3.9を推奨する。3.6, 3.7, 3.8, 3.9に対応。3.10での動作は公式には明示されていないため
  3. pythonコードやサンプル画像データの配置

    1. venv環境の直下にプロジェクトフォルダを任意に作成し、その中にコードを配置する
    2. ファイル用に、そこにimageフォルダを作成
    3. ファイルは、コード上では親環境(mac)の絶対パスを教える
image_path = '/環境の絶対パス/myenv/myProject/image/test_image_data.png'

// これでファイルを読み込める
image = preprocess(Image.open(image_path)).unsqueeze(0).to(device)
  1. pythonを実行する

エラーが発生した場合

  • 実行時に次のエラー
  • AttributeError: module 'clip' has no attribute 'load'
raceback (most recent call last):
  File "//myenv/myProject/cliptest.py", line 12, in <module>
    model, preprocess = clip.load("ViT-B/32", device=device)
AttributeError: module 'clip' has no attribute 'load'

以下のurlに従い対処
https://github.com/openai/CLIP/issues/329

pip install git+https://github.com/openai/CLIP.git

実行時にSSLエラー

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1129)

次のurlを参考に対処
https://tektektech.com/python-ssl-certification-verify-failed/

  • Macintosh HD > Application > Python 3.9 以下にある Install Certificates.command を実行すると自動設定される

実行と出力結果の期待値

(myenv) $ python cliptest.py 
100%|███████████████████████████████████████| 338M/338M [00:59<00:00, 5.94MiB/s]
tensor([[1.]])

サンプルコード

import torch
import clip
from PIL import Image

image_path = '/venvを置いてある絶対パス/myenv/myProject/image/test_image_data.png'


# デバイスの指定
device = "cuda" if torch.cuda.is_available() else "cpu"

# CLIPモデルの読み込み
model, preprocess = clip.load("ViT-B/32", device=device)

# 画像の読み込みと前処理
image = preprocess(Image.open(image_path)).unsqueeze(0).to(device)

# テキストの読み込みと前処理
text = clip.tokenize(["a cat on a table"]).to(device)

# 画像とテキストの類似度を計算
with torch.no_grad():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)
    similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)

print(similarity)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?