目前分類:程式開發 (24)

瀏覽方式: 標題列表 簡短摘要

➤ 準備套件

MediaMTX:到 github 網站下載 zip 包 https://github.com/bluenviron/mediamtx,參考 [1]
FFmpeg:到官網下載已經編譯好的 zip 包,參考[2]
 

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        什麼叫「預訓練模型」?事先透過大量的數據集訓練網路模型,這樣所獲得的模型結果可稱為預訓練,不過生成的模型算是一種通用的模型。比如一個分類的模型,大量被標註的數據集輸入到網路模型經過訓練後,這樣的預訓練模型或許能做到分類工作,但不見得能做得特別精準。所以說它只是一種通用模型,如果想要讓它分類更精準,那就得用自己的數據集再做 fine tune。
        在百度的 PaddleHub 平台上 https://github.com/PaddlePaddle/PaddleHub 提供不少預訓練的模型庫,底下圖一列出了部分網路模型。百度本身擁有不少數據集,適合拿來預先訓練各類網路模型,像是人體關鍵點檢測用到 ResNet50 的模型,目標檢測用到 YOLOv3 模型做訓練,我們身為初學者可以直接拿這些模型庫來做測試,基本上都有不錯程度的效果。不過,如果要針對某特定領域做檢測,可能會覺得精準度還不足。

漢亞科技 Han-Ya 發表在 痞客邦 留言(1) 人氣()

        OCR 圖形轉文字的識別技術也是架構在深度學習的理論之上,是人工智慧的應用之一。OCR 技術的辨識過程分成三部分:文本偵測文本識別文字分類,每一部分都用到神經網路模型來訓練。本文不打算講模型訓練的過程,而是介紹訓練後的網路模型如何部署到應用端,在 Windows 上的 OCR 軟體如何開發。就核心基礎來說,神經網路的模型是基於百度的 PaddleOCR 所訓練得來,它在 Github 上有開放原始碼,除了用百度的模型之外,也可以自建模型訓練。訓練後,百度提供一套推理模型部署的方法,根據技術文件的步驟操作可以在 Windows 環境下編譯出 OCR 的應用程式,不過文件操作還是以 Linux 環境為主。底下我把在 Windows 的編譯過程寫下來。
 

