当前位置: 首页 > news >正文

网站建设是一项系统工程企业网站建设一条龙

网站建设是一项系统工程,企业网站建设一条龙,php网站开发工程师招聘网,学计算机前端好就业吗文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先#xff0c;根据点云场景将其划分为一个个grid#xff0c;这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 6… 文章目录 AnchorGenerator模块AnchorGenerator.generate_anchors函数 AnchorGenerator模块 首先根据点云场景将其划分为一个个grid这个grid size是可以通过配置文件设定的点云场景方位和voxel大小计算出来的。 POINT_CLOUD_RANGE: [0, -39.68, -3, 69.12, 39.68, 1] VOXEL_SIZE: [0.16, 0.16, 4]在dense_head的初始化过程就会在基类进行anchor的生成。 # 功能dense head模块的基类 class AnchorHeadTemplate(nn.Module):def __init__(self, model_cfg, num_class, class_names, grid_size, point_cloud_range, predict_boxes_when_training):......# anchor生成配置anchor_generator_cfg self.model_cfg.ANCHOR_GENERATOR_CONFIG # list:存储每个类别的anchor生成设置anchors, self.num_anchors_per_location self.generate_anchors(anchor_generator_cfg, grid_sizegrid_size, point_cloud_rangepoint_cloud_range,anchor_ndimself.box_coder.code_size)......staticmethoddef generate_anchors(anchor_generator_cfg, grid_size, point_cloud_range, anchor_ndim7):Args:anchor_generator_cfg: 每个类别的anchor配置grid_size: 网格大小 [432 496 1]point_cloud_range: 点云范围 [ 0. -39.68 -3. 69.12 39.68 1. ]anchor_ndim: anchor维度: 7 位置 大小 方向 [x,y,z,dx,dy,dz,rot]anchor_generator AnchorGenerator(anchor_rangepoint_cloud_range,anchor_generator_configanchor_generator_cfg)# 对每个类别生成anchor的feature map [array([216, 248]), array([216, 248]), array([216, 248])]feature_map_size [grid_size[:2] // config[feature_map_stride] for config in anchor_generator_cfg]# 返回每个类别构建好的anchor[(1,248,216,1,2,7), ...] 和 每个位置anchor的数量[2, 2, 2]anchors_list, num_anchors_per_location_list anchor_generator.generate_anchors(feature_map_size)if anchor_ndim ! 7: # 默认情况是为7, 如果anchor的维度不等于7则补0for idx, anchors in enumerate(anchors_list):pad_zeros anchors.new_zeros([*anchors.shape[0:-1], anchor_ndim - 7])new_anchors torch.cat((anchors, pad_zeros), dim-1)anchors_list[idx] new_anchorsreturn anchors_list, num_anchors_per_location_list这里3d点云检测的anchor生成和yolov5等目标检测2d算法在图像网格点生成anchor类似。由于这里有3个类别那么首先对每个列表都构建一个feature map每个feature map尺度在这里和点特征矩阵的尺寸是一样的。随后将这个feature map列表送入AnchorGenerator.generate_anchors函数来进行具体的anchor生成。 AnchorGenerator.generate_anchors函数解析如下。 AnchorGenerator.generate_anchors函数 以点云场景限制为[ 0. -39.68 -3. 69.12 39.68 1. ] 为例。由于设定了grid size那么就可以知道每个grid之间的步长那么根据这个步长就有可以将整个点云场景均匀的划分为一个个等大的grid。 # 步长的确定PointPillars不在z轴进行划分所以z轴步长不需要考虑 x_stride (self.anchor_range[3] - self.anchor_range[0]) / (grid_size[0] - 1) # x方向步长 y_stride (self.anchor_range[4] - self.anchor_range[1]) / (grid_size[1] - 1) # y方向步长 x_offset, y_offset 0, 0# 根据步长构建xy方向的间隔点 x_shifts torch.arange( # (69.12 - 0) / (216 - 1) 0.321488 间隔点有216个所以步长为0.321488self.anchor_range[0] x_offset, self.anchor_range[3] 1e-5, stepx_stride, dtypetorch.float32, ).cuda() y_shifts torch.arange( # (39.68 - (-39.68)) / (248 - 1) 0.321295 间隔点有248个所以步长为0.321295self.anchor_range[1] y_offset, self.anchor_range[4] 1e-5, stepy_stride, dtypetorch.float32, ).cuda() z_shifts x_shifts.new_tensor(anchor_height) # [-1.78] PointPillar不对z轴进行区间划分更具步长来构建一个三维的网格坐标是通过meshgrid函数来实现的。meshgrid可以理解为在原来的维度上进行扩展此时3者的坐标维度是一样的。随后将其进行拼接在一起此时就获得了在点云场景中的一个三维坐标表示。拼接后的维度是[216,248,1,3]前三维信息是表示xyz轴最后一维表示分别的坐标。 # 根据xyz步长构建三维网格坐标 [x_grid, y_grid, z_grid] -- [(216,248,1), (216,248,1),(216,248,1)] x_shifts, y_shifts, z_shifts torch.meshgrid([x_shifts, y_shifts, z_shifts ]) # [x_grid, y_grid, z_grid] # meshgrid可以理解为在原来的维度上进行扩展, (np.meshgrid 和 torch.meshgrid 是返回结果不一样的) # 例如: # x原来为216--2161, 1-- (216,248,1) # y原来为248-- (12481-- (216,248,1) # z原来为 (1,) -- (1,1,1) -- (216,248,1)# xyz位置信息堆叠完成anchor位置信息的构建: (216,248,1,3) anchors torch.stack((x_shifts, y_shifts, z_shifts), dim-1) # [x,y,z,3]--[216,248,1,3]anchor坐标位置构建完后随后与anchor的尺寸大小、旋转角信息进行组合 # 将anchor的位置信息与尺寸大小进行组合: (216,248,1,1,6) anchors anchors[:, :, :, None, :].repeat(1, 1, 1, anchor_size.shape[0], 1) # (216,248,1,3) - (216,248,1,1,3) anchor_size anchor_size.view(1, 1, 1, -1, 3).repeat([*anchors.shape[0:3], 1, 1]) # (1,1,1,1,3) - (216,248,1,1,3) anchors torch.cat((anchors, anchor_size), dim-1) # anchors的位置大小 -- (216,248,1,1,6)# 将anchor的位置信息、尺寸大小、旋转角信息进行组合: (216,248,1,1,2,7) anchors anchors[:, :, :, :, None, :].repeat(1, 1, 1, 1, num_anchor_rotation, 1) # (216,248,1,1,1,6) - (216,248,1,1,2,6) anchor_rotation anchor_rotation.view(1, 1, 1, 1, -1, 1).repeat([*anchors.shape[0:3], num_anchor_size, 1, 1]) # (1,1,1,1,2,1) - (216,248,1,1,2,1) anchors torch.cat((anchors, anchor_rotation), dim-1) # anchors的位置大小旋转方向 -- (216,248,1,1,2,7)# 最后调整anchor的维度: (1,248,216,1,2,7) # 最后一维的7表示的特征信息为: [x, y, z, dx, dy, dz, rot], [位置信息xyz, 尺寸信息, 旋转角度] anchors anchors.permute(2, 1, 0, 3, 4, 5).contiguous() # (216,248,1,1,2,7) - (1,248,216,1,2,7) #anchors anchors.view(-1, anchors.shape[-1])最后获取的anchor的维度: (1,248,216,1,2,7)。其中(1,248,216)表示点云场景每个grid的位置。2表示每个grid位置有两种方向的anhcor。然后7表示每种方向的anchor的具体位置信息、尺寸大小、旋转角度。如此依次对每个类别进行anchor的生成最后返回的是anchors_list。 ps这里的anhcor的z轴位置信息还回加上anchor的高度以汽车类别为例由于每个anchor的z轴gird位置设置为anchor_bottom_heights: [-1.78]然后再加上anchor高度的一半也就是1.56 // 2 0.78z轴的位置信息就被更新为1这个就是anchor的具体在z轴上的位置。下面就是某个grid位置的anchor配置信息可以看见一个位置的一类anchor会有两个方向的尺寸位置一样的配置。 函数的最后返回的是anchor_list列表以及每个位置每个类别有多少种anchor的列表如下所示 至此完成了每个grid每个类别的anchor生成配置。思路上是比较清晰的具体的细节就是各种anchor信息在各位置的拼接处理。
http://www.hkea.cn/news/14536840/

