一個基於 FPGA 的機器學習平臺及其使用方法

2021-03-02 電子發燒友網
隨著攝像頭和其他設備產生的數據在快速增長,促使人們運用機器學習從汽車、安防和其他應用產生的影像中提取更多有用的信息。專用器件有望在嵌入式視覺應用中實現高性能機器學習 (ML) 推理。但是此類器件大都處於早期開發階段,因為設計人員正在努力尋找最有效的算法,甚至人工智慧 (AI) 研究人員也在迅速推演新方法。

目前,開發人員一般使用針對 ML 的可用 FPGA 平臺來構建嵌入式視覺系統,以期滿足更高的性能要求。與此同時,他們可以保持所需的靈活性,以跟上機器學習發展的步伐。

本文將介紹 ML 處理的要求,以及為何 FPGA 能解決許多性能問題。然後,將介紹一個合適的基於 FPGA 的 ML 平臺及其使用方法。

機器學習算法和推理引擎

在 ML 算法中,卷積神經網絡 (CNN) 已成為圖像分類的首選解決方案。其圖像識別的準確率非常高,因而得以廣泛應用於多種應用,跨越不同的平臺,例如智慧型手機、安防系統和汽車駕駛員輔助系統。作為一種深度神經網絡 (DNN),CNN 使用的神經網絡架構由專用層構成。在對標註圖像進行訓練期間,它會從圖像中提取特徵,並使用這些特徵給圖像分類(參見「利用現成的軟硬體啟動機器學習」)。

CNN 開發人員通常在高性能系統或雲平臺上進行訓練,使用圖形處理單元 (GPU) 加速在標註圖像數據集(通常數以百萬計)上訓練模型所需的巨量矩陣計算。訓練完成之後,訓練好的模型用在推理應用中,對視頻流中的新圖像或幀進行分類。推理部署完成後,訓練好的模型仍然需要執行同樣的矩陣計算,但由於輸入量要少很多,開發人員可以將 CNN 用於在通用硬體上運行的普通機器學習應用(參見「利用 Raspberry Pi 構建機器學習應用」)。

然而,對於許多應用而言,通用平臺缺乏在 CNN 推理中同時實現高準確率和高性能所需的性能。優化技術和替代 CNN 架構(如 MobileNet 或 SqueezeNet)有助於降低平臺要求,但通常會犧牲準確率並增加推理延時,而這可能與應用要求相衝突。

與此同時,快速發展的算法使得機器學習 IC 的設計工作變得複雜,因為需要機器學習 IC 既要足夠專門化以加速推理,又要足夠通用化以支持新算法。FPGA 多年來一直扮演著這一特定角色,提供加速關鍵算法所需的性能和靈活性,解決了通用處理器性能不足或沒有專用器件可用的問題。

FPGA 作為機器學習平臺

對於機器學習而言,GPU 仍然是標杆——這是早期的 FPGA 根本無法企及的。最近出現的一些器件,如 Intel Arria 10 GX FPGA 和 Lattice Semiconductor ECP5 FPGA,大大縮小了先進 FPGA 和 GPU 之間的差距。對於某些使用緊湊的整數數據類型的 DNN 架構來說,此類 FPGA 的性能/功耗比甚至高於主流 GPU。

高級 FPGA 組合了嵌入式存儲器和數位訊號處理 (DSP) 資源,對於一般矩陣乘法 (GEMM) 運算能夠實現很高的性能。其嵌入式存儲器靠近計算引擎,從而緩解了 CPU 存儲器瓶頸,而這種瓶頸通常會限制通用處理器上機器學習算法的性能。反之,相比於典型 DSP 器件(圖 1),FPGA 上的嵌入式 DSP 計算引擎提供了更多的並行乘法器資源。FPGA 廠商在交付專門用於機器學習的 FPGA 開發平臺時充分利用了這些特性。

圖 1:Lattice Semiconductor ECP5 之類的高級 FPGA 提供了實現高性能推理所需的並行處理資源和嵌入式存儲器。(圖片來源:Lattice Semiconductor)

例如,Intel 最近推出的支持 FPGA 的 OPENVINO™ 擴展了該平臺將推理模型部署到不同類型設備(包括 GPU、CPU 和 FPGA)的能力。在該平臺上,開發人員可使用 Intel 的深度學習推理引擎工作流程,其中整合了 Intel 深度學習部署工具包和在 Intel OPENVINO 工具包中提供的 Intel 計算機視覺軟體開發套件 (SDK)。開發人員使用 SDK 的應用編程接口 (API) 構建模型,並且可利用 Intel 的運行模型優化器針對不同硬體平臺進行優化。

深度學習部署工具包旨在與 Intel DK-DEV-10AX115S-A Arria 10 GX FPGA 開發套件配合使用,讓開發人員能從領先的 ML 框架(包括 Caffe 和 TensorFlow)導入訓練好的模型(圖 2)。在諸如 Arria 10 GX FPGA 開發套件之類目標平臺或使用 Arria 10 GX FPGA 器件的定製設計上,工具包中的模型優化器和推理引擎分別處理模型轉換和部署。

圖 2:支持 FPGA 的 Intel OPENVINO 工具包提供了一套必需的完整工具鏈,可將在 Caffe、TensorFlow 和其他框架上訓練的模型部署到 Arria 10 GX FPGA 開發套件或圍繞 Arria 10 GX FPGA 構建的定製設計上。(圖片來源:Intel)

為了遷移預訓練模型,開發人員使用基於 Python 的模型優化器生成了一個中間表示 (IR),該表示包含在一個提供網絡拓撲的 xml 文件和一個以二進位值提供模型參數的 bin 文件中。除了生成 IR 之外,模型優化器還會執行一項關鍵功能——移除模型中用於訓練但對推理毫無作用的層。此外,該工具會在可能的情況下將每個提供獨立數學運算的層合併到一個組合層中。

通過這種網絡修剪和合併,模型變得更緊湊,進而加快推理時間並減少對目標平臺的存儲器需求。

Intel 推理引擎是一個 C++ 庫,其中包含一組 C++ 類。這些類對於受支持的目標硬體平臺來說是通用的,因此可以在各個平臺上實現推理。對於推理應用而言,開發人員使用像 CNNNetReader 這樣的類來讀取 xml 文件 (ReadNetwork) 中包含的 CNN 拓撲以及 bin 文件 (ReadWeights) 中包含的模型參數。模型加載完成後,調用類方法 Infer() 執行阻塞推理,同時調用類方法 StartAsync() 執行異步推理,當推理完成時使用等待或完成例程處理結果。

Intel 在 OPENVINO 環境提供的多個示例應用程式中演示了完整的工作流程和詳細的推理引擎 API 調用。例如,安全屏障攝像機示例應用程式展示了使用推理模型流水線,以首先確定車輛邊界框(圖 3)。流水線中的下一個模型檢查了邊界框中的內容,識別車輛類別、顏色和車牌位置等車輛屬性。

圖 3:Intel 安全屏障攝像機示例應用程式演示了使用推理流水線,先識別車輛(綠色邊界框),再識別顏色、類型和車牌位置(紅色框)等車輛屬性,最後識別車牌字符(紅色文本)。(圖片來源:Intel Corp.)

流水線中的最後一個模型使用這些車輛屬性從車牌中提取字符。為了使用該模型進行推理,示例代碼顯示了利用推理模型 C++ 庫創建對象 (LPR),而該對象則是名為 LPRDetection 的結構的一個實例。此結構使用推理引擎 API 類對象來讀取 (CNNNetReader) 並驗證模型輸入和輸出(列表 1)。

    CNNNetwork read() override {

        std::cout << "[ INFO ] Loading network files for Licence Plate Recognition (LPR)" << std::endl;

        CNNNetReader netReader;

        /** Read network model **/

        netReader.ReadNetwork(FLAGS_m_lpr);

        std::cout << "[ INFO ] Batch size is forced to  1 for LPR Network" << std::endl;

        netReader.getNetwork().setBatchSize(1);

        /** Extract model name and load it's weights **/

        std::string binFileName = fileNameNoExt(FLAGS_m_lpr) + ".bin";

        netReader.ReadWeights(binFileName);

        /** LPR network should have 2 inputs (and second is just a stub) and one output **/

        // --Check inputs

        std::cout << "[ INFO ] Checking LPR Network inputs" << std::endl;

        InputsDataMap inputInfo(netReader.getNetwork().getInputsInfo());

        if (inputInfo.size() != 2) {

            throw std::logic_error("LPR should have 2 inputs");

        }

        InputInfo::Ptr& inputInfoFirst = inputInfo.begin()->second;

        inputInfoFirst->setInputPrecision(Precision::U8);

        inputInfoFirst->getInputData()->setLayout(Layout::NCHW);

        inputImageName = inputInfo.begin()->first;

        auto sequenceInput = (++inputInfo.begin());

        inputSeqName = sequenceInput->first;

        if (sequenceInput->second->getTensorDesc().getDims()[0] != maxSequenceSizePerPlate) {

            throw std::logic_error("LPR post-processing assumes certain maximum sequences");

        }

        // --Check outputs

        std::cout << "[ INFO ] Checking LPR Network outputs" << std::endl;

        OutputsDataMap outputInfo(netReader.getNetwork().getOutputsInfo());

        if (outputInfo.size() != 1) {

            throw std::logic_error("LPR should have 1 output");

        }

        outputName = outputInfo.begin()->first;

        std::cout << "[ INFO ] Loading LPR model to the "<< FLAGS_d_lpr << " plugin" << std::endl;

        _enabled = true;

        return netReader.getNetwork();

    }

列表 1:此代碼片段來自 Intel OPENVINO 工具包中的安全屏障攝像機示例應用程式,演示了使用 Intel 推理引擎 C++ 庫 API 將模型及其參數讀入推理引擎的設計模式。(代碼來源:Intel)

為了執行推理,該代碼加載數據並調用 submitRequest 方法,該方法啟動推理周期並等待結果,然後顯示識別的車牌字符(列表 2)。

     if (LPR.enabled()) {  // licence plate

         // expanding a bounding box a bit, better for the license plate recognition

         result.location.x -= 5;

         result.location.y -= 5;

         result.location.width += 10;

         result.location.height += 10;

         auto clippedRect = result.location & cv::Rect(0, 0, width, height);

         cv::Mat Plate = frame(clippedRect);

         // ---Run License Plate Recognition 

         LPR.enqueue(Plate);

         t0 = std::chrono::high_resolution_clock::now();

         LPR.submitRequest();

         LPR.wait();

         t1 = std::chrono::high_resolution_clock::now();

         LPRNetworktime += std::chrono::duration_cast<ms>(t1 - t0);

         LPRInferred++;

         // ---Process outputs

         cv::putText(frame,

                     LPR.GetLicencePlateText(),

                     cv::Point2f(result.location.x, result.location.y + result.location.height + 15),

                     cv::FONT_HERSHEY_COMPLEX_SMALL,

                     0.8,

                     cv::Scalar(0, 0, 255));

         if (FLAGS_r) {

             std::cout << "License Plate Recognition results:" << LPR.GetLicencePlateText() << std::endl;

         }

     }

     cv::rectangle(frame, result.location, cv::Scalar(0, 0, 255), 2);

}

列表 2:此代碼片段來自 Intel OPENVINO 工具包中的安全屏障攝像機示例應用程式,展示了加載模型、執行推理和生成結果的設計模式。(代碼來源:Intel)

集成式嵌入式視覺平臺

Intel 的 OPENVINO 方法強調平臺重定向,而 Lattice 的 SensAI 平臺完全聚焦於 FPGA 推理。SensAI 平臺的特性之一是為 DNN 架構(包括 CNN 和一個稱為二值化神經網絡 (BNN) 的緊湊架構)提供 FPGA IP。針對嵌入式視覺,SensAI CNN IP 為完整的推理引擎提供框架,將控制子系統、存儲器、輸入和輸出的接口與實現不同類型模型層(包括卷積、BatchNorm 歸一化、ReLu 激活、池化和其他)的資源結合在一起(圖 4)。

圖 4:Lattice Semiconductor CNN IP 實現了一個完整的推理系統框架,將專用引擎和用於控制、存儲器、輸入、輸出的接口結合在一起。(圖片來源:Lattice Semiconductor)

為了實現 CNN 模型,開發人員首先要在針對 ECP5 FPGA 的 Lattice Diamond 設計環境中或針對其他 Lattice FPGA 系列的 Radiant 設計環境中,利用 Lattice Clarity 配置工具配置 CNN。這裡,開發人員可以指定模型類型(CNN 或 BNN)、卷積引擎數(最多 8 個)及每層的內部存儲大小(最多 16 Kb)或二進位大對象 (blob)。配置 CNN 之後,開發人員使用設計環境生成核心,作為 FPGA 比特流。

開發人員單獨將通過 Caffe 或 TensorFlow 開發並訓練好的模型導入 SensAI 平臺。這裡,Lattice 神經網絡編譯器將訓練好的 Caffe 或 TensorFlow 模型轉換為一組包含神經網絡模型參數和執行命令序列的文件。SensAI 平臺將來自設計環境和編譯器的單獨輸出一起併入 FPGA,以提供最終的推理模型(圖 5)。

圖 5:Lattice Semiconductor SensAI 平臺將其 CNN 和 BNN IP 與其神經網絡編譯器結合在一起,使開發人員能夠轉換 Caffe 或 TensorFlow 模型,以在 Lattice FPGA 上作為推理引擎來運行。(圖片來源:Lattice Semiconductor)

針對嵌入式視覺應用,Lattice LF-EVDK1-EVN 嵌入式視覺開發套件 (EVDK) 為運行 CNN 模型推理提供了理想的目標平臺。EVDK 提供了一個完整的 80 x 80 mm 三板堆疊式視頻平臺,包括 Lattice CrossLink 視頻輸入板、帶 ECP5 FPGA 的處理器板和 HDMI 輸出板。開發人員可以將 EVDK 用作 Lattice 提供的多個示例 CNN 應用的目標平臺。例如,Lattice 速度標誌檢測參考設計運用 EVDK 來展示 SensAI CNN IP 在典型汽車應用中的應用(圖 6)。

6:Lattice Semiconductor 速度標誌檢測參考設計利用 SensAI 平臺和 Lattice LF_EVDK1-EVN 嵌入式視覺開發套件提供一個完整的推理應用,開發人員可以對其立即操作或詳細探索。(圖片來源:Lattice Semiconductor)


此示例應用程式的項目文件包括全套文件,從 Caffe caffemodel 和 TensorFlow pb 格式的模型開始。因此,開發人員可以探索這些模型的細節。例如,使用 TensorFlow import_pb_to_tensorboard.py 實用程序,開發人員可以導入 Lattice 提供的 pb 模型,以查看此示例應用程式中使用的 CNN 的細節(圖 7)。本例中,所提供的模型是由四個「Fire」模塊組成的序列,每個模塊包括:

Conv2D 層,執行 3 x 3 卷積以從輸入流中提取特徵

激活層,執行 BatchNorm 歸一化,然後執行修正線性單元 (ReLU) 激活
MaxPool 池化層,用於對前一層的輸出進行採樣

圖 7:Lattice 速度標誌檢測示例應用程式包括 TensorFlow pb 模型,開發人員可以將其導入 TensorBoard 進行詳細檢查。注意:數據向上流過此圖中的各層。(圖片來源:Digi-Key Electronics)


開發人員可以使用 SensAI 平臺生成模型文件,完成前面描述的模型流程。或者,開發人員可以使用所提供的文件直接跳轉到部署階段。任一情況下,文件都是通過接有適配器的 microSD 卡加載到 EVDK 中。

在操作中,EVDK 上的攝像機向 ECP5 FPGA 提供視頻流,其中配置的 CNN 加速器 IP 執行命令序列以執行推理。同任何推理引擎一樣,每個輸出通道都會產生一個結果,指出與該輸出通道相關聯的標籤即為輸入圖像的校正標籤的概率。本例中,模型是用每小時 25、30、35、40、45、50、55、60 和 65 英裡的限速標誌的標註圖像進行訓練的。因此,當模型在其輸入欄位中的任何位置檢測到限速標誌時,它會顯示檢測到的標誌對應於每小時 25、30、35、40、45、50、55、60 或 65 英裡限速的概率(圖 8)。

圖 8:Lattice 速度標誌檢測演示運行在 Lattice EVDK 上,對視頻輸入流執行推理,生成輸出值,指示捕獲到的圖像對應於與該特定輸出相關聯的標籤的可能性。本例中,它顯示限速標誌最有可能是 25 mph。(圖片來源:Lattice Semiconductor)

總結


為在嵌入式視覺應用中運用機器學習,開發人員使用可用硬體平臺實現所需性能水平的能力受到了限制。然而,高性能 FPGA 的出現使得開發人員可以構建性能接近 GPU 的推理引擎。採用專為嵌入式視覺設計的機器學習 FPGA 平臺,開發人員可以專注於特定需求,使用標準機器學習框架訓練模型,並依靠 FPGA 平臺實現高性能推理。

近期許多用戶希望學院可以分享一些FPGA的學習資料,綜合了大家的意見,今天特意為大家整理了一份FPGA資料大禮包,這裡面包含了視頻課程,論文,學習筆記,書籍這幾個類別! 先給大家看下目錄~!


 

如何免費領取這些資料?掃碼進群,參與活動,即可免費領取哦~

掃碼失敗,添加微信:mlajsw96

 

由於篇幅有限,點擊閱讀原文,了解更多課程詳情,有疑問請添加客服微信:mlajsw96,備註【FPGA諮詢】

相關焦點

  • Alink:基於Flink的機器學習平臺
    分享嘉賓:楊旭 阿里巴巴 資深算法專家編輯整理:朱榮導讀:Alink是基於Flink流批一體的機器學習平臺,提供一系列算法,可以幫助處理各種機器學習任務,比如統計分析、機器學習、實時預測、個性化推薦和異常檢測。
  • 微軟發布基於FPGA的深度學習平臺Brainwave
    打開APP 微軟發布基於FPGA的深度學習平臺Brainwave 發表於 2019-08-19 17:51:01 因此,這套深度學習加速平臺應運而生。 微軟在官方博客上公布了Brainwave的三個層面:高性能分布式系統架構,集成至FPGA上的深度神經網絡(DNN)引擎,可低摩擦部署訓練模型的編譯器和runtime。Brainwave利用了大量微軟在過去幾年裡部署的FPGA架構。通過將高性能FPGA連結到數據中心網絡,微軟讓DNN支持硬體微服務。
  • 基於FPGA的m序列信號發生器設計
    基於FPGA與Verilog硬體描述語言設計井實現了一種數據率按步進可調、低數據誤碼率、反饋多項式為本文引用地址:http://www.eepw.com.cn/article/263588.htm  m序列一旦反饋多項式及移位寄存器初值給定,則就是可以預先確定並且可以重複實現的序列,該特點使得m序列在數據白噪化、去白噪化、數據傳輸加密、解密等通信、控制領域使用廣泛。因此,深入學習研究m序列具有重要的實際意義。
  • 基於JTAG接口實現ARM的FPGA在線配置
    本文介紹作者開發實現的一種基於ARM的嵌入式Linux下通過JTAG接口動態配置FPGA的方法。  系統使用三星公司基於ARM9的S3C2410處理器晶片,Altera公司CycloneII系列的EP2C70 FPGA晶片,ARM處理器上運行基於S3C2410裁剪後的嵌入式Linux系統,內核版本為2.4.18。
  • 基於CORDIC 2FSK調製器的FPGA設計
    傳統上以硬體實現載波的方法都是採用直接頻率合成器(DDS)實現。但是DDS傳統的實現方式是基於查找表思想,即通過查找預先存儲的正餘弦表來產生需要的正餘弦值。當頻率、精度要求越高,需要存儲的值也就越多,考慮FPGA的RAM資源有限,傳統的DDS實現方式就有了應用瓶頸。因此導致開發成本過高,甚至無法實現,不適合現代通信系統的發展。
  • 八個面向開發人員的機器學習平臺
    21CTO導讀:軟體開發者現在可以使用以下機器學習平臺和工具作為資源,將機器學習功能無縫集成到自己的系統中。
  • 匯量科技陳緒:如何基於AWS構建一站式機器學習平臺
    匯量科技陳緒:如何基於AWS構建一站式機器學習平臺 匯量科技陳緒:如何基於AWS構建一站式機器學習平臺 2020-12-08 15:07:26  來源:鳳凰網匯量科技資深算法架構師陳緒應邀出席大會,與AWS資深解決方案架構師、區域經理張孝峰展開深度對話,分享了匯量科技是如何基於AWS構建一站式機器學習平臺MindAlpha來滿足日均千億次預測並推動業務飛速發展的。即日起至12月18日,用戶均可通過AWS re:Invent 活動官方頁面觀看該分享內容。
  • 基於FPGA的任意分頻器設計
    1、前言本文引用地址:http://www.eepw.com.cn/article/261789.htm  分頻器是FPGA設計中使用頻率非常高的基本單元之一
  • Facebook基於機器學習的應用程式
    原文連結:http://aiehive.com/facebooks-human-like-learning-applications/研究人員越來越傾向用機器學習的方法來解決現實世界的問題
  • 基於機器學習的數值天氣預報風速訂正研究
    目前風速預測方法大致可分為物理方法和統計方法。物理方法,如數值天氣預報,主要考慮到影響風場的物理因素及其間的物理相互作用規律來對風場進行預測。這類方法需要對實際物理過程有清晰的認識和重現能力,但由於模式的物理參數化方案的不完善和很多參數的不確定性等,使得對近地面風場的預報存在較大的誤差。統計方法通常利用大量歷史數據來構建預測的統計模型,包括傳統統計方法和機器學習方法。
  • 18個值得收藏的機器學習平臺
    使用像Filestack這樣的合適工具在ML環境中工作可以使開發人員更容易創建一個能夠充分發揮其功能的高效算法。以下機器學習平臺和工具 - 無法按特定順序列出 - 現在可用作將ML的功能無縫集成到日常任務中的資源。1.  H2OH2O是由H2O.ai為Python,R和Java程式語言設計的。
  • 基於OpenCL的深度學習工具:AMD MLP及其使用詳解
    深度學習是近年來迅速發展和突破的機器學習領域,具有非常廣泛的應用前景。將伺服器GPU應用到深度學習過程中,可以更好地推動深度學習技術研究和應用的發展。本文介紹AMD深度學習團隊開發的MLP學習工具軟體的使用,為深度學習研究人員和開發商提供一個高性能、高易用性的深度學習的軟硬體平臺方案。AMD-MLP基於OpenCL,支持不同類型的GPU平臺,並能通過多GPU擴展學習速度。
  • 基於機器學習的數值天氣預報模式釋用方法
    本研究提出了數值天氣預報模式輸出機器學習(MOML)方法作為數值天氣預報模式的釋用技術。MOML方法是一個基於機器學習的模式後處理方法,它通過一個回歸函數將數值預報結果跟觀測數據進行匹配,這種方法可以提取某點的空間特徵和時間特徵。配合合適的特徵工程方案,MOML得到的預報結果比傳統的MOS算法好,尤其是冬季更明顯。
  • 基於機器學習的密碼強度檢測
    但所有的這些檢測都是基於規則的。一個密碼在Google這邊可能是強密碼但在Dropbox就變成了弱密碼。我在想我們能否讓機器學習算法來決定一個密碼是弱密碼還是強密碼。於是,這個帖子誕生了。讓我們開始吧。數據收集此次分析所使用的密碼數據來自於000webhost洩漏,此數據可在網上下載。那麼我們是如何決定哪些密碼是高強度的哪些密碼是低強度的呢?
  • 基於FPGA的實時中值濾波器硬體實現
    中值濾波作為一種非線性濾波方法,既可以消除隨機噪聲和脈衝幹擾,又可以很大程度地保留圖像的邊緣信息,得到了廣泛的運用。在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。
  • Altera啟動全球 SoC FPGA開發者論壇
    這些開幕活動在矽谷、中國深圳和德國法蘭克福舉行,合作夥伴、開發者和工程師將匯聚一堂,他們共同關注使用基於ARM的SoC FPGA中的精細粒度異構計算技術,滿足下一代嵌入式計算應用需求。在ASDF提供的環境中,系統架構師、硬體工程師、軟體開發人員和固件工程師一起協作,討論概念和遇到的難題,學習最新的技術,了解Altera及其合作夥伴提供的SoC FPGA新產品。
  • 機器學習平臺在Kubernetes上的實踐
    【編者的話】本文回顧總結近一段時間網易雲音樂機器學習平臺(GoblinLab)在容器化實踐的一些嘗試。背景過去音樂算法的模型訓練任務,是在物理機上進行開發、調試以及定時調度。每個算法團隊使用屬於自己的獨立物理機,這種現狀會造成一些問題。
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    一、引言本文引用地址:http://www.eepw.com.cn/article/245960.htm本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路
  • HyperFoods:基於機器學習智能繪製食物中抗癌分子的圖譜
    文章中作者介紹了一個獨特的基於網絡的機器學習平臺HyperFoods,以識別推定的基於食物的抗癌分子。結果表明佔比最高的基因參與細胞增殖控制,其突變通常與癌症有關,其為基於機器學習的藥物抗癌特性預測提供了透明度。2.3 通路分析和差異化交互組作者使用基因集富集對基於網絡的機器學習中獲得的用於預測對抗癌治療最有影響力的基因/蛋白質的列表進行通路分析。
  • 一種基於FPGA的視頻邊緣檢測系統設計
    實際採用DE2-115開發板和CMOS攝像頭OV7670為硬體平臺進行驗證。結果表明,該系統具有實時性高,檢測準確的特點,達到了設計要求。本文引用地址:http://www.eepw.com.cn/article/246281.htm隨著科技的發展,視頻採集系統越來越廣泛的應用於各個領域,如體育直播,視頻會議,飛彈的電視制導等等。