问题描述:
有个疑惑,这个问题一直灭有彻底弄明白。哪位老师提交的official/cv/faster_rcnn · MindSpore/models - 码云 - 开源中国 (gitee.com) faster_rcnn的模型代码?
数据pad填充,做batch之后。如何在求loss得时候将补齐之后得到得数据中得零去除掉?
麻烦讲解一下,之前就有这个疑惑,也提过问题,之前我是tensor和数组之间转换去除得零元素。现在在graph模式下,construct部分,不能使用普通得numpy。
还希望有位老师可以仔细地讲解一下。
解答:
无论是fasterrcnn还是其他涉及bbox pad的网络,当前基本都是将bbox pad到固定数量去操作,同时数据会同步生成一个mask矩阵,来标记哪些bbox是有效的。
当然在网络的不同阶段,这个mask的含义是不同的,以fasterrcnn为例,这个mask可以来标记groundtruth bbox的有效数量,也可以标记proposal bbox的有效数量,mask矩阵是贯穿整个网络的。
到loss计算时,我们只需根据mask将有效的bbox参与loss计算即可。如在fasterrcnn的rcnn里,就是在计算完回归loss之后,直接乘以mask来过滤无效的结果,再将loss转为标量。