AIGameAIGame
首页
API文档
UI框架
API实例
UI实例
下载软件
首页
API文档
UI框架
API实例
UI实例
下载软件
  • API文档

    • [稳定]$global - 全局函数
    • [稳定]$act - 手势动作
      • 01.手势动作 - $act
      • 02.节点选择器 - UiSelector
    • $ag - 图色框架
    • [稳定]$app - 应用操作
    • [稳定]$arc - 悬浮菜单按钮
      • 01.悬浮菜单 - $arc
      • 02.悬浮容器 - MenuBody
      • 03.菜单按钮 - MenuItem
    • [稳定]$bus - 消息总线
    • [稳定]$color - 颜色操作
    • [稳定]$crypt - 加密算法
    • [稳定]$date - 日期工具
    • [稳定]$device - 设备信息
    • [稳定]$dex - dex,jar,so文件加载
    • [稳定]$draw - 全局绘制
    • [稳定]$engine - 脚本引擎
      • 01.任务信息 - JsTaskInfo
      • 02.脚本对象 - $task
    • [稳定]$fc - 文件选择器
    • [稳定]$file - 文件操作
    • $floaty - 悬浮窗
    • [稳定]$img - 图片操作
    • [稳定]$log - 日志框架
    • $ocr - 文字识别
    • [稳定]$res - 资源管理器
      • 01.资源管理器 - $res
      • 02.资源操作 - ResManager
    • [稳定]$root - ROOT与Shell命令
    • [稳定]$screen - 屏幕操作
    • [稳定]$storage - 应用内存储
    • $str - 字符串工具类
    • $sys - 系统操作
    • [稳定]$thread - 并发编程
    • [稳定]$tip - 对话框
    • [稳定]$tts - 文字阅读
    • [稳定]$yolo - 目标检测(全系列)
    • [稳定]$yolox - 目标检测

$yolo 返回

目标检测

介绍

Yolo全系列包含Yolo5、6、7、8、9、10、11全部版本

科普

YOLO是一种目标检测算法。简单来说,它能让计算机 “看懂” 图片或视频里有什么物体,还能标出物体的位置和类别,比如判断出图片里是人、汽车还是猫。

它的全称是“You Only Look Once”意思是“你只需要看一次”。传统的目标检测方法可能需要多次扫描图片才能找到物体,而YOLO只需要“扫一眼”图片就能直接给出结果,所以速度非常快。

YOLO原理:首先,它会把图片分成很多小格子,比如切成N×N的网格,每个格子负责“预测”是否有物体的中心位置。举个例子,如果一只猫的中心在某个格子里,这个格子就会判断“这里有猫”,并给出猫的边界框(也就是方框)和类别。 每个格子不仅能预测一个物体,还能同时预测多个边界框。比如同一格子里可能有重叠的物体,最后通过算法筛选出最准确的结果。传统方法可能分两步,先找“可能有物体的区域”,再判断是什么物体,而YOLO用一个神经网络直接输出所有物体的位置和类别,省去了中间步骤,所以实时性很强,适合用于摄像头实时监控。

YOLO优点:它速度快,适合实时场景,比如自动驾驶、安防监控、机器人视觉等,能快速处理视频流。它也很简单直接,不需要复杂的预处理步骤,一张图输入,直接出结果,应用也非常广泛,从日常图片识别,比如朋友圈自动打标签,到工业检测,比如找零件缺陷,都能用到。

YOLO缺点:它对小物体的检测能力较弱,比如图片里的小蚂蚁,可能因为格子分得不够细,容易漏检。它预测的边界框精度可能也不够,比如预测的方框可能比物体实际范围“大一圈”或“小一圈”。

YOLO版本:我当前集成了Yolo V5、V6、V7、V8、V9、V10、V11、以及YoloX 全部版本。

总之,YOLO 就像计算机的 “眼睛”,能让机器快速 “看懂” 画面里的物体。虽然它并不完美,但胜在又快又实用,是人工智能领域很“接地气”的技术。

函数

v(version)

版本:1.1.7 配置版本
配置yolo版本,默认为8
此函数必须要在init之前调用,若不设置,则默认使用Yolo V8

  • 参数 : version {int} 版本号
$yolo.v(8);

config(targetSize,meanVals,normVals,useGpu,probThreshold,nmsThreshold)

版本:1.1.7 配置模型
配置模型的参数
此函数必须要在init之前调用,当然也可以不设置,因为有默认的配置

  • 参数 : targetSize {int} 目标大小a
  • 参数 : meanVals {float[3]} 均值
  • 参数 : normVals {float[3]} 归一化
  • 参数 : useGpu {boolean} 是否使用GPU
  • 参数 : probThreshold {float} 置信度阈值
  • 参数 : nmsThreshold {float} 非极大值抑制阈值

init(binPath,paramPath,labels)

