最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?ncnn模型驗證精度實現(xiàn)代碼

 更新時間:2023年02月27日 08:34:26   作者:樊城  
這篇文章主要介紹了C++?ncnn模型驗證精度實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

驗證ncnn模型的精度

1、進行pth模型的驗證

得到ncnn模型的順序為:.pth–>.onnx–>ncnn

.pth的精度驗證如下:

如進行的是二分類:

    model = init_model(model, data_cfg, device=device, mode='eval')
    ###.pth轉(zhuǎn).onnx模型
    # #---
    # input_names = ["x"]
    # output_names = ["y"]
    # inp = torch.randn(1, 3, 256, 128) ##錯誤示例
    inp = np.full((1, 3, 160, 320), 0.5).astype(np.float) #(160,320) = (h,w)
    inp = torch.FloatTensor(inp)
    out = model(inp)
    print(out)

沒有經(jīng)過softmax層,out輸出為±1的兩個值。

2、轉(zhuǎn)為onnx后的精度驗證

   sess = onnxruntime.InferenceSession("G:\\pycharm_pytorch171\\pytorch_classification\\main\\sim.onnx", providers=["CUDAExecutionProvider"])  # use gpu
    input_name = sess.get_inputs()[0].name
    print("input_name: ", input_name)
    output_name = sess.get_outputs()[0].name
    print("output_name: ", output_name)
    # test_images = torch.rand([1, 3, 256, 128])
    test_images = np.full((1, 3, 160, 320), 0.5).astype(np.float) #(160,320) = (h,w)
    test_images = torch.FloatTensor(test_images)
    print("test_image", test_images)
    prediction = sess.run([output_name], {input_name: test_images.numpy()})
    print(prediction)

3、ncnn精度驗證

首先保證mean、norm輸出的值與onnx保持一致,因為onnx直接輸入值0.5,ncnn模型經(jīng)過mean、norm計算后的結(jié)果與0.5一致就行。

然后就是ncnn模型的計算輸出

- 查看輸出結(jié)果是否是0.5,首先得將輸入值1給到img

 ```cpp
     constexpr int w = 320;
     constexpr int h = 160;
     float cbuf[h][w];
     cv::Mat img(h, w, CV_8UC3,(float *)cbuf);
     //BYTE* iPtr = new BYTE[128 * 256 * 3];
     BYTE* iPtr = new BYTE[h * w * 3];
     for (int i = 0; i < h; i++)
     {
         for (int j = 0; j < w; j++)
         {
             for (int k = 0; k < 3; k++)
             {
                 //iPtr[i * 256 * 3 + j * 3 + k] = img.at<cv::Vec3f>(i, j)[k];
                 img.at<cv::Vec3b>(i, j)[k] = 1;
             }
         }
     }
 ```
 - 經(jīng)過上面的賦值,通過了mean、norm計算后,得到的結(jié)果進行查看,值為0.5則正確轉(zhuǎn)換。得到的結(jié)果送入下面的代碼進行輸出。
 ncnn結(jié)果為mat,因此采用該方法進行遍歷查看。
 ```cpp
 //輸出ncnn mat
 void ncnn_mat_print(const ncnn::Mat& m)
 {
     for (int q = 0; q < m.c; q++)
     {
         const float* ptr = m.channel(q);
         for (int y = 0; y < m.h; y++)
         {
             for (int x = 0; x < m.w; x++)
             {
                 printf("%f ", ptr[x]);
             }
             ptr += m.w;
             printf("\n");
         }
         printf("------------------------\n");
     }
 }
 ```
 將mat給到模型進行推理得到結(jié)果。

4、結(jié)果確認

一般情況下,pth模型與onnx模型結(jié)果相差不大,ncnn會有點點損失,千分位上的損失,這樣精度基本上是一致的。

若不一致,看哪一步結(jié)果相差太大,如果是ncnn這一步相差太大,檢查是否是值輸入有問題,或者是輸入的(h,w)弄反了。

到此這篇關(guān)于C++ ncnn模型驗證精度實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)C++ ncnn驗證精度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言數(shù)據(jù)的存儲詳解

    C語言數(shù)據(jù)的存儲詳解

    本文詳細講解了C語言數(shù)據(jù)的存儲,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C++中繼承基類與派生類的區(qū)別

    C++中繼承基類與派生類的區(qū)別

    這篇文章主要介紹了C++中繼承基類與派生類的區(qū)別,面向?qū)ο蟪绦蛟O計中最重要的一個概念是繼承。繼承允許我們依據(jù)另一個類來定義一個類,這使得創(chuàng)建和維護一個應用程序變得更容易,需要的朋友可以參考下
    2023-05-05
  • 尾遞歸詳細總結(jié)分析

    尾遞歸詳細總結(jié)分析

    關(guān)于遞歸操作,相信大家都已經(jīng)不陌生。簡單地說,一個函數(shù)直接或間接地調(diào)用自身,是為直接或間接遞歸
    2013-09-09
  • C++實現(xiàn)校園運動會報名系統(tǒng)

    C++實現(xiàn)校園運動會報名系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)校園運動會報名系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C++實現(xiàn)雷霆戰(zhàn)機可視化小游戲

    C++實現(xiàn)雷霆戰(zhàn)機可視化小游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)雷霆戰(zhàn)機可視化小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • win10+VS2017+Cuda10.0環(huán)境配置詳解

    win10+VS2017+Cuda10.0環(huán)境配置詳解

    這篇文章主要介紹了win10+VS2017+Cuda10.0環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 基于opencv的行人檢測(支持圖片視頻)

    基于opencv的行人檢測(支持圖片視頻)

    本文主要介紹了基于opencv的行人檢測(支持圖片視頻),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C++類和對象之多態(tài)詳解

    C++類和對象之多態(tài)詳解

    大家好,本篇文章主要講的是C++類和對象之多態(tài)詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言實現(xiàn)推箱子項目

    C語言實現(xiàn)推箱子項目

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)推箱子項目,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 不要被C++(自動生成規(guī)則)所蒙騙

    不要被C++(自動生成規(guī)則)所蒙騙

    正如標題所說,我們不要被C++語法中所描述的那些條條框框所“蒙騙”了。的確,相信這些生成規(guī)則不會對我們的編程帶來多大的影響(不會產(chǎn)生錯誤),但是只有了解它們的背后操作,我們才知道編譯器究竟為我們做了什么,感興趣的朋友可以了解下,希望本文對你有所幫助
    2013-01-01

最新評論

卓资县| 甘德县| 西华县| 涿州市| 安远县| 遂昌县| 武强县| 阳谷县| 滨海县| 甘谷县| 北京市| 武陟县| 义乌市| 泰来县| 平安县| 偃师市| 灌云县| 荥经县| 土默特右旗| 元江| 祥云县| 娄底市| 青海省| 赤水市| 永嘉县| 临夏市| 长垣县| 新津县| 博乐市| 大同县| 溧水县| 许昌市| 林州市| 汉川市| 会东县| 甘孜县| 桓仁| 克山县| 开原市| 厦门市| 临泽县|