亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

發布時間:2021-10-12 13:56:45 來源:億速云 閱讀:161 作者:柒染 欄目:云計算

本篇文章為大家展示了如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

隨著驗證碼技術的更新換代,傳統的驗證碼識別算法已經越來越無用武之地了。近些年來人工智能迅速發展,尤其是在深度學習神經網絡這一塊生態尤為繁榮,各種算法和模型層出不窮。

今天就嘗試帶大家借助 Kaggle+SCF 快速訓練部署一個端到端的通用驗證碼識別模型,真正的驗證碼識別從入門到應用的一條龍服務,哈哈哈~

效果展示

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

操作步驟

第一步:了解 kaggle

沒做過數據科學競賽的同學,可能不太了解 kaggle 哈。

Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.

這是 kaggle 官網)的自我介紹,簡單來說 kaggle 是全球最大的數據科學交流社區,上面有許多關于數據科學的競賽和數據集,并且提供了一些數據科學在線分析的環境和工具,一直以來吸引了全球大批數據科學愛好者,社區極其繁榮。

這里我們主要是用 kaggle 的 Notebooks 服務里的 kernel 環境來快速在云端訓練自己的驗證碼識別模型。

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

你可能會問在本地訓練不可以嗎,為啥非得折騰著上云?哈哈,這還真不是折騰,普通人的電腦算力其實是有限的,而訓練模型是需要強大 GPU 算力的支持,不然要訓練到猴年馬月~

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

我們再來看一下 kaggle 上的 kernel 環境的配置:

  • CPU 4核心,16 GB 運行內存

  • GPU 2核心 13 GB 運行內存

每個 kernel 有 9 小時的運行時長,GPU 資源每周 30 小時使用時長。除了硬件資源之外,kernel 環境里已經配置好了一些機器學習的常用庫,包括 Pytorch, Tensorflow 2 等,它的機器學習環境是開箱即用的,零配置,零維護。

Kaggle Notebooks run in a remote computational environment. We provide the hardware—you need only worry about the code.

正如 kaggle notebooks 官方文檔所言,kaggle 免費為你提供硬件和機器學習環境,你唯一需要關心的是你的代碼。這么好的東西關鍵還是免費提供的啊,果斷選它來訓練模型就對了。

第二步:注冊 kaggle 賬號,新建一個 kernel 環境

賬號注冊、新建 kernel 等相關問題,網上有很多相關文章,這里不再細說了。

第三步:clone git 倉庫,修改成自己的驗證碼數據集

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

這里我在 github.com/nickliqian/cnn_captcha項目的基礎上,把原項目升級更新到了 Tensorflow 2.0,然后做了個 kaggle 訓練 + SCF 部署的通用驗證碼識別方案。

現在你只需要將我修改好的倉庫 https://gitee.com/LoveWJG/tflite_train克隆到本地,

然后按照項目里的 readme 配置一下訓練參數,替換一下自己的驗證碼數據集即可。

第四步:上傳項目到 kaggle 開始訓練

然后把配置好的項目壓縮上傳到 kaggle 直接解壓按照說明文件進行訓練即可。

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

這里用了 20000 張驗證碼,訓練了 10000 輪左右,大概耗時 30 分鐘,還是相當給力的。訓練結束后你可以根據倉庫里的 readme 文件,把模型、日志文件打包下載到本地,然后再在本地將模型轉成 tflite 格式(方便在移動端使用,本地識別驗證碼),如果模型文件過大你也可以在本地運行 tflite.py 程序把 tflite 模型量化,大概可以把模型文件縮小到原來的 1/4,最終你應該得到一個 .tflite 格式的模型文件。

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

第五步:使用云函數快速部署驗證碼識別模型

云函數的創建、配置和發布可參考我之前的系列文章,這里就不再細講了。

新建一個 python 空白云函數,然后把 scf.py 文件里的代碼填到 index.py 里保存。

# -*- coding:utf-8 -*-
import io
import json
import os
import time

import numpy as np

import tensorflow as tf
from PIL import Image

model_path = "model_quantized.tflite" #模型文件地址
chars = '23456789abcdefghjkmpqrstuvwxy' #驗證碼字符,順序要與config.json里的一致

# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path=model_path)
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

#將驗證碼數據轉換成模型輸入格式
def img2input(img, width, height):
    tmpe_array = [serverless]
    for i in range(height):
        for j in range(width):
            pixel = img.getpixel((j, i))
            tmpe_array.append((0.3*pixel[0]+0.6*pixel[1]+0.1*pixel[2])/255)
    tmpe_array = np.array(tmpe_array).astype('float32')
    input_array = np.expand_dims(tmpe_array, axis=0)
    return input_array

#識別驗證碼
def predict(image):
    captcha_image = Image.open(io.BytesIO(image))
    image_np_expanded = img2input(captcha_image, 100, 50)
    interpreter.set_tensor(input_details[0]['index'], image_np_expanded)
    interpreter.invoke()
    output_data = interpreter.get_tensor(output_details[0]['index'])
    codes = ''
    for i in output_data[0]:
        codes += chars[i]
    return codes


# api網關響應集成
def apiReply(reply, txt=False, content_type='application/json', code=200):
    return {
        "isBase64Encoded": False,
        "statusCode": code,
        "headers": {'Content-Type': content_type},
        "body": json.dumps(reply, ensure_ascii=False) if not txt else str(reply)
    }

#云函數入口
def main_handler(event, context):
    return apiReply(
        {
            "ok": False if not 'image' in event.keys() else True,
            "message": "請求參數無效" if not 'image' in event.keys() else predict(event['queryString']['image'])
        }
    )

把模型文件上傳到云函數根目錄,然后配置一下自己的驗證碼識別模型參數

model_path = "model_quantized.tflite" #模型文件地址
chars = '23456789abcdefghjkmpqrstuvwxy' #驗證碼字符,順序要與config.json里的一致

之后給我們的云函數添加一個 API 網關觸發器,并啟用響應集成,然后發布上線即可

如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署

沒有問題的話,你只需 GET 一下,就可以返回驗證碼識別結果了。

api網關+?base64Image=base64編碼后的驗證碼數據

小編帶大家從頭訓練并部署了一個通用驗證碼識別模型。我們再一次看到基于 Serverless 的云函數在開發線上應用的過程中是多么方便和迅速!

上述內容就是如何基于Serverless云函數 SCF+Kaggle端到端驗證碼識別從訓練到部署,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上林县| 平湖市| 庆阳市| 义乌市| 东平县| 东城区| 班玛县| 甘肃省| 资中县| 兴安盟| 康乐县| 鄄城县| 五常市| 邛崃市| 公主岭市| 肥乡县| 陆河县| 黄骅市| 丰城市| 马边| 闸北区| 洱源县| 九龙城区| 齐齐哈尔市| 苏尼特右旗| 兴义市| 新龙县| 修文县| 奉节县| 和平县| 伊川县| 辽宁省| 滦平县| 贵南县| 上杭县| 哈巴河县| 金塔县| 浦北县| 二连浩特市| 岢岚县| 长宁县|