資料下載

        (1) OpenCV:到官網上面下載 Windows 版本,裡面包含程式碼和編譯後的函數庫。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        近年來,人工智慧 AI 的浪潮持續發酵,然而,實際上AI的定義和運作方式並不容易說得清楚。AI是一個廣泛的領域,涵蓋了各種技術和應用,其核心目標是讓機器模仿人類的智能和學習能力。就技術的角度而言,確實需要具備並累積相當多的數學背景知識,例如微積分、機率、線性代數、矩陣行列式...等,這些知識是理解機器學習 ML 的理論基礎不可或缺的要素。在機器學習中,數學扮演了關鍵的角色,它們構成了算法和模型背後的數學原理,幫助我們解釋和理解機器學習的運作方式。熟悉這些數學概念和技巧,有助於更深入地探索機器學習領域,並設計出更有效和強大的學習模型。前一篇[1] 大略整理了人工智慧 AI機器學習 ML、深度學習 DL 三者的關係,然而,深度學習的技術發展才是真正推動人工智慧在應用面取得大幅進展的主要因素。深度學習以類神經網路為基礎搭配硬體的高效運算能力,進一步改進了許多應用領域,如圖像識別、語音辨識、自然語言處理...等。這些技術的突破性進展使得人工智慧應用的範疇不斷擴展,並為許多行業帶來了革命性的變化和創新
 
        雖然機器學習的理論基礎複雜,不過整體開發的流程可以歸納成下圖的管線,就像是面對問題分析問題解決問題放下問題一樣,有一套標準步驟。首先定義問題是不是需要靠深度學習的方法才能解決?再來是收集資料,足夠的資料量或不夠的資料會決定接下來採用哪種模型。有了模型後,才會訂定最佳化的標準,進行一輪又一輪的訓練。最後,用「未訓練」的數據來評估訓練後的模型,看看效果好不好。如果達到預期,則保留模型的參數。有關機器學習的課程,可以到 百度人工智能學習社區 https://aistudio.baidu.com,先有一些基礎知識後再來開發 AI。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        「人工智慧」是一個很熱門的話題,不過就技術而言它已經存在已久。最近,我非常專注地閱讀了百度的 Paddle 飛槳網站 https://www.paddlepaddle.org.cn/ 有關人工智慧技術的內容,我覺得它非常清楚地解釋了人工智慧、機器學習和深度學習之間的關係。因此,我特別把這些內容整理起來。從下圖一來解釋這三者的關係,人工智慧 AI 可以被視為應用於各個領域的一種技術,其需要依賴於機器學習 (ML:Machine Learning) 的方法。機器學習技術可以分為兩種主要形式,即早期的傳統學習技術和現代的深度學習技術 (DL:Deep Learning)。
 
        在早期的機器學習中,由於硬體運算效能有限且訊息數據難以大量取得,技術的發展側重於分析訊息的特徵。以我過去學習過的語音和影像技術為例,我們需要分析語音的發音方式,例如聲母、韻母、子音...等,並提取出聲音的特徵,還有從頻譜的角度來分析語音特性。之後,我們建立一個模型,例如隱藏式馬可夫鏈 (HMM),以便進行語音的訓練和識別。過去,同樣的過程也被運用在影像處理方面,先解析影像訊號,分析影像特性並取得其特徵,再建立影像的模型。從上述描述可以看出,傳統的技術需要對這多媒體訊號的特性進行深入研究,不論是從時域(time domain)或頻譜(frequency domain)的角度來解析訊號的特徵。接著,根據這些特徵建立一套模型,並將有限的數據輸入到模型中,最終進行模型的訓練以獲得適合的結果。這個過程需要對訊息進行大量的研究和分析,並且受限於資源和數據的可用性。

漢亞科技 Han-Ya 發表在 痞客邦 留言(1) 人氣()

        GMap.NET 是一個功能強大的地圖繪製套件,用於 WinForm 應用程式並載入 Google 地圖。由於 Google 地圖本身提供 API 函數讓第三方使用,而 GMap.NET 套件將這些 Google 地圖的函數封裝起來,組成一個 .NET 環境下開發的函數庫,方便用 C# 語言開發地圖繪製與標示的功能。
        首先,在 Visual Studio 上面開啟一個專案準備開發 GMap 地圖,接著從 NuGet 套件管理中搜尋 "GMap",安裝 GMap.NET.WinForms 等相關的軟體函數庫,如下圖一所示。
圖一:安裝 GMap.NET 套件

 

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        前面的文章介紹 Emgu.CV 套件如何擷取網路攝影機 IP CAM 的影像 https://han-ya.blogspot.com/2023/06/emgucv-opencv.html,延續前文的操作,我們利用 Emgu.CV 提供的函數庫將影像錄製成檔案,如下圖一所示。新增一個錄影的按鈕,當擷取影像的同時,也將影像儲存成檔案。
圖一:錄製 IP CAM 的畫面


        首先,VideoWriter 是一個 Emgu.CV 的類別,用來錄製影像檔,參考下圖二的說明。創建這個類別時,至少要提供的參數:錄製的檔名FPS (Frame rate Per Second)Frame尺寸大小、以及是否彩色錄影。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        Emgu CV 是一套處理影像的跨平台套件,它將 OpenCV 的影像處理函數庫透過 .Net 核心封裝成 Emgu CV。從 2008 年開始 Emgu 開發出 1.2 版本,2009 年推出 2.0,到了 2015 年進展到 3.0 版本,2019 年進到 4.0 版本,目前已經來到 4.7 的版本號了。最新的 Emgu 可以支援 WindowsLinuxiOS安卓...等各種平台,並且提供 C#C++VB.NET 等語言的範例程式碼,開發編譯的環境則需要 Visual Studio 2017 以上的版本。
 
        底下來實作一個 IP Cam 網路擷取影像的案例,實作過程前,先說說這套 Emgu 的缺點。我在開發的過程中發現版本間的程式碼無法相容,比如:開發用 3.1 版本,當升級到 4.2 版本後,很多函數的 interface 改了,有的類別名稱也改了,造成程式碼無法上下版本相容,這點是它的一大問題。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