相关文章:

  • 重庆智能网站建设价格企业管理咨询考试题及答案
  • 龙岩市建设局网站城乡建设学校网站
  • 三合一网站一般多少钱做外贸在什么网站好
  • 社区信息建设网站投资 网站 源码
  • 湖南智能网站建设推荐网站开发与设计英文文献
  • 哈尔滨 网站建设公司济南网站制作推广
  • html和php做网站哪个好四个常见的网络营销方式
  • 如何做产品网站网页设计网页设计图片怎么放进去
  • 龙华新区城市建设局网站抖音黑科技引流拓客软件
  • 做i网站成都网站运营公司
  • 营销网站主题有哪些内容邢台做网站公司排名
  • 商务网站建设与管理石家庄软件公司排名
  • 如何做网站页面河南省住房和城乡建设厅人教处网站
  • 有哪些装修网站模板出售网站源码
  • 找回网站后台网站制作什么语言最好
  • 湖州网站做等保费用刷q币网站建设
  • 建设专业网站哪家比较好wordpress 外观 自定义
  • 网站设计 工作如何申请微信公众平台号申请
  • flash网站特点减少网站跳出率
  • 评价一个网站的好坏网站 会员系统 织梦
  • 直播间网站开发设计安徽省建设工程信息网怎么不能查询
  • 芜湖网站开发公司电话网页设计个人网页html代码
  • 生态环境工程公司网站建设成都家装排名前十名
  • 网站开发税收分类万能网站
  • intellij 网站开发网络设计公司有哪些
  • 电商网站的建设与安全自己电脑上做网站别人访问
  • 椒江建设网保障性阳光工程网站广告联盟代理平台
  • 杭州网站建设公司在韩国注册公司需要什么条件
  • 网站权重问题h5制作步骤
  • 专业简历制作网站有哪些网站建设入门教程pdf