馬文秀,李焱



摘要:隨著人工智能時代到來,生活中隨處可見人工智能的應用。Python語言是人工智能開發的主流語言,現階段幾乎所有高校都開設了Python程序設計課程,如何在教學中設計一系列有趣有用接地氣的案例尤為重要,既可體現Python生態語言的特點,又能融入常用人工智能的應用。目前諸多科技公司都搭建了AI應用架構平臺,其中百度AI的開放平臺具有功能全面且前沿,為開發者提供的技術文檔也最全面。本文設計了一系列基于百度AI平臺用Python語言完成的人工智能應用,程序由簡到難,由單一功能模塊到綜合應用的開發,循序漸進,讓學生逐步領會、掌握Python人工智能的應用開發。
關鍵詞:人工智能;百度AI平臺;Python程序設計;AI開發能力;案例教學
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)19-0204-02
1 簡單的人工智能應用案例
學生通過簡單設置即可啟用百度AI開發能力。首先登錄百度AI平臺,注冊百度賬號。賬號登錄成功即可選擇需要的人工智能服務如:圖像識別、人臉識別、語音技術等項目。接著在對應AI服務中創建應用,獲取密鑰API Key及Secret Key,程序中將通過密鑰憑證調用對應接口的AI能力。
教師要指導學生認真閱讀百度Python SDK技術文檔,技術文檔是程序開發者的寶典,在百度Python SDK文檔里詳細介紹了Python的baidu-aip開發環境配置。常用方法是使用pip install baidu-aip安裝即可[1]。
1.1 基于百度AI的圖像識別案例
圖像識別是人工智能最常見的應用之一,AipImageClassify是圖像識別的Python SDK客戶端,為圖像識別的開發提供了一系列的交互方法。首先參考如下代碼新建一個AipImageClassify:(圖1所示)
案例1 公眾人物的識別。程序要求使用百度AI平臺,編寫圖像識別應用程序。輸入一張照片,識別照片公眾人物信息,并輸出識別結果。主要程序代碼參考(圖2所示):
可以進一步鼓勵學生對案例1進行舉一反三的程序編寫,通過改變client的參數,進行動物識別client.animalDetect、菜品識別client.dishDetect等。
該案例代碼只有十來行,且沒有循環、分支結構,對于計算機語言的初學者也非常適合。
1.2基于百度AI的人臉識別案例
案例2輸入一張圖片,檢測是否有人臉存在,若檢測到則輸出人臉屬性的相關數據,如年齡、性別、顏值、表情等信息。
通過本案例,了解人工智能在人臉識別及人臉屬性檢測領域的應用。首先創建百度AI平臺人臉識別應用,獲取該應用的密鑰,調用百度AI人臉檢測接口。參考部分主要代碼如下(圖3所示):
2 進階的人工智能應用案例
在進一步人工智能應用案例里需要從百度AI識別結果中提取出識別物的關鍵詞,這就涉及Python組合數據類型字典型、列表型的綜合應用,以及json格式數據的編碼解碼等操作。
2.1 百度AI識別結果數據分析
案例3 從菜品識別結果中提取出關鍵詞信息,如菜品的名稱、菜品熱量calorie以及該菜品百度百科簡介等關鍵信息。并把這些AI識別關鍵信息寫入到以菜品名稱命名的txt文件中。
此案例為案例1的進階,AI識別結果數據類型為字典dict。此處練習對字典類型鍵值對的操作。也可將字典數據轉換為層次清晰便于閱讀的json格式字符串,進行數據保存。參考部分主要代碼如下(圖4所示):
學生可以進一步對案例3進行舉一反三練習,如識別電影明星的詳細演藝生涯介紹,以及識別商品Logo及品牌背后的故事等。
2.2 百度AI識別結果關鍵詞寫入到圖片
案例4在人臉屬性檢測應用中,用矩形框框選人臉,并在上方顯示年齡、性別及顏值。如果圖片中存在多張人臉,請分別識別標出。
此案例是對案例2的進階,如何將人臉識別數據寫入圖片這需要結合Python圖像處理庫PIL完成。此案例需要導入PIL庫的三個模塊,Image模塊用于打開圖像、顯示和保存圖像。ImageFont模塊用于設置寫入圖像文本時用到的字體字號。ImageDraw模塊提供了對圖像的繪制功能,如在圖像上畫矩形、寫文本等。
3 集人工智能、Python網絡爬蟲及批量文件處理的綜合應用案例
3.1 百度AI圖像識別、批量文件遍歷及文件夾操作綜合應用
案例5自動識別一批圖片,并將識別出的圖片進行分類整理。根據識別結果,按分類名稱建立文件夾,并存入同類型圖片。以識別名稱命名處理后的圖片,且把識別結果的百度百科描述信息存入相應的文本文件。
本案例需要處理批量文件,可以使用Python的enumerate函數遍歷指定目錄下所有文件,程序判斷若為圖片文件則調用百度AI進行圖像通用識別advancedGeneral,再通過對識別結果組合數據類型的操作提取識別關鍵詞:名稱、類別、描述信息。根據類別使用os.makedirs創建分類目錄,對于已存在的分類目錄可使用try except進行程序異常處理。最后用PIL庫的ImageDraw模塊寫入識別名稱到圖片,打開文件并寫入識別主體的描述信息。
3.2百度AI圖像識別、Python網絡爬蟲等綜合應用
案例6 對于前述案例的識別圖片都是預先準備好的圖片文件。本案例結合Python網絡爬蟲的功能,程序運行時提示用戶輸入待爬取圖片類別的關鍵字,系統自動從百度圖片網站爬取相關圖片并保存在本地硬盤指定文件夾。如爬取關鍵字為“奧斯卡影星”,程序自動識別影星名字并標注在圖片左上角。
此案例在人工智能圖像識別應用中結合了Python爬蟲練習,使用到了requests庫、urllib庫及正則表達式等知識。
4總結
此系列人工智能AI應用案例均為Python語言程序,系列案例的功能是層層遞進、前后呼應由易到難。程序的結構也由順序逐漸加入分支判斷及循環遍歷。案例中融入了Python常用數據類型及組合數據類型字典、列表的操作。案例設計盡量做到了有趣有用,在激發學習興趣的同時也提高了學生的編程思維能力和創新能力。
參考文獻:
[1] 百度AI接入指南 [EB/OL]. https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3.2021-1-4.
【通聯編輯:王力】