窗口程序集名 | 保 留 | 保 留 | 备 注 |
yolox, , 公开 | | | |
变量名 | 类 型 | 数组 | 备 注 |
stride | 整数型 | 3 |
输入_尺寸 | 整数型 | 2 |
平均 | 小数型 | 3 |
标准 | 小数型 | 3 |
置信阈值 | 小数型 | |
抑制阈值 | 小数型 | |
类数 | 整数型 | |
DNN网络 | 网络类 | |
类名数组 | 字节集 | 0 |
stride =
{ 8, 16, 32
}输入_尺寸 =
{ 640, 640
} 平均 =
{ 0.485, 0.456, 0.406
}标准 =
{ 0.229, 0.224, 0.225
}类名数组 =
分割字节集 (读入文件 (“C:\Users\hanyo\Desktop\yolox-opencv-dnn-main\coco.names”),
{ 10
},
)类数 =
取数组成员数 (类名数组
)|
初始化 | | |
|
模型路径 | 文本型 | | | |
配置阈值 | 小数型 | | | | NMS制阈值 | 小数型 | | | |
置信阈值 = 配置阈值
抑制阈值 = NMS制阈值
DNN网络 =
视觉_读取网络 (模型路径, ,
“”)变量名 | 类 型 | 静态 | 数组 | 备 注 |
尺度 | 小数型 | | |
输出图 | 多维矩阵类 | | |
前景目标 | 多维矩阵类 | | |
输出s | 多维矩阵类 | | 0 |
提取数量 | 整数型 | | |
高比率 | 小数型 | | |
宽比率 | 小数型 | | |
n | 整数型 | | |
i | 整数型 | | |
j | 整数型 | | |
数t | 整数型 | | |
row_ind | 整数型 | | |
指针 | 小数型指针类 | | |
网格_x数 | 整数型 | | |
网格_y数 | 整数型 | | |
预测_分数 | 小数型 | | |
分数 | 多维矩阵类 | | |
类ID坐标 | 点2i类 | | |
最大类分数 | 双精度小数型 | | |
类_idx | 整数型 | | |
类_分数 | 小数型 | | |
预测_概率 | 小数型 | | |
中心X | 小数型 | | |
中心Y | 小数型 | | |
w | 小数型 | | |
h | 小数型 | | |
x0 | 小数型 | | |
y0 | 小数型 | | |
类ID集 | 整数型 | | 0 |
置信度集 | 小数型 | | 0 |
预测框集 | 矩形2i类 | | 0 |
抑制索引 | 整数型 | | 0 |
索引 | 整数型 | | |
预测框 | 矩形2i类 | | |
左上角X | 小数型 | | |
左上角Y | 小数型 | | |
有下角X | 小数型 | | |
有下角Y | 小数型 | | |
标签 | 文本型 | | |
标签尺寸 | 尺寸2i类 | | |
基线坐标 | 整数型 | | |
尺度 = 1
输出图 =
调整大小图像 (输入图, 尺度
)归一化 (输出图
)前景目标 =
视觉_图像前景目标 (输出图, 1, , , 假, 假, 5
)DNN网络.
设置输入 (前景目标,
“”, 1,
)DNN网络.
前向计算V (输出s, DNN网络.
获取未连接的输出层名称 ())
如果真 (输出s
[1
].
维度 () = 3
)
提取数量 = 输出s
[1
].
维度元素数 (1
)
输出s
[1
] = 输出s
[1
].
重塑 (0, 提取数量
)高比率 = 输入图.行数 () ÷ 输入_尺寸 [1]宽比率 = 输入图.
列数 () ÷ 输入_尺寸
[2
]数t =
取数组成员数 (类名数组
) + 5
指针.指针 = 输出s
[1
].
数据指针 ()
计次循环首 (3, n
)
网格_x数 = 输入_尺寸
[2
] ÷ stride
[n
]
网格_y数 = 输入_尺寸
[1
] ÷ stride
[n
]
计次循环首 (网格_y数, i
)

计次循环首 (网格_x数, j
)


预测_分数 = 指针.
读 (4
)


分数 = 输出s
[1
].
行 (row_ind
).
列范围 (5, 输出s
[1
].
列数 ())




视觉_最小最大位置 (分数, , 最大类分数, , 类ID坐标,
)


类_idx = 类ID坐标.左边



类_分数 = 指针.
读 (5 + 类_idx
)


预测_概率 = 预测_分数 × 类_分数



如果真 (预测_概率 > 置信阈值
)






中心X
= (指针.
读 (0
) + j - 1
) × stride
[n
]



中心Y
= (指针.
读 (1
) + i - 1
) × stride
[n
]



