PIXNET Logo登入

一切的安排,都是最好的安排

跳到主文

紀錄點滴是為了往後回味曾經的美好所做的準備

部落格全站分類:偶像明星

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 7月 31 週三 201909:35
  • How to use protoc tool to transform ncnn format model from caffe format model


目前使用騰訊所改寫的MTCNN detector做人臉偵測,其框架使用的是NCNN,但現階段我們是使用tensorflow or caffe 框架來訓練model,所以勢必要使用轉換程式將tensorflow or caffe轉為NCNN格式讓MTCNN detector使用,目前我們的環境如下圖所示,使用tensorflow 框架來訓練model,但必須先轉換為caffe 框架再轉為NCNN框架,為何要這麼麻煩呢?原因是tensorflow是現階段做深度學習最熱門的工具,但騰訊目前並無支援tensorflow直接轉NCNN(據說前陣子官方有提供,但bug太多,所以就停止支援,但未來若再提供,一定會更方便),所以一定要先有中繼轉換再轉為NCNN,本篇就是教學如何建立出轉檔程式,並且成功生出NCNN格式的model。
 
(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(35)

  • 個人分類:AI
▲top
  • 7月 16 週二 201918:32
  • 編譯tensorflow c/c++ api 函式庫(二)

3. 編譯tensorflow
    a.  下載源碼並且配置
       $ git clone   https://github.com/tensorflow/tensorflow
       $ cd tensorflow
       $ configure
(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(885)

  • 個人分類:AI
▲top
  • 7月 16 週二 201910:24
  • 編譯tensorflow c/c++ api 函式庫(一)

為了編譯支援tensorflow 框架的Face detector的AP,其中使用到tensorflow c/c++ api,所以需要下載原始碼編譯出libtensorflow.so檔來使用,接下來就是介紹整個編譯環境的過程。
1. 簡介:
tensorflow提供了python, c/c++的API,我們現在的應用用到c/c++版本,所以需要編譯出library來使用,在編譯library時,必需使用bazel及protobuf及eigen工具,應將其工具準備好。
FaceDetector AP 源碼: https://github.com/OAID/FaceDetection

(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(296)

  • 個人分類:AI
▲top
  • 7月 14 週日 201917:03
  • 如何將tensorflow 框架的model轉為ncnn 框架的model

1. 甚麼是深度學習框架:
現在深度學習很熱門,為了要方便做出適合優秀的深度學習模型,各大社群或廠商紛紛堆出了許多方便建立深度學習模型的工具,作一個簡單的比喻,一套深度學習框架就是這個品牌的一套積木,各個元件就是某個模型或演算法的一部分,你可以自己設計如何使用積木去堆砌符合你資料集的積木。好處是你不必重複造輪子,模型也就是積木,是給你的,你可以直接組裝,但不同的組裝方式,也就是不同的資料集則取決於你,現在有Caffe、tensorflow ncnn 等等的工具可以使用,其中ncnn是中國騰訊所出的框架,在mtcnn 人臉偵測的ap,就是使用ncnn的格式。
a.甚麼是ncnn?
ncnn 是一個為手機端極致優化的高性能神經網絡前向計算框架。 ncnn 從設計之初深刻考慮手機端的部署和使用。無第三方依賴,跨平台,手機端 cpu 的速度快於目前所有已知的開源框架。基於 ncnn,開發者能夠將深度學習算法輕鬆移植到手機端高效執行,開發出人工智能 APP,將 AI 帶到你的指尖。 ncnn 目前已在騰訊多款應用中使用。(取至ncnn git的介紹)
ncnn git: https://github.com/Tencent/ncnn
b. 甚麼是tensorflow?
是一個用於機器學習的開源軟體庫,可以支援深度學習的各種演算法。它最初是由傑夫 ‧ 迪恩 (Jeff Dean)領軍的 Google Brain 團隊,基於 Google 第一代深度學習系統 DistBelief 改進而產生。Google 於 2015 年底公佈並宣佈開源了 TensorFlow。在 TensorFlow 中文社群的首頁,有一句話:TensorFlow 是一個用於人工智慧的開源神器。

c. 甚麼是caffe?
Caffe 全稱為 Convolutional Architecture for Fast Feature Embedding,是一個被廣泛使用的開源深度學習框架,在 TensorFlow 出現之前一直是深度學習領域 GitHub star 最多的項目。
(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(86)

  • 個人分類:AI
▲top
  • 6月 28 週五 201910:08
  • 編譯 ncnn library 的ARM NEON版本

在嵌入式平台中進行一些複雜算法的開發,一定需要用到指令及來進行加速,目前在嵌入式平台上做多使用的晶片就是ARM,這次我們要將mtcnn的人臉偵測AP porting到 ARM的開發平台上,針對執行的速度的進行優化的動作。
在mtcnn 人臉偵測AP分為兩個部分,一是執行演算法的library,即是ncnn  library,在此源碼裡有提供ARM NEON功能來獲得較高的效能,需要用define的方式開啟,但開啟後還是會有下列幾個錯誤現象發生,需要一一處理。
(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(229)

  • 個人分類:AI
▲top
  • 6月 11 週二 201914:14
  • Yolo V3 bounding boxes回歸原理學習



YoloV3的核心思想
YoloV3的核心思想就是利用整張圖做為網路的輸入,直接在輸出層回歸bounding box(邊界框)的位置及其所屬類別。YoloV3規劃了三層名叫”yolo”來當作物件偵測層,其層產生的feature map即是用來回算bounding box的資訊,若要了解如何回推物件的最佳bounding box前,須了解何謂anchor box及YoloV3檢測思路。
 
YoloV3實現的方法
將原始影像利用捲積神經網路的滑動視窗演算法,將圖片分成SxS個網格(grid cell)來偵測物件所在,如果某個物件的中心點落在此網格內,則這網格負責預測這個物件。YoloV3裡,使用移動步伐(stride)的方式,將圖片縮小至1/32、1/16、1/8不同大小來偵測大中小物件,以輸入照片原始大小為416x416為例,則會產生13x13、16x26、52x52的網格,分別位於第82、第94、第106層,其網格內容存放的資訊是預測資訊(邊界框的坐標、類別標籤等)。
 
錨點框(Anchor box)
Anchor box是一種先驗知識,是在訓練階段產生的數值,在測試階段,可透過anchor box的長寬及網路預測的數值產生物件的bounding box,在yoloV3裡,因為每個cell都帶有預測3 個邊界框,每個邊界框都搭配一個Anchor box來修正成最後正確的邊界,所以每層yolo的每個cell都有三分anchor box。透過下三張圖,可以看到第82、94、106層的anchor box的配置,mask代表此層要拿第幾組anchor box,classes代表有幾種物件要判斷。其anchor box的數值並非是座標位置,是anchor box的大小(pixel value),代表長跟寬。
Yolo輸出層解釋
前一段落有提到每個cell都帶有預測3 個邊界框數量,根據YOLO 的論文,這些B 邊界框中的每一個都可能專門用於檢測某種對象。每個邊界框都有5+C 個屬性,分別描述每個邊界框的中心坐標、維度、objectness 分數和C 類置信度。分別是x, y, w, h, confidence,(x, y)表示box中心相對於grid cell的位移,而w, h為b-box長寬,confidence即為IOU (between predicted box and any ground truth box)。其邊界框結構如下:
每個cell分別有三個預測框數量
所以此yolo層的feature map數量為S x S x B x (5 + classes)
 
邊界框預測結果
使用yolo層的預測結果(bounding box)加上anchor box來正確框出物件位置,公式轉換如下:
pw / ph : anchor box長寬
tx / ty / tw / th: 網路預測四個值
cx / cy: 某個cell
距離物件的top left corner距離

如上圖,透過公式,找出藍色框框,其籃框是最符合物件大小的。


(繼續閱讀...)
文章標籤

^_^ 發表在 痞客邦 留言(0) 人氣(4,246)

  • 個人分類:AI
▲top
1

個人資訊

^_^
暱稱:
^_^
分類:
偶像明星
好友:
累積中
地區:

熱門文章

  • (4,683)如何編譯Linux Kernel Source Code
  • (1,346)如何在Ubuntu環境下架設SAMBA
  • (455)用GPU加速深度學習: win10如何安裝開發環境
  • (346)2020.05.01 阿里山舊鐵道散步行(眠月線&特富野古道)
  • (141)在CP chip上建立Opencv + QT + GTK 編譯環境
  • (129)UBUNTU 16.04下安装GTK 2.20.1
  • (85)2016.07.16 東北角潛水行(89.5)
  • (86)如何將tensorflow 框架的model轉為ncnn 框架的model

文章分類

  • AI (6)
  • 登山 (4)
  • 學習 (9)
  • 潛水 (4)
  • 美食 (1)
  • 旅遊 (11)
  • 未分類文章 (1)

最新文章

  • 2020.05.01 阿里山舊鐵道散步行(眠月線&特富野古道)
  • 潛進海龜的故鄉
  • How to use protoc tool to transform ncnn format model from caffe format model
  • 編譯tensorflow c/c++ api 函式庫(二)
  • 編譯tensorflow c/c++ api 函式庫(一)
  • 如何將tensorflow 框架的model轉為ncnn 框架的model
  • 編譯 ncnn library 的ARM NEON版本
  • 在CP chip上建立Opencv + QT + GTK 編譯環境
  • Yolo V3 bounding boxes回歸原理學習
  • [Linux 開發環境 系統問題解決辦法]同時將訊息輸出至畫面與重導到檔案

最新留言

    動態訂閱

    文章精選

    文章搜尋

    誰來我家

    參觀人氣

    • 本日人氣:
    • 累積人氣: