iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
AI & Data

從Keras框架與數學概念了解機器學習系列 第 28

28. 累了? 那來動手實作應用 ~ 失敗的鬼抓人無人機 vs 駕駛幫手

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20230928/20144614INva82cJ5a.jpg

於最初的文章,有提到機器學習是趨勢,但怎麼開始、學那些技能、要看那些文件文章、要如何使用工具等等,google後又因資訊太多太複雜,讓學習意願或者動力被澆熄被降低的狀況就會發生。這時會開始思考,有這麼多項目要看,這些資訊到底有何幫助?  

可以透過要面對的問題反找適當的資訊學習外,這邊另外給個建議,就是實際動手去做,去創造應用看看,那怕是簡單的任務,又或者是生活上很常見的狀況,都可以去嘗試。尤其是能夠改善自己平時的痛點,是最棒的。做錯了,或效果不如預期不需要放在心上因為實際動手參與的過程才是最棒的經驗。當有了經驗,會發現原來機器學習是多麼重要,自然會再度提升學習動機。

失敗的鬼抓人無人機 - 無人機當鬼

2022年疫情,小朋友被關在家時,大人就麻煩了,因為被要求要陪玩。所以想弄一個鬼抓人無人機,讓小朋友在頂樓空曠的室內玩,無人機當鬼。

但是不如預期,失敗了,原因如下:

  • 透過 jupyter 與 無人機WiFi 連線操作,辨識程式再另一台電腦上,有delay response 的問題。
  • 氣流與環境會讓無人機震動,其上鏡頭解析度不高,甚至辨認圖片的寬度不理想;
    嘗試裝廣角鏡頭,讓無人機無法平衡,屢次摔機。

所以測試的無人機並沒有積極追著人跑,頂多不斷地找尋目標小孩與調整位置:
https://www.youtube.com/shorts/1V4JxKaNIXM
drone

這個經驗就是,要讓機器取得資料,反應時間、機器解析度與環境也是要考慮進來。
記得機器的安全保護還是要做,目的是反過來保護周圍的人,如無人機加裝保護套。

駕駛幫手 - 提醒保持距離

於今年初再度嘗試應用,這次注意到response delay的問題,所以直接結合程式與鏡頭於一台機器上。於是動手做的時刻又來了。

要做這應用,首先要確立的是機器必須學會檢測物體,如何用主要的表達函數來提高效果,降低損失函數的值,用什麼激活函數和逼近函數等等在。但這些都需要時間和耐心;如果你想涉足機器學習,可以先做一些應用體驗,然後再優化創建機器學習模塊。

下面是一個使用YOLO檢測模塊提醒司機保持安全車距的應用,於實際道路上測試。
https://www.youtube.com/watch?v=AhdyZbXmqbQ
Yes

此為使用Yolo做實時檢測實驗,程序的流程內容為:

1.參考改善YOLO的使用(鏈接

2.然後判斷方式如下
https://ithelp.ithome.com.tw/upload/images/20230928/20144614ErdKrDDwcu.jpg

打開攝像頭,即時抓取圖像,傳給YOLO模塊進行判斷。
紫色決策塊 “detect object Is in Range of detecting” 判斷物體是否滿足檢測條件。檢測到的條件將有兩個線性方程。如果兩者都在這個線性方程後面的塊中,即滿足要求被檢測到,立即用框顏色標記。

動態設置兩個線性方程式,下圖左邊綠線,右邊藍線,線性方程 “ ax+b = y”。 所謂動態,為隨鏡頭狀況調整參數,自動算出二條線的個別 a、b 值,供接下來計算判斷。

https://ithelp.ithome.com.tw/upload/images/20230928/20144614iEbq2FGlWW.jpg

從兩側駛來的汽車通常不會越過這兩條線。即使有,在線路中的比例也太小,不能滿足檢測要求;

https://ithelp.ithome.com.tw/upload/images/20230928/20144614R3CN59H2PT.jpg

如果左側車往前走的越遠越快,勢必面積越來越小,對我們相對越安全。

https://ithelp.ithome.com.tw/upload/images/20230928/20144614XwiX7K5wle.jpg

接下來解釋一下流程圖中紅色的決策塊,“Whether the car object in this screen is a car object in the previous round of screen?”,判斷當前對像是否也存在於上一輪畫面中,檢測到,如果是,保存這輛車的對象;不管是不是,都必須送到下一個綠色決策塊。

以下示意同一物件的判斷,前提是擷取的螢幕每幀是連續的。紅色表示下一幀的物件,藍色表示原物件。在連續圖片的狀況下,紅色重疊在藍色原物件,勢必是同一物件。

https://ithelp.ithome.com.tw/upload/images/20230928/201446142b5PX4m4Xp.jpg

接下來是流程圖中綠色的決策塊,“Whether the vehicle object is within the dangerous vehicle distance and is closer to you than the previous vehicle object?” 如果危險車距越來越近,則會進行標記提示。

如何判斷危險區域的車輛物體離你越來越近?可以實現計算的面積。如果物體的可視面積越來越大,也意味著物體在物理上離自己越來越近。

詳細過程還是需要根據上面的流程圖。
最後,如果畫面上的每個物件都判斷完畢,馬上從攝影機取即時影像,做新的迭代過程。

最後總結一下不足和需要改進的地方:

  1. 車子的震動還是會影響判斷,但是如果誤差範圍設置得當,影響不會太大。

  2. 鏡頭的廣角,拍攝的圖像是否會失真,需要調整。鏡頭只有一個判斷前方,如果要判斷車身周圍需要多顆鏡頭輔助。

  3. Yolo模塊很棒,但是晚上偶爾會出現一點誤判,如何減少誤判需要調整。

  4. 等紅綠燈時,如果車在前排且靠近斑馬線,可能會考慮到前方行駛的車輛和行人。
    原因是無法判斷自己的車輛是否已經停止,需要車商提供API獲取車輛相關信息,如車速、控制速度等。

  5. 應用的判斷參數可以還是要優化的。

優點是:

1.在YOLO模塊的基礎上,前方主車提醒司機保持車距,精度高。

2.在行動的時候,YOLO的檢測依然靈敏。

3.應用程序可以通過高速計算的平板設備移動到其他車輛、電動機車等。無需購買新車即可體驗機器學習的應用功能。


上一篇
[從Keras框架與數學概念了解機器學習] - 27. 延伸推薦學習令人佩服的智慧 - Key Descriptive Notes of Metropolis-Hastings (MCMC)
下一篇
29. 從需求分析預測來發現機器學習如何幫助組織
系列文
從Keras框架與數學概念了解機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言