Commit 04f08504 authored by Sugon_ldc's avatar Sugon_ldc
Browse files

modify readme

parent fa667fea
# Vision-Transformers-cifar10_PyTorch
## 模型介绍
Vision Transformers (ViT) 是一种基于 Transformer 的视觉模型,它在图像分类任务上表现出了与当前最先进的卷积神经网络相当的性能。而ViT模型是使用Transformer架构来代替传统卷积神经网络的。ViT模型的核心思想是将输入的图像分割成数个图块(patch),然后将这些图块拼接成一个序列,再输入到Transformer中进行特征提取和分类。
# Vision-Transformers-cifar10_pyTorch
## 论文
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale`
- https://arxiv.org/abs/2010.11929
## 模型结构
Vision Transformer先将图像用卷积进行分块以降低计算量,再对每一块进行展平处理变成序列,然后将序列添加位置编码和cls token,再输入多层Transformer结构提取特征,最后将cls tooken取出来通过一个MLP(多层感知机)用于分类。
Vision Transformers (ViT) - CIFAR10 模型的结构基于 Transformer 的视觉模型,其核心思想是将输入的图像分割成数个图块(patch),然后将这些图块拼接成一个序列,再输入到 Transformer 中进行特征提取和分类。
具体来说,该模型的输入是一张 $32\times32$ 的彩色图像,其中每个图像被分割成 $4\times4$ 个大小为 $8\times8$ 的图块。这些图块被重塑为一个序列,并传递给 Transformer 编码器进行特征提取。在编码器中,每个序列元素(即每个图块)都经过一个多头自注意力机制(Multi-Head Self-Attention)模块和一个前馈网络模块(Feed-Forward Network)进行处理。这些模块的输出被送入下一层编码器,直到最终输出分类结果。
![img](./img/vit.png)
## 算法原理
图像领域借鉴《Transformer is all you need!》算法论文中的Encoder结构提取特征,Transformer的核心思想是利用注意力模块attention提取特征:
该模型的主要组成部分是由多个 Transformer 编码器层组成的。每个编码器层由一个多头自注意力机制模块和一个前馈网络模块组成。这些编码器层之间使用残差连接(Residual Connection)连接,以便有效地传播信息和减轻梯度消失问题。
最后,模型的输出通过一个全连接层进行分类,该层将 Transformer 编码器的输出展平为一维张量,并对其进行分类。整个模型的训练过程使用交叉熵损失函数进行优化。
## 数据集
本次使用的数据集为[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html),CIFAR-10数据集由10类中的60000 32x32颜色图像组成,每个类别有6000张图像。有50000个训练图像和10000个测试图像。
该数据集分为五个训练批次和一批测试批次,每个测试批次有10000张图像。该测试批次完全包含来自每个类的1000个随机选择的图像。训练批次包含剩余的图像,但有些训练批次可能包含一个班级的图像,而不是另一个班级的图像。在他们之间,训练批次包含每个班级的5000张图像。
## 训练及推理
### 环境配置
![img](./img/attention.png)
## 环境配置
### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
提供光源拉取的训练镜像
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
cd /path/workspace/
pip install pandas==1.5.3
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
### Dockerfile(方法二)
此处提供dockerfile的使用方法
```
cd ./docker
docker build --no-cache -t yolov5:6.0 .
docker run -it -v /path/your_code_data/:/path/your_code_data/ --shm-size=32G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name docker_name imageID bash
```
### Anaconda(方法三)
此处提供本地配置、编译的详细步骤,例如:
安装依赖:
关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
DTK驱动:dtk22.10
python:python3.8
torch:1.10
torchvision:0.10.0
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
其它非深度学习库参照requirements.txt安装:
```
pip install -r requirements.txt
pip install pandas==1.5.3
```
## 数据集
`CIFAR-10`
创建软链接
- [https://www.cs.toronto.edu/~kriz/cifar.html](https://www.cs.toronto.edu/~kriz/cifar.html)
训练数据目录结构如下,用于正常训练的完整数据集请按此目录结构进行制备:
```
ln -s datasets/cifar10 data
├── cifar-10-batches-py
│   ├── batches.meta
│   ├── data_batch_1
│   ├── data_batch_2
│   ├── data_batch_3
│   ├── data_batch_4
│   ├── data_batch_5
│   ├── readme.html
│   └── test_batch
```
**tips:请注意在程序中设置数据集路径时,应该设置cifar-10-batches-py的上一级目录,否则会报错找不到文件**
若需要指定路径,也可以在工程根目录的train_cifar10.py中修改(修改130行左右的trainset和testset变量即可)
开始训练
## 训练
一般情况下,ModelZoo上的项目提供单机训练的启动方法即可,单机多卡、单机单卡至少提供其一训练方法。
### 单机多卡
```
bash train.sh
#默认使用四卡训练,可在train.sh脚本中修改
```
## 准确率数据
## result
| 卡数 | 准确率 |
| :--: | :----: |
| 4 | 84.91% |
![accuracy](./img/accuracy.png)
### 精度
测试数据:[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html),使用的加速卡:DCU Z100L。
根据测试结果情况填写表格:
| 卡数 | 数据精度 | 准确率 |
| :------: | :------: | :------: |
| 4 | fp32 | 84.91% |
## 应用场景
### 算法类别
## 源码仓库及问题反馈
`图像分类`
https://developer.hpccube.com/codes/modelzoo/vision-transformers-cifar10_pytorch
### 热点应用行业
`制造,环境,医疗,气象`
## 参考
https://github.com/kentaroy47/vision-transformers-cifar10
\ No newline at end of file
## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/vision-transformers-cifar10_pytorch
## 参考资料
- https://github.com/kentaroy47/vision-transformers-cifar10
FROM image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
RUN source /opt/dtk/env.sh
COPY requirments.txt requirments.txt
RUN pip3 install -r requirements.txt
pip3 install pandas==1.5.3
#模型编码
modelCode=192
# 模型名称
modelName= Vision-Transformers-cifar10_PyTorch
modelName= Vision-Transformers-cifar10_pyTorch
# 模型描述
modelDescription=Vision Transformers (ViT) 是一种基于 Transformer 的视觉模型
modelDescription=Vision-Transformers是一种基于Transformer架构的深度学习模型,用于解决计算机视觉任务。与传统的卷积神经网络(CNN)不同,Vision-Transformers将自注意力机制引入了图像处理领域,以捕捉不同位置之间的像素关系。
# 应用场景(多个标签以英文逗号分割)
appScenario=训练,pytorch,transformer
appScenario=图像分类,制造,环境,医疗,气象
# 框架类型(多个标签以英文逗号分割)
frameType=PyTorch
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment