美文网首页FastAI
FastAI07-图像回归问题

FastAI07-图像回归问题

作者: 科技老丁哥 | 来源:发表于2019-10-10 15:03 被阅读0次

图像回归问题不同于图像分类问题,它要求模型给出的结果是一个连续的预测值,而不是离散的类别。

图像回归问题非常少见,大部分仍然是图像分类问题,但FastAI也可以解决图像回归问题。

1. 准备数据集

此处的数据集来源于:biwi_head_pose,下载后就可以使用。

1.1 自定义换算函数

这个项目的要求是预测出图像中人脸中心点的位置,所以要求模型给出的结果是一个坐标值(x,y),表示人脸中心位于图像的x和y处。数据集给的标注label也位于每张图片对应的txt中。其txt的格式为:eg: frame_00009_pose.txt:



第5行的三个数据表示了人脸中心的位置,这三个数据需要做进一步运算才能换算成中心坐标值。

所以,这个数据集还需要我们自定义一些换算函数。

def convert_biwi(coords):
    c1 = coords[0] * cal[0][0]/coords[2] + cal[0][2]
    c2 = coords[1] * cal[1][1]/coords[2] + cal[1][2]
    return tensor([c2,c1])

def get_ctr(f):
    ctr = np.genfromtxt(img2txt_name(f), skip_header=3)
    return convert_biwi(ctr)

def get_ip(img,pts): return ImagePoints(FlowField(img.size, pts), scale=True)

上面的换算函数中,convert_biwi可以参考数据集官方给出的换算方法,get_ctr是我们对某一张具体的图像f,找到其label所在的txt,然后读取txt内容,进行换算得到人脸中心的坐标值。标注处该坐标点为:


1.2 组建databunch

由于labels都是中心坐标值,所以此处用PointsItemList,如下:

data = (PointsItemList.from_folder(path)
        .split_by_valid_func(lambda o: o.parent.name=='13')
        .label_from_func(get_ctr)
        .transform(get_transforms(), tfm_y=True, size=(120,160))
        .databunch().normalize(imagenet_stats)
       )

在创建val set时,考虑到同一个人的脸部相似度非常大,所以用不同的人脸作为val set, 此处用标号为13的人的脸部作为val set,其他人的脸部作为train set。

获取label的方式是get_ctr这个换算函数,这个函数从img的文件名中解析出对应的txt的路径和名称,然后换算得到中心点的坐标值。

此处的size并没有用常见的正方形图片,而是长方形,这个比例和原图的比例一致,为了保持人脸结构不会变形。


2. 模型训练

模型的构建和以前一样,用resnet34作为基本结构,创建cnn_learner即可。

learn = cnn_learner(data, models.resnet34)

在5个epochs的训练之后,结果为:


一般的,对于回归问题,模型的loss function应该采用MSE,在课程中所用的notebook中使用了learn.loss_func = MSELossFlat(),但此处没有明确指定MSELoss,估计是已经整合到cnn_learner中。

最后,显示下模型预测出来的结果和ground truth,将两者进行对比。


可以看出,预测出来的中心点位置几乎和原来的ground truth位置一致。

相关文章

  • FastAI07-图像回归问题

    图像回归问题不同于图像分类问题,它要求模型给出的结果是一个连续的预测值,而不是离散的类别。 图像回归问题非常少见,...

  • 深度学习与金融市场——分类与回归

    分类OR回归 在深度学习领域,大家简单的会将问题归为两类,分类问题,回归问题!像图像问题中的物体识别,自然语言处理...

  • 1 导学

    机器学习可解决的问题 图像识别人脸识别数字识别 MNIST数据集 机器学习算法 kNN线性回归多项式回归逻辑回归 ...

  • 贝叶斯线性回归|机器学习推导系列(二十三)

    一、概述 线性回归的数据如下所示: 对于线性回归问题,假设: 其中是参数,是噪声。以二维的数据为例,其图像如下: ...

  • 2020-08-19

    线性回归模型 一元线性回归模型 “一元”就是指单个特征。 通过预测房价的问题作为例子。 将训练集中的数据用图像的形...

  • 他/她 说『生活』:记、忆、说

    她说,讲话也是要看图像的。所以,记要依托图像,忆要依托图像,说要依托图像。 他说,你的底层逻辑都知道了,这下请回归...

  • 2019-09-28 MTCNN代码讲解3

    1、激活函数:prelu 加入了一个平滑层flatten 2、处理图像,生成图像金字塔 边框回归:

  • cifar10模型进行logo图像二分类

    主要问题 输入图像的大小分布这个。。。 图像上有logo到底是分类问题还是检测问题 图像中logo占图像面积的多少...

  • 自然图像先验

    自然图像先验 在自然图像处理领域里,有很多问题(比如图像去噪、图像去模糊、图像修复、图像重建等)都是反问题 ,即...

  • 吴恩达机器学习笔记-支持向量机

    优化目标 之前的课程有学习过Logistic回归的假设函数:其图像如下: 从图像可以看出,如果的话,那么我们希望,...

网友评论

    本文标题:FastAI07-图像回归问题

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