範例程式Github
在 Github 中提供:
執行任務的 APK 檔(含完整任務執行結果)
每個 APK 所對應的 Java 程式、Gradle 檔
生成仿 KiboRPC 影像的Python 程式
訓練YoloV8影像辨識模型的 Pyhton 的程式
各種不同訓練型態的 YoloV8n 權重 (320 x 320)
以上所有資源的說明及準備文件
以上這些資源提供給各位參賽者望能減輕參賽者在影像辨識以及任務完成的負擔,雖然這些資源已經可以得到不錯的分數不過仍有漏洞需要自行改善,建議使用者可以基於以下幾個漏洞結合 AI (如 GPT、Claude、Gemnine)進行開發
巡邏路徑優化:
在所有的範例中,並沒有依照綠洲區進行巡邏路徑的規劃,因此綠洲區( Oasis Bonus ) 的分數相當低,使用者可以考慮將回報地點與拍照地點進行區隔,如拍照在綠洲區中,回報則需要在距離 Area 0.9 公尺以內的位置,如此一來在巡邏過程可以獲得更高的分數。
節省拍照時間:
在某些地點如 Area 2 與 Area 3 Lost item 通常會出現在同一張照片內,使用者可以考慮透過 工作坊的 Rhino 3D 模型,找出 能同時拍到兩個 Area 照片的位置,並修改 keepClosestMarker() 方法更改為可以同時處理兩張偵測到的 ARTag ,並同時進行回報,如此便可以增加剩餘時間,減少移動消耗時間。
回報位置優化:
根據拍到相片中的 AR Tag 進行位置的更新:在範例程式中相片的拍照位置都是固定的,回報位置也會回到之前設定好的拍照位置進行回報,若遇上 Lost Item 距離 Area 中心過遠的狀況,便會出現回報失敗,參賽者可以基於範例程式中尋找 AR tag 與相片中心位置的 Method keepClosestMarker() 進行修改。
偵測不到 Landmark 的錯誤處理:
在 Area Report 的環節中,如果載入模型無法偵測到 Landmark Item 即會回報 "unknown",這邊建議參賽者可以在範例程式回報 "unknown"設定更改為,從 8 種 landmark item 還未被回報的種類中隨機挑選一種進行回報;更進階可以考慮調整 YOLODetectService.java 的程式,讓其無論如何都能夠回報出當前 Confidence 最高的 Landmark。
偵測不到 Treasure Item 的錯誤處理:
模擬期間,可能會出現之前的 Area 沒有偵測出 Treasure 或是在 Target Item 無法偵測 Treasure 的狀況,這個時候可以建議使用者透過之前擁有的 Landmark item 進行分析,因為 Target Item 中出現的兩種 Landmark 必是從 4 個 Area 中進行挑選
因此 可以透過分析之前獲取的 Landmark 進行隨機的挑選,若在 4 個 Area 均回報正確,則有 50% 的機率可以拍攝到正確 Treasure,詳細做法如在程式碼 Map<Integer, Set<String>> areaTreasure = new HashMap<>() 的位置在增加一個 areaLandmark,紀錄每個區域對應的 AreaID
在偵測不出 Target Treasure 的時候也可以考慮從 areaTreasure 隨機挑選一個而非 null 的 areaID
以上是修改範例程式獲取更高分的小建議,請各位參賽者酌參。
我們努力讓參賽者們能參與此比賽,將各位送到 B 級的起跑點
至於是否能達到 A 級甚至躍升 S 級就要靠各位參賽者的努力了!
最後,祝各位競賽順利,都能在這個競賽中有所收穫!!!
範例程式教學影片(承接工作坊)
Java篇 1
剪取Artag與ArUco定位
Java篇 2
OpenCV 影像強化獲得更清晰影像
Python篇 1
用Python 生成訓練資料
Python篇 2
針對 Kibo RPC 資料集訓練 YoloV8
Python篇 3
訓訓練小技巧與使用 YoloV8 偵測 KiboRPC 物件
Java篇 3
訓練小技巧與使用 YoloV8 偵測 KiboRPC 物件
Java篇 4
Astrobee-YoloV8 影像辨識單一測試
Java篇 5
Astrobee 影像辨識巡邏測試
Java篇 Final
Astrobee 完成所有任務!
祝各位競賽順利!