共计 3795 个字符,预计需要花费 10 分钟才能阅读完成。
我是⼀名⼤龄开发⼈员,历经 LOGO,Pascal,C/C++,Java,C#/F#,JavaScript,Python,TypeScript,Rust,Go 等语⾔的磨难,艰深来说就是⼀位发量少的码农。我第⼀次听到低代码是在 2017 年,感触是什么?内⼼话是我没有担⼼我会丢了⼯作的,总感觉是⼀个玩具。通过⼏年的倒退,低代码真的能实现了所有业务⼯作了吗?接下来我去帮⼤家“探店”。
从需要开始
我这⼏年专一在挪动应⽤和机器学习的技术上,我也是⼀名星球⼤战迷,那咱们就来做⼀个基于计算机视觉的挪动应⽤看看。
从传统的做法下来剖析,这须要通过深度学习来实现物体分类的辨认,而后通过云端公布服务,最初通过跨平台挪动技术实现应⽤的开发。但从低代码⻆度⼜是怎么实现呢?
咱们通过微软的⾃定义视觉服务 (CustomVision) 实现了物体分类的⼯作,再通过 Custom Vision 间接⽣成了模型容器代码间接做成服务公布到 Azure Function,最初通过 Power Apps 实现挪动应⽤的开发。
撸起袖子干
▌零代码的自定义计算机视觉
计算机视觉是⼈⼯智能畛域最成熟的技术,算法有很多,但对于不是从事该畛域的开发⼈员从开发环境到深度学习框架和算法都须要重新学习。通过微软的⾃定义视觉,你⽆须要任何⼈⼯智能的常识,你只须要上传好图像分类或者物体辨认的图⽚就能够通过云端疾速⽣成计算机视觉的模型。⽽且这些模型你能够导出离线部署到云端 / 物联⽹ / 挪动设施上。
以下是 4 步实现计算机视觉
1. 进⼊ Azure Portal 通过增加资源组 (这⾥你须要有⼀个 Azure 账号),从 AI+Machine Learning 创立⾃定义视觉服务
2. 进⼊⾃定义视觉的⻔户,创立⼀个图像分类性能的项⽬
⾃定义视觉⽀持图像分类和物体辨认,你能够依据⾃⼰的须要抉择,这⾥抉择图像分类 (Classification) 抉择辨认多类型单标签 (Single tag per image) 倡议抉择 General(compact),这个选项⽀持多种模型类型 的导出,如 TensorFlow,ONNX,CoreML 适应部署到不同终端,和云端应⽤。
3. 创立胜利后,进⼊后创立 BB8,C3PO,R2D2 三个⽂件夹,并基于你找到的图⽚对应上传到对应的⽂件夹中
4. 点击进⾏训练
训练胜利后,你能够看到相干的训练后果
找⼀张图⽚测试⼀下
这太神奇了,你基本不须要任何⼀⾏代码,3 步就实现了计算机视觉的⼯作,赚⼤了。这能够让你花更多工夫在应⽤场景上。
▌基于 PaaS 的 Azure Function
通过 CustomVision 不仅能够⽣成计算机视觉模型,⽽且能够基于不同的应⽤场景进⾏联合模型⽣成应⽤代码。你通过 Export 就能够导出。当初云原⽣的技术很多,Serverless 就是⾮常受欢迎的云端 PaaS。Azure 中的 Azure Functions 就是⼀种⽆服务器解决⽅案,能够使⽤户缩小代码编写、缩小须要保护的根底构造并节省成本。 ⽆需担⼼部署和保护服务器,云根底构造提供放弃应⽤程序运⾏所需的所有最新资源。你只需专一于对你最重要的业务代码。通过 Custom Vision 导出 Container 的代码,通过 Visual Studio Code 就能够实现 Azure Function 的代码编写,测试,和部署⼯作。以下是相干的步骤。
装置好 Azure CLI 以及 Azure Function CLI
装置 Azure CLI
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
装置 Azure Function CLI
https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local
1. 关上 Visual Code,装置好 Azure Tools 插件,并登录好相干的 Azure 账号
2. 关上 Azure Tools 插件下,Azure Functions 下抉择好⽂件夹,创立⼀个新的 Azure Function (我这⾥以 Python 开发环境为例)
3. 把从⾃定义视觉导出的代码,放到 Azure Function 的⽂件夹中,并批改 init.py
别离把导出的 labels.txt,model.pb,predict.py 放到指定⽂件夹中
替换 __init__.py 内的⽂件
import logging
import azure.functions as func
import io
from PIL import Image
from click import format_filename
from flask import Flask, jsonify
from .predict import initialize, predict_image, predict_url
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
results = "{}"
try:
image_bytes = req.get_body()
image = Image.open(io.BytesIO(image_bytes))
app = Flask(__name__)
initialize()
with app.app_context():
results = predict_image(image)
score = 0.0
name = ''for item in results['predictions']:
if item['probability']>score:
score = item['probability']
name = item['tagName']
results = jsonify(
tagName = name ,
tagScore = score
)
results = results.get_data(as_text=True)
except Exception as e:
logging.info(f'exception: {e}')
pass
logging.info('Image processed. Results:' + name)
return func.HttpResponse(results, status_code=200)
4. 尝试在本地测试
通过 Postman 进行测试
5. 部署到 Azure 上
通过 Postman 进行测试
对比起传统对模型利用的做法,你能够更简略地利用自定义视觉的服务,生成利用场景的代码,并利用 Azure Function 部署作为接口给任意的利用场景调用,打消了很多繁琐的工作。
▌拖拽即可的挪动开发体验 – Power Apps
当初针对业务的前端的应⽤场景很多,特地互联⽹时代,iOS / Android 的挪动应⽤就⾮常重要。过往团队要实现跨平台挪动应⽤的开发,须要⽤到 Flutter/Xamarin/ReactNative 等。但 Power Apps 就是针对业务应⽤场景的低代码应⽤产品。你能够通过它联合你的业务公布前端应⽤。Power Apps 是⾮常适宜没有代码根底的⼈,你能够通过拖拽控件实现 UI 的开发。在业务上你能够联合你的业务逻辑和数据进⾏调⽤。接下来咱们⼀起看看如何联合咱们上⾯基于计算机视觉的 Azure Func 做⼀个⾮常简略的应⽤ (Power Apps 也⾃带 了 AI Builder ⼯具,能够⾮常⽅便地联合之前提到的⾃定义服务实现相干⼯作,⽽这个例⼦是为了更好地阐明问题)
1. 关上 Power Apps 门户,创立一个挪动手机利用
抉择创立一个 Phone 利用
2. 拖拽相干控件生成一个界面
3. 回到 Power Apps 门户,创立一个自定义的链接器
这里有个关键点,就是增加 Action 时因为传输是一个二进制格局,所以 Request 的 Body 须要设置为 “”,而不是一个 Json,并要设置成二进制
4. 回到方才创立的挪动手机利用,增加刚创立好的数据源
5. 点击按钮控件,在公式上输出如下指令
Set(Info, StarWarAzureFunc.UploadImage(Image1.Image));
6. 抉择 Label,在公式上输出如下指令
Info.tagName
7. 抉择运行
写了二行代码,就实现了过往一堆繁琐的工作,公布了一个计算机视觉的利用。这缩短了很多对接的工夫,对于业务人员是十分有必要的,你不仅能够实现人工智能的操作,更能够对接更多业务数据,展示更多的商业元素。
“探店”小结
2022 年的低代码“探店”,让我有了更深的领会,把过往只能由开发者能做的东⻄,都能够给到任何⼈。低代码曾经经验了从概念,能⽤,到可⽤的阶段。“⼈⼈能编程”终于能实现了。低代码让更多的⼈能更⾼效公布更多的应⽤场景,联合云端放慢了企业的数字化转型。
相干资源
Azure 资源收费申请
https://azure.com/free
Azure 学⽣资源免信⽤卡申请
https://aka.ms/studentgetazure
理解更多对于⾃定义计算机视觉
https://docs.microsoft.com/zh…
理解更多对于 Azure Functions 的相干常识
https://docs.microsoft.com/zh…
理解更多对于 Power Apps 的相干常识
https://docs.microsoft.com/zh…