2023年10月26日 星期四

【vMaker Edge AI專欄 #10】 訓練AI模型資料不足怎麼辦?聊聊資料集擴增手法

作者:Jack OmniXRI, 2023/10/16

 留言

相信有開發過邊緣智慧應用的朋友,一定都會經歷資料收集標註、模型選用訓練調參及部署推論檢驗的步驟。當模型訓練完成後,在測試集表現還不錯,但到了真實場景卻一塌糊塗,推論準確度急速下降。此時就要重新檢視資料集各分類是否有足夠數量的樣本及多樣性,即可以包含更大範圍的應用場景內容。

為解決這項問題,通常可以重新取樣、增加樣本數量和多樣性來解決,但不幸地是有時無法重新取樣,或部份分類的樣本不易取得。此時就要靠資料擴增(Data Augmentation)手法來協助擴展資料集的數量和多樣性,以利模型在訓練時能學習到對應的特徵,確保訓練結果在部署後也能保持一定的推論精度。

以下就簡單盤點一些常見的資料擴增手法,包含影像類(二維資料)及時序類(一維資料,如聲音、溫度、振動等各式感測器產生的連續信號),希望能帶給大家一些幫助。

2023年9月24日 星期日

【vMaker Edge AI專欄 #09】 從臺灣智慧農業週2023 看邊緣智慧最新趨勢

作者:Jack OmniXRI, 2023/09/11

 留言

今(2023)年算是AI大爆發的一年,從大型語言模型(Large Language Model,LLM)到人工智慧生成內容(Artificial Intelligence Generated Content, AIGC),每天都有新的驚喜出現,讓人對AI應用在日常生活中有更多的想像空間,就像十多年前的人工智慧物聯網(Artificial Intelligence + Internet of Things , AI + IoT, AIoT)開始改變人們的生活一般。

早期的AIoT主要應用在萬物聯網及遙控,讓我們可以輕易地透過如溫濕度、聲音、重量、風速、照度、電壓、電流、空氣品質、酸鹹度等各種感測器了解遠端的狀態,並可使用像手機、平板等移動聯網裝置遠端改變如開關、馬達、燈光等致動器的動作。當系統定時且長時間記錄後,就能配合一些AI算法來進行時序變化狀態分類、預測,如運動健身、天氣預測、馬達故障預測等。不過早期晶片的儲存、計算能力有限,所以大部份的資料和AI推論功能都是放在雲端,直到近年來半導體及軟韌體技術的突飛猛進,將AI部署在邊緣裝置端才變得可能。

前不久(2023/8/31-9/2)剛落幕的臺灣智慧農業週及臺灣國際海洋暨漁業產業展[1]中有相當多廠商秀出AIoT應用,主要分為傳統的智慧監控、遙控、管理及新一代具有影像、聲音分析能力的邊緣智慧應用,前者已相當普及,以下就針對後者幫大家簡單介紹幾項最新邊緣智慧的應用。

2023年8月30日 星期三

【vMaker Edge AI專欄 #08】 親愛的我把AI模型縮小了- 模型減量與壓縮技術簡介


1989年科幻電影「親愛的,我把孩子縮小了」,2015年「蟻人」,2017年「縮小人生」,以及我們從小看到大的多啦A夢「縮小燈」、「縮小隧道」,都不約而同的提到一個概念,就是可以透過一種神奇的機器,就能把人的體積大幅縮小但生理機能完全不減。這裡姑且不論是否符合物理定律,但如果真的能實現,就會像「縮小人生」中所提到的,可大幅減少地球資源的浪費,大幅改善人類的生存環境。雖然以上提及的技術可能我們這輩子都難以看到實現的一天,但把超巨大的AI模型縮小但仍保持推論精度不變,還是有很多方法可以達到的。接下來我們就來幫大家簡單介紹一下幾種常見技術。

2023年7月26日 星期三

【vMaker Edge AI專欄 #07】TinyML (MCU AI) 運行效能誰說了算?


作者:Jack OmniXRI, 2023/07/17

在電影「食神」中,唐牛和史蒂芬周同時選了佛跳牆來爭奪食神地位,結果唐牛抗議對方抄襲動作,結果裁判說:「比賽就是這樣的!好像跑步游泳一樣,還不是你做什麼他就做什麼!有什麼好抗議的?抗議無效!」。同樣地,在AI晶片或神經加速處理器(Neural Network Processing Unit, NPU或Deep Learning Accelerator, DLA)領域中,大家也都說自家的晶片世界最棒,對手看不到車尾燈,難道沒有一個較為公正衡量晶片運行(推論)效能,就像手機跑分軟體一樣,讓大家比較信服的基準嗎?

