没有合适的资源?快使用搜索试试~ 我知道了~
0722-极智开发-解读GPU版NMS的实现方式
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 88 浏览量
2024-03-07
17:28:35
上传
评论 1
收藏 116KB DOCX 举报
温馨提示
0722_极智开发_解读GPU版NMS的实现方式
资源推荐
资源详情
资源评论
GPU BATCH NMS
YOLO 后处理的结构
1. Decoding 部分 目前 TRT yolo 层已经将输出结果转为了 x y w h,后续所作工作为筛选阈
值,pass 掉小于阈值的框,并且按照 class 分好类输出。
2. NMS 计算 IoU 矩阵。 NMS 算法发展至今已经迭代了许多版本,但是 NMS 的第一步依
旧都是计算 IoU 矩阵。
3. 过滤多余框。这一步是 NMS 算法迭代的主要优化点,出现了多种方法 Fast NMS,Cluster
NMS,Matrix NMS。
Decoding 部分,算法逻辑非常简单。目前有 64*64+32*32+16*16 个框数据需要做处理,建
立__goble__ Decoding()函数,设置 block 为(n , n),设置 gride 为(batch,3),使用 stream
并行处理三个尺度的 archors。
正视图上每一格为一个 bbox 框,每一个线程负责一个 bbox 从而起到加速效果。
另外新建同样大小的 Threshold 矩阵,class 矩阵,分别存放判断为 object 的框和类别。
另一部分为将 bbox 的 x y w h 还原为在原图的位置,这部分加速主要在这方面。
得出 Threshold 矩阵,class 矩阵之后,为每一个类别开辟相应大小的空间,将对应的数据整
理进去为计算 IoU 矩阵做准备。
__global__ void decode( float* yoloBoxs, float* boxLocation, float* classPreation ,
int gride_size, int threshold_index, int classNB,
int class_index, int archorsNB , int box_len, float threshold ,float alpha , float
beat ,const float *archor_w , const float *archor_h , const float w, const float h)
{
int threadIdX = threadIdx.x;
int threadIdY = threadIdx.y;
int archor_index = blockIdx.x;
int batchIndex = blockIdx.y;
int firstIndex = archor_index * box_len * gride_size + batchIndex * archorsNB *
box_len * gride_size;
int index_threshold = threadIdX + threshold_index* gride_size + firstIndex;
资源评论
极智视界
- 粉丝: 3w+
- 资源: 1769
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功