|
@@ -6,13 +6,13 @@
|
|
|
在學習物體識別前,我們先來認識下圖像識別。<br>
|
|
|
圖像識別,簡單地來說,就是一個將圖像與特定的詞語對應起來的過程。從技術上來看,是利用電腦對圖像進行處理、分析和理解,以識別各種不同模式的目標和對象的過程。圖像識別的發展經歷了三個階段:文字識別、數字圖像處理與識別、物體識別。<br>
|
|
|
文字識別的研究是從 1950年開始的,一般是識別字母、數字和符號,從印刷文字識別到手寫文字識別,應用非常廣泛。<br>
|
|
|
-<img src="/media/ai/AI_n1.png" width="300"/><img src="/media/ai/AI_n2.png" width="350"/><br>
|
|
|
+<img src="./media/ai/AI_n1.png" width="300"/><img src="./media/ai/AI_n2.png" width="350"/><br>
|
|
|
數字圖像處理和識別的研究開始於1965年。數字圖像與模擬圖像相比具有存儲、傳輸方便可壓縮、傳輸過程中不易失真、處理方便等巨大優勢,這些都為圖像識別技術的發展提供了強大的動力。
|
|
|
-<br><img src="/media/ai/AI_n3.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_n3.png" width="350"/><br>
|
|
|
物體識別主要指對三維世界的物體及環境的感知和認識,屬於高級的計算機視覺範疇。它是以數字圖像處理與識別為基礎的結合人工智能、系統學等學科的研究方向,其研究成果被廣泛應用在各種工業及機器人中。
|
|
|
-<br><img src="/media/ai/AI_n4.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_n4.png" width="350"/><br>
|
|
|
瞭解了這些知識,我們再來看下面這四幅圖,第一張圖片是手寫數字,可以看到電腦將它正確地識別為了425,後三張圖片則分別分類為貓、人和車。
|
|
|
-<br><img src="/media/ai/AI_n5.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_n5.png" width="350"/><br>
|
|
|
這就是文字識別和物體識別的一些應用,電腦可通過深度學習算法,對輸入的圖像進行識別,並給出每幅圖片的識別結果。<br>
|
|
|
在人工智能領域,識別問題又可以歸類為分類問題,所以物體識別,也可以稱之為物體分類。<br>
|
|
|
|
|
@@ -21,13 +21,13 @@
|
|
|
我們前面提到了,圖像識別就是電腦獲取,處理和分析圖像數據的過程,這個過程其實也就是計算機視覺的實現過程。簡而言之,計算機視覺使得電腦能夠“看”事物——甚至包括人類無法看到的事物。然而,要想讓電腦做到人類無法做到的事情,我們必須首先使電腦能夠做到人類可以做的事情:看到並標記物體和生物。這是圖像識別的主要功能。<br>
|
|
|
我們先來看下下面這四幅貓的圖片,我們可以很輕鬆地分辨出這四張圖片都是貓,即使它們外形長相完全不同,且體態各異,即使它只露出了一截尾巴,但我們仍然可以分辨的出來。<br>
|
|
|
但這對電腦來說卻十分困難,因為電腦並沒有像我們人類大腦這樣複雜的系統。
|
|
|
-<br><img src="/media/ai/AI_n6.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_n6.png" width="350"/><br>
|
|
|
那麼,到底電腦是如何識別圖片的呢?我們來看下一節內容。<br>
|
|
|
|
|
|
---
|
|
|
## B. 神經網路與深度學習
|
|
|
電腦想要正確分類圖片,就需要像我們人類一樣去學習,知道圖片中大量的資訊。目前,最有可能讓電腦實現“看”的能力的技術叫做深度學習(Deep Learning,簡稱DL),它是一種讓電腦從圖片中學習的方法。學習的過程稱為訓練,識別的過程稱為推理(測試)。
|
|
|
-<br><img src="/media/ai/AI_n7.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_n7.png" width="350"/><br>
|
|
|
電腦要識別圖片,前提便是需要大量的圖片數據作為輸入,傳入電腦以供其學習。<br>
|
|
|
我們以識別貓為例,前期需要先準備大量的各種品類的貓,並且打上標籤,告訴電腦:這些是貓,也就是這些圖片的分類,然後電腦將這些數據輸入網路,執行訓練,通過不斷地迭代進行學習,達到正確認識這些貓的目的。<br>
|
|
|
然後,我們輸入電腦一張新的貓的圖片,進行測試,電腦執行測試演算法,便可給出輸入圖片的正確分類。<br>
|
|
@@ -43,57 +43,57 @@
|
|
|
在研究過程中,數字手寫體識別由於其有限的類別(0~9共10個數字)成為了相對簡單的手寫識別任務。所以,我們從簡單的手寫數字識別入手,來認識實現圖像識別的演算法。<br>
|
|
|
##### 1. 人類學習和認識數字的過程
|
|
|
前面已經提到,電腦需要像人一樣思考學習,才能識別出圖像,我們不妨反推一下,想一想我們小時候是怎樣學習數字的,大家總結回想一下,我們學習數字的思維過程。為什麼我們可以看到各式各樣形狀的數字,依舊可以知道它們分別是多少呢?
|
|
|
-<br><img src="/media/ai/AI_p1.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p1.png" width="350"/><br>
|
|
|
這個過程也就是電腦要模仿的,我們把這個學習步驟寫出來。
|
|
|
-<br><img src="/media/ai/AI_p2.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p2.png" width="350"/><br>
|
|
|
這個就是人類學習和認知的過程,也就是機器要模仿的,現在我們將人的學習方式類比到電腦中,就會知道電腦學習並識別數字的過程了。
|
|
|
##### 2. 電腦學習並認識數字的過程
|
|
|
###### 1) 圖像在電腦中的樣子
|
|
|
我們向電腦輸入正確的帶有標籤的圖像數據,電腦看到的並不是像我們人類看到的那樣,如下圖左邊的圖片,而是下圖右邊數字矩陣的樣子。電腦中處理圖像,處理的是圖像中每一個像素(像素是電腦螢幕上所能顯示的最小單位,是用來表示圖像的單位)。
|
|
|
-<br><img src="/media/ai/AI_p3.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p3.png" width="350"/><br>
|
|
|
上一節我們提到了,深度學習需要大量的數據作為輸入,在手寫數字識別系統中,數據來自於MNIST數據集,它包含60000個訓練集和10000測試數據集。分為圖片和標籤,圖片是28*28的像素矩陣,標籤為0~9共10個數字。
|
|
|
###### 2) 模型訓練——神經網路
|
|
|
有了數據集,下一步,便是將數據輸入到深度學習網路中,也就是神經網路中(這裏採用的是LeNet-5卷積神經網路模型,卷積神經網路是深度學習神經網路中最常見的一種),進行自動的特徵提取及學習,這個過程就是前面提到過的訓練過程。<br>
|
|
|
我們知道,人類大腦的神經網路是由神經元和突觸組成,它們協同工作,完成對外界資訊的處理與傳遞。
|
|
|
-<br><img src="/media/ai/AI_p4.png" width="350"/><img src="/media/ai/AI_p5.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p4.png" width="350"/><img src="./media/ai/AI_p5.png" width="350"/><br>
|
|
|
那麼,人腦的神經網路對比到深度學習中,就是如下圖所示的網路。
|
|
|
-<br><img src="/media/ai/AI_p6.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p6.png" width="350"/><br>
|
|
|
大量的手寫數字圖像就是輸入數據,作為第一層:輸入層(一般情況下,輸入層不在網路結構中體現,而在後面訓練開始時給出),因為每張圖像的像素是28x28,所以每張圖像一共有784個像素,電腦中的索引一般從0開始,所以輸入x即為x0-x783。 <br>
|
|
|
中間部分稱為隱藏層,在LeNet-5網路中,主要採用的是:卷積層Convolutional Layer(啟動層為ReLu Layer)、池化層Pooling Layer以及全連接層Fully Connected Layer。<br>
|
|
|
全連接層中加入啟動函數:Softmax,這是一個回歸模型,用於分類過程,可解決多分類問題。這裏的手寫數字識別就是一個多分類問題,0-9共10類,所以最後的輸出層y的結果為y0-y9。
|
|
|
-<br><img src="/media/ai/AI_p7.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p7.png" width="350"/><br>
|
|
|
並且Softmax也是一個概率函數,它可以給出輸入圖像識別為不同類別的概率,以此來讓使用者判斷輸入圖像中的數字更像哪一個識別結果。<br>
|
|
|
這部分就是神經網路的網路結構,是深度學習演算法實現圖像處理及學習的根本。
|
|
|
###### 3) 人類學習過程和電腦學習過程的對比
|
|
|
前面我們給出了人類學習和認識數字的過程,也就是下圖左邊的部分,通過上一節的學習,我們知道了電腦學習並認識數字的過程,那麼總結起來,就是下圖右邊所示的步驟。
|
|
|
-<br><img src="/media/ai/AI_p8.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p8.png" width="350"/><br>
|
|
|
###### 4) 手寫數字識別的實現演示
|
|
|
我們知道了手寫數字識別的原理,那麼,現在就來看看實際電腦中是如何實現圖像識別的吧。
|
|
|
打開網址:https://ai-blockly.cocorobo.hk/ ,進入AI blockly頁面。<br>
|
|
|
進入後,首先選擇Examples選項。
|
|
|
-<br><img src="/media/ai/AI_p9.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p9.png" width="350"/><br>
|
|
|
然後,繼續選擇Tensor Flow選項,然後選擇Digit Recognition選項,並選擇OK。
|
|
|
-<br><img src="/media/ai/AI_p10.png" width="350"/><img src="/media/ai/AI_p11.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p10.png" width="350"/><img src="./media/ai/AI_p11.png" width="350"/><br>
|
|
|
然後,就會出現如下圖所示的積木程式塊。
|
|
|
-<br><img src="/media/ai/AI_p12.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p12.png" width="350"/><br>
|
|
|
繼續點擊右下角區域中的RUN按鈕,即可開始訓練。
|
|
|
-<br><img src="/media/ai/AI_p13.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p13.png" width="350"/><br>
|
|
|
訓練的迭代過程中,會產生如下圖所示的函數曲線圖及網路結構資訊(Model Architecture),可通過觀察曲線圖的變化,來判斷訓練執行的狀態及模型的訓練效果。
|
|
|
-<br><img src="/media/ai/AI_p14.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p14.png" width="350"/><br>
|
|
|
如上圖所示,是演示的最終效果,左邊是曲線圖,第一副圖是訓練集(loss)和驗證集(val_loss)的loss變化曲線,loss是損失函數,即模型預測出的結果與標籤標注的真實值的差值。這個差值是隨著訓練輪數Epoch的增加而逐漸減小的。<br>
|
|
|
第二幅圖是訓練集(acc)和驗證集(val_acc)的準確率變化曲線,準確率為識別正確的圖像個數除以總的圖像數的比值,該值隨著Epoch的增加而逐漸增大。<br>
|
|
|
右側為推理測試區,在畫布中寫出你要測試的數字,點擊Detect,即可得到最終的識別結果。<br>
|
|
|
其結果將打印顯示在右上方區域的Console中。
|
|
|
-<br><img src="/media/ai/AI_p15.png" width="350"/><img src="/media/ai/AI_p16.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_p15.png" width="350"/><img src="./media/ai/AI_p16.png" width="350"/><br>
|
|
|
手寫數字識別的整個實現過程到這裏就結束了。<br>
|
|
|
接下來,我們來學習今天最重要的部分——物體識別。
|
|
|
|
|
|
---
|
|
|
## D. 物體識別與YOLO演算法
|
|
|
物體識別(Object Recognition)是計算機視覺中的一個應用,目的是讓電腦去分析一張圖片或者一段影片中的物體,並標注出其中物體所屬的類別。
|
|
|
-<br><img src="/media/ai/AI_q1.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q1.png" width="350"/><br>
|
|
|
###### YOLO演算法介紹:
|
|
|
-<br><img src="/media/ai/AI_q2.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q2.png" width="350"/><br>
|
|
|
YOLO是目前應用非常廣泛的一種物體識別演算法。YOLO的意思是You only look once,也就是你只看一眼,就能認出這是什麼物體,體現YOLO演算法識別的精度和速度。<br>
|
|
|
YOLO是基於Pascal VOC2012數據集的目標檢測系統。它能夠檢測到20種Pascal的目標類別,包括:<br>
|
|
|
- 人
|
|
@@ -106,17 +106,17 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
2. 輸入新的圖像數據,調用模型,實現推理(inference)過程,也稱為測試過程。
|
|
|
我們先來看下第一步的原理:<br>
|
|
|
訓練就需要有網路,YOLO的網路結構如下圖所示,整個檢測網路包括24個卷積層和2個全連接層。其中,卷積層用來提取圖像特徵,全連接層用來預測圖像位置和類別概率值。
|
|
|
-<br><img src="/media/ai/AI_q3.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q3.png" width="350"/><br>
|
|
|
第二步:推理過程:
|
|
|
-<br><img src="/media/ai/AI_q4.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q4.png" width="350"/><br>
|
|
|
加載網路模型後,其推理的計算流程如圖所示,我們可以將最終識別結果之前的步驟都看做一個函數計算,通過這個計算過程,就可以得到最後的物體識別結果了。<br>
|
|
|
那麼,YOLO具體是如何實現物體識別的呢?我們來深入地學習一下它的內部原理。
|
|
|
-<br><img src="/media/ai/AI_q5.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q5.png" width="350"/><br>
|
|
|
如上圖所示,YOLO演算法將輸入圖片劃分成7x7=49個網格(即上圖中左邊第一副圖,S=7),如果一個物體的中心落在某網格(cell)內,則相應網格負責檢測該物體。<br>
|
|
|
每個網格預測兩個邊界框(Bounding boxes),一共預測49x2=98個邊界框(上圖中位於上面的那副圖)。可以近似理解為在輸入圖片上粗略的選取98個候選區,這98個候選區覆蓋了圖片的整個區域,進而用回歸預測這98個候選框對應的邊界框。<br>
|
|
|
除了給出邊界框,也就是圖像的位置資訊外,還會給出對應的置信度(confidence)和分類結果(categories)。其中,置信度代表了所預測的 box 中含有 object 的置信度(概率)和這個 box 預測目標位置的準確度這兩重資訊。<br>
|
|
|
最後,網路就給出了圖像的最終識別結果,如下圖所示。
|
|
|
-<br><img src="/media/ai/AI_q6.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_q6.png" width="350"/><br>
|
|
|
|
|
|
---
|
|
|
## E. AI模型積木說明
|
|
@@ -128,51 +128,51 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
<td width="30%">說明</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r1.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r1.png" width="300"/></td>
|
|
|
<td width="20%">載入模型</td>
|
|
|
- <td width="30%">載入人工智能模型,可以從選單中選擇常用識別模型<img src="/media/ai/AI_r2.png" width="300"/></td>
|
|
|
+ <td width="30%">載入人工智能模型,可以從選單中選擇常用識別模型<img src="./media/ai/AI_r2.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r3.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r3.png" width="300"/></td>
|
|
|
<td width="20%">獲取識別結果</td>
|
|
|
- <td width="30%">獲取當前結果,可選擇數字識別的結果或者識別為某個數字的置信度<img src="/media/ai/AI_r4.png" width="300"/></td>
|
|
|
+ <td width="30%">獲取當前結果,可選擇數字識別的結果或者識別為某個數字的置信度<img src="./media/ai/AI_r4.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r5.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r5.png" width="300"/></td>
|
|
|
<td width="20%">物體識別</td>
|
|
|
<td width="30%">獲取物體識別真假值,如果識別到物體會返回「真」值,否則返回「假」值</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r6.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r6.png" width="300"/></td>
|
|
|
<td width="20%">物體識別結果的參數</td>
|
|
|
- <td width="30%">獲取識別到的每個物體的各項參數,包括:<img src="/media/ai/AI_r7.png" width="300"/></td>
|
|
|
+ <td width="30%">獲取識別到的每個物體的各項參數,包括:<img src="./media/ai/AI_r7.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r8.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r8.png" width="300"/></td>
|
|
|
<td width="20%">人臉識別</td>
|
|
|
<td width="30%">獲取人臉識別真假值,如果識別到人臉會返回「真」值,否則返回「假」值</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r9.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r9.png" width="300"/></td>
|
|
|
<td width="20%">人臉識別結果的參數</td>
|
|
|
- <td width="30%">獲取識別到的每個人臉的各項參數,包括:<img src="/media/ai/AI_r10.png" width="300"/></td>
|
|
|
+ <td width="30%">獲取識別到的每個人臉的各項參數,包括:<img src="./media/ai/AI_r10.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r11.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r11.png" width="300"/></td>
|
|
|
<td width="20%">加載客制化模型</td>
|
|
|
<td width="30%">從指定路徑加載用戶預訓練好的客制化模型:/sd/user/mymodel.kmodel
|
|
|
並根據要識別的物體種類來設定客制化物體的類別名稱:Object Name
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r12.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r12.png" width="300"/></td>
|
|
|
<td width="20%">客制化的物體識別</td>
|
|
|
<td width="30%">獲取客制化物體識別真假值,如果識別到客制化物體會返回「真」值,否則返回「假」值</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
- <td width="50%"><img src="/media/ai/AI_r13.png" width="300"/></td>
|
|
|
+ <td width="50%"><img src="./media/ai/AI_r13.png" width="300"/></td>
|
|
|
<td width="20%">客制化物體識別結果的參數</td>
|
|
|
- <td width="30%">獲取識別到的每個客制化物體的各項參數,包括:<img src="/media/ai/AI_r14.png" width="300"/></td>
|
|
|
+ <td width="30%">獲取識別到的每個客制化物體的各項參數,包括:<img src="./media/ai/AI_r14.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -195,16 +195,16 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_s1.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s1.png" width="300"/></td>
|
|
|
<td>注意:步驟4必須使用內建變數「img_objectrecognition」,所以首先要在步驟3使用「加載預設模型」指令,然後才進行步驟4及步驟5。</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_s2.png" width="300"/></td>
|
|
|
-<td><img src="/media/ai/AI_s3.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s2.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s3.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
<td>測試結果:在「代碼區」點按「串口互動窗」,將模組向四周掃描,並觀察顯示的結果如下,當檢測到有物體時會顯示「Object Found」,否則會顯示「Nothing」</td>
|
|
|
-<td><img src="/media/ai/AI_s4.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s4.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -219,26 +219,26 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td colspan=2><img src="/media/ai/AI_s5.png" width="300"/></td>
|
|
|
+<td colspan=2><img src="./media/ai/AI_s5.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_s6.png" width="300"/></td>
|
|
|
-<td><img src="/media/ai/AI_s7.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s6.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s7.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
<td>測試結果:點按「串口互動窗」,將模組向四周掃描,並觀察顯示的結果如下,當檢測到有物體時會顯示「物體名稱」,否則會顯示「Nothing」</td>
|
|
|
-<td><img src="/media/ai/AI_s8.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_s8.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
思考問題:活動二的程式運用「物體檢測模型」,判斷攝影鏡頭拍攝到的圖像,並輸出物體名稱,此名稱是如何決定?「物體檢測模型」是否能夠判斷所有物體,輸出正確名稱?
|
|
|
-<br><img src="/media/ai/AI_s9.png" width="300"/>
|
|
|
+<br><img src="./media/ai/AI_s9.png" width="300"/>
|
|
|
|
|
|
---
|
|
|
## G. 專題學習
|
|
|
硬體設備:AI推理模組、螢幕模組、攝像頭模組<br>
|
|
|
任務目標:利用攝影鏡頭將影像顯示在螢幕模組上,載入物體識別模型,將識別到的物體在螢幕上標示出來。<br>
|
|
|
基本流程/步驟:
|
|
|
-<br><img src="/media/ai/AI_t1.png" width="350"/><br>
|
|
|
+<br><img src="./media/ai/AI_t1.png" width="350"/><br>
|
|
|
|
|
|
###### 第一步:模組初始化
|
|
|
<table style="margin-top:20px;">
|
|
@@ -248,7 +248,7 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
2. AI模組|相機:【初始化】<br>
|
|
|
3. 循環:【重複執行】<br>
|
|
|
</td>
|
|
|
-<td><img src="/media/ai/AI_t2.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_t2.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -266,11 +266,11 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td colspan=2><img src="/media/ai/AI_t3.png" width="300"/></td>
|
|
|
+<td colspan=2><img src="./media/ai/AI_t3.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_t4.png" width="300"/></td>
|
|
|
-<td><img src="/media/ai/AI_t5.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_t4.png" width="300"/></td>
|
|
|
+<td><img src="./media/ai/AI_t5.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -290,10 +290,10 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td colspan=2><img src="/media/ai/AI_t6.png" width="300"/></td>
|
|
|
+<td colspan=2><img src="./media/ai/AI_t6.png" width="300"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td colspan=2><img src="/media/ai/AI_t7.png" width="300"/></td>
|
|
|
+<td colspan=2><img src="./media/ai/AI_t7.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -305,18 +305,18 @@ YOLO演算法的識別過程分為兩個部分,這也基本是所有視覺領
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td colspan=2><img src="/media/ai/AI_t8.png" width="300"/></td>
|
|
|
+<td colspan=2><img src="./media/ai/AI_t8.png" width="300"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
###### 完整程式:
|
|
|
<table style="margin-top:20px;">
|
|
|
<tr>
|
|
|
- <td ><img src="/media/ai/AI_t9.png" width="300"/>
|
|
|
+ <td ><img src="./media/ai/AI_t9.png" width="300"/>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_t10.png" width="200"/></td>
|
|
|
+<td><img src="./media/ai/AI_t10.png" width="200"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -339,7 +339,7 @@ c. AI模組|AI模型:【物體識別屬性】<br>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td><img src="/media/ai/AI_u1.png" width="200"/></td>
|
|
|
+<td><img src="./media/ai/AI_u1.png" width="200"/></td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
@@ -352,15 +352,15 @@ c. AI模組|AI模型:【物體識別屬性】<br>
|
|
|
</td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td> <img src="/media/ai/AI_u2.png" width="200"/></td>
|
|
|
+<td> <img src="./media/ai/AI_u2.png" width="200"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td> 完整Python代碼:<img src="/media/ai/AI_u3.png" width="200"/></td>
|
|
|
+<td> 完整Python代碼:<img src="./media/ai/AI_u3.png" width="200"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td> 完整程式:<img src="/media/ai/AI_u4.png" width="200"/></td>
|
|
|
+<td> 完整程式:<img src="./media/ai/AI_u4.png" width="200"/></td>
|
|
|
</tr>
|
|
|
<tr >
|
|
|
-<td> 運行結果:<img src="/media/ai/AI_u5.png" width="200"/><img src="/media/ai/AI_u6.png" width="200"/></td>
|
|
|
+<td> 運行結果:<img src="./media/ai/AI_u5.png" width="200"/><img src="./media/ai/AI_u6.png" width="200"/></td>
|
|
|
</tr>
|
|
|
</table>
|