2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)

装机

1.镜像文件下载链接(下载速度波动,普遍较慢)https://developer.download.nvidia.com/embedded/L4T/r32_Release_v7.1/JP_4.6.1_b110_SD_Card/Jetson_Nano_2GB/jetson-nano-2gb-jp461-sd-card-image.zip?RD-7BbE2qYSCqxo1YxGkAfCslPzJx2MJV8t6BOeBSPGT2OUS3Kt4OTLZe23-StyZd2cfZ5GtnjxRUG7nhLJUrh43Ri0OEKdUMjz0e9Sjm1TUmeGwupjvN1YnOUddU6Hy4LPK--_4I2ZxpHxT2RnJehYNhQGR03FnYbdZe3-DJdGoRCiiGXdMdcFf9Dai8J32IW3y7GUuCzTpl_v6WpxGUz5gGKNkxhgKi5s&t=eyJscyI6ImJzZW8iLCJsc2QiOiJodHRwczpcL1wvd3d3LmJpbmcuY29tXC8ifQhttps://developer.download.nvidia.com/embedded/L4T/r32_Release_v7.1/JP_4.6.1_b110_SD_Card/Jetson_Nano_2GB/jetson-nano-2gb-jp461-sd-card-image.zip?RD-7BbE2qYSCqxo1YxGkAfCslPzJx2MJV8t6BOeBSPGT2OUS3Kt4OTLZe23-StyZd2cfZ5GtnjxRUG7nhLJUrh43Ri0OEKdUMjz0e9Sjm1TUmeGwupjvN1YnOUddU6Hy4LPK--_4I2ZxpHxT2RnJehYNhQGR03FnYbdZe3-DJdGoRCiiGXdMdcFf9Dai8J32IW3y7GUuCzTpl_v6WpxGUz5gGKNkxhgKi5s&t=eyJscyI6ImJzZW8iLCJsc2QiOiJodHRwczpcL1wvd3d3LmJpbmcuY29tXC8ifQ

2.用balenaEtcher烧录进micro sd卡中(个人建议64GB往上)

3.系统自带CUDA10.2。

不过还需要在.bashrc文件里import path,保存后再source一下。python默认版本2.7。

4.系统自带了显卡驱动,不需要额外安装。

因为当时在import torch,import torchvision以及torch.cuda.is_available()的验证上出了比较大的问题,频繁地更换pytorch以及torchvision的版本,结果还是不理想。晚上正好想到其他设备上安装的话显卡驱动必不可少装好镜像之后nvcc -V可以用,nvidia-smi显示没发现该指令(后来尝试了jtop,挺好用的),包括用ls /usr/src |grep nvidia没有出现nvidia的对应版本号。也一度怀疑pytorch不适配的基本根源就在这。

配置具体版本号以及文件链接

1.Archiconda3(一般在其他设备上anaconda用的比较多,不过这个设备上不适配)

2.接着就是造一个虚拟环境

python版本强烈建议3.6

虽然很多环境配置的要求都是最低3.6,保不准再更新一次就不适配了

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第1张图片

  python3.7,3.8也是多次尝试,要么是上图这种libtorch_global_torch.so找不到该文件的,其实也会把网上常见的,找不到.so文件的解决方案做一个尝试,但是还是不行。后来我发现这种情况比较少见且没有大神给出合适的方案。(链接为github论坛中相同疑问,也是一直没解决)libtorch_global_deps.so not found. · Issue #35597 · pytorch/pytorch · GitHub

但其实之前用的就是3.6的版本,这是为什么想不通准备升级高版本呢?

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第2张图片

忽略最后一句,因为pip版本已经更新过了。而且当时安装的mmdetection也并不是高版本,出现了对python版本的要求还是一狠心就升级了。不过后来一次mmdetection的安装过程中没有报错,还是有玄学的成分在。

激活环境

之前用的一直是conda activate,但是后来逐渐习惯source activate,因为conda activate开始报错,说要把import path从.bashrc文件里去除,有些时候好使,有些时候去除了连conda list都弹不出来。不过source activate一直都是好使的。

3.pytorch/torchvision版本安利1.6.0/0.7.0

其实pytorch只是这个环境里算是最基础的一步了,但是我就是迈不过去,单片机和虚拟机还是不尽相同,没办法照搬照抄,甚至nano系列每个产品都有区别。

上链接吧https://download.pytorch.org/whl/torch_stable.html

所有版本都在链接里,记得看清楚cuda版本,主机系统。

如果用链接下载,记得更改文件名,要不然会报错。

文件名如torch-1.6.0-cp36-cp36m-linux_aarch64.whl,

要不然会报错is not a supported wheel on this platform

第一次装完torch,torchvision是在另外一个平台下载的whl文件。其实那时候没有改文件名,导致一直报这个错误。当时很懵,明明版本对应的,为什么平台不支持。网上还有很多针对性很强的教程。包括新的虚拟环境改用python3.7,3.8后,在whl文件配置的这块都没了大问题(最多就是速度慢点),但是torch.cuda.is_available()一直输出FALSE。这也是后来为什么在第一次mmdetection提示python版本过低之后我还是重新建了python3.6的虚拟环境。

pip/conda下载

pip下载有过尝试,还是可行的,就是下载速度不大乐观。

至于conda,网络上很多言论说conda下载的whl文件是cpu版本的,我倒没有出现这个问题,因为我conda install 一直没法定位获取相关的文件。

4.mmcv1.2.4/mmdet2.10.0

特别是whl文件配置起来特别慢的软件,安装已经很费时间了,这个不import也看不出来是对是错。下图分别为初次安装最新版mmcv及配套的mmdetetction/报错后降版本的mmcv及配套的mmdetetction/git clone了Swin-Transformer-Object-Detection包后环境要求的mmcv及配套的mmdetetction。mmcv的whl文件配置确实慢,但是确实香,尽管版本要求也是一直在变。

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第3张图片

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第4张图片

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第5张图片

5.Aepx

git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./

 跑demo

说实话一路上遇到过很多报错,但是论坛上教程比较完整的错误基本也没有记忆点。那些比较罕见的,尤其是看到论坛上大家讨论,最后也无疾而终的帖子,不自觉就产生的畏难情绪。OSError: mask_rcnn_swin_tiny_patch4_window7.pth is not a checkpoint file · Issue #103 · SwinTransformer/Swin-Transformer-Object-Detection (github.com)

报错:mask_rcnn_swin_tiny_patch4_window7.pth is not a checkpoint file2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第6张图片

 这点要感谢我的师姐,她告诉了我具体的解决措施。

 需要下载官网上针对的pth文件,这样子就可以跑起来了。

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第7张图片

UserWarnig其实没必要在意,因为最后警告不会影响进程。本身还天真的想去把代码段修改一下,好不容易弄懂逻辑就下手了,然后跑起来一片报错。

那进程是被谁杀死了

2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第8张图片

上文说到了jtop,其实看代码跑着的时候就有点担心,从跑起来到被杀死花了2m51s,而且也没有多余的报错。然后我就打开了jtop,从开始运行demo,ram就从0.7一路升到了2,确实想升也升不上去了,运行内存总共只有2GB。

 中道崩殂:预计会置换设备或者用相对而言轻量级的实例分割的demo2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)_第9张图片

 总结

其实论坛上的教程多种多样,解决常见的问题主要就是考察自己的数据收集处理能力。

对于那些特异性比较强的错误,会比较有挑战性。主要还是要理清主要的逻辑脉络,在错误的节点列举多种还没有尝试的可行性方案,抓住主干,就算没做出来也不会慌乱。


你可能感兴趣的:(深度学习,人工智能,pytorch,python,transformer)