特別說明:
文章轉(zhuǎn)載自:https://ouxinyu.github.io/Blogs/20140723001.html
Caffe 官網(wǎng)地址:http://caffe.berkeleyvision.org/
這篇安裝指南衷敌,適合零基礎(chǔ)缴罗,新手操作,請高手勿要吐槽弓柱!
簡單介紹一下:Caffe,一種Convolutional Neural Network的工具包航罗,和Alex的cuda-convnet功能類似屁药,但各有特點。都是使用C++ CUDA進行底層編輯复亏,Python進行實現(xiàn)缭嫡,原作主要部署于Ubuntu,也有大神發(fā)布了Windows版耕突,但其他相關(guān)資料較少,不適合新手使用眷茁,所以還是Ubuntu的比較適合新手上祈。(相對而言)
本文主要包含5個部分,包括:
第一部分 Linux安裝
第二部分 nVidia驅(qū)動和CUDA Toolkit的安裝和調(diào)試(*.deb方法荤懂,特別推薦)
第二部分 nVidia驅(qū)動和CUDA Toolkit的安裝和調(diào)試(*.run方法)
第三部分 Python安裝和調(diào)試
第四部分 Matlab安裝和調(diào)試
第五部分 Caffe的安裝和測試
第一部分 Linux安裝
Linux的安裝塘砸,如果不是Linux粉,只是必須廊宪,被迫要用它來作作科研什么的女轿,建議安裝成雙系統(tǒng),網(wǎng)上方法很多傅寡,這里我就不詳細寫了北救,安裝還算是傻瓜式的,和windows的過程類似托启,至于語言攘宙,如果覺得難度還不夠大的話,完全可以裝E文版的疗绣,甚至日文铺韧,德文~~~,我是裝的簡體中文版工窍,我總共用分出的500G的空間來安裝Ubuntu 14.04,這個版本是最新的版本患雏,有個好處是,可以直接訪問Windows8.1的NTFS分區(qū)丙挽,不用做額外的操作匀借,而且支持中文,例如:$ cd /media/yourname/分區(qū)名字/文件夾名凳怨,當(dāng)然GUI就更方便了.
我的分區(qū)設(shè)置如下:
根分區(qū): \ 100G肤舞,
Swap交換分區(qū):16G 均蜜,這里,我設(shè)置和我的內(nèi)存一樣篙顺,據(jù)說小于16G的內(nèi)存充择,就設(shè)置成內(nèi)存的1.5-2倍
boot分區(qū):200M
Home分區(qū):剩余的空間,鑒于Imagenet化焕,PASCAL VOC之類的大客戶铃剔,建議500G查刻,至少300G以上。
PS:解決啟動分區(qū)錯誤
基本上普气,重裝起來佃延,都會破壞原來的啟動分區(qū)表,還原Windows分區(qū)的一個簡單辦法:
$ sudo gedit etc/default/grub
設(shè)置:GRUB_DEFAULT = 2
$ sudo update-grub
該方法適用于安裝雙系統(tǒng)后仔沿,"看得到Linux,看不到Windows”的情況绵跷,反過來的話成福,請大家自己百度吧。
PS:關(guān)于我的筆記本的特例净当,僅供類似設(shè)備的參考
筆記本配置:技嘉P35X v3握侧,i7-4720HQ@2.6G/16G/NVidia GTX 980 4G/Intel HD 4600/128G SSD*2 + 2T SATA *2
我的兩組硬盤SSD和SATA分別做Raid 0,目的是合并邏輯分區(qū)埋合,沒有考慮冗余備份問題萄传,最后的狀態(tài)是2個邏輯硬盤塊256G SSD + 4T SATA,用的GPA分區(qū)振诬,最后導(dǎo)致利用Ubuntu的GRUB啟動界面找不到Windows分區(qū)赶么。所以上面的方法失效脊串。不過,可以通過筆記本的F12和Bios設(shè)置來實現(xiàn)啟動分區(qū)的選擇放闺,并且我用Linux的機會很少缕坎,所以也就如此處理了,Linux高手可以自己折騰一下Grub啟動匾寝。Ubuntu 15.04安裝在SATA邏輯分區(qū),SSD分區(qū)安裝Windows8.1踩萎。
第二部分兩種安裝方法很钓,任選其一即可,推薦第一種方法(*.deb方法)企孩。
關(guān)于安裝完CUDA進入不了桌面的問題袁稽,大概和顯卡的版本、驅(qū)動版本补疑、系統(tǒng)都有關(guān)系歹撒,所以以下幾種方法,可以考慮嘗試(雖然是互斥的锹杈,但是都出現(xiàn)過解決此問題的情況)迈着。1. 安裝CUDA時,不安裝OpenGL咬清;2.不安裝獨立下載的顯卡驅(qū)動旧烧,只安裝CUDA內(nèi)置的萤彩;3. 不安裝CUDA內(nèi)置驅(qū)動斧拍,只安裝Toolkit,另外安裝官網(wǎng)下載的最新的顯卡驅(qū)動愚墓;4. 安裝完成后,切忌自動更新Linux系統(tǒng)扫腺。
第二部分:nVidia驅(qū)動和CUDA Toolkit的安裝和調(diào)試(*.deb方法)
PS:特別推薦*.deb的方法村象,目前已提供離線版的deb文件,該方法比較簡單躁劣,不需要切換到tty模式库菲。這里以CUDA 7.0為例。
一鳖擒、CUDA Repository
獲取CUDA安裝包,安裝包請自行去NVidia官網(wǎng)下載烫止。
$ sudo dpkg -i cuda-repo-ubuntu1410-7-0-local_7.0-28_amd64.deb
$ sudo apt-get update
二、CUDA Toolkit
$ sudo apt-get install -y cuda
三圆裕、Environment Variables
$ export CUDA_HOME=/usr/local/cuda-7.0
$ export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
$ PATH=${CUDA_HOME}/bin:${PATH}
$ export PATH
第二部分:nVidia驅(qū)動和CUDA Toolkit的安裝和調(diào)試(*.run方法)
PS:這里其實可以參考nVidia 官方提供的CUDA安裝手冊吓妆,非常相近吨铸,32頁的,不過是全英文的舟奠,我就是參考這個文檔完成后面的配置和驗證工作房维。https://developer.nvidia.com/rdp/cuda-65-rc-toolkit-download#linux。一般要輸入你的用戶名和密碼耿戚,就是下載6.5的那個賬號。
一膜蛔、Verify You Have a CUDA-Capable GPU
執(zhí)行下面的操作,然后驗證硬件支持GPU CUDA墅茉,只要型號存在于https://developer.nvidia.com/cuda-gpus呜呐,就沒問題了
$ lspci | grep -i nvidia
二、Verify You Have a Supported Version of Linux
$ uname -m && cat /etc/*release
重點是“x86_64”這一項战转,保證是x86架構(gòu)槐秧,64bit系統(tǒng)
三忧设、Verify the System Has gcc Installed
$ gcc --version
沒有的話就先安裝吧,這個是必須的用來編譯CUDA Toolkit膀懈,不過Ubuntu 14.04是默認有的
四谨垃、Download the NVIDIA CUDA Toolkit
下載地址:https://developer.nvidia.com/cuda-toolkit
驗證地址:https://developer.nvidia.com/rdp/cuda-rc-checksums
$ md5sum filename
例如:md5sum cuda_6.5.11_rc_linux_64.run ,這個文件的正確 md5 = a47b0be83dea0323fab24ca642346351
這個感覺蠻重要胳赌,我第一次安裝的時候md5就沒通過匙隔,強制安裝,結(jié)果就有問題捍掺,后面重新下載了再安裝了一次
五再膳、Handle Conflicting Installation Methods
根據(jù)官網(wǎng)介紹,之前安裝的版本都會有沖突的嫌疑
所以不瓶,之前安裝的Toolkit和Drievers就得卸載,屏蔽,等等
六吭露、Graphical Interface Shutdown
退出GUI,也就是X-Win界面泥兰,操作方法是:同時按:CTRL+ALT+F1(F2-F6)题禀,切換到TTY1-6命令行模式。
關(guān)閉桌面服務(wù):
$ sudo stop lightdm
七削彬、Interaction with Nouveau
Nouveau是一個開源的顯卡驅(qū)動秀仲,Ubuntu 14.04 默認安裝了,但是它會影響nVidia驅(qū)動的安裝雁刷,所以只有請他回老家了保礼,sorry!
$ sudo vi /etc/modprobe.d/nvidia-graphics-drivers.conf
寫入:blacklist nouveau
保存并退出: wq!
檢查:$ cat nvidia-graphics-drivers.conf
$ sudo vi /etc/default/grub
末尾寫入:rdblacklist=nouveau nouveau.modeset=0
保存并退出: wq!
檢查:$ cat /etc/default/grub
八目派、Installation CUDA 6.5
切換到cuda_6.5.11_rc_linux_64.run 所在的目錄址貌,然后執(zhí)行安裝命令:
$ sudo sh cuda_6.5.11_rc_linux_64.run
再次提醒徘键,安裝前一定要執(zhí)行 md5sum ,至于如果發(fā)現(xiàn)md5檢測不一致螟凭,怎么辦它呀?別逗了棒厘,去nVidia重新下載就行了奢人,地球人都知道淆院,別無限循環(huán)就好^_^!
這里會一路問你各種問題,基本上就是Accept-yes-Enter-yes-Enter-yes-Enter支救, 其實就是讓你接受協(xié)議拷淘,然后安裝的默認位置確認等等,recruit就別自定義安裝位置了贬堵,默認才是天堂结洼。
九、Extra Libraries
安裝一些必要的庫文件引几,譬如:OpenGL (e.g., Mesa), GLU, GLUT, and X11 (including Xi, Xmu, and GLX).
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
十挽铁、驅(qū)動裝完了,可以回到GUI界面了楣铁,也可以繼續(xù)留這里玩文本盖腕。浓镜。。
$ sudo start lightdm
十一听隐、POST-INSTALLATION ACTIONS
1. Environment Setup
$ export PATH=/usr/local/cuda-6.5/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
PS:如果出現(xiàn)安裝失敗哄啄,重啟系統(tǒng)风范,重新安裝一遍基本都可以解決硼婿,實在不行就卸載原來的驅(qū)動再安裝一遍禽车。
a. 卸載現(xiàn)有驅(qū)動
$ sudo nvidia-installer --uninstall
b. 重裝CUDA Toolkit
$ sudo sh cuda_6.5.11_rc_linux_64.run
好了,到這里所有nVidia CUDA的安裝就結(jié)束了猪腕,下面看看Caffe如何安裝
第三部分 Python安裝和調(diào)試
1. 安裝IDE運行環(huán)境
選擇一個適合你的IDE運行環(huán)境钦勘,我是用的是Spyder亚亲,因為它內(nèi)置了 iPython 環(huán)境,Caffe有不少的程序是基于 iPython 環(huán)境完成的肛响。安裝方法很簡單特笋,直接在Ubuntu軟件中心搜索“spyder”即可安裝巾兆。
2. iPython NoteBook 安裝
另外一個比較推薦的方法是使用iPyhthon NoteBook(基于瀏覽器的Python IDE),特別是適合需要用Python做教程的老師們蔫磨,可以直接導(dǎo)出.py, .ipynb, html格式圃伶,安裝步驟如下:
$ sudo apt-get install -y ipython-notebook pandoc
啟動(自動打開瀏覽器):
$ ipython nootbook
一個簡單的使用iPython NoteBook生成的html的例子:examples_notebook.htmlexample_notebook.ipynb
3. 配置和編譯pycaffe(見第五部分)
第四部分 Matlab安裝和調(diào)試
1.下載
由于該軟件為商業(yè)軟件,請大家自行尋找搀罢,安裝學(xué)習(xí)侥猩,并確保不使用做商業(yè)目的,下載24小時刪除......
2. 預(yù)準(zhǔn)備
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開”
進入裝載的虛擬光盤洛退,拷貝全部文件至home/Matlab 文件夾
(PS:我的原則是能GUI就GUI,喜歡CMD的可以參照執(zhí)行)
復(fù)制Crack/install.jar至 home/Matlab/java/jar/ 并覆蓋源文件
$ sudo cp install.jar /home/Matlab/java/jar/
3. 授權(quán)安裝文件夾
$ chmod a+x Matlab -R
4. 安裝
$ sudo ./install
選項:不使用Internet安裝
序列號: 12345-67890-12345-67890
默認路徑:/usr/local/MATLAB/R2014a
激活文件:license_405329_R2014a.lic
拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/
安裝完畢彩匕,程序默認啟動路徑:
$ sh /usr/local/MATLAB/R2014a/bin/matlab
5.解決編譯器gcc/g++版本問題媒区。(這里因為折騰了一會,所以只做參考绪爸,基本流程就2步宙攻,有問題,大家可以自己嘗試递惋。)
因為Ubuntu 15.04的gcc/g++版本是4.9.2溢陪,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調(diào)用mex文件的時候,基本上都會報錯杉编,根據(jù)報錯信息咆霜,考慮如下兩步解決方案。
1. 降級安裝gcc/g++版本為4.7.x
(1). 下載gcc/g++ 4.7.x
$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7
(2). 鏈接gcc/g++實現(xiàn)降級
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.7 gcc
$ sudo rm g++
$ sudo ln -s g++-4.7 g++
2. 暴力引用新版本GLIBCXX_3.4.20
$ sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20 (libstdc++.so.6.0.20的版本绒净,可能因為系統(tǒng)不同而不同偿衰,使用最新的就可以了。)
目錄切換到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/ 缤言,非常重要视事!
$ sudo mv libstdc++.so.6 libstdc++.so.6.backup (僅僅是備份,可以不操作)跌穗。
$ sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6
$ sudo ldconfig -v
通過命令“strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 | grep GLIBCXX_” 可以看一下蚌吸,是否已經(jīng)成功包含了GLIBCXX_3.4.20,如果已經(jīng)存在奕枢,基本上就成功了。
6.編譯Matlab用到的caffe文件(見第五部分)
第五部分 Caffe的安裝和測試
對于Caffe的安裝嚴格遵照官網(wǎng)的要求來:http://caffe.berkeleyvision.org/installation.html
一缝彬、安裝BLAS
這里可以選擇(ATLAS谷浅,MKL或者OpenBLAS)族购,我這里使用MKL陵珍,首先下載并安裝英特爾? 數(shù)學(xué)內(nèi)核庫 Linux* 版MKL,下載鏈接是:https://software.intel.com/en-us/intel-education-offerings瑟幕, 請下載Student版留潦,先申請,然后會立馬收到一個郵件(里面有安裝序列號)殖卑,打開照著下載就行了坊萝。下載完之后,要把文件解壓到home文件夾(或直接把tar.gz文件拷貝到home文件夾,為了節(jié)省空間菩鲜,安裝完記得把壓縮文件給刪除喔~)惦积,或者其他的ext4的文件系統(tǒng)中。
接下來是安裝過程蛛勉,先授權(quán),然后安裝:
$ tar zxvf parallel_studio_xe_2015.tar.gz (如果你是直接拷貝壓縮文件過來的)
$ chmod a+x parallel_studio_xe_2015 -R
$ sudo ./install_GUI.sh
二诽凌、MKL與CUDA的環(huán)境設(shè)置
1. 新建intel_mkl.conf, 并編輯之:
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
2. 新建cuda.conf招刹,并編輯之:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
3. 完成lib文件的鏈接操作窝趣,執(zhí)行:
$ sudo ldconfig -v
三、安裝OpenCV 3.0.0
1. 下載并編譯OpenCV(官網(wǎng)原版OpenCV:http://opencv.org/)妇拯, 或者使用本站提供的修改版的安裝包Install-OpenCV-master(下面的安裝方式使用該包完成洗鸵,安裝包修改了dependencies.sh文件并增加了OpenCV 3.0.0的安裝文件,同時保留了原來的2.3x和2.4x版)
2. 切換到文件保存的文件夾甘凭,然后安裝依賴項:
$ sudo sh Ubuntu/dependencies.sh
3. 切換目錄Ubuntu\3.0\安裝OpenCV 3.0.0rc1:
$ sudo sh opencv3_0_0-rc1.sh
保證網(wǎng)絡(luò)暢通火邓,因為軟件需要聯(lián)網(wǎng)這里時間較長,請耐心等待躲胳。纤勒。。粹湃,
四闸翅、安裝其他依賴項
1. Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/济赎,然后解壓安裝:
$ tar zxvf glog-0.3.3.tar.gz
$ ./configure
$ make
$ sudo make install
如果沒有權(quán)限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 裝完之后,這個文件夾就可以kill了构捡。
2. 其他依賴項壳猜,確保都成功
$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
$ sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
五愉老、安裝Caffe并測試
1. 安裝pycaffe必須的一些依賴項:
$ sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
$ sudo apt-get install -y protobuf-c-compiler protobuf-compiler
2. 安裝配置nVidia cuDNN 加速Caffe模型運算
a. 安裝cuDNN
該改版本caffe-master默認支持cudnn-6.5-linux-x64-v2象泵,使用cudnn-6.5-linux-R1會報錯,安裝前請去先官網(wǎng)下載最新的cuDNN呛讲。
$ sudo cp cudnn.h /usr/local/include
$ sudo cp libcudnn.so /usr/local/lib
$ sudo cp libcudnn.so.6.5 /usr/local/lib
$ sudo cp libcudnn.so.6.5.48 /usr/local/lib
b. 鏈接cuDNN的庫文件
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.48 /usr/local/lib/libcudnn.so.6.5
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
3. 切換到Caffe-master的文件夾朱嘴,生成Makefile.config配置文件,執(zhí)行:
$ cp Makefile.config.example Makefile.config
4. 配置Makefile.config文件(僅列出修改部分)
a. 啟用CUDNN萍嬉,去掉"#"(目前caffe-master仍然只支持R1版本)
USE_CUDNN := 1
b. 啟用GPU,添加注釋"#"
# CPU_ONLY := 1
c. 配置一些引用文件(增加部分主要是解決新版本下磕道,HDF5的路徑問題)
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
d. 啟用Intel Parallel Studio XE 2015 Professional Edition for C++ Linux
BLAS := mkl
e. 配置路徑捅厂,實現(xiàn)caffe對Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a
5. 配置Makefile文件(實現(xiàn)對OpenCV 3.x的支持)
查找“Derive include and lib directories”一節(jié)资柔,修改“LIBRARIES +=”的最后一行撵割,增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
6. 編譯caffe-master!8搿庶灿!"-j8"是使用CPU的多核進行編譯,可以極大地加速編譯的速度往踢,建議使用。
$ make all -j8
$ make test -j8
$ make runtest -j8
編譯Python和Matlab用到的caffe文件
$ make pycaffe -j8
$ make matcaffe -j8
六利职、使用MNIST數(shù)據(jù)集進行測試
Caffe默認情況會安裝在$CAFFE_ROOT,就是解壓到那個目錄跷敬,例如:$ home/username/caffe-master热押,所以下面的工作,默認已經(jīng)切換到了該工作目錄池凄。下面的工作主要是鬼廓,用于測試Caffe是否工作正常,不做詳細評估尤慰。具體設(shè)置請參考官網(wǎng):http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1. 數(shù)據(jù)預(yù)處理
$ sh data/mnist/get_mnist.sh
2. 重建lmdb文件雷蹂。Caffe支持三種數(shù)據(jù)格式輸入網(wǎng)絡(luò),包括Image(.jpg, .png等)责蝠,leveldb萎庭,lmdb,根據(jù)自己需要選擇不同輸入吧肴敛。
$ sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夾吗购,這里包含了lmdb格式的數(shù)據(jù)集
3. 訓(xùn)練mnist
$ sh examples/mnist/train_lenet.sh
至此,Caffe安裝的所有步驟完結(jié)镀梭,下面是一組簡單的數(shù)據(jù)對比踱启,實驗來源于MNIST數(shù)據(jù)集撒强,主要是考察一下不同系統(tǒng)下CPU和GPU的性能飘哨∷銎荆可以看到明顯的差別了,雖然MNIST數(shù)據(jù)集很簡單统屈,相信復(fù)雜得數(shù)據(jù)集,差別會更大腕扶,Ubuntu+GPU是唯一的選擇了吨掌。
測試平臺1:i7-4770K/16G/GTX 770/CUDA 6.5
MNIST Windows8.1 on CPU:620s
MNIST Windows8.1 on GPU:190s
MNIST Ubuntu 14.04 on CPU:270s
MNIST Ubuntu 14.04 on GPU:160s
MNIST Ubuntu 14.04 on GPU with cuDNN:30s
Cifar10_full on GPU wihtout cuDNN:73m45s = 4428s(Iteration 70000)
Cifar10_full on GPU with cuDNN:20m7s = 1207s(Iteration 70000)
測試平臺2:技嘉P35X v3膜宋,i7-4720HQ@2.6G/16G/NVidia GTX 980 4G
MNIST Ubuntu 15.04 on GPU with cuDNN:33s
對比測試1:2*E5-2620(12CPUs)/128G/Tesla K20M/CUDA5.5/CentOS 6.4
MNIST CentOS 6.4 on GPU:294s
對比測試2:Tesla K40M/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:30s
對比測試3:GTX 660/CUDA6.5/ubuntu 14.04
MNIST on GPU with cuDNN:49s
對比試驗1是一個不太公平的測試,畢竟性能差很大史简,很可能不單單是由Tesla K20s 和GTX 770帶來的肛著,也可能是因為CentOS或者是CUDA5.5(without cuDNN)的影響,但總體上的結(jié)論和Caffe官網(wǎng)的reference performance numbers一致殉农,對于普通用戶:GTX的性價比高很多萨咕。對比試驗2展現(xiàn)了Tesla K40的強大性能,相信對于復(fù)雜圖像危队,它應(yīng)該有更強勁的表現(xiàn)茫陆。(感謝香港城市大學(xué) Ph.D Jingjing擎析、南京理工大學(xué) Ph.D JinLu挥下、華中科技大學(xué) MS LiuMaolin 提供的測試環(huán)境和測試數(shù)據(jù)棚瘟。)