日韩性视频-久久久蜜桃-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代码编译运行与解读(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品久久久久久久久动漫 | 欧美高跟鞋交xxxxxhd | 国产精品宾馆在线 | 亚洲成人网在线 | 高潮一区二区三区乱码 | 久草97| 久草91| ass亚洲尤物裸体pics | 少妇不卡视频 | 人妻少妇偷人精品视频 | 亚洲一区二三区 | 国产精品一区二区无线 | 国产一区二区三区视频在线观看 | 国产夫妻在线 | 亚洲综合99 | hs网站在线观看 | 日韩一卡二卡 | 精品一区二区三区精华液 | 6080电视影片在线观看 | 69av网| 四虎av影院 | 美女视频一区二区 | 黄色网占 | 久久精品99国产 | 日本一区二区观看 | 成人自拍在线 | 成人亚洲天堂 | 日韩高清影视在线观看 | 神马久久久久久久 | 成人免费毛片嘿嘿连载 | 欧美福利一区 | 狼人综合av | 中文字幕在线观看一区二区 | 日韩精品无码一区二区三区 | 日韩一区久久 | av在线电影网站 | 亚洲精品资源 | 久久久久久国产精品 | 亚洲综合少妇 | 国产成人av网站 | av在线播放中文字幕 | 老湿机69福利区午夜x片 | 亚洲精品乱码久久 | 欧美日韩黄色一区二区 | 久久日本精品字幕区二区 | 日日操影院| 日日操天天射 | 欧美亚韩一区二区三区 | 五月色丁香 | 中文字幕一区二区三三 | 伊人久久五月 | 人人爽视频 | xxx日本少妇 | 免费看欧美一级片 | 男人的天堂avav | 欧美日韩一区二区在线观看 | 姝姝窝人体www聚色窝 | gv天堂gv无码男同在线观看 | 国产精品色悠悠 | 超碰在线中文字幕 | 亚洲国产精品免费视频 | www啪啪 | 在线免费观看麻豆 | 日韩欧洲亚洲 | 影音先锋黄色网址 | 亚洲天堂资源在线 | 国产日日日 | 亚洲国产黄色片 | 一区二区三区 中文字幕 | 亚洲我射av | 色啪综合 | 在线视频亚洲欧美 | 成人区人妻精品一熟女 | 国产日韩在线视频 | 天天干天天插天天操 | 小泽玛利亚一区二区三区视频 | 欧日韩一区二区三区 | 色福利在线 | 国产999精品视频 | 国产精品欧美激情 | 日韩成人在线看 | 熟妇人妻久久中文字幕 | 亚洲成a人v欧美综合天堂麻豆 | 毛片哪里看 | 66亚洲一卡2卡新区成片发布 | 岳狂躁岳丰满少妇大叫 | 一区二区视频在线免费观看 | 不卡的中文字幕 | www.狠狠操| 伊人久久香 | 色妞色视频一区二区三区四区 | 欧美日韩中文在线视频 | 中文字幕亚洲精品在线 | 91爽爽 | 国产精品福利电影 | zzjizzji亚洲日本少妇 | 国产精品乱 | 一级特黄aa大片欧美 | 一区二区三区视频在线观看免费 |