目录
一.背景
团队汇报需要做一个演示的应用,我找了一个老师让家长上传健康码的场景。为啥选择这个场景呢?老师的疫情防控等各项任务太多了,虽然有微信小程序的一些工具,在我看来也不如人意。希望他们能够有足够的精力和良好的心情回归教学。
二.场景
1)老师先定义学生名单,然后关联家长的帐号。
2)家长上传健康码。
3)老师查看健康码的上传情况。
4)其他:到时间就给没有上传的家长发消息。再到一定时间,还没有上传的家长名单发给老师。上传的健康码,系统会自动判断是不是当天的健康码,健康码是绿码?黄码?还是红码?如果有不是绿码的情况或者不是当天的健康码就形成信息发送给老师。
三.过程
开发很快定义好了相关 界面和功能,缺一个实现判断红码、黄码、绿码的功能API。于是,我想到了之前的项目,用了百度AI来做一个单API的应。详细的过程如下:
1.准备健康码图片
网上找的,不好写具体的来源,基本都是绿码。图片的考虑到了自己的健康码和家人健康码两种情况,也有处理过的健康码(比如给中间遮挡做了隐私保护)。素材多样性考虑的比较好。但是红码和黄码很少,就用上了我的PS技术了。不过是用JAVA的BuffedImage的setRGB去替换的颜色。替换时出现了小插曲,图片的像素颜色并不完全一样,由于压缩等原因,使得像素级的颜色在一个范围内,又多写了一个判断颜色相似度的方法。这样使得颜色替换比较完整,最后3个颜色的素材都准备齐备了,每种颜色码准备了35个素材图片。
2.数据上传及标注
从EasyDL 图像 操作平台=》EasyDL图像的图像分类进入操作。
从数据总览去创建数据集
导入图片,选择的本地的100多张的3种健康码
上传完成后,先建立标签组和标签。
点击标签组这一行后面的标签管理去定义标签。
编辑后的标签如下:
然后,准备标注图片。
进入中可能会选择刚刚创建的数据集,然后要导入标签组。
进入标记过程就很简单,图像分类没有图像分割那么复杂,打个标签告诉模型这个是什么颜色的健康码就行了。我是点一下右边的标签,再点一下“保存当前标签”,系统会自动切换到下一张图片。也可以按快捷键。比如是红码就先按1,然后按“保存当前标签”的快捷键S,很快就标记完了。
标记完成后也可以看看整体的情况,也可以分标签查看。
3.建模型并训练
到我的模型界面去创建模型
点击左边的训练模型,选择了模型,选择了数据集,我多勾选了“增加识别结果为其他的默认分类”,其他都是默认的。底部还有硬件的选择,当然是免费的啦。然后点击“开始训练”。
训练耗时可以在我的模型列表看到,我这里是训练完成,训练中可以勾选“训练完成发短信通知”。我们这个比较简单,训练大约20分钟吧。
训练完成后,可以点击右边的“检验”,去测试一下。还要选择启动模型,这个要等,时间不一定,一般1-2分钟的等待吧。
到这里模型就做好了,然后是准备部署模型了。
4.部署模型
百度AI部署模型一键式的,很快。我的已经部署了,过程看不到了。大概的界面自己摸索着点吧,并不复杂,记得要填写访问路径的一段。他是部署到百度云中去。
部署后应用列表如下
5.测试工具测试
首先要知道调用地址、API Key和Secret Key三个信息。下面说一下几个关键信息查看的地方。首先是应用调用的地址,从EasyDL的我的模型的服务详情获得。
然后是应用的API Key和Secret Key,在百度智能云的应用列表中查看。
调用接口分两步,第一步获取百度的access_token,文档在这里文档在这里
POST的地址为https://aip.baidubce.com/oauth/2.0/token
body中使用multipart/form-data的方式建立3个参数:
grant_type:client_credentials//固定写client_credentials,详见文档
client_id:MntV3nMh9Ob9euIwFbS8lZLs//API key
client_secret:gr50hXRta05zaWrF8PhnlDmPOgCwuDQv//Secret Key
从返回的参数json中拿到access_token即可。
测试工具相关参数截图如下:
第二步就是访问我们的健康码颜色分类接口啦。
POST到https://aip.baidubce.com/rpc/2.0/ai_custom/v1/classification/health_code_color
Header中参数Content-Type:application/json
Query中参数access_token:第一步获取到的access_token,也可以直接写到访问地址中去,加个问号跟在后面就可以了。
Body中,application/json方式,参数如下
{
"image":"图片的base64字符串,不要前面图片类型那段,只要逗号后面的",
"top_num": 1
}
top_num我想获得最可能的那个结果就行了,当然也可以写3,可以看到红黄绿三种的可能性得分高低。
我的返回结果如下:
{
"log_id": 7763367237782937756,
"results": [
{
"name": "绿码",
"score": 1
}
]
}
测试工具相关参数截图如下:
image参数的内容为了方便截图,我删除了中间很多。
四.最后
1.为了让看文章的人能够直接使用我本次开发结果,我给出了最后接口的真实地址和key,大家可以试用,但别大量的用,更别商用,免费点数用完后,我不会续费的。只是用来做演示的,大家少用,留给别的试用的人。
2.本次开发完全基于云端运行,开发过程也出现和学习了图片中颜色相似度计算、颜色替换,百度AI模型的训练、AI数据集的标记,还有百度智能云API的使用。我们的应用也可以购买资源,实现并发支撑的。基本符合云原生的思路。
3.花了不少时间写文章,也希望做出来的应用是一个有一定亮点的、符合业务场景的应用,祝团队的汇报演示成功。