其實在AI晶片領域中所謂的「效能」,可能因關心的重點不同而會有不同定義和解讀。分別可從硬體每秒可執行乘加的次數(又可細分FP32,FP16及INT8等)、對於特定模型在指定推論精度下每秒可執行次數或推論一次所需時間(包含有無模型優化處理)、特定模型推論功耗(推論一次耗費焦耳數)、每瓦特可執行乘加指令次數及其它特定規範時的表現,甚至有用每塊美金獲得算力來當成基準。所以常會遇到誰也不服誰,老王賣瓜自賣自誇的現象。

目前較被大家接受的就是ML Commons[1]所提出的MLPerf規範,其中包含訓練及推論兩大項,而推論部份又可細分為資料中心(Datacenter)、邊緣(Edge)、行動(Mobile)及微型(Tiny,大多為MCU)。前不久(2023/6/27)才剛公佈了Tiny v1.1測試結果報告[2],其中也包括了台灣新唐科技(Nuvoton)及臺灣發展軟體科技(Skymizer)提交的亮眼成果。接下來就幫大家解讀一下這份報告,讓大家能更了解未來單晶片運行AI的方向及可行性。

2023年7月6日 星期四

【開箱評測】研華邊緣智能神器加上Intel OpenVINO讓你不上網也能和Dolly聊聊天

作者:Jack OmniXRI, 2023/7/3

相信大家最近幾個月都被大型語言模型(Large Language Model,LLM)及人工智慧生成內容(Artificial Intelligence Generated Content, AIGC)給驚豔(驚嚇)到了吧!?好像科幻電影「鋼鐵人」中的虛擬管家「賈維斯(Jarvis)」已經被實現出來了,如果家裡也能有一套,那該有多好啊。目前此類 AI 模型多半都非常巨大,通常只能透過雲端伺服器的強大算力才能運行。為了也能在單機上運行,開始有一些較小規模的模型搭配超強的CPU及GPU也能順利達到交談互動、文章生成等應用。

以往在AI模型部署優化及推論部份,通常都會想到使用 Intel OpenVINO,不過大家多半只注意到它在「電腦視覺」相關的應用,殊不知自從2022.1版後就已開始加入許多「自然語言」的範例。而最近2023.0版又更加強GPU(內顯HD Graphic, Iris,獨顯Arc)處理記憶體動態外形(Dynamic Shape)的能力,使得如生成型預訓練變換模型(Generative Pre-trained Transformer,GPT)這類基於轉換器(Transfomer)技術的大型語言模型能得到更好的實現。

此次很榮幸得到國內外知名工業電腦大廠「研華科技」提供最新的小型工業電腦主機 EPC-B2278 [1](Intel 12代CPU, i7-12700TE)進行測試,其中硬體部份還加入 Mobile PCI Express Module(MXM) 介面的 VEGA-X110 [2],即 Intel 最新獨立顯卡(Arc A370M) ,用來加速AI應用計算。而軟體部份則搭配 Intel OpenVINO 2023.0 來進行LLM模型優化及推論。

為了測試LLM的推論的效能,這裡使用了OpenVINO Notebooks範例中的 GPT-2 文字生成及開源 Dolly 2.0 對話生成進行測試。以下就依序從自然語言對話技術發展歷史、運行系統的硬體規格、軟體開發環境及LLM實驗結果來幫大家介紹一下。

2023年6月26日 星期一

【vMaker Edge AI專欄 #06】 Intel OpenVINO 2023.0初體驗─如何快速在Google Colab運行人臉偵測

作者:Jack OmniXRI, 2023/06/12

話說二十多年前第一次到教練場學開車,當時是手排車,常常因換檔時離合器、排擋、油門控制不當就導致車子瞬間熄火,不然就是猛烈振動甚至暴衝,好在教練細心指導,才能讓車子平順前進。後來改開自排車後,突然覺得以前那些換擋技巧根本用不到,車子自己就會處理好這些換檔工作,我們只要會轉方向盤,會踩油門、剎車加上專心路況就能順利把車開上路到達目的地。如今在學習AI這台大車時也遇到類似問題,需要一個好的教練指導開發AI的每個步驟和細節,不然就得換一套方便的工具,讓我們能專心在開發應用程式而不需要了解太多AI的數學和原理,而其中 Intel OpenVINO Toolkit (以下簡稱OpenVINO) [1] 就是一套不錯的AI推論(Infernece)優化工具。

