---
# System prepended metadata

title: 總審文件初稿

---

# 總審文件初稿
:::spoiler 目錄
[TOC]
:::
:::spoiler 學長姊的總審資料供參
- [柏瑋那組](https://drive.google.com/file/d/1n9KYKzMjlvoYXXEJf9TNeTdSUFRhm2H1/view?usp=drivesdk)
- [蘇美那組](https://docs.google.com/document/d/19LekIBafGkmAwxsJpenYmpn5PL1jtQqoNGiIlS55nXc/edit?usp=sharing)
:::

## 標題：深度學習於咖啡瑕疵豆辨識之應用
## 摘要

## 1. 緒論
###    1.1 研究動機與問題
- 依美國精品咖啡協會所定義的咖啡生豆第一級重大瑕疵豆類別中，黑豆、全酸豆、乾燥漿果、真菌或黴菌感染等霉豆、外來異物與嚴重蟲蛀豆等六項瑕疵種類，為主要檢驗咖啡生豆品質好壞的評估依據，而在精品級的咖啡豆中更是完全不可有第一級瑕疵豆。當咖啡種子播種下土到結出咖啡果實，再由咖啡農採集收成、使用各式處理法精製到乾燥脫殼後，才會是所謂的「咖啡生豆」，而在莊園出產咖啡生豆到咖啡大盤商前，都會經過選別篩選等挑選過程，將咖啡瑕疵豆從眾多咖啡生豆當中挑選出來。

- 而在「選別篩選」的方法中，目前大部分咖啡小農都是採用人工挑選等方式挑選瑕疵豆，唯有小部分咖啡合作社、農會等大批量生產之大盤商會採用昂貴且佔空間的篩選咖啡瑕疵豆之儀器;而用人工挑選咖啡瑕疵豆時，由於咖啡豆單次產量不一、發酵完品質不一、氣候與蟲蛀等問題，會需要大量的人力與時間細心檢驗，來經過多輪的挑選以及反覆的檢查，有時還會因為人工主觀辨識影響而導致挑選出來的瑕疵結果不一，如有過多的瑕疵豆出產至大盤商時，還會使同一包麻布袋中中的咖啡生豆無法使用進而讓莊園品牌信譽受損等問題，「挑選瑕疵豆」這項流程成為了生產咖啡豆時最關鍵的一步。

###    1.2 研究目的
- 而隨著科技的進步，近年來影像辨識與機器學習之領域等技術已有突破性的發展，在許多農業與食品業已經可以看到此等技術協助製造、檢測來提高良率的案例，本研究致力於應用影像辨識與機器學習等技術，以從上往下拍攝之咖啡生豆照片作為機器學習模型訓練資料來源，並使用 optuna 超參數優化等框架優化模型架構提高模型辨識準確率，最後將訓練完善的模型以Web APP的形式呈現並實作，使用者能夠透過此 APP 一掃而知咖啡豆是否為瑕疵豆，並在APP當中了解各種瑕疵種類知識。

- 此研究旨在協助咖啡農在篩選咖啡瑕疵豆時，減少人力與時間成本，提高正確篩選出瑕疵豆的比例，也協助想了解咖啡相關知識的人，透過實作的方式理解瑕疵分類知識。
## 2. 文獻探討與現今狀況分析
> 附註：（主要探討大方向<論文貢獻&意義>）利用機器學習達到影像辨識出咖啡瑕疵豆或非瑕疵豆，並使用 optuna 優化模型的超參數，再應用至 APP 
- 如今咖啡產業已成為日常生活中不可或缺的一部分，且現今人們注重健康飲食等風氣日漸瀰漫，咖啡豆的品質好壞不僅影響飲用風味，更直接影響人體的健康;為了保持咖啡飲品之風味與品質，在咖啡產業中的「挑出瑕疵咖啡生豆」的環節尤其重要。因此本專題主要研究卷積神經網路如何利用咖啡生豆的影像來辨識該豆之好壞，並使用 optuna 優化網路架構之超參數配置等，最後將表現最好的模型至於後端伺服器，讓前端使用者透過網路連結上傳照片讓模型辨識，伺服器會傳回辨識結果。而在此研究中，2.1節將會介紹咖啡瑕疵豆細談瑕疵種類、辨識方法，將對本團隊訪談魚池鄉花音咖啡莊園所記錄的：「該莊園所歸納的咖啡生豆瑕疵種類以及挑選方法與難處」，而2.2節將會介紹應用 CNN 辨識咖啡瑕疵豆等相關文獻，最後的2.3節會說明優化模型超參數的方法與使用 optuan 優化的相關文獻。
> 註解：這邊想一下看是只介紹 optuna 還是 optuna+CNN
### 2.1 咖啡瑕疵豆細談瑕疵種類、辨識方法
#### 2.1.1 美國精品咖啡協會定義之咖啡瑕疵豆
- 圖放美國協會-咖啡書多種瑕疵類
- ![](https://i.imgur.com/stysQYJ.png)
- 依照美國精品咖啡協會所定義之第一級咖啡瑕疵豆種類為：1. 全黑豆(Full Black) 2.全酸豆(Full Sour) 3. 乾燥果實/莢(Dried Cherry/Pod) 4. 真菌或黴菌感染豆(Fungus Damaged) 5. 異物(Foreign Matter) 6. 嚴重蟲蛀豆(Severe Insect Damage)，而第二級瑕疵豆種類為：1. 局部黑豆(Partial Black) 2. 局部酸豆(Partial Sour) 3. 帶殼豆(Parchment/Pergamino) 4. 浮豆(Floater) 5. 未熟豆(Immature/Unripe) 6. 萎凋豆(Withered) 7. 貝殼豆(Shell) 8. 破碎豆(Broken/Chipped/Cut) 9. 果皮或果殼(Hull/Husk) 10. 輕微蟲蛀豆(Slight Insect Damage)，在該協會定義之精品級的咖啡豆，為350可咖啡生豆不可有第一級瑕疵豆，而第二級瑕疵豆中則不可超過五個瑕疵單位，附圖(2)為SCAA第一二級細項瑕疵種類達扣分標準，舉例來說若欲檢測咖啡生豆中被檢測出三顆局部黑豆，則記為一個二類瑕疵，此為美國精品咖啡協會之定義，爾後臺灣也是採用此標準作為各精品咖啡評鑑競賽之依據[[1]](https://drive.google.com/file/d/1P6EotJ0CQ2xbOOcxX1FNvDDwDGioTzqW/view?usp=sharing)。
![](https://i.imgur.com/XS1P4bx.png)

#### 2.1.2 台灣「花音」咖啡小農定義之咖啡瑕疵豆
- 標準
- 經訪談臺灣南投縣魚池鄉的「花音咖啡莊園」的高莊主，我們得知在花音莊園中，將咖啡生豆挑選出瑕疵豆的過程中，高莊主使用的檢測標準與美國精品咖啡協會的評估標準一致，但也直言其他咖啡莊園不一定使用同樣的檢測標準。
- 人工挑選方式
- 而在人工挑選咖啡瑕疵豆中，高莊主親自為我們示範她的做法：「一百克咖啡豆放置檯面上，用手多次撥動咖啡豆，使豆子各個面向皆被檢查是否有瑕疵，左手拿一杯子，右手將挑選過的非瑕疵豆一點一點的撥進杯子，而瑕疵豆則挪到右邊，大約一分鐘，就將一百克的豆子完成分類」，且在人工挑豆的這部分，高莊主心中的咖啡莊園是希望自己賺錢夠用就好讓咖啡發揮不同的價值，會用「在一公斤的生豆中挑出全部的瑕疵豆就給付60塊」的方式與基金會媒合，提供弱勢族群一份工作的機會，這是花音莊園人工挑選瑕疵豆的方式。
- 難處
- 經訪談得知目前臺灣擁有多加咖啡生產基地且咖啡豆產量持續上升的「台灣農林公司」有使用來自日本的色選機臺，成本從無到安裝好總共花費兩百萬，所有咖啡生豆經過此色選機台時，能被過濾出九成五的瑕疵豆，而「台灣農林公司」近幾年平均出產的咖啡豆為十噸到十五噸之間。

而在訪談過程當中，據高莊主所說，臺灣較多小農只能負擔頂多二十萬的挑豆成本，且能精密挑選的色選機臺都在二十萬以上，故臺灣的咖啡小農一般不會購買色選機台，較多的情況是咖啡合作社透過國家補助購買色選機，再由租賃的方式供小農使用。
### 2.2 機器學習 之於 辨識咖啡瑕疵豆 <辨識咖啡瑕疵豆文獻>
在此小節中，將會歸納統整學術界目前使用機器學習技術所辨識咖啡瑕疵豆的相關文獻，並在最後進行分析比較。
1. 2017年時由 Pinto 等人[2]，將咖啡生豆中的瑕疵豆分成五類瑕疵，且使用卷積神經網路（Convolutional Neural Network）訓練二分類模型，將正常豆與淡化豆、正常豆與黑豆，正常豆與酸豆、正常豆與破損豆以及正常豆與圓豆等五項照片資料集分類並使用同一模型架構進行訓練，最後在正常豆與黑豆模型中得到最高的 98% 準確率，不過只能辨識單一面的咖啡生豆照片。
2. 而在 2020 年由 Nen-Fu Huang 等人研發了一套即時辨識咖啡生豆瑕疵豆的系統[3]，該研究資料收集的方式為一次拍攝大量咖啡生豆再加以裁切以及去除背景，並使用旋轉、翻轉來做資料增強，讓資料總樣本數達到 72000 筆，再使用卷積神經網路訓練模型為二分類模型（只分為正常豆與瑕疵豆），最後達到了約94.63% 的準確率，不過此研究僅能將輸送帶上的豆子辨識為瑕疵或非瑕疵，也只能辨識單一面的咖啡生豆照片，且尚未能將瑕疵豆透過硬體設備挑出來。
3. 2021年時，徐睿鴻使用AlexNet網路架構訓練CNN模型[5]，並利用透明輸送帶上下兩方的攝影機拍攝咖啡生豆的兩面，使得生豆經過輸送帶一次即可準確的被辨識為正常豆或是瑕疵豆，在輸送帶的末端使用 Arduino 控制篩選版翻轉，使得生豆得以被分類到正確的類別，而模型樣本使用資料增強技術，總樣本數達到 36,769 張，而在輸送帶傳送速度為 10cm/s 時，正常豆準確率達到 94.7 %，瑕疵豆準確率達到 96.7，但據2.1訪談的高莊主致電該研究合作的大鋤花間咖啡莊園所得知的資訊是「目前距完整使用還差一段距離，因為該研究所需要搭配的硬體設施要求較高，所以目前還未使用在莊園，但目前已經有公司與該研究團隊一同開發技術」。
5. 在2021年時，Ping Wang 等人為使一辨識咖啡瑕疵豆的模型提高運算效率與節省空間，在盡可能不影響準確率的情況下，透過知識蒸餾 knowledge distillation(KD)，將模組壓縮，達到模組輕量化。以解決 CNN 需要大量儲存空間及運算資源，不易運行於移動設備或嵌入式平台的問題。該團隊利用ResNet-18建立容易訓練的CNN 模型，再以此作為教師模型，透過 KD 產生一個學生模型。減少了CNN演算法的複雜度及參數個數。最後在教師模型使用SGD、學生模型使用SGDM作為優化器的情況下，教師模型的ResNet-18有達到93%的準確率。以此作為教師模型並配合KD所產生的學生模型雖然只有91%的準確率，但其中所使用的參數僅只有教師模型的1/4，而記憶體的消耗更是只有前者的1/40倍。
6. 而Cheng-Ju Kuo等人在2019年時，該研究旨是提供一個有效的模型，幫助用深度學習模型來辨識咖啡瑕疵豆的工作者減少標記 label 的工作量，利用 GAN 訓練出一個只需少張的 human-labeling images 的高準確度的瑕疵辨識模型，研究結果能夠為目標受眾減少約 10 倍(400/35)的工作量。
7. Shih-YuChen等人，在2022年時透過結合近紅外快照高光譜傳感器和深度學習，創造多模組即時檢測演算法(RT-CBDIA)，用來撿出有瑕疵的咖啡生豆。為了實作即時預測，使用了三個CNN網路做比較，分別是lean 2D-CNN, 3D-CNN 和 2D-3D merged CNN。此研究在此使用了大量普及於食品安全研究的高光譜成像(HSI)，透過呈現多達200個連續光譜帶，提取咖啡豆的反射率數據。最後達到了98.6%的總體準確率，此外2D-3D merged CNN達成了97.2%的Kappa值。在準確性和Kappa值上，2D-3D merged皆高於2D 或3D CNN，但2D-3D merged此用了比後兩者更多的光譜與空間數據，導致計算時間更長。
8. 在2022年由Analyn N.Yumang等3人發表使用Mask-CNN來偵測並分類excelsa coffee bean的模型，目的是實現機器學習取代手工挑豆。資料集由咖啡研究者提供，資料前處理將照片改正方形、水平及垂直翻轉、高斯模糊和亮度增強。其硬體架構使用樹梅派4，並使用樹梅派相機來拍咖啡豆，SD card用來存放模型，使用LCD印出結果。其將瑕疵豆分為四類:黑豆、酸豆、破碎豆、蟲蛀豆。神經網路使用ResNet-50，最後產生mask(遮罩)，印上瑕疵豆子種類且給予顏色區分，並附上預測成功的機率。此模型達到了約87.5% 的準確率。
9. 由Juliano SouzaRibeiro團隊在2021年時研究出了利用近紅外線光譜術及偏最小二乘迴歸方法預測咖啡生豆裡像是葫蘆巴鹼以及咖啡醯奎尼酸等混合物的濃度，再經過高效能液相層析法分析成分之後，可以得出葫蘆巴鹼以及咖啡醯奎尼酸以及上述兩個成分的同分異構物加起來以及上述兩個成分的同分異構物加起來在咖啡生豆裡面的濃度含量大約是在0.03%~0/8%之間。
- 機器學習 之於 辨識咖啡瑕疵豆歷年研究之評述
- 根據團隊的文獻回顧情況，在近幾年來有關使用機器學習辨識咖啡瑕疵豆的分類問題，有使用卷積神經網路幫助截取特徵與分類以及有使用生成對抗網路減少標記工作量......等多項研究，當中也有不同的咖啡瑕疵豆在模型訓練裡的樣本資料形態：2D照片、紅外線光譜...等等，而在提高模型辨識準確度的研究中，有使用不同框架的卷積神經網路（AlexNet、ResNet-18...等等）來測試並找出適合的模型架構。硬體部分在實際使用上已經有開發小型的餵豆器、輸送帶、照片截取或紅外光譜截取與分類撥桿，但都尚未有應用在實際產業的例子（小農莊園、大盤商與中盤商...等等）。

### 2.3 模型訓練：卷積神經網路超參數優化
卷積神經網路為當前辨識圖片類別主流使用的模型，而在此章將介紹訓練該網路的常見的各式超參數與超參數優化方法與工具。
- 卷積神經網路（Convolutional Neural Network, CNN）各式超參數
- CNN前段的卷積池化區為該網路主要截取輸入層特徵之層，後段的全連接層為訓練與學習各個神經元權重值與偏移最後再加以分類與模型訓練的格式，而以下將介紹各式超參數。
- 特徵截取區：有導入模型訓練的樣本資料的輸入層（可控制輸入大小與灰階/彩色）、有將圖片執行卷積運算的卷積層（filters：控制卷積核張數、kernel_size：控制卷積核大小、strides：控制卷積核一次移動的步伐數、padding：控制卷積運算後的輸出層樣式、activation：控制在卷積運算完後輸出層之激勵函數，目的是保留有效的特徵）、有將卷積後的輸出層壓縮取最大值的池化層（pool_size：控制壓縮大小）、有將卷積池化完後的結果攤平成一維準備進入全連接層的攤平層。
- 學習權重與分類區：將攤平成一維的輸入層與各神經元學習權重的全連接層（units：控制神經元個數、activation：控制各神經元在運算完權重與偏差值後之輸出層所使用的激勵函數，目的是保留有效的神經元）
- 模型訓練格式：在訓練CNN模型時，一般是將資料分為訓練集、驗證集與測試集，在模型訓練時，使用的是訓練集與驗證集，訓練集作為模型訓練全連接層的權重與偏差值，驗證集則是當一次迭代（Iteration）結束時會驗證這次訓練的驗證集準確度與驗證集損失函數進而讓下一次的迭代可以學習使模型表現更好，而測試集是完全不同於訓練集與驗證集的資料，作為所有訓練時期（Epoch）結束時所儲存的最終模型，加以評估模型表現。而對於資料樣本數之於訓練的關係為：在一次訓練時期（Epoch，為超參數，決定訓練多少時期）中訓練集樣本數/batch_size(為超參數，意義為單次迭代單批訓練多少樣本)=iterration。而在每次驗證集所計算的損失函數可依照不同的資料分類種類數，指定不同的損失函數。在每次迭代中可指定不同的優化器（optimizer，調節權重與偏差值，使訓練集Loss減少）、學習率（learning rate，控制每次更新權重與偏差值的效率）、動量（momentum，控制學習權重與偏差值的方向與速度）來優化全連接層中的各個神經元之權重與偏差值。

    1. Epoch/iterration/batch_size/
    2. loss/metrics
    3. optimizer
    4. dropout/BN
  
- 超參數優化演算法
在上一段當中提及了卷積神經網路的超參數與訓練模型時的各種格式，而在訓練模型的過程中只有全連接層的權重與偏差值是由模型自己訓練得出的參數，其他例如模型訓練的batch size、learning rate、optimizer 到 卷積池化截取資料特徵的filters、kernel_size、stride 以及 全連接層的 層數與神經元數，皆是人為需事先手動設定好的，而這些超參數的設定至關重要，不僅影響整體模型的記憶體使用，也影響模型能夠正確辨識的準確度。因此，在優化模型的超參數是一件模型訓練必經之路，而在近幾年，除了自己人工手動調超參數並反覆試驗其模型表現，也有許多優化超參數的方法與演算法，例如Grid Search（網格搜尋，列出所有超參數組合並全部試驗並找尋準確度最高的）、Random Search（隨機試驗，隨機試不同的超參數組合，並採取準確度最高的組合），亦或是Bayesian optimization、BO-GP、SMAC、BO-TPE、Hyperband、BOHB、GA、PSO等多種優化超參數的演算法，而各種演算法適合不同的超參數個數、適合解決不同的問題、適合不同的資料形態以及適合不同的目標值。
- optuna（重點與優點）
而在近年來，一個優化超參數的框架 optuna 出現了，optuna 是由日本 Preferred Networks 開發的開源API，其API主要功能就是優化超參數，透過自動化試驗與除錯達到找尋最適合模型的超參數配置，此段將介紹 optuna 的使用方式與優點，與 optuna 的相關文獻。
- optuna 使用步驟
在使用 optuna 抽樣超參數中，需要先定義好單次的試驗格式，再設定評估試驗的目標得分，最後在設定好整體的研究需要經過多少次試驗等研究格式後，就可以開始執行研究，以下將詳細介紹各步驟使用方式。
1. 定義試驗（trial）
在這一個步驟中要先佈置準備抽樣的抽參數與定義其超參數的抽樣空間，首先將準備調整的超參數列出來後，可依照自己先前人工調參的經驗或者經由文獻探討回顧，列出每個超參數的抽樣空間，在 optuna 中有多種抽樣不同資料形態的方法，有適合抽樣不同 optimizer 的類別形態、有適合抽樣不同的學習率的浮點數形態以及適合不同 filters 的整數形態，抽樣好超參數後即可開始進行模型訓練。
2. 定義目標（objective）
在定義完試驗後，接著就要定義目標，在使用抽樣的超參數後，要以哪一種標準作為評估單次試驗（trial）的目標得分（score），在 optuna 優化超參數的過程中，每一次的 trial 結束時會返回一個 score 作為比較上一個 trial 
是否進步的依據，來推估下一個 trial 的抽樣方向，而在模型訓練當中的得分，可以使用測試集準確度來評估一次試驗的目標得分。
3. 定義研究（study）
在定義好一次試驗與其目標後，接著就是對於整體研究（study）的設定了，在 optuna 抽樣模型適合的超參數當中，可設定欲試驗的 trial 數、欲試驗的時間限制、欲儲存的試驗空間（以利下一次再研究）、欲研究的方向（希望每次實驗的目標得分即測試集準確率朝最大值邁進）、欲使用的參數抽樣演算法，而在抽樣演算法中，除了基本的網格搜尋法、隨機搜尋法還有 TPE、CMA-EA 等演算法以及適合多目標的 NSGA-II、MOTPE 等演算法。
- 使用 optuna 研究的優點 
1. 人性化研究方法：在 optuna 中可配合 sqlite 儲存體，設定好儲存體指定路徑與研究名稱後，就可以接續上一次的研究，使之前的研究得以繼續使用，之前所有的試驗結果與試驗中抽樣的超參數組合也可繼續作為推算下一批超參數抽樣的方向，且可搭配 enqueue 方法，讓第一次抽樣前使用人為設定的超參數作為起點，這種方式可有效讓第一次的試驗使用藉由人工調參的經驗所得到的較好的超參數配置，節省研究時間。
2. 視覺化分析與儀表板：在 optuna 中，只要使用 sqlite 作為儲存體，就可以連結 optuna-dashboard 在網頁上及時查看動態研究情況，而 optuna 也有單獨的視覺化呈現的函數，可使用程式碼呈現詳細的研究歷史圖、各超參數關係圖與各超參數重要程度圖，以利分析。
3. 剪枝功能（purning）：在研究過程中，若提早得知單一筆試驗不符合先前設定好的標準值，則可提早修剪掉該筆試驗，及早停止，以節省研究時間。
- 文獻
> 1. optuna 之於機器學習優化 CNN 模型<optuna CNN 文獻>
1. 在 2021 年時，Paulo Lacerda 等人為了訓練出可透過病患的CT照，診斷是否罹患 COVID-19的模型，在 optuna 的框架下使用了 Hyperband 方法優化了CNN的參數，並使用2175張CT照作為資料集訓練，最後得出的模型準確率為 88 %。
2. 而在2020年時，Mizuho等人訓練了一個透過患者胸部的X光片來辨識是否罹患肺部等相關疾病的CNN模型，在此模型中使用了optuna的框架與貝氏優化法來優化CNN的超參數，在100個trials中優化出了測試集損失值為0.0733的模型。
::: spoiler 撰寫方法
==**多截取別人的論文研究重點，找尋與我們論文主題相關的重點，多注意引用方式**==
:::
## 3. 研究方法與過程
### 3.1 建立數據集
- 詳細寫、完整寫 ...
### 3.2 資料分類、前處理
### 3.3 模型訓練：
#### 3.3.1 人工調參(用意：初步調整CNN超參數，最後靠經驗理解最佳超參數位於哪個區間)
#### 3.3.2 模型訓練：optuna
### 3.4 APP
## 4. 研究結果與討論
### 4.1 目前最佳研究成果
問老白問題:在全聯階層條餐，沒有checkpoint，是否要留，或是再訓練一次
  **實驗樣本筆數**
    本研究共使用1150張咖啡豆照片資料，並將其區分為訓練集、測試集及驗證集，每個資料集中均有各半的咖啡瑕疵豆和非瑕疵豆。
|	|訓練集|	驗證集	|測試集	|總和|
|-    | --- | -- | -- |-|
|資料筆數|	800	| 200	|150	|1150|
  
  **評估模型標準**
    為了有效評估模型好壞，以準確率與召回率綜合最高者為最佳模型，準確率為瑕疵豆集非瑕疵豆中被成功預測的比例，召回率為在所有瑕疵豆裡被成功預測的比例。本研究採用人工調整參數以及超參數Optuna自動調整參數來提升準確及召回率，以下會分別探討兩個部分的架構及結果分析。

  **4.1.1 人工調參數之結果**
    在3.3.3有提及，本研究在手動調整的部分分成兩個方向來調整參數: 全連接層調整參數以及Batch Normalization調整參數。
!!!全連接層是否保留待定
  **全連接層調整參數**
    在全連接層調參數中，可以得到的最佳結果為準確率：68%、召回率：74%。該模型使用了卷積層與池化層各3層交錯；在全聯接層的隱藏層使用128個節點，且放置一層 Dropout 層，其參數設為 0.4，優化器使用Adam來優化全聯接層的權重，其詳細架構及參數如下圖： 
   ![](https://i.imgur.com/msdOM6D.png)

表2
該模型的訓練、驗證過程的損失(Loss)及準確度(Accuracy)如下圖。 ![](https://i.imgur.com/XkqFecF.png)
圖2
 ![](https://i.imgur.com/rNYJ6vk.png)
圖3
  **Batch Normalization調整參數**
    在加入Batch Normalization調整參數中，可以得到的最佳結果為準確率：79%、召回率：80%。此模型詳細架構及參數如下圖，架構使用了卷積層與池化層各3層交錯，在前兩層捲積與池化層之間新增一層BatchNormalization；在全聯接層的隱藏層使用500個節點，在隱藏層後新增一層BatchNormalization，優化器使用Adam來優化全聯接層的權重。
 ![](https://i.imgur.com/Xfr6jFi.png)
表3
該模型的訓練、驗證過程的損失(Loss)及準確度(Accuracy)如下圖；在訓練模型之後，會在所有epochs裡選擇出最好的模型，根據多次實驗研究的經驗，取驗證集的最低loss的模型作為標準可以預測出較好的準確率及召回率，而不是取訓練集當作標準。因此，在此次的訓練，我們會選擇第64 epoch的模型，其有最高的驗證集準確率(0.87)及最低的驗證集loss (0.337)。

 ![](https://i.imgur.com/NKdohYi.png)
圖4
 ![](https://i.imgur.com/7zh5MKb.png)
圖5
  **4.1.2 超參數Optuna調參之結果**
  我們將訓練模型的程式裡重要參數例如: Batch size、Learning Rate等，訂定該參數的範圍值，讓Optuna找出各個參數的最佳數值，來達到準確率及召回率的最佳化，在3.3.5已詳細說明各項參數代表的意義及參數範圍。本研究以100個trials來進行訓練，每一個trial都會依照之前做過的trial自動調整，做完後最佳的結果為準確率84.6%和準確率90.7%。
  最佳模型的詳細架構及參數如下圖，架構使用了卷積層與池化層各2層交錯，第一層卷積層使用16 張filter ，第二層卷積層所使用32 張filter ，並在兩層捲積池化層之間新增一層BatchNormalization；在全聯接層的隱藏層使用320個節點，在隱藏層後新增一層BatchNormalization，優化器使用Adam來優化全聯接層的權重，學習率設置為0.000809，batch size設為5。
 ![](https://i.imgur.com/L9dSUM3.png)

  下圖為Optuna執行100trials後，Accurary的歷史進步圖，在第17次trial時就已達到目前最高的84.6%，後面沒有再超過該值。
 ![](https://i.imgur.com/Znz7f9G.png)

  下圖為超參數重要圖(Hyperparameter importance)，列出各項超參數對於本研究的重要百分比，此圖是利用隨機森林回歸模型(random forest regression model)來判斷參數的重要性，簡單來說，隨機森林演算法為在訓練集中隨機取樣(可重複取)成為多棵不同的決策樹，每一顆決策樹提取特徵後再統一投票為最終結果，而取得參數的重要性，由下圖可以可以知道重要超參數的前五名分別是Learning Rate、第二層捲積層後的Batch Normalization、隱藏層的 node 數、Batch size以及卷積池化層的層數，其中Learning Rate的重要程度為0.23，是所有超參數裡最高的，。
 ![](https://i.imgur.com/lwYvkkD.png)

  下圖為平行座標圖(Parallel Coordinate)，藉由此圖可以知道重要性前五名的超參數相互的關聯性，本研究實驗100個trials，因此共有100條線經過每一個參數，用圖像化的方式來說明每一筆實驗的超參數配置關係，顏色由淺到深代表著準確率由低到高。由圖中多條顏色較深的線經過可知，有第二層捲積層後的Batch Normalization，以及Batch size在設置5跟10能有較佳的結果，其準確率相對較高；Learning Rate因其配置分散和範圍值太小，較難看出較佳模型的數值結果分布。
 ![](https://i.imgur.com/RXHZH31.png)


### 4.2 研究成果討論
在手動調整參數的過程中，我們面臨許多的考驗，例如:無法有邏輯的調整參數，變動參數後的成效沒有太多規律可循，以及樣本數量不夠導致準確率無法提升，訓練一次模型費時，因此在有限的時間內應該採取最有效率的做法。透過增加更多照片資料來訓練，並且加入Batch Normalization及超參數Optuna調整參數來提升模型準確性，經過資料庫的壯大及訓練方式改變後，準確率及召回率有多次達到80%以上，已改善了當時的困境。
    下圖為三個調參方式的對照表格，加入batch normalization後，總體的模型結果有明顯進步，使用optuna讓其自動調整超參數，讓召回率突破90%的大關。手動調整參數既費時又費力，研究過程要不斷地摸索，在一次次實驗中找出關鍵的參數及其對應的數值。然而，optuna只需要定義哪些超參數能變動並且給予其固定的範圍，讓它幫忙找出最佳的結果，其超參數較為精確，也更節省時間。

|	|準確率	|召回率|
| --- | -- | -- |
|全連接層調整參數|	68%|	74%|
|Batch Normalization調整參數|	79%	|80%|
|超參數Optuna調整參數|	84.6%|	90.7%|

## 5. 結論與未來發展
**5.1 現況總結**
    現今咖啡豆需要依賴人工來篩選，因此挑選咖啡豆始終是咖啡產業中耗時耗力的人工成本， 對於小農，市面上現有選豆機器之價格又太過於高昂，於是便確認了市場需求，希望能使用機器學習來取代人力，減少人力成本，成為本專題研究的動機。近年來深度學習CNN技術日趨成熟，期望開發出能有效率辨識瑕疵豆的模型，本研究已使用1150張咖啡豆照片進行訓練並調整參數以建置模型。
    為了將咖啡豆預測的結果清楚地列出，我們著手將訓練好的模型與Web APP對接，製作一個無論是手機還是電腦，均可即時上傳多張咖啡豆照片並預測是否為瑕疵的Web APP程式，此Web APP程式需要連的上網路的地方，藉由此程式可以快速地將剛拍完的豆子上傳，交給模型來預測好壞，並立即將預測結果陳列在頁面上。

**5.2 未來發展**
   由於拍照設備及咖啡豆的運輸設備涉及電機方面相關的知識，本研究在咖啡豆實際使用的設備上著墨較少，缺乏此領域基本的概念及經驗，在未來可以朝向這個領域研究，期待能將本研究的CNN咖啡辨識系統與機械設備結合，做出具有商業價值的機器設備；訓練咖啡豆及調整參數的部分，得出的準確率及召回率皆還有進步的空間，未來可以將目標(準確率/召回率)設置為95%來持續訓練，使預測帶來的誤差降到最低。
    本研究希望能將此系統放置推廣和教學上，除了能讓更多人對咖啡豆的生產到上架商品的流程有更進一步的認識，也可以讓學生們了解更多機器學習的應用。
    本研究專題是期望能夠實質上的幫助小農節省成本以及使更多人們認識咖啡，因為機器學習越來越進步，讓機器取代人力存在可能性，本研究開發的系統，若與機器設備結合，將具有很大的商業潛力。


## 6. 參考文獻（請依照「資訊管理學報」範例）
1. James Kosalos, Rob Stephen, Steven Diaz, Paul Songer, and Mané Alves. (2004). *SCAA ARABICA GREEN COFFEE defect handbook.* Retrieved from https://www.coffeestrategies.com/wp-content/uploads/2020/08/Green-Coffee-Defect-Handbook.pdf (Oct. 19.2022)
2. 2022 臺東縣精品咖啡評鑑競賽，競賽簡章（2022.7.15）。檢自 https://wwwstorage.taitung.gov.tw/Download.ashx?u=LzAwMS9VcGxvYWQvNDQzL3JlbGZpbGUvMTI3NDYvMTE3MzE1LzM3MjMxNjI0LWEyNjgtNDE3Ni04ZGNkLTJlNzEzMTExZTczOS5wZGY%3D&n=MTExMDcxNSDnsKHnq6AgLSAyMDIy6Ie65p2x57ij57K%2B5ZOB5ZKW5ZWh6KmV6ZGR56u26LO957Ch56ugKDfmnIgxNeWFrOWRiueJiCkucGRm (Oct. 19.2022)
3. C. Pinto, J. Furukawa, H. Fukai, & S. Tamura. （2017,16-18 August 2017）. *Classification of Green coffee bean images based on defect types using convolutional neural network (CNN).* Paper presented at the 2017 International Conference on Advanced Informatics, Concepts, Theory, and Applications (ICAICTA), Denpasar, Indonesia.
4. N.-F. Huang, D.-L. Chou, C.-A. Lee, F.-P. Wu, A.-C. Chuang, Y.-H. Chen, & Y.-C. Tsai. （2020）. Smart agriculture: real-time classification of green coffee beans by using a convolutional neural network. *IET Smart Cities*, *2(4)*, 167–172. doi: 10.1049/iet- smc.2020.0068 
5. 徐睿鴻，"咖啡瑕疵豆篩選機研究與實作-基於深度學習與輸送帶架構"，碩士學位。學術論文，工程學門，國立雲林科技大學，2021.
> 細部參考文獻結構：
> 會議論文（International Conference）：
> Author, A. A. (Year, Month). （假設第1行結束,第2行開始以下開頭空4格）
> ____Title of paper. Paper presented at the Conference Title, 
> ____Location.
> 範例：（第2行開始以下還未空格）
> C. Pinto, J. Furukawa, H. Fukai, and S. Tamura. （2017,16-18 August 2017）. *Classification of Green coffee bean images based on defect types using convolutional neural network (CNN).* Paper presented at the 2017 International Conference on Advanced Informatics, Concepts, Theory, and Applications (ICAICTA), Denpasar, Indonesia.

> 期刊（paper）:
> Powers, J. M., & Cookson, P. W. Jr. (1999). The politics of school choice research. Educational Policy, 13(1), 104-122. doi:10.1177/0895904899131009
