SlowFast是Facebook公司开发的一个可用于人体行为识别等的神经网络。项目地址:GitHub - facebookresearch/SlowFast: PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video models.
由于NVIDIA Jetson 平台的特殊性,在部署SlowFast时会遇到Python等的版本冲突问题,在此平台上部署比在一般linux平台上部署更加复杂。部署的时候走了太多弯路了,把部署的过程总结成本博客。
最终成功在NVIDIA Jetson Xavier开发版上复现。复现后的效果已上传至B站:
SLowFast复现——基于NVIDIA Jetson platform_哔哩哔哩_bilibili
由于Xavier无法安装Anaconda,但是有替代品,名字是miniforge。安装miniforge,创建虚拟环境,使用conda activate ×× 进入虚拟环境。
在此建议安装miniforge方便环境管理,同时可以创建python3.8的环境,python3.6的环境不能满足SlowFast项目中的pytorchvideo的版本匹配要求。
miniforge的使用方法如下:Nvidia Jetson AGX Xavier安装ROS、Anaconda、PyTorch及其它依赖库 - 灰信网(软件开发博客聚合) (freesion.com)
python>=3.8(SlowFast项目需要),pytorch>=1.8.1(detectron2和fairscale需要)
python>=3.7(pytochvideo)
在部署SlowFast的过程中,解决项目所需库之间的匹配、库和环境及硬件平台间的匹配是主要的问题之一。需要注意以上版本需求,后文会介绍部署方法和遇到的问题。最终安装的版本为python3.8,pytorch1.8.1。
SlowFast的requirements:
下图中可以看到,pytorchvideo 0.1.3需要python>=3.7:
2.1 成功安装方法:
方法一:from source build,从源文件编译,得到.wheel,进而安装pytorch 1.8.1
参考英伟达论坛官网的编译方法即可,参考:PyTorch for Jetson - version 1.11 now available - Jetson Nano - NVIDIA Developer Forums
当时在英伟达论坛官网上的提问与专家给我的答复:
Jetson AGX Xavier Pytorch Wheel files for latest Python 3.8/3.9 versions with CUDA 10.2 support - Jetson & Embedded Systems / Jetson AGX Xavier - NVIDIA Developer Forums
注意:这个项目里面引用了其他的项目,即使使用gitee镜像,想要完整地将项目克隆到本地,还需要使用git clone-- recursive 命令,将项目中的子项目也克隆下来,然而,子项目的原项目地址一般来自github等境外服务器,需要科学上网方法。
方法二:可以直接使用.wheel文件,在此贡献出笔者自己编译的.wheel。英伟达官方暂未提供wheel,网上也没有此资源。
torch-1.8.1-cp38-cp38-linux_aarch64.whl-深度学习文档类资源-CSDN下载
在wheel所在目录下,在终端执行下面的命令,安装pytorch。
pip install torch-1.8.1-cp38-cp38-linux_aarch64.whl
2.2jetson 编译pytorch时出现:internal compiler error: Segmentation fault
解决:按照这个提交修改代码: Workaround arm64 gcc error in std::copysign on Jetson platforms
2.3 总结:深度学习需要使用GPU资源,因此需要安装与开发板算力匹配的cuda版本的pytorch,同时不能直接安装linux版本的。考虑与python的版本匹配,在python 3.8环境下,需要pytorch1.8.1。由于NVIDIA Jetson平台的特殊性,需要从pytorch官网下载完整的pytorch源文件,再执行build命令,得到.wheel,进而安装pytorch 1.8.1。
准备预训练模型、准备ava.json文件、yaml文件和素材(此步骤可以参考其他博主的复现教程)
依次执行:
export PYTHONPATH=/media/kokoro/writable/home/ubuntu/PycharmProjects/SlowFast-main/slowfast:$PYTHONPATH
python tools/run_net.py --cfg demo/AVA/SLOWFAST_32x2_R101_50_50.yaml
python tools/run_net.py --cfg demo/AVA/SLOWFAST_32x2_R101_50_50.yaml
略。想起来再补。(懒人,估计不会再补了。。。)
百度是我们最好的朋友,啾咪~
关于SlowFast项目的其他内容,可以参见我的另一篇博客:(1条消息) 【SlowFast】中的.yaml配置文件_热爱学习的QQ牛里脊肉的博客-CSDN博客