1. 程式人生 > >這個中秋,我開發了一個識別狗狗的app

這個中秋,我開發了一個識別狗狗的app

中秋節是閤家團圓的日子,朋友圈、微信群的祝福此起彼伏,不過對於我這樣常年呆在家裡的人而言,是無法理解“但願人長久,千里共嬋娟”的。中秋節三天和平常沒什麼兩樣,閒得無聊,就想找點事情做做。

今年年初決定開始學習人工智慧,從吳恩達的《machine learning》到《deep learning》專項課程開始,再後來接觸具體的實戰程式設計,學習了Tensorflow和Keras。雖然學了這麼長時間,但總感覺還是飄在表面,看各種深度學習示例,覺得沒什麼難的,但是自己去寫,又不知道怎麼下手。經過一番思考之後,還是決定實際做一個專案,在做專案的過程中發現不足,再深入下去。

在微信上看到一個非常有意思的小程式:識花君

,對著花花草草,拍一下就能知道花的名字。受此啟發,決定開發一個識別狗狗的小程式,名字就叫做識狗君 (名字怎麼聽起來怪怪的,不過暫時也沒有想到好的名字,先暫用一下吧)。

在實施過程中,發現問題連連。首先,考慮使用tensorflow.js,這樣識別功能就無需藉助雲端,但經過嘗試,發現小程式不支援tensorflow.js,雖然微信小程式也用到了chromium核心,暫時放棄。接下來考慮採用雲端方案,這需要開發小程式,還需要進行服務端開發,這兩者都是我不擅長的,考慮下來短期之內也無法完成。最後考慮到tensorflow lite,還是先開發一個android app起來,把整個流程理順,再來考慮微信小程式。

貓狗識別網上資料很多,也很適合做深度學習的演示示例。結合各種資料,倒騰了一個android app的原型,程式碼放到github上:https://github.com/mogoweb/aiexamples.git ,程式碼位於tflite/AIDog目錄下,有興趣可以看看。

模型採用Google Inception V3, 訓練資料集採用stanford dog datasets。不過做下來之後,發現要做一個完整的app,還有很多後續工作:

  1. 模型太大,有80多M,對一個輕量級app來說太大,要考慮採用針對移動裝置的模型;
  2. 缺少狗狗的資料庫資料,比如中文名、介紹,等等。上網搜尋,也沒有找到現成的資料庫,考慮採用網路爬蟲或者手工採集一些資料。
  3. 介面設計,做一個demo容易,但如果作為一個產品,互動設計其實有很多考量的。

嗯,先這樣吧!後續還會繼續進行完善,我也會分享在這個過程中碰到坑、在終端進行機器學習的心得,敬請關注!

最後,祝大家中秋快樂!