版本:1.1.6 初始化模型
默认不使用GPU

  • 参数 : binPath {string} 模型bin文件路径(支持相对路径)
  • 参数 : paramPath {string} 模型param文件路径(支持相对路径)
  • 参数 : labels {string[]} 标签列表
let labels = ["自行车", "火车", "杯子"];

let result = $yolo.init("yolo/yolo-nano.bin", "yolo/yolo-nano.param", labels);

if (result.success) {
    alert("初始化成功", "初始化成功");
} else {
    alert("初始化失败", result.des);
}

init(binPath,paramPath,labelsPath)

版本:1.1.6 初始化模型
默认不使用GPU

  • 参数 : binPath {string} 模型bin文件路径(支持相对路径)
  • 参数 : paramPath {string} 模型param文件路径(支持相对路径)
  • 参数 : labelsPath {string} 标签文件路径(支持相对路径)
let result = $yolo.init("yolo/yolo-nano.bin", "yolo/yolo-nano.param", "yolo/label.text");

if (result.success) {
    alert("初始化成功", "初始化成功");
} else {
    alert("初始化失败", result.des);
}

detect()

版本:1.1.6 检测屏幕
获取截屏后,使用yolo模型进行检测

  • 返回 : {YoloResult} 检测结果
$screen.getPermit();

//如果初始化成功了一次
//就不需要重复的初始化了
//直接开始识别
let res = $yolo.detect();//识别整个屏幕

alert("识别结果", res);

detect(img)

版本:1.1.6 检测图片

  • 参数 : img {Image} 图片
  • 返回 : {YoloResult} 检测结果
//如果初始化成功了一次
//就不需要重复的初始化了
//直接开始识别
let img = $img.read("yolo/t01.png");
let res = $yolo.detect(img);//识别图片

alert("识别结果", res);

detect(path)

版本:1.1.6 检测图片

  • 参数 : path {string} 图片路径(支持相对路径)
  • 返回 : {YoloResult} 检测结果
//如果初始化成功了一次
//就不需要重复的初始化了
//直接开始识别
let res = $yolo.detect("yolo/t01.png");//识别图片

alert("识别结果", res);

检测结果

{
  //data是识别到的数据集合,有时会识别到很多结果,所以是数组
  "data": [
    {
      "similar": 0.9527874,
      //相似度
      "index": 1,
      //标签索引
      "label": "自行车",
      //标签名称
      "x": 71.103,
      //x坐标
      "cx": 291.58154,
      //中心点x坐标
      "y": 56.355305,
      //y坐标
      "cy": 189.29092,
      //中心点y坐标
      "w": 512.06006,
      //宽度
      "h": 322.22653
      //高度
    }
  ],
  "success": true,
  //是否成功
  "des": "执行成功",
  //描述
  "err": "暂无异常"
  //异常信息
}

配置支持

使用$yolo.config()即可配置参数,设计这个函数的主要作用是用来调优的,如果不配置则使用默认配置数据。

//首先指定版本,若不指定版本,默认使用Yolo V8
$yolo.v(5);//指定使用的yolo版本为:Yolo V5
//为Yolo V5设置配置参数
$yolo.config(targetSize, meanVals, normVals, useGpu, probThreshold, nmsThreshold);

参数说明:不需要配置的参数填null即可

  • targetSize {int} : 期望的输入图像边长(通常为正方形),例如 640 表示 640×640 像素。图像会被缩放至该尺寸后输入网络
  • meanVals {float[3]} : 图像通道归一化的均值,格式为[B_mean, G_mean, R_mean] 元素范围:(0-255)
  • normVals {float[3]} : 图像通道归一化的标准差,格式为[B_std, G_std, R_std] 元素范围:(0.001-0.1)
  • useGpu {boolean} : 是否使用 GPU 加速
  • probThreshold {float} : 过滤低置信度预测框的阈值,范围[0,1]
  • nmsThreshold {float} : 抑制重叠检测框的阈值,范围[0,1]

但是我在开发yolo系列的时候,发现有些版本对于配置参数的支持也是不一样的,所以我在C/C++中尽可能的完善了所有yolo的配置参数, 不过呢还是存在无法完成的配置参数,具体的配置支持度如下:

打Y的表示支持配置此参数,打N表示不支持此参数,如果配置了这个参数也不会生效。

版本targetSizemeanValsnormValsuseGpuprobThresholdnmsThreshold
V5YYYYYY
V6YYYYYY
V7YYYYYY
V8YYYYYY
V9YYYYYY
V10YYYYYN
V11YYYYYY
VXYYYYYY
默认640[103.53, 116.28, 123.675][0.0039,0.0039,0.0039]false0.50.45

总的来说,除了YoloV10不支持NMS阈值配置外,其他版本都支持全部配置,实际上,官方示例中并没有这些配置,有些yolo版本甚至没有任何的配置, 不过为了更好的调优,我在C/C++中尽可能的完善了所有yolo的配置参数。

Prev
[稳定]$tts - 文字阅读
Next
[稳定]$yolox - 目标检测