CLIP官方代码运行

CLIP代码运行

整体步骤

1
2
3
4
5
6
1.上传代码至服务器
2.创建conda环境clip_dev
3.安装依赖pytorch、torchvision依赖
4.安装其他依赖
5.在项目路径下
6.运行项目

具体实现

  1. 上传代码至服务器

  2. 创建conda环境clip_dev

    1
    2
    3
    conda create clip_dev python=3.8
    # 如果镜像源出现问题导致无法创建上述环境,先用下行代码换回默认源再创建
    conda config --remove-key channels
  3. 安装依赖pytorch、torchvision依赖(conda不行用pip

    1
    2
    3
    4
    # 先检查一下nvidia的最高版本
    nvidia-smi
    # 复制pytorch安装代码(https://pytorch.org/get-started/previous-versions/)
    pip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 --index-url https://download.pytorch.org/whl/cu118
  4. 安装其他依赖

    1
    2
    3
    4
    # 根据官网提示/requirements.txt文件安装其他依赖
    pip install ftfy regex tqdm

    #清华源 -i https://pypi.tuna.tsinghua.edu.cn/simple
  5. 安装setup.pysetup.py文件会遍历requirements.txt,并自动安装其中包含的依赖,因此实际上5包含了4,按理说只要执行5就够了,但是由于pip安装常常需要镜像源,一般还是先用4安装,再用5作为双层保险)

    setup.py的作用有两个:

    1. 自动安装requirements.txt的依赖
    2. 将整个项目构建成一个包,让它可以在其他项目中作为一个依赖进行导入
    1
    2
    3
    4
    5
    # 先进入项目路径下
    cd CLIP_MAIN
    # 安装setup.py
    pip install -e .
    或pip install .
  6. 运行项目

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #根据官网提示,在项目路径下创建文件myEntry.py,复制官网提供的代码
    import torch
    import clip
    from PIL import Image

    device = "cuda" if torch.cuda.is_available() else "cpu"
    model, preprocess = clip.load("ViT-B/32", device=device)

    image = preprocess(Image.open("CLIP.png")).unsqueeze(0).to(device)
    text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device)

    with torch.no_grad():
    image_features = model.encode_image(image)
    text_features = model.encode_text(text)

    logits_per_image, logits_per_text = model(image, text)
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()

    print("Label probs:", probs) # prints: [[0.9927937 0.00421068 0.00299572]]

    #执行myEntry.py
    python myEntry.py
  7. 调试项目(Debug-参考利用Docker容器部署GLIP项目最后的Debug部分)

    1. 创建launch.json文件。点击vscode左侧的run and debug窗口=> create a launch.json =>选择Python debugger => Python file,然后就创建了一个launch.json文件

    2. 点击右下角的Python Interpreter,选择服务器端的Python解释器(我选择的是之前安装conda创建的clip_dev这一虚拟环境的Python解释器)

    3. 修改launch.json文件内容

      参考原本开启训练的代码python myEntry.py修改launch.json

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      # 修改项目路径为开启训练时的python文件myEntry.py的绝对路径
      # 修改最后一项"python"对应的值,表示python解释器的地址。如果是conda环境,可以直接在环境中输入which python,即可获得该地址(这一步应该和步骤2是重复的)
      {
      // Use IntelliSense to learn about possible attributes.
      // Hover to view descriptions of existing attributes.
      // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
      {
      "name": "Clip Debug",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}", # 将值修改为/data/xjingyu_data/CLIP_main/myEntry.py
      "console": "integratedTerminal",
      "python": "/home/xjingyu/anaconda3/envs/clip_dev/bin/python"
      }
      ]
      }
    4. 回到文件目录,打断点调试