w =
求反对数 (指针.
读 (2
)) × stride
[n
]



h =
求反对数 (指针.
读 (3
)) × stride
[n
]



x0 = 中心X - w × 0.5




y0 = 中心Y - h × 0.5



加入成员 (类ID集, 类_idx
)


加入成员 (置信度集, 预测_概率
)


加入成员 (预测框集,
矩形2i (x0, y0, w, h
))


指针.偏移 (数t)


row_ind = row_ind + 1


计次循环尾 ()
计次循环尾 ()
计次循环尾 () 视觉_非最大抑制 (预测框集, 置信度集, 置信阈值, 抑制阈值, 抑制索引, 1, 0
)
计次循环首 (取数组成员数 (抑制索引
), i
)
索引 = 抑制索引
[i
]

预测框 = 预测框集
[索引 + 1
]

左上角X = 预测框.左边 ÷ 尺度

左上角Y = 预测框.顶边 ÷ 尺度

有下角X
= (预测框.左边 + 预测框.宽度
) ÷ 尺度

有下角Y
= (预测框.顶边 + 预测框.高度
) ÷ 尺度

左上角X =
视觉_取最大值 (视觉_取最小值 (左上角X, 输入图.
列数 () - 1
), 0
)
左上角Y =
视觉_取最大值 (视觉_取最小值 (左上角Y, 输入图.
行数 () - 1
), 0
)
有下角X =
视觉_取最大值 (视觉_取最小值 (有下角X, 输入图.
列数 () - 1
), 0
)
有下角Y =
视觉_取最大值 (视觉_取最小值 (有下角Y, 输入图.
行数 () - 1
), 0
)
视觉_矩形1 (输入图,
点2i (左上角X, 左上角Y
),
点2i (有下角X, 有下角Y
),
标量 (0, 0, 255
), 2, 0, 0
)

标签 =
到文本 (类名数组
[类ID集
[索引 + 1
] + 1
]) +
“:” +
到文本 (置信度集
[索引 + 1
])
标签尺寸 =
视觉_获取文本尺寸 (标签,
#字体_衬线_简单, 0.5, 1, 基线坐标
)
左上角Y =
视觉_取最大值 (左上角Y, 标签尺寸.高
)
视觉_放置文本 (输入图, 标签,
点2i (左上角X, 左上角Y
),
#字体_衬线_简单, 0.75,
标量 (0, 255, 0
), 1, 8,
假)
计次循环尾 ()|
调整大小图像 | 多维矩阵类 | |
|
输入图 | 多维矩阵类 | | | |
规模 | 小数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
r | 小数型 | | |
填充_w | 整数型 | | |
填充_h | 整数型 | | |
零时 | 多维矩阵类 | | |
输出 | 多维矩阵类 | | |
r =
视觉_取最小值 (输入_尺寸
[2
] ÷ 输入图.
列数 (), 输入_尺寸
[1
] ÷ 输入图.
行数 ())
规模 = r
填充_w = r × 输入图.
列数 ()填充_h = r × 输入图.
行数 ()零时.
初始化 (填充_h, 填充_w,
#Cv无符号字节型_三通道, )视觉_调整尺寸 (输入图, 零时, 零时.
尺寸2i (), 0, 0, 1
)输出.
初始化 (输入_尺寸
[2
], 输入_尺寸
[1
],
#Cv无符号字节型_三通道, 标量 (114, 114, 114
))
零时.
复制 (输出.
感兴区域 (矩形2i (0, 0, 零时.
列数 (), 零时.
行数 ())
),
)返回 (输出
)变量名 | 类 型 | 静态 | 数组 | 备 注 |
i | 整数型 | | |
j | 整数型 | | |
指针 | 小数型指针类 | | |
视觉_颜色空间转换 (图, 图,
#颜色_BGR转RGB, 0
)图.
转换到 (图,
#Cv小数型, 1, 0
)
变量循环首 (0, 图.
行数 () - 1, 1, i
)
指针.指针 = 图.
数据指针 () + i × 图.
维度元素尺寸 (0
)
变量循环首 (0, 图.
列数 () - 1, 1, j
)

指针.
写 (0, (指针.
读 (0
) ÷ 255 - 平均
[1
]) ÷ 标准
[1
])

指针.
写 (1, (指针.
读 (1
) ÷ 255 - 平均
[2
]) ÷ 标准
[2
])

指针.
写 (2, (指针.
读 (2
) ÷ 255 - 平均
[3
]) ÷ 标准
[3
])

指针.
偏移 (3
)
变量循环尾 ()
变量循环尾 ()