一般常見的AI應用有「電腦視覺」、「自然語言處理」、「資料分析」等,通常多半需要收集大量的資料,經過訓練特定的模型(或機器學習算法、神經網路等)才能應付各式AI應用的需求。訓練過程非常繁瑣且須依靠極高算力才能完成模型巨量權重(參數)的訓練。不過好在當完成模型訓練後,只需運行一次推論就能得到結果。如果還覺得模型太大或推論速度不夠快,此時可透過一些複雜程序來進行參數量化(如FP32變成INT8)或模型優化(如減枝、壓縮、蒸餾等),以達到又快又準的結果。而以上介紹的 OpenVINO 正是這樣的工具,它已幫大家把常用AI應用的模型都預訓練好了,如影像分類、物件偵測、人臉辨識、影像分割、姿態估測等,甚至現在流行的大型語言模型(LLM)及AI生成影像模型(AIGC),這樣大家就可輕鬆上手AI應用。

以下就以最常見的 「人臉辨識」 (只作人臉位置偵測,不作身份辨識)作為起手式,使用網頁版 Python 開發環境 Google Colab (Jupyter Notebook環境)直接安裝最新2023.0版的 OpenVINO 運行其 Notebooks 範例,來讓大家快速體驗一下AI應用帶來的好處。

2023年6月12日 星期一

【課程簡報】20230612_智慧醫療_看大型語言模型與生成式AI如何引領新世代智慧醫療前行

很榮幸這學期受到開南大學健康產業管理學系范靜媛主任及李盛安老師邀約擔任「智慧健康系列課程」計畫協同主持人,並擔任部份課程講師。本學期(111年度第二學期)協助的課程為「智慧醫療」,此次為第18週,課程內容為「智慧醫療_看大型語言模型與生成式AI如何引領新世代智慧醫療前行」。課程大綱如下:

  1. 大型語言模型與生成式AI進展
  2. 智慧醫療及健康照護相關應用實例
  3. 未來可能應用及發展趨勢

 (點擊頁面放大)

2023年6月5日 星期一

【課程簡報】2023605_開南健管系_智慧醫療_week17_智慧醫療工作坊2

很榮幸這學期受到開南大學健康產業管理學系范靜媛主任及李盛安老師邀約擔任「智慧健康系列課程」計畫協同主持人,並擔任部份課程講師。本學期(111年度第二學期)協助的課程為「智慧醫療」,此次為第17週,課程內容為「智慧醫療工作坊2」,預計帶著大家操作如何完成一個創意專題。課程大綱如下:

17.1 Intel DevCup 2022案例分享
17.1.1 糖尿病風險預測
17.1.2 電動輪椅路況辨識
17.1.3 羽球虛擬教練
17.1.4 顏面神經失調復建
17.1.5 兒童發燒監測
17.1.6 長者安養運動

17.2 簡報內容及技巧
17.2.1 簡報內容重點
17.2.2 簡報技巧

17.3 分組討論及導引

以下就是此次課程簡報,提供大家參考。(點擊圖放大)

2023年5月29日 星期一

【課程簡報】20230529_開南健管系_智慧醫療_week16_智慧醫療工作坊1

很榮幸這學期受到開南大學健康產業管理學系范靜媛主任及李盛安老師邀約擔任「智慧健康系列課程」計畫協同主持人,並擔任部份課程講師。本學期(111年度第二學期)協助的課程為「智慧醫療」,此次為第16週,課程內容為「智慧醫療工作坊1」,課程大綱如下:

 16.1 創意專題規畫與實踐
 16.1.1 創意專題開發
 16.1.2 想法評估與定位
 16.1.3 可行性分析與比較
 16.1.4 想法試做和循環

 16.2 應用情境與導入技術
 16.2.1 應用情境
 16.2.2 導入技術(常見人工智慧技術─自然語言、電腦視覺)
 16.2.3 常見分析工具─精實畫布

 16.3 分組討論及導引
 創意專案參考網站
 16.3.1 Intel DevCup 2021
 16.3.2 Intel OpenVINO Cases
 16.3.3 Hackster.io Projects
 16.3.4 Arduino Projects
 16.3.5 智慧醫療參考案例

以下就是此次課程簡報,提供大家參考。(點擊圖放大)

2023年5月26日 星期五

【vMaker Edge AI專欄 #05】Google MediaPipe快速上手 ─ 浮空手勢也能用來當作簡報播放器

作者:Jack OmniXRI, 2023/05/15

2019年6月時Google在電腦視覺頂級研討會CVPR上展示了MediaPipe[1]的預覽版本,提出了可供移動裝置運行手部追蹤、人臉追蹤及物體偵測等功能的輕量模型開源程式。這項工具不僅可在Android, iOS, Web, Windows等平台上運行,亦支援如C++, Python, JavaScript等程式語言開發。由於它非常輕量,所以可輕鬆佈署在像樹莓派、Nvidia Jetson Nano等小型單板微電腦上,非常適合想學習AI應用的新手朋友。

