Serverless 實戰:用 20 行 Python 代碼輕鬆搞定圖像分類和預測

2020-12-11 InfoQ技術實驗室

圖像分類是人工智慧領域的一個熱門話題,通俗來講,就是根據各自在圖像信息中反映的不同特徵,把不同類別的目標區分開。圖像分類利用計算機對圖像進行定量分析,把圖像或圖像中的每個像元或區域劃歸為若干個類別中的某一種,代替人的視覺判讀。

在實際生活中,我們也會遇到圖像分類的應用場景,例如我們常用的通過拍照花朵來識別花朵信息,通過人臉匹對人物信息等。通常,圖像識別或分類工具都是在客戶端進行數據採集,在服務端進行運算獲得結果。因此,一般都會有專門的 API 來實現圖像識別,雲廠商也會有償提供類似的能力:

華為雲圖像標籤

騰訊雲圖像分析

本文將嘗試通過一個有趣的 Python 庫,快速將圖像分類的功能搭建在雲函數上,並且和 API 網關結合,對外提供 API 功能,實現一個 Serverless 架構的 " 圖像分類 API"。

入門 ImageAI

首先,我們需要一個依賴庫:ImageAI。

什麼是 ImageAI 呢?其官方文檔是這樣描述的:

ImageAI 是一個 python 庫,旨在使開發人員能夠使用簡單的幾行代碼構建具有包含深度學習和計算機視覺功能的應用程式和系統。ImageAI 本著簡潔的原則,支持最先進的機器學習算法,用於圖像預測、自定義圖像預測、物體檢測、視頻檢測、視頻對象跟蹤和圖像預測訓練。ImageAI 目前支持使用在 ImageNet-1000 數據集上訓練的 4 種不同機器學習算法進行圖像預測和訓練。ImageAI 還支持使用在 COCO 數據集上訓練的 RetinaNet 進行對象檢測、視頻檢測和對象跟蹤。 最終,ImageAI 將為計算機視覺提供更廣泛和更專業化的支持,包括但不限於特殊環境和特殊領域的圖像識別。

簡單理解,就是 ImageAI 依賴庫可以幫助用戶完成基本的圖像識別和視頻的目標提取。不過,ImageAI 雖然提供一些數據集和模型,但我們也可以根據自身需要對其進行額外的訓練,進行定製化拓展。

其官方代碼給出了這樣一個簡單的 Demo:

from imageai.Prediction import ImagePredictionimport osexecution_path = os.getcwd() prediction = ImagePrediction()prediction.setModelTypeAsResNet()prediction.setModelPath(os.path.join(execution_path, "resnet50_weights_tf_dim_ordering_tf_kernels.h5"))prediction.loadModel()predictions, probabilities = prediction.predictImage(os.path.join(execution_path, "1.jpg"), result_count=5 )for eachPrediction, eachProbability in zip(predictions, probabilities):print(eachPrediction + " : " + eachProbability)我們可以在本地進行初步運行,指定圖片1.jpg為下圖時:

可以得到結果:

convertible : 52.459537982940674sports_car : 37.61286735534668pickup : 3.175118938088417car_wheel : 1.8175017088651657minivan : 1.7487028613686562讓 ImageAI 上雲(部署到 Serverless 架構上)

通過上面的 Demo,我們可以考慮將這個模塊部署到雲函數:

首先,在本地創建一個 Python 的項目:mkdir imageDemo新建文件:vim index.py根據云函數的一些特殊形式,我們對 Demo 進行部分改造將初始化的代碼放在外層;將預測部分當做觸發所需要執行的部分,放在入口方法中(此處是 main_handler);雲函數與 API 網關結合對二進位文件支持並不是十分的友善,所以此處通過 base64 進行圖片傳輸;入參定為{"picture": 圖片的 base64},出參定為:{"prediction": 圖片分類的結果}實現的代碼如下:

閱讀更多

如果你想閱讀更多相關內容,可以點擊文末了解更多查看

相關焦點

  • Serverless 架構下 Python 輕鬆搞定圖像分類
    簡介: 本文將會通過一個有趣的 Python 庫,快速將圖像分類的功能搭建在雲函數上,並且和 API 網關結合,對外提供 API 功能,實現一個 Serverless 架構的「圖像分類 API」。前言圖像分類是人工智慧領域的一個熱門話題。通俗解釋就是,根據各自在圖像信息中所反映的不同特徵,把不同類別的目標區分開來的圖像處理方法。
  • 圖像分類:一個更魯棒的場景分類模型
    如何根據圖像的視覺內容為圖像賦予一個語義類別(例如,教室、街道等)是圖像場景分類的目標,也是圖像檢索、圖像內容分析和目標識別等問題的基礎。但由於圖片的尺度、角度、光照等因素的多樣性以及場景定義的複雜性,場景分類一直是計算機視覺中的一個挑戰性問題。本次任務從400萬張網際網路圖片中精選出8萬張圖片,分屬於80個日常場景類別,例如航站樓、足球場等。每個場景類別包含600-1100張圖片。
  • Tensorflow實戰系列:手把手教你使用LSTM進行文本分類(附完整代碼)
    本教程旨在手把手教大家使用Tensorflow構建LSTM進行文本分類。教程使用了偽造的文本數據進行情感分類,有正面情感數據和負面情感數據。並且教程代碼包含了配置信息,將數據處理為LSTM的輸入格式,以及定義和訓練相關代碼,因此希望在日常項目中使用Tensorflow的朋友可以參考這篇教程。
  • python機器學習預測分析核心算法.pdf
    本書專注於兩類核心的「算法族」,即懲罰線性回歸和集成方法,並通過代碼實例來展示所討論的算法的使用原則。全書共分為7章,詳細討論了預測模型的兩類核心算法、預測模型的構建、懲罰線性回歸和集成方法的具體應用和實現。本書主要針對想提高機器學習技能的Python開發人員,幫助他們解決某一特定的項目或是提升相關的技能。
  • 圖像分類入門,輕鬆拿下90%準確率 | 教你用Keras搞定Fashion-MNIST
    裡的tf.keras函數,對Fashion-MNIST數據集進行圖像分類。只需幾行代碼,就可以定義和訓練模型,甚至不需要太多優化,在該數據集上的分類準確率能輕鬆超過90%。進入正題,教你用tf.keras完成Fashion-MNIST數據集的圖像分類~運行環境無需設置,只要使用Colab直接打開這個Jupyter Notebook連結,就能找到所有代碼。
  • 原理+代碼|深入淺出Python隨機森林預測實戰
    每個小模型取用 100% 的樣本是絕對沒有意義的,那就跟沒抽是一樣的,這樣也就沒有體現出裝袋,只有每個模型用到的數據都有一定的不同,組合起來後每個的投票(預測結果)也才有意義。紅框表示數據缺失,這裡只展示了部分行和部分列數據,如果這份數據表的規模為 4萬行 * 50列,那這數據缺失的分布得有多隨意啊 😭??所以,到底該如何充分利用這殘次不齊的數據就成了呈待解決的關鍵問題。
  • 從零開始實現穿衣圖像分割完整教程(附python代碼演練)
    我已經在這裡展示了我對這個領域的興趣,在那裡我開發了一個來自Zalando在線商店的推薦和標記服裝的解決方案。在這篇文章中,我們會開發一個提取連衣裙的應用。 它輸入原始的圖像(從網絡上下載或用智慧型手機拍照),並提取圖像中的連衣裙。 分割的難點在於原始圖像中存在了大量的噪聲,但是我們會在預處理期間通過一個技巧來解決這個問題。
  • 幾行代碼搞定ML模型,低代碼機器學習Python庫正式開源
    想提高機器學習實驗的效率,把更多精力放在解決業務問題而不是寫代碼上?低代碼平臺或許是個不錯的選擇。最近,機器之心發現了一個開源低代碼機器學習 Python 庫 PyCaret,它支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型。
  • 教你用Python自製拼圖小遊戲,輕鬆搞定熊孩子
    教你用Python自製拼圖小遊戲,輕鬆搞定熊孩子 本文主要為大家詳細介紹了python實現拼圖小遊戲,文中還有示例代碼介紹,感興趣的小夥伴們可以參考一下。
  • 如何用Python和深度神經網絡識別圖像?
    來源:王樹義科學網博客概要:只需要10幾行Python代碼,你就能自己構建機器視覺模型,對圖片做出準確辨識和分類。
  • 【乾貨】4月Python 熱門推薦Top 10
    我們將用Python構建Instagram的PIN功能,這就是說一個圖像被放置在特定位置,而攝像機圍繞著這個圖像移動。現在蘋果的ARKIT的別針圖像功能已經變得司空見慣,但使用簡單的接口比如如DLIB的相關跟蹤器,為我們提供了一個很好的起點,不再需要用像iPhone那樣的傳感器數據。所以我們將用Python創建一個用別針圖像製作視頻的工具。
  • 手把手教你用OpenCV和Python實現圖像和視頻神經風格遷移(代碼)
    之後我們會用OpenCV和Python動手操作。從左至右:我們的內容圖像;風格圖像;輸出的風格遷移圖像神經風格遷移主要有兩個過程:上圖就是將梵谷著名的畫作《星夜》的風格應用到普通的生活照上,我們保留了原照片中的山、人物和啤酒等所有內容,但全部替換成了梵谷的油畫風格。問題就是,我們應該如何定義一個神經網絡,讓它執行神經風格遷移呢?
  • python人工智慧項目實戰,PDF+源碼
    《python人工智慧項目 Intelligent Projects Using Python》 實施機器學習和深度學習方法,使用Python構建智能,認知AI項目本書涵蓋了數學代數模型的實際創建和分析,如線性連續模型,非明顯線性連續模型,和純線性整數模型。作為數十年行業教學和諮詢的產品,Practical Python AI Projects不是專注於理論,而是強調模型創建方面;對比的替代方法和實際變化。每個模型都經過徹底解釋並編寫執行。本書中所有示例的原始碼都是可用的,使用Google OR-Tools以Python編寫。
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • Python不超過10行代碼就可實現人臉識別,教你辨別真假
    來看看一張圖片中有幾個人,沒有高大上,只是覺得好玩,而且只需要7行代碼。這裡沒有用PIL,再結合特定算法,而是直接使用了OpenCV(http://opencv.org)。OpenCV是一個基於BSD許可發行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS作業系統上,輕量而且高效,用C/C++編寫,同時提供了Python、Ruby、MATLAB等接口,實現了圖像處理和計算機視覺方面的很多通用算法。
  • 20行代碼竟然就可以給證件照換底色!快收藏
    Python裡竟然20行代碼就可以搞定,學會快收藏!首先我們來準備好需要換證件照:第一步,我們需要在Python中讀取圖片並且顯示出來。這裡面要用到的一個模塊是cv2,如果沒有的話使用pip install opencv-python就可以安裝,注意這裡是安裝opencv-python採可以直接用cv2這個模塊。
  • 用Python 做機器學習不得不收藏的重要庫
    數據科學家也會用python作為連接自身工作與WEB 應用程式/生產環境集成中。 Python在機器學習領域非常出色。它具有一致的語法、更短的開發時間和靈活性,非常適合開發能夠直接插入生產系統的複雜模型和預測引擎。 Python的一個最大的資產是其廣泛的庫。 庫是一組用給定語言編寫的程序和功能的集合。
  • 文本分類實戰--從TFIDF到深度學習CNN系列效果對比(附代碼)
    此外,還是用cnn卷積神經網絡實現了中文的文本分類,效果要優於上述算法。完整源碼(包括冠軍源碼) 獲取方式:關注微信公眾號 datayx  然後回復 文本分類 即可獲取。數據集數據集中主要包含下面幾個文件,可見數據集很小也很簡單,只需要使用training.csv文件進行訓練我們的文本分類模型,使用testing.csv進行預測並提交結果即可:
  • 「人工智慧師資班」(Python機器學習,圖像識別與深度學習,深度學習與NLP,知識圖譜,強化學習)
    學習完這些基礎內容之後,重點學習python網絡爬蟲、網絡爬蟲原理與應用、numpy 數組運算與矩陣運算、pandas 數據分析、matplotlib數據可視化以及 sklearn 機器學習等方面的內容,結合最新的案例進行實戰。 課程特點1) 報名贈送全部PPT和案例原始碼、實驗錄播課及實驗手冊等資源。
  • 如何用Python輕鬆搞定Excel日常任務
    本文將告訴你,這三項Excel日常任務,如何用Python輕鬆搞定。首先導入Pandas並根據工作簿中可用的工作表加載兩個dataframe,稱它們為sales和states。>與Excel進行對比:可以看到Pandas和Excel顯示的數據是比較相似的,但是有一些關鍵的區別:· Excel從A開始用字母標記列,而Pandas用變量名稱· Excel起始行數為1,而Pandas起始行數(「索引」)為0