MSYS2 是一個在 Windows 環境下用來編譯 Linux 相關程式碼的系統,多數開源的代碼需要在 Linux 環境下編譯,有了 MSYS2 我們也可以在 Windows 系統下進行編譯了。

因為容易忘記 MSYS2 的指令,又是會使用到的軟體,所以記錄常用的指令。

下載安裝 MSYS2 之後,一段時間需要更新系統,指令如下:

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

 
        開發設計任何系統,日誌 logging 是很重要的基礎工作。少了日誌,系統出錯將不容易除錯、分析、解決問題,所以第一步要先學會如何產生日誌。在開發 ESP32 / Arduino 這類系統時,一般常見產生日誌的方法是呼叫 printf 函數將想要紀錄的內容傳到 UART 介面,再從電腦的 COM port 上來查看。
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        隨著雲端運算的技術越來越成熟,各家平台提供語音方面的服務,應用開發者只要連上雲端並將語音上傳,便能取得想要的服務。為了研究如何連上各家平台的服務,筆者設計一個 Proxy 服務,如圖一所示。目前,我們實際使用過的平台有:阿里雲百度科大訊飛雲知聲,每個雲端平台提供服務的連線驗證方式都不一樣,而且雲運算的語音辨識參數也不盡相同,所以設計一個 Proxy Service 將連線驗證與各項參數做成一個統一開放的介面。Proxy 服務讓其他程式工具或人機介面透過網路方式連到這個服務上,並上傳語音,之後返回辨識結果。過程中,各平台的驗證以及 SDK 的整合均由這個 proxy 處理掉了。

 

       
圖一:語音辨識的 Proxy 服務

 

漢亞科技 Han-Ya 發表在 痞客邦 留言(1) 人氣()

系統架構:

由環境監測元件和運算控制元件所組成的硬體,如圖一所示,再搭配流程控制軟體組成一個完整的系統。每個環境監測元件透過無線網路的方式連接到運算控制元件,將每處環境的數值傳給運算元件,再由運算元件計算出最佳的環境狀態,進而控制電力、空調或風扇…等周邊系統。

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        最近用 Microchip dsPIC30F4011 的開發板 (APP020 PLUS) 結合藍芽模組,如下圖所示,打算做一個馬達控制的顯示器。之前,接觸的 MCU 都是 STM32 和 NXP LPC 以 ARM 為核心的 32-bit 控制器。有機會首次使用 Microchip 的控制器,於是查詢了一下才了解 Microchip 發展很久了,過去主要以 8-bit 或 16-bit MCU 為主,目前也有 32-bit MCU。搜尋的過程中,大多數找到 8/16 bit 的資料是10年前的,這跟市場主流控制器是 32-bit 有關吧。dsPIC30F4011 系列晶片與 PIC 系列不同的地方在於一個核心有 DSP 運算指令,一個則無。目前使用的這顆 dsPIC30 相當於 ARM M0 等級的控制器,不過價格上,似乎 dsPIC30 比較貴,這就視使用者的應用而決定了。

 

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        ESP8266 是由大陸樂鑫科技公司所開發的 WiFi 模組,上面有數根 GPIO 接腳和 ADC,另外 Tx/Rx 接腳用來與其他模組通訊之用。由於這塊模組價格便宜,目前吸引很多 maker 使用,更重要的是在 Arduino IDE 環境下就可以開發這 WiFi 模組的程式,下載 IDE 後可找到不少 WiFi 相關的範例程式可以研究,對於初學者來說實在是非常非常的方便。同時在網路上,不少 maker 已經寫下開發的經驗文章[1][2][3],並且也有 YouTube 教學影片可參考 [4]。
 
        筆者在規劃 MODBUS 通訊與 RS485 的過程遇到配線牽線的問題,於是上網搜尋有關無線轉 RS485 的設備,搜尋結果出現的是藍芽轉 RS232。BT to RS232 經過 MODBUS 通訊測試後,通訊的反應不是很即時,感覺有點頓頓的,放棄使用藍芽的介面。再次搜尋 WiFi 轉 RS485 的設備,似乎找不到能同時支援 MODBUS 通訊,最後決定使用 ESP8266 模組加上 TTL 轉 RS485模組,如圖一所示,索性自行開發一個 MODBUS TCP (WiFi) to MODBUS 232 (RS485) 的系統。以實體層(physical layer)而言,我用模組兜出一個 WiFi 轉 RS-485 的硬體,在鏈結層(data link layer)方面,設計一個 MODBUS TCP 轉成 MODBUS 232 的系統,讓原本沒有網路接口的控制板多出了一個無線網路的操控介面。
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        前一篇 "三軸重力加速計" 介紹 ADXL335 晶片的重力加速計 (也稱加速規),主要能偵測出三軸的重力變化,便能得知物體轉動方向方位。有一個特殊情況可解釋陀螺儀的作用,當加速規放置水平時,此時轉動轉動 Z 軸,我們會發現 X/Y 軸的重力值變化量其實並不大,請參考底下的實驗影片。這樣的變化量可能被誤以為是雜訊,不容易判斷物體是否方向方位在改變。如果能再多計算每一軸轉動的速度,由轉動的角速度輔助,便能計算物體位移量。於是,陀螺儀正是用來計算角速度的,配合重力計一起使用。因此,若加速規再輔以陀螺儀的功能,這樣能更精準算出物體的移動與轉動方向 (我覺得這是很複雜的數學)。

        Arduino 官方網站中提供好多種重力加速計與陀螺儀的模組,我便找了一顆 MPU6050 晶片來測試。這顆晶片不只具有三軸重力加速計,還有陀螺儀的功能,對外的通訊介面為 I2C 方式。首先,實驗過程我採用恩智浦的 LPC1114 控制器來比較一下 MPU6050 與 ADXL335 的重力數值,如圖一所示。圖一的 LCM 第一行顯示的是 MPU6050 X, Y, Z 軸的重力值,第二行顯示的是 ADXL335 的三軸重力值,我已經把兩塊模組的 X/Y 軸方向調整為一致了 (兩塊模組的三軸定義方向其實不太一樣,用軟體方式調整),如圖右下角所示。圖中,X 軸的重力值約為 -0.023g 和 -0.018g,Y 軸的重力值約為 -0.016g 和 0.018g,Z 軸的重力值約為 0.964g 和 1.112g。兩者數值的誤差,我的解釋是實驗過程並沒有做校正的動作,因此兩者模組存在一些誤差。撇開誤差,如果我們的實驗對精準度沒有要求太高的話,倒是很快取得三軸重力數值並計算出大概方位。

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        三~四年前,當開發恩智浦的 LPC11xx (ARM-M0) 韌體時,設計者必須在名為 LPCXpresso 的套裝軟體下執行,它提供各系列晶片的周邊驅動程式與原始碼,方便使用者 compile & link。如果要除錯程式的話,這套軟體必須再搭配使用名為 LPC-Link 的除錯器,我們用它來除錯也可燒錄代碼。幾年前,LPC 並不支援在 KEIL C 的環境開發 (當時很多 ARM 晶片都用 KEIL 環境開發),所以只能安裝 LPCXpresso,後來 LPC 已經成功整合到 IAR / KEIL 等環境了。有關的開發軟體與除錯器可以連結到LPCware 的網站上。

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

       去年初,無意中發現美國 Breathmeter 公司推出酒精感測器,他們推出這項產品的起因是根據統計每年在美國因酒精因素而死亡的人數約一萬人,因酒精原因而造成受傷的人數約17萬人,另外超過百萬人因酒駕而被捕。在這個背景下,該公司一開始設計的概念是希望藉由可攜式設備並經手機的耳機介面來量測血中酒精濃度,所以初期的規劃是以有線通訊的方式傳送。他們的產品啟發了我們的想法,若能利用藍芽通訊的方式傳送檢測資料又能低耗電的話,那不是更方便?

        上一篇文章提到使用 Arduino Pro Mini 開發板 (3.3V) 搭配藍芽模組 HC-08 組合成一個測試電路,初步確認我們的電路設計無誤後,也驗證了藍芽通訊和系統的耗電情形。有了這個藍芽控制電路之後,這個基礎將方便我們著手開發各種無線通訊的應用。實作酒精感測器最重要的就是找到適當的感測器元件,去年我們使用 Figaro TGS2620 酒精感測器,不過這顆元件的操作電壓在 5V,使得整個系統的耗電量偏高,一般電池的電量很快就耗盡。於是,今年找到了一顆低電壓的酒精感測器 Cambridge CMOS Sensors CCS803,它是以 CMOS MEMS 技術開發出來的感測元件,所以體積很小且操作電壓很低,最高只要 1.8V,這麼低的電壓有助改善耗電的問題。

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

        物聯網一詞是今年相當熱門的話題之一,靠著萬物皆可連的概念讓未來的生活有更多的想像空間。2015年初,金屬中心智慧系統組提出一個手持裝置偵測器的想法,首先浮出腦海的方式就是採用藍芽與手機連通。自從一兩年前開始,手機的藍芽規格逐漸升級到4.0並且有低功耗的連接模式。為了開發設計出手持裝置偵測器,我們從網路上找到 HC-08 藍芽 4.0 模組,它能讓使用者比較快速進入藍芽通訊的領域,透過串列端口控制這塊模組的各項參數。雖然藍芽模組縮短我們進入的門檻,但模組的擴充性卻有所限制,因此需要從外部搭配 MCU 晶片來整合全系統。下面的圖示就是以 Arduino Pro Mini 為控制核心,再加上藍芽模組所組成的系統。

