PLAI是一個基于PyTorch的神經網絡量化工具 - 用于將浮點神經網絡轉換為定點 神經網絡實現(給GTI 2801s使用), 或從頭開始訓練定點模型。 PLAI使用主機的CPU和GPU進行訓練,使用GTI NPU USB Dongle進行推理驗證。
PLAI現支持GNet1、GNet18和GNetfc三種基于VGG-16的模型。
PLAI運行硬件要求如下:
- Intel i5 3.0 GHz及以上主頻或者更高性能CPU (Intel i7為較佳選擇)
- 8 GB及以上內存
- 獨立顯卡6GB及以上顯存,推薦使用GTX 1060及以上顯卡,AMD顯卡不適用。(此項為可選,但強烈推薦,可大大縮短訓練時間)
PLAI最終會使用USB Dongle進行推理測試,如果有則可以進行配置使用。
PLAI現支持以下系統:
- Ubuntu LTS 16.04
- Windows 10
- Python3
- PyTorch
- OpenCV
- CUDA 9.0及以上版本(可選)
這里以使用Miniconda進行環境配置為例。
安裝過程如下:
ubunut16.04:~$ sudo chmod +x Downloads/Miniconda3-latest-Linux-x86_64.sh ubunut16.04:~$ ./Downloads/Miniconda3-latest-Linux-x86_64.sh Welcome to Miniconda3 4.5.11 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> (回車) ... Do you accept the license terms? [yes|no] [no] >>> yes(回車) ... - Press CTRL-C to abort the installation - Or specify a different location below [/home/firefly/miniconda3] >>> (回車) ... (安裝過程) Do you wish the installer to prepend the Miniconda3 install location to PATH in your /home/firefly/.bashrc ? [yes|no] [no] >>> yes(回車)
以上將Miniconda安裝在用戶根目錄miniconda3下,同時設置默認使用Miniconda的程序。
可以通過以下操作使Miniconda生效并測試:
ubunut16.04:~$ source ~/.bashrc ubunut16.04:~$ conda -V conda 4.5.11
接著,如果有英偉達獨立顯卡加速,可以通過以下操作安裝PyTorch和OpenCV:
否則,請執行以下操作:
ubunut16.04:~$ conda install pytorch-cpu torchvision-cpu -c pytorch ubunut16.04:~$ pip install opencv-contrib-python
如果有顯卡加速可參考此頁面進行安裝配置,否則可跳過此步驟。
cuda安裝操作摘抄如下:
ubunut16.04:~$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb ubunut16.04:~$ sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb ubunut16.04:~$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub ubunut16.04:~$ sudo apt-get update ubunut16.04:~$ sudo apt-get install cuda
最后,進行USB Dongle配置(可選),可在PLAI目錄下執行以下操作配置并驗證:
ubunut16.04:~/PLAI$ sudo cp lib/python/gtilib/*.rules /etc/udev/rules.d/ ubunut16.04:~/PLAI$ ls /dev/sg* -l crw-rw-rw- 1 root disk 21, 0 11月 20 10:28 /dev/sg0 crw-rw-rw- 1 root disk 21, 1 11月 20 10:28 /dev/sg1
如果出現未找到設備的情況請參考常見問題進行排查。
待完善…(可部分參考Ubuntu的配置過程)
以下操作可測試環境完整性,如無錯誤,則配置完成。
ubunut16.04:~$ python Python 3.7.0 (default, Jun 28 2018, 13:15:42) [GCC 7.2.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch,cv2 >>> torch.cuda.is_available() True >>>
- num_classes - 數據集分類個數,即data/train和data/val中的文件夾(分類)數
- max_epoch - 所有訓練向量一次用于更新權重的次數
- learning_rate - 確定權重變化的速度
- train_batch_size - 根據GPU內存設置
- test_batch_size - 根據GPU內存設置
- mask_bits - 表示每個主層(卷積層)的掩碼
- act_bits - 表示每個主層(卷積層)的激活參數
- resume - 設置是否從一個已知的checkpoint中開始訓練
- finetune - 可選項, 啟用此項通常能得到更高的精度
- full - 設置是否訓練一個全精度模型
mask_bits和act_bits參數參考如下:
-
GNetfc
- mask_bits: 3,3,1,1,1,1
- act_bits: 5,5,5,5,5,5
-
GNet18
- mask_bits: 3,3,3,3,1
- act_bits: 5,5,5,5,5
-
GNet1
- mask_bits: 3,3,1,1,1
- act_bits: 5,5,5,5,5
PLAI.py暫不支持命令行參數,需要修改PLAI.py源碼。
通常修改源碼位置大約在142行,原始內容如下:
gtiPLAI = PLAI(num_classes=2, data_dir=data_dir, checkpoint_dir=checkpoint_dir, model_type=0, module_type=1, device_type=1)
- num_classes - 可在training.json中設置
- data_dir - 默認為data目錄
- checkpoint_dir - 默認為checkpoint目錄
- model_type - 設置訓練的模型,0: GNetfc, 1: GNet18, 2:GNet1
- module_type - 0: Conv(w/o bias) + bn + bias,1: Conv(w/ bias) + bn
- device_type - 用于推理的GTI設備類型,ftdi: 0, emmc: 1
將訓練圖片數據按類型存放到PLAI data目錄下以類型名命名的文件夾中,然后調整training.json和修改PLAI.py(默認網絡模型為GNetfc)在PLAI根目錄下執行以下操作即可。
ubunut16.04:~$ python PLAI.py
訓練結束會生成coefDat_2801.dat、coefBin_2801.bin(GNetfc沒有此文件)和data/pic_label.txt,如果是GNet1可用到AI資料U盤中的sample中測試。 其中userinput.txt可在PLAI nets目錄下找到,如netConfig_2801_gnet1.txt。使用示例如下:
liteSample -c coefDat_2801.dat -u netConfig_2801_gnet1.txt -f coefBin_2801.bin -l pic_label.txt
測試時請注意userinput.txt即-u
參數文件中的設備節點是否正確。
-
WINDOWS
+關注
關注
3文章
3541瀏覽量
88624 -
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35296 -
Firefly
+關注
關注
2文章
538瀏覽量
7027
發布評論請先 登錄
相關推薦
評論