1、了解tensorflow及关键社区资源;2、能够自主训练和应用自己想要的模型(主要);3、开阔前端智能化的思考与认知;
简单来说,在图片或视频识别出你关注的对象类别、坐标就是对象识别,你可以通过以下视频加深认知:1、Ai采摘机器人:www.bilibili.com/video/BV1YE… 2、英雄联盟血条识别:www.bilibili.com/s/video/BV1… 3、车辆识别:www.bilibili.com/video/BV1si… 4、人物识别:www.bilibili.com/video/BV1Es… 5、卫星船舶检测 www.bilibili.com/s/video/BV1…
1、通过对象识别可以做到D2C,也就是设计稿识别产出代码;2、他带给了前端更多可能性、效率提升、可控能力;
我简单训练了一个antd ui识别模型,可以将图片中的ui组件坐标和类别识别出来,同时附带识别的分数,下面将详细为大家介绍如何训练一个自己的object_detection模型。
分为以下几个环节:1、搭建环境;2、创建数据集;3、选择预训练算法模型;4、调整参数开始训练;5、验证训练成果;6、导出并转换模型给前端使用(浏览器/node环境);
参考:www.tensorflow.org/install
注意:直接使用tensorflow2就行了,没有太多必要使用tensorflow1;安装和使用过程中应该会遇到一些pip包缺失的问题,这个需要自己看提示解决,其实跟npm类似。建议用主机进行环境搭建及训练,配置当然越高越好。
tensorflow对象识别需要使用tfrecord格式数据集 推荐的标注平台:app.labelbox.com/ 推荐的制作导出平台:app.roboflow.com/ 创建数据集的方式有很多种,可以通过python语言创建自定义tfrecords数据集,也可以通过各类数据集标注平台;
注:
这里简单介绍一下通过平台标注流程(labelbox+roboflow):labelbox 部分
4.开始标注(start labeling)
5、完成所有标注,导出JSON文件
roboflow 部分
2.按提示上传刚刚导出的json文件,根据提示继续操作
3.在导入数据集基础上,进行自定义图片处理
注意:这里可能包含旋转、模糊、翻转等操作,你可以通过最终模型识别目标来判断是否有必要加入某一步骤;比如:如果你识别的全部都是方方正正的UI设计稿,则旋转就没有太多必要了。他的作用在于帮你自动处理扩充数据集,以便适应各类识别场景。
注意:上文提到过,尽量不要让标注的分类数量相差太多。
注意:这里选择tensorflow tfrecord格式下载即可。
tensorflow拥有很完善的文档,大家直接在对应的官网或github寻找即可 github.com/tensorflow/…
目前使用的是(训练容易/导出的文件不算太大):SSD MobileNet V2 FPNLite 640x640
选择模型的时候需要考虑以下几点:
注意:多数模型都提供了入参(处理后的图片)和出参(一个tensor格式的数组),不同模型最终产出的结果是不一样的,但一般都包含对象分数score、对象尺寸及位置boxes、数量等,这些需要自行判断。
github.com/tensorflow/…
主要有以下几个参数需要调整:
注意:
执行:tensorboard --logdir model_dir 打开启动的地址:http://localhost:6006/
2.查看图片验证结果
注意:通过以上2点基本可以确定模型是否可用,大家也可以学习一下其他分析技巧,互相分享。
注意:后面其实就是通过@tensorflow/tfjs-core等库进行模型加载和图片识别了,也可以参考我这个库github.com/aisriver/tf…,里面包括了一些训练代码和使用示例。
可直接投入前端使用的模型和演示:github.com/tensorflow/… 其他能力:图像分类、文本识别、语音识别、视频识别,并可以直接在社区找到对应资源;
前端应用:
大屏通过手势进行互动,想想都觉得很酷,而且实现起来也没有那么难。
推荐一个直接可用的文本ocr识别 ocr识别比训练一个对象识别模型更加复杂,需要考虑语言、字体等因素,所以我没有选择自己训练,太麻烦。推荐使用:www.npmjs.com/package/tes… 支持多国家语言
智能化让前端拥有更多可能性!
github.com/aisriver