2019 春季实习生招聘之项目介绍

1. ByteDance AI Camp 创意换脸项目

1.1 人脸关键点检测

1.2 人脸对齐

1.3 人脸融合

给定两个图片 \(I\)\(J\),我们可以直接将两个图片的每个像素加权融合起来形成一个中间图片 \(M\)

\[M(x, y) = (1 - \alpha)I(x, y) + \alpha J(x, y)\]

然而,取 \(\alpha =0.5\) 时,我们会得到如下所示的结果。

1240

可见,想要得到一个完美融合的图片,我们至少需要在融合之前先把眼睛、嘴巴等部位对齐。

假设我们知道图片 \(I\) 位于 \((x_i, y_i)\) 的像素正好对应于图片 \(J\) 位于 \((x_j, y_j)\) 的像素,比如都是鼻尖,那么我们就可以这样先求得中间图片鼻尖的位置。

\[x_m = (1 - \alpha)x_i + \alpha x_j\]
\[y_m = (1 - \alpha)y_i + \alpha y_j\]

然后,鼻尖处的像素强度则为

\[M(x_m, y_m) = (1 - \alpha)I(x_i, y_i) + \alpha J(x_j, y_j)\]

主要步骤如下:

  • 利用 Dlib 进行人脸关键点检测
    1240

  • 德劳内三角化(没有点位于三角形外接圆的内部)

1240

  • 计算出中间图片所有三角形对应的位置

  • 应用仿射变换分别将两个图片的所有三角形区域的像素映射到中间图片上

  • 将得到的两个中间图片进行融合

  • 颜色校正,两张图片的像素分布应该相同

2. 基于深度学习的三维网格去噪

2.1 边缘检测

  • 输出层逻辑回归,01 代表是否是边缘
  • 数据格式 41×41×41
  • 2-D 卷积和 3-D 卷积

1240

2.2 邻域相关性检测

  • 输出层 Tanh,[-1, 1] 代表两个面之间的相关性
  • 数据格式 41×41×41×1
  • 3-D 卷积,两个网络中间拼接

1240

2.3 法向量检测

  • 输出层 Tanh,代表法向量的三个坐标
  • 数据格式 1×20×6,代表邻域的顶点和法向量坐标
  • 3-D 卷积,20 个邻域拼接

1240

  • 输出层 Tanh,代表法向量的三个坐标
  • 数据格式 41×41×41×3,代表邻域的顶点和法向量坐标

1240

2.4 遇到的问题

  • 输出一致:网络结构错误;数据中存在 NAN;数据过大激活后都是 1
  • 在 C/C++ 调用 Python
  • BN 训练调用模型,训练和测试阶段参数更新问题

3. 之江杯全球人工智能大赛零样本图像目标识别

3.1 数据

  • 图片名 标签 ID 真实类别英文名称 属性(30) 类别词向量(300 )

3.2 方法

一个之前只见过马的小孩看到斑马会认出这是一个有黑白条纹的像马的动物,零样本学习就是让网络能够识别出在训练集上没有出现过的类别。

一般认为已知类别和未知类别在一个高维的向量空间中是高度关联的,这个空间称为语义嵌入空间,而图片经过卷积神经网络提取到的特征所在的空间则被称为视觉特征空间

因此,我们要做的就是将视觉特征空间映射到语义嵌入空间,然后在语义特征空间中搜索一个最相近的标签。假设 \(S\) 代表语义嵌入特征,\(V\) 代表视觉特征,\(W\) 代表映射矩阵。

  • 映射到视觉特征空间

1240

  • 岭回归

\[min||VW-S||^2+\lambda||W||_2\]

  • 语义自编码器

\[min||V-W^TS||^2+\lambda||VW-S||^2\]

  • 此外,我们还可以学习一个联合嵌入空间,将视觉特征空间和语义嵌入空间都映射到这个空间

1240

  • Discriminative Learning of Latent Features for Zero-Shot Recognition

1240

FNet 负责图像特征提取,ZNet 负责查找有判别力的区域,ENet 负责特征嵌入。其中,特征嵌入包括两部分,一部分是嵌入到用户定义的属性空间,另一部分是嵌入到潜在有判别力的属性空间。

获取更多精彩,请关注「seniusen」!
1240

转载于:https://www.cnblogs.com/seniusen/p/10584431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以用结构体来保存实习生信息,然后用数组存储多个实习生的信息。具体步骤如下: 1. 定义一个结构体类型,包含实习生的姓名、年龄、性别和专业等信息。 2. 定义一个数组,存储多个实习生的信息。 3. 使用 scanf 函数输入每个实习生的信息,并存储到结构体数组中。 4. 使用循环遍历结构体数组,将每个实习生的信息依次输出。 下面是示例代码: ```c #include <stdio.h> #include <string.h> #define MAX_STUDENTS 3 struct Student { char name[20]; int age; char gender[5]; char major[20]; }; int main() { struct Student students[MAX_STUDENTS]; int i; for (i = 0; i < MAX_STUDENTS; i++) { printf("请输入第%d个实习生的信息:\n", i + 1); printf("姓名:"); scanf("%s", students[i].name); printf("年龄:"); scanf("%d", &students[i].age); printf("性别:"); scanf("%s", students[i].gender); printf("专业:"); scanf("%s", students[i].major); } printf("\n实习生信息如下:\n"); for (i = 0; i < MAX_STUDENTS; i++) { printf("姓名:%s\n", students[i].name); printf("年龄:%d\n", students[i].age); printf("性别:%s\n", students[i].gender); printf("专业:%s\n", students[i].major); printf("\n"); } return 0; } ``` 运行结果: ``` 请输入第1个实习生的信息: 姓名:张三 年龄:20 性别:男 专业:计算机科学与技术 请输入第2个实习生的信息: 姓名:李四 年龄:21 性别:女 专业:软件工程 请输入第3个实习生的信息: 姓名:王五 年龄:22 性别:男 专业:网络工程 实习生信息如下: 姓名:张三 年龄:20 性别:男 专业:计算机科学与技术 姓名:李四 年龄:21 性别:女 专业:软件工程 姓名:王五 年龄:22 性别:男 专业:网络工程 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值