Commit fe2ea1ea authored by Sugon_ldc's avatar Sugon_ldc
Browse files

modify readme

parent 3bbeddb7
# TSM_PyTorch算力测试 # 算法名简写(英文简写大写)
## 论文
## 1.模型介绍 `TSM: Temporal Shift Module for Efficient Video Understanding`
TSM(Temporal Shift Module)是一种用于视频分类的模型,它使用时间平移操作将视频中的不同时间段进行分离,然后使用二维卷积神经网络对这些时间段进行分类。TSM模型采用了时间平移和空间卷积两种模块来实现视频分类。 - [TSM: Temporal Shift Module for Efficient Video Understanding](https://openaccess.thecvf.com/content_ICCV_2019/html/Lin_TSM_Temporal_Shift_Module_for_Efficient_Video_Understanding_ICCV_2019_paper.html)
## 模型结构
在时间平移模块中,TSM模型通过将视频的每个时间片段进行平移来实现时间分离。这样,每个时间片段都可以被独立地处理。平移操作通过将视频分成多个时间段,并对这些时间段进行随机平移和拼接而实现。 TSM模型的结构由一个时间偏移模块和一个分类器组成,其中时间偏移模块通过将输入的视频特征序列进行平移来利用不同时间偏移版本的信息,而分类器则用于对经过时间偏移的特征进行分类。
在空间卷积模块中,TSM模型使用了二维卷积神经网络对每个时间片段进行分类。这样,模型可以学习到每个时间片段中的空间特征,并将这些特征用于分类。 ![TSM_model](TSM_model.png)
TSM模型在视频分类任务上取得了很好的效果,特别是在大规模视频数据集上。
## 算法原理
## 2.模型结构 TSM模型通过在时间维度上应用偏移操作,将输入的视频特征序列进行平移,从而利用时间信息的不同偏移版本来增强模型对视频动态变化的感知能力。
TSM(Temporal Shift Module)模型结构主要由时间平移模块和二维卷积神经网络组成。 ![TSM_model2](C:\Users\baita\Desktop\Modelzoo\TSM\TSM_model2.png)
时间平移模块使用时间平移操作将视频中的不同时间段进行分离。具体来说,时间平移模块将视频的每个时间片段划分为多个组,然后对每个组进行随机平移和拼接,以实现时间分离。这样,每个时间片段都可以被独立地处理,从而提高了模型的效率和准确率。
## 环境配置
二维卷积神经网络用于对每个时间片段进行分类。具体来说,TSM模型使用了一系列的卷积层、池化层和批归一化层来提取每个时间片段中的空间特征,并将这些特征用于分类。TSM模型中的卷积层通常采用3x3或5x5大小的卷积核,以捕捉不同尺度的空间特征。此外,TSM模型还使用了残差连接和注意力机制等技术来提高模型的效率和准确率。 ### Docker(方法一)
此处提供[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤
总体来说,TSM模型结构是一个深度卷积神经网络,它使用时间平移操作将视频中的不同时间段进行分离,并使用二维卷积神经网络对每个时间片段进行分类。这种结构能够有效地提高模型的效率和准确率,在大规模视频分类任务中取得了很好的效果。 ```
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
## 3.数据集 ```
### Dockerfile(方法二)
使用Something-Something V2数据集,Something-Something V2是一个大规模的视频动作识别数据集,由纽约大学、谷歌、MIT等机构联合发布。该数据集包含220,847个视频剪辑,每个视频剪辑由一系列手势动作组成,这些手势动作可以是简单的动作,例如“拍手”、“摆手”等,也可以是复杂的动作,例如“穿衣服”、“打扫卫生”等。每个动作剪辑的平均长度为2.75秒,总时长为600小时,这些视频剪辑都是在真实场景下拍摄的,包括不同的光照、背景和物体等。 此处提供dockerfile的使用方法
```
Something-Something V2数据集是一个挑战性的数据集,需要模型具备对复杂场景下的手势动作进行准确分类的能力。该数据集可以用于视频动作识别、行为分析、视频检索等任务的研究和评估。 cd ./docker
docker build --no-cache -t yolov5:6.0 .
## 4.训练 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/)开发者社区下载安装。
``` ```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest DTK驱动:dtk22.10
``` python:python3.8
torch:1.10
### 数据预处理 torchvision:0.10
mmcv-full:1.6.1+gitdebbc80.dtk2210
在/workspace/mmaction2目录下创建data子目录,进入data目录,创建软链接指向数据集实际路径: ```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`
```
ln -s /dataset/ sthv2 ## 数据集
``` `something v2`
使用如下指令进行解压 - 百度网盘:
``` https://pan.baidu.com/s/1NCqL7JVoFZO6D131zGls-A#list/path=%2F&parentPath=%2Fsharelink3725532333-553839935448680 密码:07ka
cat 20bn-something-something-v2-?? | tar zx
``` ### 数据预处理
解压完成后使用如下命令抽取RGB帧 进入工程目录后,创建data子目录,进入data目录,创建软链接指向数据集实际路径:
```
``` cd tsm_pytorch
bash extract_rgb_frames_opencv.sh mkdir data
``` cd data
ln -s /dataset/ sthv2
```
使用如下指令进行解压
## 准确率数据
```
| 卡数 | 准确率 | cat 20bn-something-something-v2-?? | tar zx
| :--: | :----: | ```
| 4 | 59.14% |
解压完成后使用如下命令抽取RGB帧
```
## 源码仓库及问题反馈 bash extract_rgb_frames_opencv.sh
```
http://developer.hpccube.com/codes/modelzoo/tsm_pytorch.git
预处理之后,目录结构如下:
```
## 参考 ├── 20bn-something-something-v2-00
├── 20bn-something-something-v2-01
https://github.com/open-mmlab/mmaction2 ├── 20bn-something-something-v2-02
├── 20bn-something-something-v2-03
https://download.openmmlab.com/mmaction/recognition/tsm/tsm_r50_1x1x8_50e_sthv2_rgb/20210816_224310.log ├── 20bn-something-something-v2-04
├── 20bn-something-something-v2-05
├── 20bn-something-something-v2-06
├── 20bn-something-something-v2-07
├── 20bn-something-something-v2-08
├── 20bn-something-something-v2-09
├── 20bn-something-something-v2-10
├── 20bn-something-something-v2-11
├── 20bn-something-something-v2-12
├── 20bn-something-something-v2-13
├── 20bn-something-something-v2-14
├── 20bn-something-something-v2-15
├── 20bn-something-something-v2-16
├── 20bn-something-something-v2-17
├── 20bn-something-something-v2-18
├── 20bn-something-something-v2-19
├── annotations
├── rawframes
├── something-something-v2-labels.json
├── something-something-v2-test.json
├── something-something-v2-train.json
├── something-something-v2-validation.json
├── sthv2_train_list_rawframes.txt
├── sthv2_val_list_rawframes.txt
└── videos
```
## 训练
一般情况下,ModelZoo上的项目提供单机训练的启动方法即可,单机多卡、单机单卡至少提供其一训练方法。
### 单机多卡
```
bash train.sh
```
### 单机单卡
```
bash train_single.sh
```
## result
测试的日志会以tsm_dcu_date.log的形式保存在工程的根目录中
### 精度
测试数据:something v2,使用的加速卡:Z100L。
根据测试结果情况填写表格:
| 卡数 | 准确率 |
| :------: | :------: |
| 4 | 59.14% |
## 应用场景
### 算法类别
`视频分析,动作识别`
### 热点应用行业
`交通,政府,家居`
## 源码仓库及问题反馈
- http://developer.hpccube.com/codes/modelzoo/tsm_pytorch.git
## 参考资料
- https://github.com/open-mmlab/mmaction2
ARG PYTORCH="1.6.0" FROM image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
ARG CUDA="10.1" RUN source /opt/dtk/env.sh
ARG CUDNN="7"
FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel
ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV CMAKE_PREFIX_PATH="$(dirname $(which conda))/../"
# To fix GPG key error when running apt-get update
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub
RUN apt-get update && apt-get install -y git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 ffmpeg \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install MMCV
RUN pip install --no-cache-dir --upgrade pip wheel setuptools
RUN pip install --no-cache-dir mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
# Install MMAction2
RUN conda clean --all
RUN git clone https://github.com/open-mmlab/mmaction2.git /mmaction2
WORKDIR /mmaction2
RUN mkdir -p /mmaction2/data
ENV FORCE_CUDA="1"
RUN pip install cython --no-cache-dir
RUN pip install --no-cache-dir -e .
ARG PYTORCH="1.9.0"
ARG CUDA="10.2"
ARG CUDNN="7"
FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel
ARG MMCV="1.3.8"
ARG MMACTION="0.24.0"
ENV PYTHONUNBUFFERED TRUE
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
ca-certificates \
g++ \
openjdk-11-jre-headless \
# MMDET Requirements
ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \
libsndfile1 libturbojpeg \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="/opt/conda/bin:$PATH"
RUN export FORCE_CUDA=1
# TORCHSEVER
RUN pip install torchserve torch-model-archiver
# MMLAB
ARG PYTORCH
ARG CUDA
RUN ["/bin/bash", "-c", "pip install mmcv-full==${MMCV} -f https://download.openmmlab.com/mmcv/dist/cu${CUDA//./}/torch${PYTORCH}/index.html"]
# RUN pip install mmaction2==${MMACTION}
RUN pip install git+https://github.com/open-mmlab/mmaction2.git
RUN useradd -m model-server \
&& mkdir -p /home/model-server/tmp
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh \
&& chown -R model-server /home/model-server
COPY config.properties /home/model-server/config.properties
RUN mkdir /home/model-server/model-store && chown -R model-server /home/model-server/model-store
EXPOSE 8080 8081 8082
USER model-server
WORKDIR /home/model-server
ENV TEMP=/home/model-server/tmp
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["serve"]
inference_address=http://0.0.0.0:8080
management_address=http://0.0.0.0:8081
metrics_address=http://0.0.0.0:8082
model_store=/home/model-server/model-store
load_models=all
#!/bin/bash
set -e
if [[ "$1" = "serve" ]]; then
shift 1
torchserve --start --ts-config /home/model-server/config.properties
else
eval "$@"
fi
# prevent docker exit
tail -f /dev/null
# 模型唯一标识
modelCode = 177
# 模型名称 # 模型名称
modelName=TSM_PyTorch modelName=tsm_pytorch
# 模型描述 # 模型描述
modelDescription=TSM(Temporal Shift Module)是一种用于视频分类的模型 modelDescription=TSM模型是一种基于时序建模的深度学习算法,利用时间偏移增强视频帧序列的表示能力,用于提高视频动作识别的准确性和鲁棒性。
# 应用场景(多个标签以英文逗号分割) # 应用场景
appScenario=训练,pytroch,视频分类 appScenario=训练,交通,政府,家居
# 框架类型(多个标签以英文逗号分割) # 框架类型
frameType=PyTorch frameType=pytorch
#!/usr/bin/env bash
export HIP_VISIBLE_DEVICES=0
./tools/dist_train.sh configs/recognition/tsm/tsm_r50_1x1x8_50e_sthv2_rgb.py 1 --validate --seed 0 --cfg-options model.backbone.pretrained=/jiutiandata/7.4/resnet50_8xb32_in1k_20210831-ea4938fc.pth optimizer.lr=0.005 data.videos_per_gpu=8 data.val_dataloader.videos_per_gpu=16 data.test_dataloader.videos_per_gpu=3 data.workers_per_gpu=4 evaluation.interval=1 --log_dir pid.txt 2>&1 | tee tsm_dcu_`date +%Y%m%d%H%M%S`.log
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