不禿頭 | 如何用ModelArts滿足一個奶茶重度愛好者的好奇心
上周聽了昌啟哥的【用AI識別草莓成熟】的分享之后,深受啟發,心想,既然ModelArts的自動學習功能可以用來識別草莓的成熟度,那能不能再用它來識別一些別的東西呢?~看了一眼手邊的奶茶,嗯,奶茶也許是個不錯的選擇~
作為一個奶茶重度愛好者,在街上看見小姐姐拿著一杯看起來特別好喝的奶茶,摩拳擦掌好想知道她喝的是什么。直接上去問?女票重拳出擊警告!要是有一個奶茶識別工具就好遼~
說干就干~
數據獲取
其實最難的應該就是數據獲取的部分,因為在華為云ModelArts強大的自動學習功能加持下,建模、學習、預測都能夠自動完成,反而是數據的獲取成了一個比較麻煩的環節(瘋狂暗示MA下一步加入一個“自動獲取”功能)。數據來源選擇的是美團(因為餓了么已經關閉了桌面端的訂餐入口,看不到飲品詳情了~),由于時間關系,暫時只爬取了北京市所有coco門店的奶茶圖片及標簽。
本著技術是為人服務的原則,我首先選擇的是最“摸魚”的方法——用某爪魚來爬取數據。一通行云流水般的操作之后,卻得到這樣的結果。
圖片鏈接全部為空,這是什么情況?我趕緊打開網頁,查看網頁的源代碼信息。發現,原來圖片被包裹在了一個div標簽中,猜想軟件在自動采集的時候只采集了div,沒有采集到div下一級的img,自然就是空白了。(結果后面發現不是這個原因...)
偷懶失敗,只好自己動手,豐衣足食了~
打開pycharm,導入selenium和requests,根據網頁結構定位到需要爬取的圖片,設置好翻頁,暫停時間,開始爬取。(其中有很多細節問題,由于這篇是奶茶識別專場,爬蟲部分就不過多介紹啦~詳情見另一篇文章~(避踩雷 | 爬取美團門店信息中的“量子幽靈”))
經過一番操作~一共爬到150多家門店共900張奶茶圖片,足夠做一個展示了~(原來光是北京就開了這么多家coco門店,看來全國3000家無壓力鴨~)
數據標注
打開ModelArts,創建新的圖片分類實例。
這里有兩種創建方式。
一種是新建數據集,如圖所示,
再向數據集中添加剛剛爬取到的奶茶圖片。
然后選中需要標注的圖片,為其打上“coco奶茶”、“大叔奶茶”、“百香果雙響炮”之類的標簽。
還要一個一個人工標注~是不是感覺非常麻煩?
于是我選擇了另外一種方式——使用已有數據集。
還好在爬取數據的時候我順便爬了他們的標簽,通過ModelArts的實例(首頁第二個實例花卉識別)確認了自動標注所需要的輸入格式——圖片和txt文檔名相同,txt中寫入對應圖片的標簽,如圖所示。
自動生成標簽文件的代碼如下:
import?os ? dir?=?'C:/Users/Sirius/Desktop/data'?#?這里要改成自己文件夾的路徑 list?=?os.listdir(dir) for?l?in?list: ????tag?=?l.split('_')[0] ????name?=?l.split('.')[0] ????with?open('C:/Users/Sirius/Desktop/data/%s.txt'?%?name,?'w',?encoding='utf-8')?as?f:?#?這里也是喲~要改成自己文件夾的路徑 ????????f.write(tag)
得到已經標注好的數據之后,就可以開始操作遼~
打開OBS,上傳數據集文件夾
上傳完畢~
模型訓練
完成數據集的處理之后,就可以正式開始訓練遼~
打開ModelArts的自動訓練功能,設置好算法(隨便選了一個圖像分類的算法),設置數據來源為我們剛剛上傳的文件,訓練輸出為止為同目錄下的output文件夾,參數保持默認,開始訓練。
可以看到模型已經開始訓練遼~(據觀察,網頁不是實時刷新的,而是每半分鐘更新一次狀態信息)
等待大概十分鐘,訓練完成!
模型部署
點擊運行成功的訓練模型,將訓練好的模型部署到服務中~
再點擊“部署上線”,給模型部署一個在線服務~
安排上了!來試試分類的效果如何~
模型測試
測試一:coco奶茶
點擊“預測”~上傳一張沒有拿去訓練的圖片,得到這樣的結果:
可以看到,預測地還是蠻準的,實際的查準率應該是超過了85%(沒有考慮標簽大小寫的問題,還需要進一步的處理~)
測試二:百香果雙響炮
可以看到,百香果雙響炮(最喜歡喝這個遼~)也被很準確(98.8%)滴識別了出來~
那么,本次嘗試基本就宣告成功啦~
還想進一步?
本次探索主要的不足在于:
一是樣本比較少,只選擇了北京市的coco門店,改改爬蟲代碼闊以獲取到更多的數據,能夠覆蓋更廣的奶茶品類。
二是標簽沒有進行處理,比如像字母大小寫、名字差了一兩個字這些情況,還可以進一步滴改進~
另外,光是對奶茶進行分類其實也沒啥意思,要是能夠加入奶茶的更多信息(例如品牌、卡路里、成分組成等等),就可以有更多的使用場景遼~比如奶茶卡路里識別~(雖然很多手機已經內置這個功能惹~)
寫在最后
ModelArts的一些使用體會
兩個字形容ModelArts的使用體驗——【極佳】
我自己的專業是信息管理與信息系統(信管),這個專業過去主要研究的是文獻情報信息,所以需要處理的一般是文本數據(提到文本分析首先就想到了分詞、TF-IDF、K-Means/KNN三板斧~),平時主要是使用算法而不是去研究算法,就比如做信息檢索實驗的時候,一般是用jieba或者nltk對中英文進行分詞變形,然后用sklearn庫中封裝的各種算法進行訓練、建模和預測,已經很適應把訓練模型這一步作為一個黑箱來使用了。
但當更進一步,接觸比如圖像識別、語音識別這些領域時,就發現還需要使用更多的庫,比如tensorflow、pytorch之類的主流人工智能庫,這些學習難度都比較大。另一方面,機器學習模型往往建立在大量訓練的基礎上,對硬件也有一定的要求,高級一些的任務,PC可能很難勝任。
而ModelArts就很好地解決了這兩個問題,我還是可以像以前一樣,把數據獲取下來,打好標簽,然后一股腦兒扔給ModelArts,就能得到一個相當不錯的訓練模型。需要使用時,調用API就好了,可以節省很多資源。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。