WIN7 + VS2015 編譯 阿里MNN框架


[2019-12-31]

今天看到更新了0.2.16,嘗試了下,順暢多了, MNNConvert.exe 也能順利運行。

更簡單的流程:

1、下載解壓

2、vs2015x64命令符下,轉MNN-0.2.1.6路徑

3、

powershell -ExecutionPolicy bypass ./schema/generate.ps1

4、

mkdir vs15x64 && cd vs15x64 
cmake  -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DMNN_BUILD_CONVERTER=ON -DMNN_BUILD_SHARED_LIBS=OFF ..

5、用vs2015打開.sln下編譯

 

bug(很容易修改)

- vs2015支持不夠,需要修改一些類型轉換

- MNNConvert.exe 缺少必要庫的連接

-MNNTrain改靜態庫

看到train模塊,希望mnn走得遠些

 


 

用過騰訊的ncnn,編譯起來很友好;但是對3d操作算子支持不夠;導致新出現的模型無法使用。

看到阿里開發的mnn (V 0.2.1.5),來嘗嘗鮮,結果斷續折騰了2天,以此記之。

非常感謝:

https://uzshare.com/view/810473

https://www.yuque.com/mnn/cn/build_windows

里面詳細介紹了一些配置操作。

 

1、設置

 

2、將powershell ./schema/generate.ps1換成python ./schema/generate.py

如果要編譯x64,將

os.system('cmake -DCMAKE_BUILD_TYPE=Release ..')

修改成

os.system('cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..')

這個步驟也可以直接去

https://github.com/google/flatbuffers/releases

下flatc.exe, 在..\MNN-master\3rd_party\flatbuffers\tmp\flatc.exe

 

3、cmake x64 only mnn.lib/mnn.dll

mkdir vs15x64 && cd vs15x64 
cmake  -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release ..
cd..
cmake --build vs15x64 --config Release

正常會有

error C2280: 'std::unique_ptr<MNN::Pipeline,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)': attempting to reference a deleted function

解法:https://github.com/Hconk/MNN/commit/819a666135a420f680675d503fabfa14028e13d2

//Session.hpp

private:
    std::map<MNNForwardType, std::unique_ptr<Backend>> mBackends;
    std::vector<std::unique_ptr<Pipeline>> mPipelines;
    std::vector<std::pair<int, std::shared_ptr<Tensor>>> mTensors;
    std::map<std::string, Tensor*> mInputs;
    std::map<std::string, Tensor*> mOutputs;
    bool mNeedResize       = false;
    bool mValid            = true;
    Backend* mFirstBackend = nullptr;

    Session(const Session&) = delete;
    Session(const Session&&) = delete;
    Session& operator=(const Session&) = delete;
    Session& operator=(const Session&&) = delete;

 這樣基本就可以獲取MNN.lib 與MNN.dll了。

 

4、編譯Conver Tool  【這個折騰我最久,好像爆粗口】

參考 https://www.yuque.com/mnn/cn/cvrt_windows

不要在tool\s\converter在使用cmake, 在MNN-master下cmake, 

cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DMNN_BUILD_CONVERTER=ON -DMNN_BUILD_SHARED_LIBS=OFF ..

Q1、配置 protobuf

Win7 下,添加環境變量 protoc.exe 所在的路徑,然后cmd下運行protoc.exe 

 

這樣基本就可以編譯過了

 

**** 生成的 MNNConvert.exe 無法執行  *** 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM