DSSD理论+源码学习(2)
Data_encoder主要包括了proposal box的生成,nms的计算,对每个框进行encode和decode的部分。
Data_encoder.py源码解析
import math
import torch
import itertools
import numpy as np
import torch.nn.functional as func
from torch.autograd import Variable
import ipdb
class DataEncoder:
#超参数的设置,主要为anchor的尺度,大小等
def __init__(self, scale = 300):
if scale == 300:
self.scale = 300.0#图片大小300*300
self.variance = [0.1, 0.2]#用于计算GT和default box之间的偏移
steps = [8, 16, 32, 64, 100, 300] #FM和原图之间的感受野比例
sizes = [30, 40, 50, 60, 70, 80, 100]#每个anchor的基础边长
#sizes = [30, 60, 111, 162, 213, 264, 315]
self.aspect_ratios = ((2, ), (2, 3), (2, 3), (2, 3), (2, ), (2, ))#变换尺度
self.feature_map_sizes = (38, 19, 10, 5, 3, 1)
elif scale == 224:
self.scale = 224.0
self.variance = [0.1, 0.2]
steps = [6, 12, 24, 48, 75, 224]
sizes = [22, 44, 83, 121, 159, 197, 235]
self.aspect_ratios = ((2, ), (2, 3), (2, 3), (2, 3), (2, ), (2, ))
self.feature_map_sizes = (28, 14, 7, 4, 2, 1)
elif scale == 512:
self.scale = 512.0
self.variance = [0.1, 0.2]
steps = [8, 16, 32, 64<