1. 下载
AdaMML在Github中具有源码,所以我们很简单的就下载下来了。
git clone https://github.com/IBM/AdaMML --depth=1
下面安装一下依赖库
pip3 install torch torchvision librosa tqdm Pillow numpy
下载三个模态的预训练文件,官网 ,下载后放到pretrain文件夹下
2. 数据集准备
首先在跟目录下创建一个data文件夹,把我们视频数据集放入data文件夹下。最终效果如下所示:
|
|
AdaMML使用的是TSN来生成光流,或是使用RGB Diff
近似作为光流,我自己写了一个程序来使用Farneback
算法来生成光流,大家可以直接拷贝
|
|
使用下面命令,进行生成光流图,有点慢,客官可以坐下来喝杯茶等一等。
|
|
规范化数据集,相同类别的放到一个文件夹中,并创建空的WAV文件
|
|
生成注释文件,删除空的WAV文件
|
|
配置datasets_config.py
|
|
修改源码
# 55行有问题需要替换
correct_k = correct[:k].contiguous().view(-1).float().sum(0, keepdim=True)
3. 模型训练
接下来,我们来训练自己的模型: 假如你只想使用RGB模态来训练模型,可以这样做:
python3 train.py --gpu_id 0 --backbone_net adamml -d 50 \
--groups 8 --frames_per_group 4 -b 2 -j 3 --epochs 20 --warmup_epochs 5 --finetune_epochs 10 \
--modality rgb --datadir data/rgbs/ --dataset two-class --logdir log \
--dense_sampling --fusion_point logits --unimodality_pretrained pretrain/kinetics-sounds-rgb-resnet-50.pth.tar \
--learnable_lf_weights --num_segments 5 --cost_weights 1.0 0.005 --causality_modeling lstm --gammas 10.0 --sync-bn \
--lr 0.001 --p_lr 0.01 --lr_scheduler multisteps --lr_steps 10 15
比较重要的参数:
- --gpu_id 0 使用第0个gpu
- --multiprocessing-distributed 多卡训练
- --modality rgb使用rgb模态
- --datadir data/rgbs/ rgb数据集的路径
- --dataset data_config.py中的数据集的配置
- --unimodality_pretrained 单模态的预训练权重
- --warmup_epochs 预热训练数量
- --finetune_epochs 策略网络训练数量
- --epochs 训练总数量
训练多个模态
|
|
评估模型
|
|