Python: 当与之前添加的项目差异较小时,从列表中删除项目

我正在创建一个图像流行度算法,用于将视频(.mp4格式)切割成帧。借助AI,程序会检查哪些帧可能展示了最美丽的图像;这一结果以“分数”表示。

这个方法有效,但我遇到了一个问题。因为视频中的某些帧非常相似,我有很多帧的分数几乎相同。

最终结果会生成一个包含[分数, 帧编号]的列表。例如,如果列表中有3个项目是几乎相同的帧编号,因此分数也(几乎)相同,我希望只保留分数最高的那个帧编号在列表中,以便去除重复项。

这与以下这行代码有关:result.append((predict(pil_image, model), name))

这是代码:


回答:

由于没有可复现的示例,您可以调整以下代码来解决您的问题,这段代码分析每个帧的数据并跳过不必要的帧,更新最佳值并添加新值。

MAX_FRAME_NUMBER_DIFF = 60MAX_SCORE_DIFF = 0.5current_frame = countcurrent_score = predict(pil_image, model)data = (current_score, current_frame)if not results:    results.append(data)else:    last_score, last_frame = results[-1]    is_similar_frame = current_frame - last_frame <= MAX_FRAME_NUMBER_DIFF    is_score_better = current_score > last_score    is_score_way_better = current_score - last_score <= MAX_SCORE_DIFF    if is_similar_frame:        if is_score_better:            if is_score_way_better: # 如果当前分数与前一分数的差异大于MAX_SCORE_DIFF                results.append(data)            else: # 当前分数比前一分数好,但没有那么好                results[-1] = data # 更新最后一个值        else: # 当前分数不如前一分数            continue # 跳过这个    else: # 如果不是相似的帧        results.append(data)

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中创建了一个多类分类项目。该项目可以对…

发表回复

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