从每个类别的置信度列表中生成可能的图像验证码解决方案

我有一个使用对象检测来解决验证码的YOLOV5模型。它返回的列表格式为:

<object-class> <x> <y> <width> <height> <confidence>

对于每个类别的检测都是如此。

示例:

输入:

1

输出:

[[['7l', 0.19, '0.443182', '0.104895', '0.431818', '0.972055'], ['4l', 0.33, '0.534091', '0.104895', '0.431818', '0.965045'], ['5l', 0.6, '0.238636', '0.118881', '0.431818', '0.974508'], ['9l', 0.92, '0.659091', '0.104895', '0.409091', '0.879532'], ['0l', 0.93, '0.659091', '0.0979021', '0.363636', '0.651053']]]

如你所见,类别9l和0l具有相同的值,这意味着模型对一个对象有两个答案。

我如何将这个列表拆分为两个可能的列表,如下所示:

7l 4l 5l 9l7l 4l 5l 0l


回答:

首先,你可以将数据转换为字典

{'0.443182': ['7l'], '0.534091': ['4l'], '0.238636': ['5l'], '0.659091': ['9l', '0l']}

接下来只获取值

[['7l'], ['4l'], ['5l'], ['9l', '0l']]

最后使用 itertools.product(['7l'], ['4l'], ['5l'], ['9l', '0l']) 来生成

('7l', '4l', '5l', '9l')('7l', '4l', '5l', '0l')

完整的工作代码。

因为标准字典不一定保持顺序,所以我使用 OrderedDict()

import collectionsimport itertoolsdata = [[['7l', 0.19, '0.443182', '0.104895', '0.431818', '0.972055'], ['4l', 0.33, '0.534091', '0.104895', '0.431818', '0.965045'], ['5l', 0.6, '0.238636', '0.118881', '0.431818', '0.974508'], ['9l', 0.92, '0.659091', '0.104895', '0.409091', '0.879532'], ['0l', 0.93, '0.659091', '0.0979021', '0.363636', '0.651053']]]#converted = {}converted = collections.OrderedDict()for item in data[0]:    class_ = item[0]    x      = item[2]    #if x not in converted:    #    converted[x] = []    #converted[x].append(class_)    converted.setdefault(x, []).append(class_)        print('converted:', converted)values = list(converted.values())print('values:', values)products = list(itertools.product(*values))print('products:', products)for item in products:    print('item:', "".join(item))

结果:

converted: OrderedDict([('0.443182', ['7l']), ('0.534091', ['4l']), ('0.238636', ['5l']), ('0.659091', ['9l', '0l'])])values: [['7l'], ['4l'], ['5l'], ['9l', '0l']]products: [('7l', '4l', '5l', '9l'), ('7l', '4l', '5l', '0l')]item: 7l4l5l9litem: 7l4l5l0l

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注