###### tags: `Edge AI` `Final Project` # NTUST Edge AI (110-02) 期末專題報告_M11007307_江羿瑭 ## 1. 作品名稱 :memo: 【智慧生活】-- 呷幾來~水果專門店 本專題 **呷幾來~水果專門店** :camera: ,其意義為無人商店的水果專賣區,透過本專題所提出的模型,就可以使用 **輕量(lightweight)** 的 **去中心化(non-centralization)轉移學習(transfer learning)** ,在換季時,只需要少量張數的新加入水果照片,就可以快速得到新加入水果的初始模型,使得可在無人控管且無機房的商店當中,就可以做到水果存量的管控。 ## 2. 摘要說明 :memo: ![](https://i.imgur.com/02bBlSI.jpg) 在以往我們對於 **物聯網(IoT)** 的想像,都是將所有資訊傳送到 **雲服務(cloud)** ,利用高品質的大機器,替我們運算與傳輸。但近幾年半導體技術的不斷突破,使得許多體積比手機還小的晶片,就擁有強大的運算能力,這讓我們有更多的選擇,畢竟在雲上面每個空間每分每秒都是要算錢的...再加上網路攻擊的駭客層出不窮且防不慎防,除了個人用戶會害怕個人資料外洩,公司企業更是會怕機密外流 *(雖然有私有雲可以選擇,但你資料還是要交給他人保管啊...)* ,導致我們對於 資料全部上雲 的這個運動有所隱憂,所以近幾年就推出了 邊緣計算 的這個詞,這使資料可以留在本地端,也不需要購買昂貴的機器來運算。 轉移學習的缺點就是需要一個**中心化的機制**去管控整體架構之間的互相傳輸,而在Lu et al. [1][2]的兩篇文章當中,提出了**直接端對端的轉移學習**,但在其中存在了一些問題: 1. **準確度問題**:因為水果與一般超商當中的商品不同,即使是同一個品種的水果,也會因為成熟度不同以及栽種時的光照位置與水分不同而產生出相異的紋路,這會使準確度大幅地降低,在*本專題使用目前對新技術--YOLOX,當作訓練模型的基底。* 2. **資料安全性問題**:在轉移學習當中會遇到來源資料(source data)隱私的問題,所以導致很多人不願提供自己訓練的東西,使得我們的機器學習的這個部分進步得很慢,在*本專題當中使用source data absent[4]的技術,使得我們只需要來源資料(source data)訓練好的權重(pretrained weight),就可以使用到我們的模型當中。* ## 3. 系統簡介 :memo: ### 3.1. 創作發想 :writing_hand: 透過[1][2]的論文為基底做出改善,因這兩篇的致命缺點是運算時間還是太長,即使已經將樣本轉移的架構更新至特徵轉移,但資料量還是過於龐大,**本專題的構想是採用預訓練好模型的權重當基本的目標資料模型架構,透過fine tune微調模型參數,得到好的偵測與辨識的模型。** ### 3.2. 硬體架構應用與流程 :writing_hand: 本專題之實際應用設定在水果商店當中,透過攝影機拍攝的照片,經過PC(含有至少3G的GPU)預測出水果數量的偵測以及種類的辨識。 而在這次專題當中,是採用資料集[3]的奇異果圖片當作新水果的輸入,而PC是使用acer NITRO 5(intel CORE i5 9th GEN)搭配NVIDIA(GEFORCE GTX)提供訓練。 ![](https://i.imgur.com/25YGwUK.png) ### 3.3. 資料集建立方式 :writing_hand: 將資料集當中的奇異果用目測的方式分為**綠色**以及**非綠色**的奇異果,將綠色奇異果當作訓練資料,(訓練資料集有101張,測試資料集有399張,總共500張圖)。 ![](https://i.imgur.com/ui5eeCu.png) ### 3.4. 模型選用與訓練 :writing_hand: 本專題是用YOLOX-nano為模型基本架構,並且使用其預訓練權重應用在我們的目標模型(target model)當中。 ![](https://i.imgur.com/or3EyyG.png) ### 3.5. 模型工作原理 :writing_hand: 以下將本專題模型的元素分別介紹。 #### 3.5.1. Transfer Learning 這是屬於轉移學習當中,透過預訓練模型的特徵,再加上少許的目標資料,就可以訓練出有一定水準的目標物品準確度模型。 ![](https://i.imgur.com/2NSIjP1.png) #### 3.5.2. YOLOX YOLOX是目前YOLO家族當中最強大的模型,其主要是將yolo3與yolo5的head做變形而來的,以下也有置入計算能力與準確度的比較,而在本專題當中為使得應用在邊緣裝置(Medium Edge)上,所以使用最輕量化的--YOLOX-nano版本做應用。 ![](https://i.imgur.com/eS9gYnE.png) #### 3.5.3. Source Data Absent 這是一種新的風潮,重點是在訓練本地端資料(target data)時,只需要運用來源資料(source data)的預訓練權重(pretrain weight),不需要拿到來源資料。 ![](https://i.imgur.com/WMJaXKS.png) ## 4. 實驗結果 :memo: 本專題模型結合上述三個元素,訓練出一種除了能夠辨識真實世界的物品之外,也可以辨識卡通版本的物品。 由圖中右邊結果可以看出第一列是來自同個資料集的測試資料,準確度平均有93.5%;第二列為網路上隨機找尋來自真實世界的圖片,準確度平均有92%;第三及四列屬於卡通版本的圖片,準確度平均有90%。 ![](https://i.imgur.com/jsPZzy6.png) ## 5. 結論 :memo: 透過這次的期末專題,讓我學到很多,從定義題目,找尋相關訓練資料以及模型,到最辛苦的標註資料,還有訓練途中遇到的種種問題,以下提供幾個~~血與淚換來的~~少走彎路的經驗(因為都走過了QQ) 1. **在使用模型之前要注意它訓練要吃的標註檔格式**:因為一直聽到YOLO家族的功能很厲害,所以決定這次專題來測試看看,標註資料時一直銘記老師說YOLO家族的標註格式很不一樣,所以很開心的標註了三千多顆的蘋果,結果要用的時候才發現居然...YOLOX是使用voc(.xml)的格式,所以全部要再用一次:cry: 2. **當要訓練增加分類種類的轉移學習前要注意使用的預訓練模型的資料集有什麼物件**:因為我在審視自己的資料集時,發現蘋果的色澤紋路最為多元,所以想說以這個為示範會是很好的,但在只有單用YOLOX模型訓練後發現準確度異常的高(訓練純紅色的蘋果324張圖片,測試在青綠色的蘋果當中居然還有平均94%的準確度),在詢問老師之後才發現COCO的資料集已經包含蘋果了...所以經過老師建議後來改成奇異果的資料集:cry: ## 6. 參考文獻 :memo: ### 6.1. 源碼及公開文檔連結 1. [YOLOX-nano](https://github.com/willy541222/YOLOX.git) 2. [Source Data Absent](https://github.com/tim-learn/SHOT-plus.git) ### 6.2. 資料集 (僅有圖片沒有標註檔) * Israr Hussain, Qianhua He, Zhuliang Chen, "[AUTOMATIC FRUIT RECOGNITION BASED ON DCNN FOR COMMERCIAL SOURCE TRACE SYSTEM](https://wireilla.com/papers/ijcsa/V8N3/8318ijcsa01.pdf)," International Journal on Computational Science & Applications (IJCSA) Vol.8, No.2/3, June 2018 ### 6.3. 相關論文連結 **[1]** Ching-Hu Lu, and Xiao-Zong Lin, "[Toward Direct Edge-to-Edge Transfer Learning for IoT-Enabled Edge Cameras](https://ieeexplore.ieee.org/document/9240982)," IEEE INTERNET OF THINGS JOURNAL, VOL. 8, NO. 6, MARCH 15, 2021 **[2]** Ching-Hu Lu, and Yang-Ming Zhou, "[Direct Edge-to-Edge Many-to-Many Latent Feature Transfer Learning](https://ieeexplore.ieee.org/document/9564254)," Citation information: DOI 10.1109/JIOT.2021.3117991, IEEE Internet of Things Journal **[3]** Israr Hussain, Qianhua He, Zhuliang Chen, "[AUTOMATIC FRUIT RECOGNITION BASED ON DCNN FOR COMMERCIAL SOURCE TRACE SYSTEM](https://wireilla.com/papers/ijcsa/V8N3/8318ijcsa01.pdf)," International Journal on Computational Science & Applications (IJCSA) Vol.8, No.2/3, June 2018 **[4]** Jian Liang, Dapeng Hu, Yunbo Wang, Ran He, Jiashi Feng, "[Source Data-absent Unsupervised Domain Adaptation through Hypothesis Transfer and Labeling Transfer](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9512429)," DOI 10.1109/TPAMI.2021.3103390, IEEE Transactions on Pattern Analysis and Machine Intelligence ## 7. 附錄 :memo: ### 7.1. Colab源碼 :writing_hand: [EdgeAI fruit shop](https://colab.research.google.com/drive/1BBupR5Oyhrq2sx-RgpdbkMDChOXxDt9k#scrollTo=RorKRCwHwaFW) ### 7.2. MY GitHub :writing_hand: [Yi-Tang-Jiang/YOLOX](https://github.com/Yi-Tang-Jiang/YOLOX.git )