關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 了解基于FastCV視覺庫的SVM機器學習算法

        了解基于FastCV視覺庫的SVM機器學習算法

        作者: 時間:2017-10-22 來源:網絡 收藏

        是一種常用的算法,在人工智能、模式識別、圖像識別等領域有著非常廣泛的應用,本節將結合庫提供的fcvPredict2Classf32函數API,對原理及用法進行介紹,為后續大家在使用進行圖像識別類的應用開發提供參考。

        本文引用地址:http://www.104case.com/article/201710/367555.htm

        一、簡介

        FastCV是Qualcomm公司開發提供的專注于移動平臺的計算機視覺庫(Computer vision library),該庫針對ARM平臺進行設計,并且針對Qualcomm處理器進行了優化,相對于OpenCV和JavaCv其性能有了大幅度的提高,非常適合移動設備各種圖像處理,如三維重建、目標跟蹤、人臉識別等。

        FastCV提供的API結構如下圖1所示,根據其提供的功能分類主要包括數學/適量運算、圖像處理、圖像變換、特征檢測、對象檢測、三維重建、色彩轉換、聚類和搜索、運動和對象跟蹤、形狀和繪圖、內存管理和SVM13個部分,通過fastcv提供的這些API接口你可以方便的完成各種圖像處理應用的設計。極大的簡化的設計過程,提高程序的穩定性和可靠性。后續將針對fastcv提供的SVM機器學習進行詳細介紹。

        圖1 fastCV功能結構

        二、SVM機器學習基本原理

        支持向量機,因其英文名為support vector machine,故一般簡稱SVM,通俗來講,它是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。具體的SVM的原理是非常深奧的,其涉及到的數學理論非常多,并且通常還需要涉及到多維空間,從存粹的數學理論很難理解SVM的基本原理,并且介紹SVM的數學原理的內容也非常多(如http://www.dataguru.cn/thread-371987-1-1.html就對SVM的原理進行了詳細介紹),這里將通過一個經典的SVM分類例子來向大家介紹SVM的基本原理。

        假設現在你是一個農場主,圈養了一批羊群,但為預防狼群襲擊羊群,你需要搭建一個籬笆來把羊群圍起來。但是籬笆應該建在哪里呢?你很可能需要依據牛群和狼群的位置建立一個“分類器”,比較下圖這幾種不同的分類器,我們可以看到SVM完成了一個很完美的解決方案,如下圖2所示,這就是景點的SVM分類原理。

        圖2 農場主搭建籬笆SVM經典例子示意圖

        三、fastCV中SVM接口參數解析

        在fastCV中提供了SVM方法調用API接口,通過調用該接口可以方便的實現SVM學習功能,起API函數原型如下:

        FASTCV_API fcvStatus fcvSVMPredict2Classf32( fcvSVMKernelType kernelType,

        uint32_tdegree,

        float32_tgamma,

        float32_tcoef0,

        const float32_t *__restrictsv,

        uint32_tsvLen,

        uint32_tsvNum,

        uint32_tsvStride,

        const float32_t *__restrictsvCoef,

        float32_trho,

        const float32_t *__restrictvec,

        uint32_tvecNum,

        uint32_tvecStride,

        float32_t *__restrictconfidence

        該函數返回通過SVM學習策略計算得到的當前樣本的置信度,其計算公式如下(同時該值還可以通過libSVM和OpenCV提供的SVM訓練得到):

        confidence(i) = sum_j( svCoef[j] * Kernel(vec_i, sv_j) - rho;

        為了學會調用該函數,就需要了解上述函數的各個參數的意義及具體的設置方法,以下是上述參數的意義和設置方法總結:

        kernelType:核函數類型這里可以選擇 ‘FASTCV_SVM_LINEAR’,‘FASTCV_SVM_POLY’,‘FASTCV_SVM_RBF’,‘FASTCV_SVM_SIGMOID’等;

        degree: 設置核函數的深度,為整數,通常設置為3;

        gamma:核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數)(默認1/ k);

        coef0:核函數中的coef0設置(針對多項式/sigmoid核函數)((默認0);

        sv :支持特征向量;

        svLen: 特征長度, (support vector length = feature length)。

        svNum: 支持特征向量個數

        svStride:支持向量跨度 ;

        svCoef: sv系數,長度設置為sv個數 ;

        rho SVM 偏置參數;

        vec 檢測向量;

        vecNum 檢測向量個數;

        vecStride 監測向量跨度;

        以上就是fastCV中提供的SVM接口介紹,在后續章節將進一步結合圖像處理,來帶大家用SVM來實現相關的分類和圖片識別,大家如果想進一步了解更多的關于fastcv庫的內容可以訪問Qualcomm的https://developer.qualcomm.com/docs/fastcv/api/index.html網站查閱更多信息。



        關鍵詞: FastCV SVM 機器學習

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新宁县| 荃湾区| 习水县| 新乡县| 北票市| 盈江县| 桑植县| 鸡泽县| 巢湖市| 集贤县| 望谟县| 房山区| 临安市| 铜川市| 乌什县| 元谋县| 麟游县| 麻阳| 青铜峡市| 铜川市| 云南省| 丹江口市| 板桥市| 白朗县| 汤阴县| 台安县| 廊坊市| 安陆市| 平顺县| 蓬溪县| 海门市| 仁寿县| 女性| 宁都县| 那曲县| 中阳县| 休宁县| 荥阳市| 柳州市| 南部县| 凤庆县|