IMG_4631

日期:

2020.05.01~2020.05.02

費用:


itemcost

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


追海龜之小琉球潛水行... 兩天一共潛了五隻(一隻岸潛,四隻船潛),已經好久沒這麼操了,回家後洗裝備加洗澡完直接昏睡,只能說欠操。


潛店: 熊潛水


教練: 艾爾帛特i水肺https://www.instagram.com/albertiscubadiving/?hl=zh-tw


時間: 2019.08.02~2019.08.04


實記:

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


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

觀念建立:

使用caffe轉ncnn的格式,有個很重要的工具,就是Protocol Buffers ,Protocol Buffers又簡稱為Protobuf、PB。是Google推出的一種數據交換格式。注意,這還是二進制的交換數據。Protobuf有自己的編譯器,在Linux中叫做protoc,可以解釋.proto文件並且聲稱對應語言的源文件。目前Google提供了三種語言:Java, C++, Python。後面我們就以C++來說明,其他語言類似。
總結一下:我們所說的Protobuf,其實可以說是包含以下幾部分:
1. 一種數據交換格式,可以將C++ 中定義的存儲類的內容與二進制序列串相互轉換,主要用於數據傳輸或保存

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

3. 編譯tensorflow

a.  下載源碼並且配置
       $ git clone   https://github.com/tensorflow/tensorflow
       $ cd tensorflow
       $ configure

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

為了編譯支援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) 人氣()

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

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

在嵌入式平台中進行一些複雜算法的開發,一定需要用到指令及來進行加速,目前在嵌入式平台上做多使用的晶片就是ARM,這次我們要將mtcnn的人臉偵測AP porting到 ARM的開發平台上,針對執行的速度的進行優化的動作。

在mtcnn 人臉偵測AP分為兩個部分,一是執行演算法的library,即是ncnn  library,在此源碼裡有提供ARM NEON功能來獲得較高的效能,需要用define的方式開啟,但開啟後還是會有下列幾個錯誤現象發生,需要一一處理。

加入 add_definitions(-D__ARM_NEON -D__ARM_FP=2)將ARM NEON功能開啟。

編譯後出現以下錯誤:

/share/tbb_sunplus_20190612/crossgcc/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.3.1/include/arm_neon.h:10844:1: error: inlining failed in call to always_inline ‘void vst1_s16(int16_t*, int16x4_t)’: target specific option mismatch

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


1. 前置作業
在進行建立cross compiler的環境前,或許您的電腦缺少了相關套件,請依下面的指示將套件安裝完畢,再進行建立cross compiler的環境

a. 建立cross compile path到環境變數
PATH = <YOUR_ARM_TOOLCHAIN_PATH>:$PATH

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


    YoloV3的核心思想
    YoloV3的核心思想就是利用整張圖做為網路的輸入,直接在輸出層回歸bounding box(邊界框)的位置及其所屬類別。YoloV3規劃了三層名叫”yolo”來當作物件偵測層,其層產生的feature map即是用來回算bounding box的資訊,若要了解如何回推物件的最佳bounding box前,須了解何謂anchor boxYoloV3檢測思路。
    YoloV3實現的方法
    將原始影像利用捲積神經網路的滑動視窗演算法,將圖片分成SxS個網格(grid cell)來偵測物件所在,如果某個物件的中心點落在此網格內,則這網格負責預測這個物件。YoloV3裡,使用移動步伐(stride)的方式,將圖片縮小至1/321/161/8不同大小來偵測大中小物件,以輸入照片原始大小為416x416為例,則會產生13x1316x2652x52的網格,分別位於第82、第94、第106層,其網格內容存放的資訊是預測資訊(邊界框的坐標、類別標籤等)。
    錨點框(Anchor box)

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

linux 在下達指令後,往往會有大量訊息,但在terminal上看不容易看,可以用下列指令將訊息導出到檔案裡。

sudo -s

將權限切換到super user

do_command 2>&1 | tee -a log-file
do_command的結果會輸出到畫面,同時以append的方式輸出到log-flie中。

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


1. 前言

  所謂Linux kernel就是控制你主機的所有硬體並提供系統所有的功能,在開機的時候,利用開機管理程式啟動kernel來偵測硬體並載入適當的驅動程式,這樣系統才可以順利的運作。

 https://www.itread01.com/articles/1475911242.html

 由上圖可以看到整個 OS分為兩塊,一個是User SpaceKernel Space,當我們在編譯kernel時,可隨意調整內容做瘦身。linux kernel裡,是以C語言及組合語言寫成,其軟體內容以GPL方式釋出,在商業化時,必須要公開原始碼要回饋給linux機構。由於是完全開放的軟體內容,我們常可透過程式了解驅動硬體的行為,若未來要獨自撰寫一個全新的驅動程式,建議可以透過類似的驅動模組加以修改會較簡單。在系統上是以檔案的方式實現,這個檔案包含了驅動模組,而kernel檔案會被放置在/boot/vmlinux-xxx裡,因為是檔案,其實linux os上可以擁有多個kernel檔案,但開機時只能選擇一個。Kernel module,每個模組都代表一個驅動程式,所以若我們的硬體環境若換置了新了裝置,我們可以透過模組的形式,單純對這個module做置換。所以我們可以將需要置換的module獨立出來,不須重新編譯kernel,將module重新編議後再載入到kernel裡。而模組在哪裡,就在/lib/module/$(uname –r)/kernel裡。

2. 編譯原始碼步驟

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

當在VM WARE上執行的linux系統無法使用copy-paste時如何處理,執行以下指令即可解決

Open terminal on guest
$ sudo apt-get update
$ sudo apt-get install open-vm-tools-desktop
$ reboot

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

1 2 3
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。