AI视觉识别的应用场景还是很多的,比如:道路交通、智能家居、智慧厨房、游戏服务、智慧医疗等
举个简单例子:上传体检报告后根据报告推荐饮食搭配和运动建议,按次收费或带货盈利
我是如何做计算机视觉研发的呢?
其实,通过Yolo模型可以快速的实现业务需求,目前最新版本v8,v8的地址:Home - Ultralytics YOLOv8 Docs
先说结果:
电脑配置:I7-7700k, 48g内存, 1060-6g显卡, windows-11
| 语言 | 识别效率 | FPS | 显卡 |
|---|---|---|---|
| C# | 12ms | ≈60~80 | 1060 |
| C++ | 9ms | ≈70~85 | 1060 |
| C# | 3ms | ≈105~120 | 4090 |
| C++ | 1~2ms | ≈130~140 | 4090 |
··识别效率=图像获取+自训练物体识别+识别结果反馈
实现前要学习几个基础知识和环境准备:
- ONNX Runtime: ONNX Runtime | Home ,支持多种编程语言的ML和推理平台;
- 数据集训练,这里我使用的是yolov8n模型+在线训练标注平台,也可以使用自己电脑标注;
- Python 3.7~3.11版本都可以;
- Pytorch、Yolo、CUDA、TensorRT的基础知识和使用;
- C#(WPF)或C++开发环境和基础知识
- Windows 10 17763版本及以上;
下面就开始实现步骤:
- 先把需要识别的数据通过标注平台进行标注:
- 标注后的数据通过Yolo进行训练并得到训练集,训练集主要关注3个数据指标,这些指标取决于后续的识别准确率:
- mAP: mean average precision - 平均精度均值
- Precision: 准确率、查准率
- Recall: 召回率、查全率
3. 将训练集转换成ONNXRuntime可使用的数据格式,这里我使用的DirectML技术;
4. 使用加速截图技术对当前屏幕或窗口进行高速截图(0-1ms耗时),不要使用C#自带的截图,效率非常差,也会产生卡顿;
- 将截图图像使用刚才训练好的数据集+DirectML进行识别,如果训练数据集准确率较高,识别后的结果参考如下:
{
"x": 317.5,
"y": 327.5,
"width": 13,
"height": 33,
"confidence": 0.8,
"class": "object",
"class_id": 0
}
数据中包含起始坐标、宽高、物体名称和ID(class)及识别可信率
- 根据屏幕和识别物体的相对宽高内容进行屏幕位置定位,在一些有RPA需求的场景下还需要挪动鼠标等情况可调用鼠标驱动+算法进行相对位置挪动和操作
为防止非法使用、非法牟利等情况的发生,这里不阐述更多详细内容。
如有共同学习者,可与作者私信或评论留言。
点赞+关注,私信我获取源码。
法律声明:由于计算机视觉机器学习应用范围较广,本文章仅作为以计算机视觉机器学习为目的总结和分享,对其他人通过本文章内容自行理解或自行研发或组装或恶意造成的滥用或非法使用或非法牟利等非法或无道德行为本作者概不负责。