隨着6月結束,7月開始,最近上海最火的話題是垃圾分類無疑了。。上海人民是天天遲早倆小時定時定點扔垃圾。javascript
看完是否是要崩潰了?!別擔憂,本人週末花一下午精心製做的看圖識垃圾app,主要依賴 tensorflow coco-ssd 來識別照片中的多物體,而後找了個不知名的api,返回垃圾的分類。例如:html
首先,網上已經有不少能夠輸入文字查詢垃圾分類的網站了,我靈光一閃:要是能夠直接經過圖像垃圾分類豈不更好。而後找到了tensorflow.js 的官方指南:java
<!-- Load TensorFlow.js. This is required to use coco-ssd model. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"> </script>
<!-- Load the coco-ssd model. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd"> </script>
<img id="img" src="cat.jpg"/>
<script> // Notice there is no 'import' statement. 'cocoSsd' and 'tf' is // available on the index-page because of the script tag above. const img = document.getElementById('img'); // Load the model. 在瀏覽器裏fetch和加載模型到內存可能要花1分鐘以上 cocoSsd.load().then(model => { // detect objects in the image. model.detect(img).then(predictions => { console.log('Predictions: ', predictions); }); }); </script>
複製代碼
可見,Google tensorflow 已經把經常使用的機器學習模型作到開箱即用的水平,很是方便。固然,這個多物體檢測的函數返回的是個數組,包含了對象在圖中的bbox,並且裏面的分類標籤都是英文的:node
[{
bbox: [x, y, width, height],
class: "person",
score: 0.8380282521247864
}, {
bbox: [x, y, width, height],
class: "kite",
score: 0.74644153267145157
}]
複製代碼
那麼問題來了:網上的垃圾分類api 都是要求輸入中文的!!我第一時間想到了 Bing Translate API 把英文翻譯成中文再去查詢分類。因此又去申請了個Azure 的免費帳號,還好我有master card,付了一美金才搞定。具體的能夠參考最後的官方文檔連接git
通過一頓折騰,終於搞定,就是識別率很低。畢竟沒有專門訓練垃圾分類的模型,只是用現成的物體檢測模型。github
因此有不少搞笑的結果 😂: npm
建議用電腦在線體驗地址,加載模型就得花一分鐘:api
感興趣的能夠看github 項目地址數組
也歡迎掃碼體驗: 瀏覽器