這篇文章介紹如何用Python快速實作一個植物識别的app,家裡養了幾盆多肉還叫不上名字,正好拿來識别一下。實作這樣一個app隻需要20行左右的代碼,先來看下效果:
另外,我也開發了微信小程式版本,大家可以體驗一下。
實作該app主要包含兩步,前端界面開發和後端植物識别服務,下面來分别介紹一下。
前端的實作方式有很多種,剛剛說的小程式是一種,但對于習慣用Python的開發者來說,我們還是希望能通過Python語言來開發界面。果然真有這樣的工具,叫
streamlit
,它是專門為資料科學家、機器學習工程師而開發的,使用它的時候不需要關心布局、樣式、服務部署等web相關的知識,而就像開發普通Python程式一樣,快速建構優美的app。
streamlit
的安裝也很簡單,執行
pip install streamlit
指令即可。想入門
streamlit
的朋友可以看次條的文章。
接下來,我們把前端界面開發出來,從上面動圖可以看到,最核心邏輯為接收使用者輸入的圖檔,并将其顯示出來。
import streamlit as st
# 設定網站标題
st.title('植物識别')
# 圖檔選擇框
uploaded_file = st.file_uploader('選擇一張圖檔', type=['jpg', 'png'])
if uploaded_file is not None:
# 顯示已選的檔案
st.image(uploaded_file, caption='已選檔案', use_column_width=True)
界面完成後,我們再來考慮植物圖檔的識别服務,這裡我用的是百度AI的服務
執行
pip install baidu-aip
指令即可安裝百度AI的Python SDK。然後,再去百度AI開放平台注冊一個賬号獲得相應的APP_KEY和SCRET_KEY。編寫代碼調用植物識别服務
from aip import AipImageClassify
APP_ID = 'xxx' # 換成自己的 APP_ID
API_KEY = 'xxx' # 換成自己的 API_KEY
SECRET_KEY = 'xxx' # 換成自己的 SECRET_KEY
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
""" 植物識别結果 """
res = client.plantDetect(image) # 調用百度api識别植物
最後将傳回的結果在app上展示即可,完整代碼如下
import streamlit as st
from aip import AipImageClassify
APP_ID = 'xxx'
API_KEY = 'xxx'
SECRET_KEY = 'xxx'
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
# 設定網站标題
st.title('植物識别')
# 圖檔選擇框
uploaded_file = st.file_uploader('選擇一張圖檔', type=['jpg', 'png'])
if uploaded_file is not None:
# 顯示已選的檔案
st.image(uploaded_file, caption='已選檔案', use_column_width=True)
bs = uploaded_file.read()
""" 植物識别結果 """
res = client.plantDetect(bs) # 調用百度api識别植物
res['result'] # 顯示輸出結果
""" 該植物最有可能是 """, res['result'][0]['name'] # 取預測機率最大的結果
執行
streamlit run plant_detect.py
指令啟動app,看到有如下輸出
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://192.168.1.3:8501
在浏覽器通路指定的位址即可。
希望這篇文章的内容能對你有用,接下來我會定期分享這種AI小應用希望大家能夠喜歡。另外,完整代碼(包括微信小程式)已經開放,公衆号背景回複關鍵字 植物識别 即可擷取完整資料。
歡迎公衆号「渡碼」,輸出别地兒看不到的幹貨。