python如何開發小程序(python小程序)
近來上海開始實行垃圾分類制度后,全國輿論都在關注。大方向上,全國人民都是大力支持垃圾分類,這是因為垃圾分類后,垃圾不再是垃圾,而是資源。堅持垃圾分類,讓每一種垃圾,去到合理的地方,不僅可以減少環境污染,更加可以找到能夠循環利用的資源。
但其中繁復的詳細類目,讓垃圾分類的推行平添許多難度,有拿著手機指導扔垃圾的,還有的用無人機扔垃圾的,還有的專門請拾荒專業人士來教大家分類,扔垃圾的.....。在現在人工智能走入生活的潮流下,能不能有一款基于手機微信的,可以智能分類垃圾的小程序來解決這個問題呢?開發難度大嗎?這個idea很好,確實,基于手機的垃圾智能分類微信小程序,開發起來難度沒有你想象的那么難,甚至一個小時,會python的你就會Diy一個出來。下面,讓我們看看這款將要誕生的應用效果吧。
初探垃圾智能分類應用
打開微信小程序,點擊“智能分類”,用相機一拍要分類的垃圾,并確定上傳,2秒不到,人工智能立刻提示該垃圾是哪種分類,讓你不用再糾結要扔的垃圾是干垃圾,還是濕垃圾。這個功能是不是挺給力的,讓困擾大家的“怎么扔垃圾?”的難題煙消云散。本文會從一個實現思路和涉及到的關鍵點進行一一闡述,但具體的開發,還需要小伙伴們閱讀后來愉快的自行探索開發。
開發應用步驟和關鍵點
首先來說說實現的步驟,首先在在微信小程序里設計一個最簡單的界面,開始向python服務器傳圖。具體界面請參考微信小程序設計指南。下面主要講后臺服務器交互,處理要點。
1.用js將圖片上傳到python程序。wx.requset()函數被調用后,會向后臺服務器發起數據的post請求,此時小程序會把data里的數據以post形式向url對應的服務器提交,
wx.request({
url: 'https://python后臺服務器網址',
data: {
............
},
method: "POST",
header: {
'content-type': 'application/x-www-form-urlencoded',
'chartset': 'utf-8'
}
代碼具體解釋:
url: url參數是數據提交的地址,微信小程序對后臺接入的服務器需要支持https,而且需要具備已備案的能夠解析的https域名。
data: data參數是要提交的數據,數據需要轉換成json格式,使用JSON的stringify函數,可以看到data的數據類型是JavaScript的對象類型,也就是俗稱的鍵值對。
method:是數據提交的請求方式,默認是post請求方式,后臺在處理請求時會判斷請求方式。
header:是數據的頭文件,需要設置字符類型為utf-8,即'charset':'utf-8',防止傳輸中文數據時出現亂碼。
2.python服務器存儲圖片。接收到微信端圖片發送請求后,對圖片進行重命名,并存儲到本地,便于后續進行處理。
creat_folder(os.path.join(app.config['UPLOADS_FOLDER'], hash_openid))
pic_dir = os.path.join(app.config['UPLOADS_FOLDER'], hash_openid, fn)
new.save(pic_dir)
folder = photosSet.url(hash_openid)
img_dir= folder + '/' + fn
3.智能識別圖片物體。這步是智能垃圾分類的魔法核心。原理是人工智能會根據打上標簽的海量圖片來識別新的圖片所歸屬的分類標簽。好奇的讀者可能會問,我沒學過深度學習???我也不會訓練模型,怎么辦?
python大大笑了,“沒事,bat等巨頭早就把這些核心人工智能能力封裝成容易使用的接口了!為了快速開發,我們只要站在巨人的肩膀上就行了?!?/P>
核心技術原理
智能識別圖片的所屬分類。這個是用的百度的智能api,只要把圖片傳給百度api,API就會識別該圖片,并把該圖片所歸屬的分類返回一個數組列表。智能識別圖片的分類標簽效果如圖,左邊是圖,右邊是api識別后的分類標簽:
有這么好的東東,讓我們立刻看看如何用吧。
首先申請百度圖像識別API的用戶和key。請移步百度智能api中心申請。
安裝百度圖像識別Python :
如果已安裝pip,執行pip install baidu-aip即可。
如果已安裝setuptools,執行python setup.py install即可。
初始化AipImageClassify
AipImageClassify是圖像識別的Python SDK客戶端,為使用圖像識別的開發人員提供了一系列的交互方法。
from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
通用物體識別接口調用
該請求用于通用物體識別,即對于輸入的手拍垃圾分類圖片(可正常解碼,且長寬比適宜),輸出圖片中的物體及場景標簽。
""" 讀取圖片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 調用通用物體識別 """
client.advancedGeneral(image);
""" 如果有可選參數 """
options = {}
options["baike_num"] = 5
""" 帶參數調用通用物體識別 """
client.advancedGeneral(image, options)
調用后返回結果例子如下:
{
"log_id": 327863200205075661,
"result_num": 5,
"result": [{
"score": 0.967622,
"root": "固體",
"baike_info": {
"baike_url": ......................
結果可以看到返回識別信息里包含了物體標簽的信息。并且有score等字段,究竟都代表了什么涵義呢?看看下面的結果詳細定義吧。
結果詳細定義
4.結果和條目文本相似度匹配。有了圖片所歸屬的分類標簽后,需要根據自然語言的相似度和垃圾分類條目進行相似度匹配。計算匹配后,將匹配度最高的垃圾分類返回微信界面,提示用戶該垃圾具體分類是什么,自此這個智能垃圾分類小程序就開發完畢。
涉及到的python關鍵點是:
需要將垃圾分類的條目結構化到python代碼。在設計前,請參考下官方的垃圾分類指南圖。
對應python代碼為:
trash_cat={}
trash_cat['circle']=['紙張','塑料','玻璃'.........]#可回收
...................................... #有害垃圾
將圖片識別的標簽和垃圾分類條目進行匹配,選出最匹配的垃圾分類條目。
python關鍵代碼,將標簽分詞后形成:
all_doc_list = []
for doc in all_doc:
doc_list = [word for word in jieba.cut(doc)]
all_doc_list.append(doc_list)
然后用dictionary方法獲取詞袋(bag-of-words)
dictionary = corpora.Dictionary(all_doc_list)
使用doc2bow制作語料庫
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]
相似度分析
使用TF-IDF模型對語料庫建模
tfidf = models.TfidfModel(corpus)
獲取測試文檔中,每個詞的TF-IDF值
tfidf[doc_test_vec]
然后就可以根據相似度進行匹配,并將圖片識別后的標簽和最相匹配的分類條目關聯起來,返回給用戶了。
對于一個對小程序開發有了解的python程序員來說,一個小時已經可以輕松開發出基于百度智能api的能智能識別拍圖的垃圾分類程序了。神奇吧!
總結:
本文從垃圾分類的痛點談起,通過微信小程序+智能識別api+NLP文本相似度等開發關鍵點的解說,給有志于利用人工智能技術的程序員,短時間高效率的開發出智能方便垃圾分類的應用指明了一條便捷的道路。
希望大家能通過python技術,讓我們的生活更方便和美好。歡迎在評論區進行意見建議交流。
免責聲明:一、71愛課網旨在免費為用戶傳遞信息,不代表本站的觀點和立場;
二、71愛課網僅提供信息發布平臺,對于本文版權歸屬問題本站無法判斷和調查;
三、本文整理于會員新聞,如果侵犯您的版權,請聯系管理員刪除或增加版權信息(QQ:981561103)。