用樹莓派4b構(gòu)建深度學(xué)習(xí)應(yīng)用(四)PyTorch篇

?前言

上回我們安裝了OpenCV 4.4,相信對(duì)源碼編譯庫文件有了一定的了解,這篇我們進(jìn)一步在樹莓派上編譯并安裝 Pytorch 的最新版本。

image
image

PyTorch 1.6 的新特性

PyTorch 1.6 版本增加了許多新的 API、用于性能改進(jìn)和性能分析的工具、以及對(duì)基于分布式數(shù)據(jù)并行(Distributed Data Parallel, DDP)和基于遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)的分布式訓(xùn)練的重大更新。部分更新亮點(diǎn)包括:

i. 原生支持自動(dòng)混合精度訓(xùn)練(AMP, automatic mixed-precision training),只需增加幾行新代碼就可以提高大型模型訓(xùn)練50-60% 的速度。

i. 為 tensor-aware 增加對(duì) TensorPipe 的原生支持

i. 在前端 API 增加了對(duì) complex tensor 的支持

i. 新的分析工具提供了張量級(jí)的內(nèi)存消耗信息

i. 針對(duì)分布式數(shù)據(jù)并行訓(xùn)練和遠(yuǎn)程過程調(diào)用的多項(xiàng)改進(jìn)和新功能

增加交換內(nèi)存(可選)

編譯 torch 需要花費(fèi)大量的內(nèi)存,在低于 2g 或以下內(nèi)存的樹莓派上,可以通過增加虛擬內(nèi)存來防止OOM,4g 或 8g 的版本的樹莓派可跳過這步。

1 修改配置文件

sudo nano /etc/dphys-swapfil

設(shè)置 4g 的交換內(nèi)存,文件內(nèi)容如下:

# /etc/dphys-swapfile - user settings for dphys-swapfile package

保存退出,重啟服務(wù)生效。

sudo service dphys-swapfile restart

查看一下 swap 是否已調(diào)整。

swapon -s

PyTorch 安裝環(huán)境依賴 1 安裝依賴首先安裝一些編譯需要的依賴庫:

sudo apt-get install libopenblas-dev cython3 libatlas-base-dev m4 libblas-dev cmake

2 切換虛擬環(huán)境

deactivate   # 退出之前 OpenCV 的虛擬環(huán)境

**編譯安裝 PyTorch ** 1 設(shè)置配置項(xiàng)

export NO_CUDA=1

2 安裝庫文件

pip3 install numpy pyyaml
image

? Tip

務(wù)必確認(rèn)一下虛擬環(huán)境下,已經(jīng)安裝了numpy。沒有numpy的話也能成功編譯,但是編譯出來的PyTorch ****不支持numpy****。PyTorch was compiled without NumPy support。

3 下載源碼及支持庫

git clone https://github.com/pytorch/pytorch.git
image

4 生成whl安裝包

python3 setup.py bdist_wheel 

接下來就是歷時(shí) 5 個(gè)多小時(shí)漫長的編譯過程了,如果說之前編譯 OpenCV 只是去喝杯咖啡就能回來繼續(xù),那編譯 PyTorch 的時(shí)間都?jí)蛉ズ煤盟弦挥X了
image

順便安裝一個(gè)CPU 溫度和使用率工具s-tui,來監(jiān)測一下系統(tǒng)狀態(tài)。

sudo pip install s-tui  --ignore-installed

持續(xù)滿負(fù)荷狀態(tài):

image

5 安裝 PyTorch

cd dist

看到如下信息,就代表安裝成功了。

image

**編譯安裝 Torchvision ** 1 下載源碼

git clone https://github.com/pytorch/vision.git

2 選擇對(duì)應(yīng)版本

pytorch 1.6 對(duì)應(yīng)的 torchvision 是 0.7 的版本,checkout 出來,并安裝 PIL 支持。

pip3 install pillow
image

? Tip

編譯如遇到以上錯(cuò)誤信息,是由于源碼中有兩處****變量類型錯(cuò)誤****,需要用 size_t 強(qiáng)制類型轉(zhuǎn)換一下。修改對(duì)應(yīng)的 seekable_buffer.cpp 和 util.cpp 文件即可。

image

3 安裝 TorchVision

cd dist
image

搞定!

**運(yùn)行 yolo v5 ** 1 克隆 yolov5 源碼

git clone https://github.com/ultralytics/yolov5

2 軟鏈接到 OpenCV

cd ~/my_envs/pytorch/lib/python3.7/site-packages

? Tip

若要?jiǎng)h除軟鏈接,用 rm -rf ./cv2 即可,要注意的是千萬別在最后添加 /。

3 安裝依賴庫

pip install tqdm

4 圖像推理

測試用最小的模型 yolov5s 對(duì)兩張圖片進(jìn)行目標(biāo)檢測,識(shí)別率還不錯(cuò),但速度一般,一張 3.8 秒,一張 2.8 秒,大約 0.3fps,后續(xù)我們可以對(duì)比一下openvino 加速的效果。

cd yolov5
image

到這里,樹莓派里的 pytorch1.6 已經(jīng)可以正常工作了。

資料下載

image

若想跳過冗長的編譯過程,可以直接下載whl,然后用 pip install 進(jìn)行安裝即可?;?python 3.7 的版本,除了 pytorch 1.6 + torchvision 0.7,我還編譯了最新的 pytorch 1.7 + torchvision 0.8(安裝時(shí)要注意版本匹配)。本期相關(guān)文件資料,可在公眾號(hào)后臺(tái)回復(fù):“rpi04”,獲取下載鏈接。

下一篇

我們將開始安裝 Tensorflow 的開發(fā)環(huán)境,
并運(yùn)行一下 tensorflow lite,
看一下裸板樹莓派推理的極限速度,
敬請期待...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容