來源:CDA數據分析師
作者:Elisha Terada
編譯:Mika
本文長度為1361字,建議閱讀3分鐘
本文為你介紹如何用機器學習技術Custom Vision判斷貓的品種。
之前我進行過一個簡單的機器學習實驗,來判斷圖像是否為墨西哥卷餅。
使用相同的基於雲的認知機器學習技術 Custom Vision,我想處理一個更複雜的場景。
如何用機器學習算法判斷貓的品種?
按照慣例,我需要為機器學習算法輸入一些圖像,讓其了解要學習的內容。
首先,我找到了貓的品種列表,包括圖像和名稱信息,然後以此為基礎在網上找圖片。
然後,我在Flickr上分別搜索每個貓的品種,並使用Chrome的擴展插件從第一頁開始下載圖像。
在找圖片時,之所以使用Flickr而不是谷歌圖片,是為了用Chrome擴展插件下載高解析度的圖像。
Flickr上的蘇格蘭折耳貓
我花了一個小時左右下載了圖片,然後對圖片進行處理。刪除了當中不是貓的圖片,避免影響訓練集。
然後,我刪除了同一個場景中相同貓的圖像。這是為了避免對算法進行過度訓練,從而避免它尋找精確匹配的圖像,而不側重預測。
記住,機器學習的目的是為了讓算法識別以前未見過的新信息,而不是尋找精確的匹配。
最後,我確保每個品種至少收集5張圖像,因為這是在Custom Vision上創建的標籤所需的圖像數量。
但是,有些常見的貓品種有超過20張圖像,而一些不常見的品種只有6張左右的可用圖像。
每個品種有不同數量的訓練圖像
這可能會導致識別結果產生偏差,但至少我們意識到算法中的潛在偏差。
最後,我收集了超過900張貓的圖像,包含50個不同品種。
完成數據收集後,我將所有圖像上傳到Custom Vision,並將每張圖像標記為相應品種。
之後,只需點擊一個按鈕來訓練算法,它就可以在幾秒鐘內進行貓的品種預測。
有趣的部分開始了,讓我們先來看看算法的性能。
性能還不錯
基於900張圖像和50個品種標籤,算法的性能還不錯。
這比我預想的要好,鑑於它不僅僅是識別該圖像是否為貓。
對於沒有受過訓練的人來說,判斷貓品種間的細微差異也是很困難的。
以半信半疑的態度,我打算用之前從未見過的圖像對算法進行測試。
首先是Sola,我家耳朵並沒有折起來的蘇格蘭折耳貓。
首先,在已知我家貓是純種蘇格蘭折耳的前提下,我用算法對它進行了測試。
Sola為蘇格蘭折耳的機率為53.9%
測試我家貓很有意思,因為訓練集中的所有蘇格蘭折耳貓圖像中,貓都是折耳的。
我並不覺得這有什麼影響,接著測試了幾張Sola的照片。
Sola為蘇格蘭折耳的機率僅為34.1%
突然間,我的貓被判定為很可能是威爾斯貓。
接著我檢查了訓練集中所有標有威爾斯貓的圖像,竟然發現一隻看起來和Sola完全一樣的貓的圖像。
儘管每個貓的品種均有其獨特的外觀,但兩隻完成不同品種的貓也可能在面部形態上很相似。
也許有更多不同的威爾斯貓圖像可以避免這樣的問題。
讓我們看看一些不同品種的測試成功例子。
96.9%為暹羅貓
99.8%為阿比西尼亞貓
99.9%為薩凡納貓
我必須說,當算法準確預測出給定的隨機品種圖像時,真的很神奇。
但是這個算法並不是沒有缺陷的,下面讓我們來看一些預測失敗的例子。
之前暹羅貓算法測試的效果很出色,讓我們再來看看。
首先,測試從背面拍攝的暹羅貓圖像會怎麼樣?
不可能是暹羅貓
老實說,這並不令人驚訝。
所有訓練圖像集的暹羅貓都是面朝相機,而不是看向旁邊的。
再來一張暹羅貓臉部特寫會怎麼樣?
11.1% 為暹羅貓
這個結果似乎與以前我家Sola臉部特寫的測試結果類似。
或許不僅僅通過貓的臉部來判斷時,該算法的效果會更好。
老實說,如果暹羅貓訓練集有相似圖像的情況下,結果可能會比11.1%要好。
下面,讓我們測試一些不是貓的圖像。
你可能已經注意到,上面每個結果都有「貓」的標籤。
使用Custom Vision,你至少需要兩個標籤來標記每個圖像。
讓我們來測試一下其他毛茸茸的動物圖像。
這貨絕對不是喵星人
有可能是貓
測試出來是貓
測試出來是貓
測試出來是貓
不可能是貓
顯然,如果看起來足夠相似,該算法很難區分什麼是貓,什麼不是貓。
經過訓練的算法很可能是基於顏色,圖案和整體形狀來進行模糊匹配。
給定粗略的訓練集,經過訓練的算法在特定的條件下能夠很好的判斷貓的品種。
然而,對於沒有訓練過的項目,該算法表現的不太好,例如如何區分貓和非貓的動物。
所以在投入時間訓練任何機器算法之前,對其能夠處理的範圍進行明確的定義是明智之舉。
編輯:文婧
公眾號底部菜單有驚喜哦!
企業,個人加入組織請查看「聯盟」
往期精彩內容請查看「號內搜」
加入志願者或聯繫我們請查看「關於我們」