第四届计图人工智能挑战赛

开放域少样本视觉分类赛题 A榜代码

## 简介
在人工智能的快速进展中，视觉语言模型已经成为计算机视觉领域的重要技术。这些模型在多任务处理上表现出色，显示出广泛的应用潜力。
但是，在数据标注成本高昂的情况下，面对特定领域的挑战时，它们的表现还需提升。因此，如何在少量数据的支持下提高模型在特定领域的表现，
已成为当下研究的热点问题。同时，使用少量数据增强多个领域上的表现，更具有挑战性。因此，要求参赛者使用极少的多领域训练样本，探索在大模型时代下模型训练的创新策略，实现对多领域数据组成的测试集准确地分类。

本项目包含了第四届计图人工智能挑战赛 - 开放域少样本视觉分类赛题-A榜的代码实现。本项目的特点是：
使用 CLIP 模型进行零样本分类器的构建。在官方提供的训练数据集中，对于每个类别，从数据集中挑出任意4张图片训练模型，共1496张图片，构成模型训练集；
剩余180233张图片作为模型测试集，用测试集中所有的数据对模型进行测试。首先冻结OpenAI官方预训练的ViT-B/32版本的CLIP模型中的全部图像层，
再利用Adan优化器训练模型，训练100个epoch，每隔5个epoch进行对模型进行保存，具体训练参数可参考train_clip.py；完成CLIP模型训练后，运行test_clip.py
用测试集中所有的数据和自定义的提示词对保存的模型(['min_loss', 20, 50, 70, 90, 100])进行测试，测试结果保存在/ckptFE/test.log中，再选取测试精度最好的模型和对应的提示词，运行predict.py文件，在官方给定的数据中进行测试，输出"result.txt"。
选择“min_loss.pth”模型，提交官方系统测试，top1的精度是0.6788。

## 安装 
| 介绍基本的硬件需求、运行环境、依赖安装方法

本项目可在 1 张 RTX TITAN 24G 上运行，训练时间约为 1 小时。

#### 运行环境
- ubuntu 18.04 LTS
- python >= 3.7
- jittor >= 1.3.0

#### 安装依赖
执行以下命令安装 python 依赖
```
pip install -r requirements.txt
```

#### 预训练模型
预训练模型使用关完提供了ViT-B/32版本的CLIP模型的Jittor版，下载后放入目录 `/pretrained` 下。

将数据下载解压到 `/Dataset` 下。

## 训练可运行以下命令：

python train_clip.py

## 用测试集中所有的数据和自定义的提示词对保存的所有模型进行测试

生成测试集上的结果可以运行以下命令：

```
python test_clip.py
```

## 在官方给定的数据中进行测试可以运行以下命令：

```
python predict.py
```