日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV神经网络ANN代码编译运行与解读(一)

發布時間:2025/5/22 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV神经网络ANN代码编译运行与解读(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運行環境搭建:參考《VS2013安裝OpenCV4.1版本并搭建一個小程序》

  • 基于OpenCV4.1.0中neural_network.cpp的例子代碼。
  • 參考了《OpenCV3【神經網絡】ANN_MLP》中的部分代碼和注釋內容。
  • BP神經網絡原理可參考《置頂 | 2019書單》中機器學習入門部分:

神經網絡算法:(以后向傳播神經網絡為例:Back Propagation)分為一個輸入層(神經元數量與特征向量維度相同),多個隱藏層,一個輸出層(如果是分類算法,神經元數量與集合數量相同)。每一層的神經元與相鄰層的所有神經元之間都有邊相連,每個神經元的輸入為:(上層所有神經元值與邊的權重乘積求和+本神經元的偏執常量)x激勵函數。先將輸入標準化到區間[0,1],隨機給出每條邊的初始權重在取間[-1,1]內和偏置值。然后逐層向下計算出結果。神經網絡的訓練過程是:給出初始權重和偏執,然后通過訓練集,自動的調整每條邊權重和每個神經元偏置的過程。正向過程全部算完后,根據誤差值(通過loss function,即誤差函數或損失函數)和給定的學習率再按照給定算法反向計算一遍可以得出每條邊的調整后的權重,和每個節點的調整后的偏置。每一組數據可以多次使用直至輸出達到可以接受的氛圍,經過大量數據的正向計算和反向調整后,即可得到訓練好的權重值和偏置值,即訓練好的神經網絡。(相鄰兩層神經元之間的權重可以視為一個矩陣,矩陣的長度和寬度分別是上層神經元和下層神經元的數量,由此整個神經網絡的計算可以視為若干個矩陣的乘法。)

#include <opencv2/ml/ml.hpp> #include<opencv2/core.hpp> #include<opencv2/highgui.hpp> #include<opencv2/imgproc.hpp> #include <opencv2/imgcodecs.hpp>using namespace std; using namespace cv; using namespace cv::ml;const int SAMPLE_NUMBER = 200; ///樣本數目/// const int FEATURE_NUMBER = 500; ///單個樣本的特征值數目///int main() {//create random training data///data矩陣是訓練數據集///Mat_<float> data(SAMPLE_NUMBER, FEATURE_NUMBER);///訓練數據data///randn(data, Mat::zeros(1, 1, data.type()), Mat::ones(1, 1, data.type()));//隨機生成均值為0,標準差為1的數據dataimshow("", data);waitKey(0);///顯示data/////half of the samples for each class///responses矩陣是有監督訓練的分類結果集///Mat_<float> responses(data.rows, 2);///行數代表樣本數,2為每個樣本對應的標簽向量(1,0)或(0,1)///for (int i = 0; i < data.rows; ++i){if (i < data.rows / 2)///前一半數據標簽為(1,0)///{responses(i, 0) = 1;responses(i, 1) = 0;}else///后一半數據標簽為(1,0)///{responses(i, 0) = 0;responses(i, 1) = 1;}}/*//example code for just a single response (regression)Mat_<float> responses(data.rows, 1);for (int i=0; i<responses.rows; ++i)responses(i, 0) = i < responses.rows / 2 ? 0 : 1;*///create the neural network///三層神經網絡:/// 輸入層神經元數目:樣本的特征值數目////// 隱藏層神經元數目:1////// 輸出層神經元數目:目標分類數目///Mat_<int> layerSizes(1, 3);layerSizes(0, 0) = data.cols;layerSizes(0, 1) = 20;layerSizes(0, 2) = responses.cols;Ptr<ANN_MLP> network = ANN_MLP::create();///創建///network->setLayerSizes(layerSizes);///設置層數///network->setActivationFunction(ANN_MLP::SIGMOID_SYM, 0.1, 0.1);///激活函數:典型S型生長曲線函數///network->setTrainMethod(ANN_MLP::BACKPROP, 0.1, 0.1);///訓練方法:反向傳播算法。Backpropogation///Ptr<TrainData> trainData = TrainData::create(data, ROW_SAMPLE, responses);///創建訓練數據,ROW_SAMPLE表示data中每行為一個樣本///network->train(trainData);///訓練///cout << "========== Train Finish ==========" << endl;if (network->isTrained())///是否訓練完成///{printf("Predict one-vector:\n");Mat result;network->predict(Mat::ones(1, data.cols, data.type()), result);///預測全為1的一個樣本,得到結果result///cout << result << endl;printf("Predict training data:\n");for (int i = 0; i < data.rows; ++i){network->predict(data.row(i), result);///預測訓練樣本,得到結果result///cout << result << endl;}}cout << "========== Display Finish ==========" << endl;network->save("h:\\s.xml");//保存訓練好的網絡cout << "Save trained network ..." << endl;Ptr<ANN_MLP> bp = ANN_MLP::load("h:\\s.xml");///創建并加載保存的網絡/////bp->load();cout << "Load trained network ..." << endl;///仍然使用訓練集進行測試,得到一樣的結果,依次可以證明加載保存的神經網絡是成功的///if (1)///測試加載成功,與訓練的網絡一致///{printf("Predict one-vector:\n");Mat result;bp->predict(Mat::ones(1, data.cols, data.type()), result);cout << result << endl;printf("Predict training data:\n");for (int i = 0; i < data.rows; ++i){bp->predict(data.row(i), result);cout << result << endl;}}Mat I = Mat::ones(10, 10, data.type());cout << endl << I << endl;putchar(1);return 0; }

完整工程項目(VS2013)可以從 OpenCV4-ANN神經網絡配套工程項目完整代碼 下載

另外點擊 這里 可以下載一個早期的VS2013+OpenCV2.3.1實現的K近鄰算法(KNN)實現的旋鈕圖片分類工程項目代碼。

總結

以上是生活随笔為你收集整理的OpenCV神经网络ANN代码编译运行与解读(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产第四页 | 在线观看国产三级 | 亚洲色图插插插 | 在线国产区| 青久草视频| 91日韩中文字幕 | 男女激情免费网站 | 欧美日韩在线视频观看 | 在线免费视频一区 | www日本xxx| 爱上av| 国产麻豆剧传媒精品国产 | 性感少妇av | 国内一区二区视频 | 久久婷香 | 国产91精品久久久久久久 | 色老汉视频 | www伊人网 | wwwxxx在线播放| 天天5g天天爽免费观看 | 美女三区| 日本黄在线 | 日日操天天 | 国产精品视频合集 | 青娱乐极品在线 | 婷婷色五 | 日本老少交 | 婷婷俺来也| 特级西西人体444www高清 | 少妇又色又紧又大爽又刺激 | 国产在线二区 | 中文在线字幕免费观看 | 丰满大乳国产精品 | 青草福利 | 中文字幕不卡视频 | 成人性生交大免费看 | 朝桐光av一区二区三区 | 日本亚洲欧洲色 | 丰满人妻一区二区 | 亚洲一区色| 亚洲第一综合 | 操女人网 | 白石茉莉奈黑人 | 生活片毛片 | 国产精品va | 天海翼一区二区三区 | 男同志毛片特黄毛片 | 91n视频| 久久久久区 | 亚洲不卡中文字幕无码 | 懂色av蜜臀av粉嫩av分 | 高清av一区二区三区 | 日韩一级中文字幕 | 国产色秀 | 午夜av一区二区三区 | 一区二区www | 精品伦精品一区二区三区视频 | 色一情一区二区三区四区 | 久久久三级 | av播放网站 | 二色av | 爆乳2把你榨干哦ova在线观看 | 欧美一级二级在线观看 | 女女同性女同一区二区三区按摩 | 亚洲欧美国产日韩精品 | 欧美一级专区免费大片 | 久久伊人久久 | 丁香伊人网 | 中文字幕乱码无码人妻系列蜜桃 | 精品久久久久一区二区国产 | 欧美裸体xxx | 人人草网站 | 国产视频福利在线 | 午夜影院在线观看视频 | 久久久久久久一区 | 天天躁日日躁aaaxxⅹ | 黑人巨大av | av不卡网站| 91精品观看 | 成人久久在线 | 国产综合久久久久久鬼色 | 中文字幕乱码一区二区三区 | 欧美性理论片在线观看片免费 | 五月综合视频 | 特黄一级片 | 亚洲免费成人在线 | 亚洲成人自拍网 | 精品成在人线av无码免费看 | 国产精品亚洲欧美 | 综合久久激情 | 日本在线视频一区 | 极品一区 | 中文av一区| 日韩福利在线观看 | 女同久久另类69精品国产 | 在线能看的av | 国内自拍真实伦在线观看 | 96国产精品 | 999精品国产|