1 C++ 在CTC解码算法后移除相邻重复和blank索引
在CTC Decode解码算法之后,比如说使用Greedy CTC Decode、Beam CTC decode、Prefix Beam CTC Decode算法之后,通常会得到包含blank索引的一个长序列,比如说
1,5,8,8,8,0,9,10,10,3,4
其中0表示blank,我们如果需要得到正确的结果,就需要将上述长序列中的blank和相邻的重复索引进行去除,比如说上述索引最终的正确结果如下
1,5,8,9,10,3,4
可以使用C++对上述功能进行实现,示例代码如下
#include <iostream>
#include <vector>
static std::vector<int> RemoveDuplicatesAndBlank(const std::vector<int>& hyp)
{
std::vector<int> result;
int current_index = 0;
while (current_index < hyp.size())
{
if (hyp[current_index] != 0)
result.emplace_back(hyp[current_index]);
int prev_index = current_index;
while (current_index < hyp.size() && hyp[current_index] == hyp[prev_index])
{
current_index += 1;
}
}
return result;
}
int main()
{
std::vector<int> a = {1,5,8,8,8,0,9,10,10,3,4 };
std::vector<int> b = RemoveDuplicatesAndBlank(a);
}
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 在CTC解码算法后移除相邻重复和blank索引
原文链接:https://www.stubbornhuang.com/2463/
发布于:2022年12月22日 10:34:38
修改于:2023年06月21日 17:19:55
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50