接下來我們就簡單幫大家認識一下MediaPipe及其手部追蹤、手部特徵點提取及手勢辨識的原理,最後再用一個浮空手勢辨識來控制PowerPoint簡報播放的實例讓大家可以感受一下這項方便的工具神奇好用之處。

2023年5月23日 星期二

Intel OpenVINO 2022.x運行於Google Colab之範例分享

 

以往想使用Intel OpenVINO 自家的(Intel's)或公眾(Public)預訓練模型來學習時,雖然在Demos有提供很多C & Python範例,官網文件上也有提供說明,但一大堆參數實在讓人不知從何下手,也沒有給出參數範例,讓人難以實驗。

2021年6月為了教學方便,於是幫學生準備了很多以OpenVINO 2021.3版為主的開源範例,且可以在Google Colab上運行,如下網址。https://github.com/OmniXRI/Colab_DevCloud_OpenVINO_Samples  

不久後,OpenVINO 2021.4版就推出Jupyter Notebook形式的開源範例,解決了原先教學上的問題。為了上課方便,也為了讓學生能快速體驗,不用在自己的電腦上安裝OpenVINO,於是將嚐試這些範例直接運行在Google Colab上,但不幸地是,原先自己2021年準備的範例在OpenVINO 2021.4版上並無法順利運行,所以只有再更新範例,以利能在Colab上順利運行。其相關範例如下網址。 https://github.com/OmniXRI/NTUST_EdgeAI_2022/tree/main/Ch7_Implementations

今(2023)年在教學上遇到更大的麻煩,因為OpenVINO 2022.x有了更大幅度的改版,原先的Open Model Zoo, Notebooks都被移出Runtime版本,加上Colab很多Python套件也有升級,導致原先使用的APT安裝方式變成無法使用。於是把腦筋動到Openvino Notebook的範例上期望能順利移植到Colab上運作。

實驗後,發覺OpenVINO Notebooks建議採用安裝python虛擬環境上,但這個方法在Colab上並有很多問題。後來費盡千辛苦找到在Colab上運行虛擬環境及運行Python程式,測試後發現只能支援完整的Pyhon程式(即 *.py),無法單步執行,這對教學並不友善。於是重新實驗直接使用PIP安裝,這樣反而沒有大問題,只有少數用不到的套件包會有衝突,這並不會影響OpenVINO 2022.x版運行,於開始著手移植Notebooks上的範例。

由於Notebooks上的範例用到的模型及資料集都已附在原先Github程式包相對路徑上,使用Git下載到本機端時並不會有問題,但在Colab上運行時就會找不到相關檔案。所以為了讓Colab能順利運行Notebooks上的範例,於是手動改寫範例並開源出來,方便大家使用,初步已改寫的範例包含:

  • OpenVINO_Image_Classification_on_Colab.ipynb 影像分類範例
  • OpenVINO_Face_Detection_on_Colab.ipynb 物件(人臉)偵測範例一
  • OpenVINO_Face_Detection_on_Colab_2.ipynb 物件(人臉)偵測範例二
  • OpenVINO_Segmentation_(ADAS)_on_Colab.ipynb 影像(語義)分割範例
  • OpenVINO_Pose_Estimation_on_Colab.ipynb 姿態估測(骨架分析)範例

完整範例:  https://github.com/OmniXRI/OpenVINO2022_on_Colab_Samples

以上範例皆可直接在Colab上運行,歡迎大家多多利用。

延伸閱讀:

許哲豪,OpenVINO 2022大改版讓Edge AI玩出新花樣
https://omnixri.blogspot.com/2022/08/openvino-2022edge-ai.html

許哲豪,使用PyPi (pip install) 安裝Intel OpenVINO 2022.1填坑心得
https://omnixri.blogspot.com/2022/08/pypi-pip-install-intel-openvino-20221.html

許哲豪,如何在Intel DevCloud中執行OpenVINO Notebooks範例
https://omnixri.blogspot.com/2023/03/intel-devcloudopenvino-notebooks.html

許哲豪,如何在Colab上透過Pypi安裝OpenVINO開發者版本
https://omnixri.blogspot.com/2023/05/colabpypiopenvino.html

【頂置】簡報、源碼、系列文快速連結區

常有人反應用手機瀏覽本部落格時常要捲很多頁才能找到系列發文、開源專案、課程及活動簡報,為了方便大家快速查詢,特整理連結如下,敬請參考! Edge AI Taiwan 邊緣智能交流區 全像顯示與互動交流區 台科大(NTUST)邊緣人工智慧實務(2026) 南開科大...