圖一:Arduino Pro Mini + HC08 BLE 4.0 模組

文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

2011 March, 開始開發蘋果的認證機制,這套協定稱為 iPod Authentication Protocol (iAP),藉由蘋果自訂的通訊協定可以認證非蘋果的周邊硬體附件。通過認證的軟硬體才能在蘋果的平台上使用,iOS也才會傳遞一些軟硬體需要的 command & event。有了這個機制,軟體便可取得硬體的訊息,應用面將會更廣,硬體也可取得蘋果平台的服務。

iAP 通訊協定有三種傳遞媒介,其中兩種方式是有線的,必須有蘋果的 30-pin 的傳輸接頭,利用 30-pin 當中的 UART 或者 USB 來傳送協定。另一種方式是無線的藍芽,iAP 由藍芽來傳送。蘋果提供一顆認證處理的晶片(Authentication CoProcessor),主要是加解密的計算。

2011 April, 已經可以通過 iPhone 認證了,接上一個外部 USB 鍵盤後,可以在 iPhone 備忘錄裡打字。

漢亞科技 Han-Ya 發表在 痞客邦 留言(3) 人氣()

DSC00262.JPG 

使用 FTDI VNC2 做為 USB host 控制器,一端接著 debugger 給開發平台 IDE 之用。另外,拉出 UART 線路到PC,我們可透過超級終端機看到 trace。雖然 FTDI 提供 function calls,但有幾個怎麼都會出錯呢?特別是 Hub 功能的函式。

2011 Feb, FTDI 發布了 1.4.0 的版本,解決了部分 function call 的問題,但是對於 FTDI 外接一個 hub 卻沒有辦法做到熱插拔的偵測。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

1 2