第三天
nnie移植失敗了
暫時先放着吧,既然硬核跑不了,先試一下軟核,使用ncnn框架來部署目標檢測模型
1、交叉編譯opencv
Target Root選擇交叉編譯工具鏈的bin目錄就行
其餘的默認
然後開始編譯,肯定會出錯
undefined reference to `pthread_mutexattr_destroy`
修改編譯目錄下的 CMakeCache.txt 文件,找到 CMAKE_EE_LINKER_FLAGS:STRING 項
將
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=' '
修改爲
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING= -pthread -lrt -ldl
然後編譯就行了
2、交叉編譯ncnn
編譯ncnn之前需要交叉編譯protobuf,所以先下載protobuf
到 https://github.com/google/protobuf/releases/tag/v2.5.0 ,進入下載頁面點擊protobuf-2.5.0.tar.gz
版本無所謂
sudo apt-get install curl libtool
#編譯PC版本
cd protobuf-3.2.0
./autoconf.sh
./configure --prefix=/usr/local/PC/protobuf-3.2.0
#編譯arm版本
cd protobuf-3.2.0
./autoconf.sh
./configure --build=i686-pc-linux --host=arm-linux \
--with-protoc=/usr/local/PC/protobuf-3.2.0/bin/protoc \
--prefix=/usr/local/TegraX1/protobuf-3.2.0
編譯arm版本的時候需要指定pc上的protoc
在編譯ncnn的時候,使用cmake指定protobuf的路徑。
3、運行mobileNet-SSD
使用ncnn在cpu平臺部署mobileNet-SSD和resnet18-SSD,很明顯mobileNet的速度比resnet更快,這也驗證了之前寫的,depthwise的卷積更加適合cpu平臺,因爲卷積操作在cpu上都需要進行im2col這樣的操作,但是1*1卷積在內存上不需要進行內存重拍,所以速度快。 在gpu上,resnet18-SSD比mobileNet-SSD更快,效果也會更好。
4、在3559a上運行
在3559a上運行速度簡直太慢了。。。。
啊。。。。。
單核單線程只有2fps。。。。
看來NNIE是逃不了了。。。。。