Pytorch实现MTCNN详解—原理及结构设计2

索引

1.2PNet网络的设计和实现

相关连接

定义PNet

​ 全称为Proposal Network,其基本的构造是一个全连接网络。对上一步构建完成的图像金字塔,通过一个FCN进行初步特征提取与标定边框,并进行Bounding-Box Regression调整窗口与NMS进行大部分窗口的过滤。
PNet是一个人脸区域的区域建议网络,该网络的将特征输入结果三个卷积层之后,再通过3种不同卷积网络之后,得到三种不同的tensor,分别对应如下:

  1. 1 * 1 * 2 :这个用于是人脸分类,但是与论文不同,实际实现是输出的是 1 * 1 * 1 的tensor,只有一共channel,代码中当这个channel大于0.6的时候则认为是人脸。

  2. 1 * 1 * 4 :这个用于人类框的标记,由4个channel(特征)组成,(x1,y1) (x2,y2) 代表方框的左上、右下两个点的坐标。

  3. 1 * 1 * 10 :这个是人类轮廓,由10个channel组成,PNet的输出并不需要。

    PNet的输入是一个12 * 12 * 3 的图片。输出是上面的1和2两种tensor,人脸轮廓PNet无需得到,交给后面的

RNet即可。

代码
#torch package
import os
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
import sys
sys.path.append('../')

# add other package
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
from tool.plotcm import plot_confusion_matrix
import tool.image_tools

import pdb

from collections import OrderedDict
from collections import namedtuple
from itertools import product

#torch.set_printoptions(linewidth=120)
对权重进行初始化,使用正态分布。
def weights_init(m):
    if isinstance(m, nn.Conv2d) or isinstance(m, nn.Linear):
        nn.init.xavier_uniform_(m.weight.data)
        nn.init.constant_(m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值