美文网首页
Faster-RCNN笔记

Faster-RCNN笔记

作者: __Gato__ | 来源:发表于2019-03-28 18:43 被阅读0次

    Note

    主要是之前在跑目标检测代码时发现很多变量名都roixxx的,虽然之前看过相关的知识但是感觉又被绕晕了,同时发现了一片写ROI Pooling之后反向传播相关的知乎专栏于是做个笔记记录下。同时为了日后更方便进行修改与调整加深印象。

    FasterRCNN的结构

    faster-RCNN

    输入图像的预处理

    目标检测输入图像预处理的原因:

    1. 数据集图片大小不一,需要将大小不一的图片在一个batch内组成统一的size
    2. 宽高比过于极端的图片需要特定的裁剪方案
    3. 将不同大小的图片缩放到同一尺度

    处理过程如下图所示


    Preprocess

    输入图像的缩放结果是将短边尺度缩放到TargetSize,但如果这样子缩放长边超过了maxSize,那么缩放长边,图像的长宽比理论上是不变的。

    图像预处理代码如下

    def _get_image_blob(im):
    
      """Converts an image into a network input.
      Arguments:
      im (ndarray): a color image in BGR order
      Returns:
      blob (ndarray): a data blob holding an image pyramid
      im_scale_factors (list): list of image scales (relative to im) used
        in the image pyramid
      """
      im_orig = im.astype(np.float32, copy=True)
      im_orig -= cfg.PIXEL_MEANS
    
      im_shape = im_orig.shape
      im_size_min = np.min(im_shape[0:2])
      im_size_max = np.max(im_shape[0:2])
    
      processed_ims = []
      im_scale_factors = []
    
      for target_size in cfg.TEST.SCALES:
          im_scale = float(target_size) / float(im_size_min)
          # Prevent the biggest axis from being more than MAX_SIZE
          if np.round(im_scale * im_size_max) > cfg.TEST.MAX_SIZE:
              im_scale = float(cfg.TEST.MAX_SIZE) / float(im_size_max)
          im = cv2.resize(im_orig, None, None, fx=im_scale, fy=im_scale,
                          interpolation=cv2.INTER_LINEAR)
          im_scale_factors.append(im_scale)
          processed_ims.append(im)
    
      # Create a blob to hold the input images
      blob = im_list_to_blob(processed_ims)
    
      return blob, np.array(im_scale_factors)
    

    cfg(配置文件)里的TEST.SCALES其实是TargetSize默认为600,TEST.MAX_SIZE默认为1000。
    上述操作目前只解决了尺度相同的问题,但若要batch size > 1还需要其他处理

    数据的载入

    数据通过roibatchLoader载入dataset,然后将dataset装入dataloader,此变换在minibatch.py内,实现后通过roibatchLoacer类内调用

    image->feature maps

    一般情况下通过一系列卷积层(vgg16 or resnet)得到一个基准特征图(base feature map)上图中黑黑的那块。base feature map是512通道的。

    forward

    # feed image data to base model to obtain base feature map
    base_feat = self.RCNN_base(im_data)
    

    RPN网络

    RPN

    参考

    Object Detection and Classification using R-CNNs
    一文读懂Faster RCNN
    faster-rcnn代码阅读理解(2)

    相关文章

      网友评论

          本文标题:Faster-RCNN笔记

          本文链接:https://www.haomeiwen.com/subject/yqeqbqtx.html