常見的AI應用與介紹
人工智慧在近幾年處於爆發期,越來越多意想不到的應用被提出,說明著AI還有非常多發展空間。相同的資料型態,利用不同的方法分析,就可以解決不同的課題。例如目前已相當純熟的人臉辨識技術,在國防應用可以進行保安工作;用於企業可做員工門禁系統;可結合性別、年齡辨識讓賣場進行市調分析,或結合追蹤技術進行人流分析 (關於物件辨識及模型佈署,可參考社團內「關於物件偵測」及「TensorRT介紹及實作」等文章)。
好文回顧懶人包
如何用GPU加速AI 模型佈署:TensorRT介紹及實作 PART I
如何用GPU加速AI 模型佈署:TensorRT介紹及實作 PART II-實作Caffe模型透過TensorRT轉換
本篇接下來要針對深度學習方法的資料類型或演算法,介紹AI常見的應用。
以演算法區分深度學習應用
演算法類別可分成三大類:
- 常用於影像資料進行分析處理的卷積神經網路(簡稱CNN)
- 文本分析或自然語言處理的遞歸神經網路(簡稱RNN)
- 常用於資料生成或非監督式學習應用的生成對抗網路(簡稱GAN)
其中又以CNN應用最多最廣,一方面由於演算法容易理解且好學,坊間相關工具、開源模組或套件大幅降低開發門檻,很多主打不需要會寫程式也能做AI的軟體,幾乎都是以CNN應用為主。以下依序介紹各類演算法的應用。
CNN
因為應用種類多樣,本篇會以再以演算法類別細分,CNN主要應用可分為主要應用可分為影像分類(image classification)、物件偵測(object detection)及語義分割(semantic segmentation)。下圖可一目了然三種不同方法的應用方式。
(1) 影像分類 (Classification)
顧名思義就是將影像進行類別篩選,透過深度學習方法辨識圖片屬於哪種分類類別,其主要重點在於一張圖像只包含一種分類類別,即使該影像內容可能有多個標的,所以單純影像分類的應用並不普遍。不過由於單一標的辨識對深度學習演算法來說是正確率最高的,所以實務上很多應用會先透過物件偵測方法找到該標的,再縮小擷取影像範圍進行影像分類。所以只要是物件偵測可應用的範圍,通常也會使用影像分類方法。
影像分類也是眾多用來測試演算法基準的方法之一,常使用由ImageNet舉辦的大規模視覺識別挑戰賽(ILSVRC)中提供的公開影像資料進行演算法測試。影像分類屬於CNN的基礎,其相關演算法也是最易於理解,故初學者應該都先以影像分類做為跨入深度學習分析的起步。使用影像分類進行辨識,通常輸入為一張影像,而輸出為一個文字類別。
(2) 物件偵測 (Object Detection)
一張影像內可有一或多個標的物,標的物也可以是屬於不同類別。演算法主要能打到兩種目的:找到標的座標及識別標的類別。簡單來說,就是除了需要知道標的是什麼,還需要知道它在哪個位置。
物件偵測應用非常普遍,包含文章開頭提到的人臉辨識相關技術結合應用,或是製造業方面的瑕疵檢測,甚至醫院用於X光、超音波進行特定身體部位的病況檢測等。物件偵測的基礎可想像為在影像分類上增加標示位置的功能,故學習上也不離影像分類的基礎。不過物件偵測所標示的座標通常為矩形或方形,僅知道標的所在位置,並無法針對標的的邊緣進行描繪,所以常用見的應用通常會以「知道標的位置即可」作為目標。
最常見的演算法為YOLO及R-CNN。其中YOLO因演算法特性具有較快的辨識速度,目前已來到v3版本。R-CNN針對標的位置搜尋及辨識演算法和YOLO稍有不同,雖然速度稍較YOLO慢,但正確率稍高於YOLO。兩方法的詳細介紹,可參考社團中「電腦視覺」區塊。使用物件偵測進行辨識,通常輸入為一張影像,而輸出為一或數個文字類別和一組或多組座標。
(3) 語義分割 (Semantic Segmentation)
演算法會針對一張影像中的每個像素進行辨識,也就是說不同於物件偵測,語義分割可以正確區別各標的的邊界像素,簡單來說,語義分割就是像素級別的影像分類,針對每個像素進行分類。當然這類應用的模型就會需要較強大的GPU和花較多時間進行訓練。
常見應用類似物件偵測,但會使用在對於影像辨識有較高精細度,如需要描繪出標的邊界的應用。例如製造業上的瑕疵檢測,針對不規則形狀的大小瑕疵,都可以正確描繪。醫學上常用於分辨病理切片上的病變細胞,或是透過MRI、X光或超音波描繪出病變的區塊及類別。演算法如U-Net或是Mask R-CNN都是常見的實作方法。使用語義分割進行辨識,通常輸入為一張影像,而輸出也為一張等大小的影像,但影像中會以不同色調描繪不同類別的像素。
RNN
有別於CNN,RNN的特色在於可處理圖像或數值資料,並且由於網路本身具有記憶能力,可學習具有前後相關的資料類型。例如進行語言翻譯或文本翻譯,一個句子中的前後詞彙通常會有一定的關係,但CNN網路無法學習到這層關係,而RNN因具有記憶體,所以效能會比較好。因為可以透過RNN進行文字理解,其他應用如輸入一張影像,但是輸出為一段關於影像敘述的句子。(如下圖)
RNN雖然解決了CNN無法處理的問題,但其本身仍然有些缺點,所以現在很多RNN的變形網路,其中最常被使用的網路之一為長短記憶網路(Long Short-Term Network,簡稱LSTM)。這類網路的輸入資料不限於是影像或文字,解決的題目也不限於翻譯或文字理解。數值相關資料也同樣可以使用LSTM進行分析,例如工廠機台預測性維修應用,可透過LSTM分析機台震動訊號,預測機台是否快故障。在醫學方面,LSTM可協助解讀數以千計的文獻,並找出特定癌症的相關資訊,例如腫瘤部位、腫瘤大小、期數,甚至治療方針或存活率等等,透過文字理解進行解析。也可結合影像辨識提供病灶關鍵字,以協助醫生撰寫病理報告。
GAN
除了深度學習外,有一種新興的網路稱為強化學習(Reinforcement Learning),其中一種很具有特色的網路為生成對抗網路(GAN)。
GAN的應用相關論文成長幅度相當大(如下圖)。
本篇並不會詳述GAN的理論或實作方式,而是探討GAN實際應用的場域。深度學習領域最需要的是數據,但往往不是所有應用都可以收集到大量數據,並且數據也需要人工進行標註,這是非常消耗時間及人力成本。影像數據可以透過旋轉、裁切或改變明暗等方式增加數據量,但如果數據還是不夠呢?目前有相當多領域透過GAN方法生成非常近似原始數據的資料,例如3D-GAN就是可以生成高品質3D物件。當然,比較有趣的應用例如人臉置換或表情置換。(如下圖)
另外,SRGAN (Super Resolution GAN)可用於提高原始影像的解析度,將作為低解析度影像輸入進GAN模型,並生成較高畫質的影像(如下圖)。這樣的技術可整合至專業繪圖軟體中,協助設計師更有效率完成設計工作。
NVIDIA於官方網站也有提供一些基於GAN的平台的應用,包含透過GauGAN網路,讓您僅需繪製簡單的線條,即可完成漂亮的畫作,並且還能隨意修改場景的風格(如下圖)。您也可前往NVIDIA官方網站體驗。
若對GAN相關應用有興趣,請點選此處了解更多。