【点云】Pointet的读后感(CVPR2016):4分割网络部分
还是先把图放上,分割网络还是相对于分类网络进行修改的,所以看了之前的分类网络的,应该就可以很容易理解分割网络部分了.分割网络先是将分类网络进行旋转归一化后的64维特征取出,再将max_pooling后的1024维特征重复concat到每个点上,相当于给每个点都增加了全局的特征,具体的网络结构如下所示:defget_model(point_cloud,is_training,bn_decayNone): ConvNet baseline, input is BxNx3 gray image batch_sizepoint_cloud.get_shape()[0].value num_pointpoint_cloud.get_shape()[1].value input_imagetf.expand_dims(point_cloud,-1)# CONVnettf_util.conv2d(input_image,64,[1,9],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv1,bn_decaybn_decay)nettf_util.conv2d(net,64,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv2,bn_decaybn_decay)nettf_util.conv2d(net,64,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv3,bn_decaybn_decay)nettf_util.conv2d(net,128,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv4,bn_decaybn_decay)points_feat1tf_util.conv2d(net,1024,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv5,bn_decaybn_decay)# MAXpc_feat1tf_util.max_pool2d(points_feat1,[num_point,1],paddingVALID,scopemaxpool1)# FCpc_feat1tf.reshape(pc_feat1,[batch_size,-1])pc_feat1tf_util.fully_connected(pc_feat1,256,bnTrue,is_trainingis_training,scopefc1,bn_decaybn_decay)pc_feat1tf_util.fully_connected(pc_feat1,128,bnTrue,is_trainingis_training,scopefc2,bn_decaybn_decay)print(pc_feat1)# CONCATpc_feat1_expandtf.tile(tf.reshape(pc_feat1,[batch_size,1,1,-1]),[1,num_point,1,1])points_feat1_concattf.concat(axis3,values[points_feat1,pc_feat1_expand])# CONVnettf_util.conv2d(points_feat1_concat,512,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv6)nettf_util.conv2d(net,256,[1,1],paddingVALID,stride[1,1],bnTrue,is_trainingis_training,scopeconv7)nettf_util.dropout(net,keep_prob0.7,is_trainingis_training,scopedp1)nettf_util.conv2d(net,13,[1,1],paddingVALID,stride[1,1],activation_fnNone,scopeconv8)nettf.squeeze(net,[2])returnnet图虽然是这么画的,但是我们可以看到作者给出的网络结构并不是和图片相符合.concat的是升到1024维的特征,和经过max pooling后经过两次全连接层的feature map重复num_point后得到pc_feat1_expand.其实是和原论文放的图是不符的,这边还是需要注意一下的.分割网络并不是说和分类网络一样,有具体的训练集和测试集.语义分割网络使用的数据集是Stanford 3D semantic parsing dataset.这个数据有6个area, 271个房间, 总共有13个类别.所以在实际训练中采用的是6折交叉验证的方法,如果LZ想测试area1,那么训练集就是area2一直到area6,如果是area2,那么训练集就是area1, area3-area6,以此类推.O(∩_∩)O哈哈~要不要看看效果呀?这个是ground truth…这个是预测的结果反正效果还是挺好的,从直观上来说…