首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >yolov3上采样层中使用的上采样技术是什么?互联网上没有资源,原始论文也没有很好地描述它。

yolov3上采样层中使用的上采样技术是什么?互联网上没有资源,原始论文也没有很好地描述它。
EN

Stack Overflow用户
提问于 2020-02-21 14:40:57
回答 1查看 1.2K关注 0票数 0

在不同的目标检测算法中有不同的上采样技术,但我想了解YOLO架构是如何工作的,为了可视化每一层的输出,当我到达上采样层时,我遇到了麻烦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-21 22:36:30

我认为最好的做法是查看所使用的确切代码。

https://github.com/pjreddie/darknet/blob/f6d861736038da22c9eb0739dca84003c5a5e275/src/blas.c#L334

代码语言:javascript
复制
void upsample_cpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out)
{
    int i, j, k, b;
    for(b = 0; b < batch; ++b){
        for(k = 0; k < c; ++k){
            for(j = 0; j < h*stride; ++j){
                for(i = 0; i < w*stride; ++i){
                    int in_index = b*w*h*c + k*w*h + (j/stride)*w + i/stride;
                    int out_index = b*w*h*c*stride*stride + k*w*h*stride*stride + j*w*stride + i;
                    if(forward) out[out_index] = scale*in[in_index];
                    else in[in_index] += scale*out[out_index];
                }
            }
        }
    }
}

float*是输入和输出图像。stride控制上采样的大小,对于值2,它在config中的使用方式是宽度和高度的两倍。如果配置(for reference)中未提供任何值,则scale为1,这是默认参数。所有其他参数都应该是清晰的。

据我所知,它只需要在输入中使用1个像素,而对于stride = 2,则将其写入输出中的4个像素(从j/stridei/stride判断)。因此,一个像素被转换为2x2区域中的4个像素。这可能是人们可以实现的最天真的上采样变体,没有任何额外的逻辑,如插值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60333349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档