文档章节

CognitiveJ一个Java的人脸图像识别开源分析库

孟飞阳
 孟飞阳
发布于 2017/08/12 23:16
字数 1003
阅读 259
收藏 2

CognitiveJ 是一个开源的,支持 Java 8 API 的库,用于管理和编排 Java 应用和微软的Cognitive(Project Oxford)机器学习和图像处理库的项目,可以让你查询以及分析图像。
一:人脸识别
    1.人脸检测– 捕获脸部、性别、年龄等相关脸部特征以及图像的标志
    2.表情检测 – 根据图像中的脸部信息推断出表情状态
    3.验证 – 验证同一个人的两张不同表情的差异
    4.识别 – 根据已知的人里识别出某个人
    5.查找相似 —— 对人脸检测、分组以及排名以找出类似的人脸
    6.分组 – 基于脸部特征进行人的分组
    7.Person Group/Person/Face Lists; 创建、管理和训练分组、脸部和人列表用于识别、分组和查找相似的脸部特征
二:视觉
    1.图像描述 —— 描述图像的可视化内容并返回真实世界中的表述方式
    2.图像分析 —— 抽取图像中的关键信息,例如可判断图片是否包含色情性质
    3.OCR – 检测和提取图像中的文字
    4.缩略图 – 根据图像的关键点来创建缩略图
三:图层 (体验阶段)
    1.应用图像层到多个图像上,将发现的特征进行可视化展现
    2.在人脸和图像上使用字幕
    3.形象的描述脸部和视觉特征集
    4.对图像中的人脸进行像素化
四:其他特性
    1.支持本地和远程图像
    2.参数校验
五:代码示例
1.Gradle

repositories {
        jcenter()
    }
dependencies {
    compile "cognitivej:cognitivej:0.6.2"
}

2.Maven支持

<dependency>
     <groupId>cognitivej</groupId>
     <artifactId>cognitivej</artifactId>
     <version>0.6.2</version>
     <type>pom</type>
</dependency>

3.链式构建器 - 该构建器是 MS Cognitive REST 服务的简单轻量级封装,用来管理参数和响应、HTTP 通讯和重试策略的编排。构建器使用链式设计模式允许方便的在资源处理过程中进行操作。
封装器 简单的关于请求、响应和参数对象的封装,例如 Face, FaceAttributes,Person 等等
4.脸部检测 可以检测图片中的人脸,并返回一组脸部结果集合。

public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE_URL);
    imageOverlayBuilder.outlineFacesOnImage(faceScenarios.findFaces(IMAGE_URL), RectangleType.FULL,
            CognitiveJColourPalette.STRAWBERRY).launchViewer();
}

5.脸部特征 用来检测图片中人脸的特征标志信息

public static void main(String[] args) throws IOException {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    Face faces = faceScenarios.findSingleFace(IMAGE_URL);
    ImageOverlayBuilder.builder(IMAGE_URL).outFaceLandmarksOnImage(faces).launchViewer();
}

6.脸部属性检测 显示所检测到的脸部的属性,例如性别、年龄、是否佩戴眼镜等

public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    List<Face> faces = faceScenarios.findFaces(IMAGE_URL);
    ImageOverlayBuilder.builder(IMAGE_URL).outlineFacesOnImage(faces, RectangleType.CORNERED,
            CognitiveJColourPalette.MEADOW).writeFaceAttributesToTheSide(faces, CognitiveJColourPalette.MEADOW).launchViewer();
}

7.脸部验证 用来验证两个不同的脸部是否属于一个人,包含一个检测的可靠指数。

public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    ImageOverlayBuilder.builder(CANDIDATE_1);
    imageOverlayBuilder.verify(CANDIDATE_2, faceScenarios.verifyFaces(CANDIDATE_1, CANDIDATE_2)).launchViewer();
}

8.脸部标识 标识出图像中的人。在标识之前,我们需要提供一组候选样本,当前最多支持 1000 个候选样本。

public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE);
    List<ImageHolder> candidates = candidates();
    People people = ScenarioHelper.createPeopleFromHoldingImages(candidates, ImageNamingStrategy.DEFAULT);
    String groupId = faceScenarios.createGroupWithPeople(randomAlphabetic(6).toLowerCase(), people);
}

9.脸部像素化 将图像中所有的脸部信息标识出来并进行像素化。

public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    ImageOverlayBuilder imageOverlayBuilder = ImageOverlayBuilder.builder(IMAGE);
    faceScenarios.findFaces(IMAGE).stream().forEach(imageOverlayBuilder:: pixelateFaceOnImage);
    imageOverlayBuilder.launchViewer();
}
public static void main(String[] args) {
    FaceScenarios faceScenarios = new FaceScenarios(getProperty("azure.cognitive.subscriptionKey"),
            getProperty("azure.cognitive.emotion.subscriptionKey"));
    ImageOverlayBuilder.builder(IMAGE_URL).outlineEmotionsOnImage(faceScenarios.findEmotionFaces(IMAGE_URL)).launchViewer();
}

10.视觉描述 使用人类可读的方式来分析和描述图像中的内容。

public static void main(String[] args) {
    ComputerVisionScenario computerVisionScenario = new ComputerVisionScenario(getProperty("azure.cognitive.vision.subscriptionKey"));
    ImageDescription imageDescription = computerVisionScenario.describeImage(IMAGE_URL);
    ImageOverlayBuilder.builder(IMAGE_URL).describeImage(imageDescription).launchViewer();
}

11.OCR 用来分析和提取图像中包含的文字信息。

public static void main(String[] args) {
    ComputerVisionScenario computerVisionScenario = new ComputerVisionScenario(getProperty("azure.cognitive.vision.subscriptionKey"));
    OCRResult ocrResult = computerVisionScenario.ocrImage(IMAGE_URL);
    ImageOverlayBuilder.builder(IMAGE_URL).ocrImage(ocrResult).launchViewer();
}

本文转载自:http://www.cnblogs.com/wangyayun/p/6625295.html

共有 人打赏支持
孟飞阳
粉丝 204
博文 953
码字总数 540957
作品 5
朝阳
个人站长
腾讯 AI-Java 客户端 Taip 重大更新,所有接口均已接入

TAIP 是调用腾讯 AI 接口的 Java 客户端,为调用腾讯 AI 功能的开发人员提供了一系列的交互方法。 目前版本已经更新至4.2.1,Java开发者们无需再各种百度了。 Java JDK 1.7+ Maven引入 cn.x...

小帅帅丶
05/22
0
45
腾讯 AI-Java 客户端 TAip 4.3.2 发布,增加关键词检索

TAIP 是调用腾讯 AI 接口的 Java 客户端,为调用腾讯 AI 功能的开发人员提供了一系列的交互方法。 目前版本已经更新至4.3.2,Java开发者们无需再各种百度了。 新特性 增加关键词检索接口 优图...

小帅帅丶
07/09
0
0
腾讯 AI-Java 客户端 TAip 新增加手写体、车牌识别

TAIP 是调用腾讯 AI 接口的 Java 客户端,为调用腾讯 AI 功能的开发人员提供了一系列的交互方法。 目前版本已经更新至4.2.5,Java开发者们无需再各种百度了。 新特性 文字识别模块新增手写体...

小帅帅丶
06/13
0
0
腾讯 AI-Java 客户端 TAip 重构 HTTP 模块 bug 修复

TAIP 是调用腾讯 AI 接口的 Java 客户端,为调用腾讯 AI 功能的开发人员提供了一系列的交互方法。 目前版本已经更新至4.3.0,Java开发者们无需再各种百度了。 新特性 HTTP模块代码重构、删除...

小帅帅丶
06/26
0
0
腾讯 AI-Java 客户端 TAip 升级至4.3.2 版本

腾讯 AI-Java 客户端 TAip 升级至4.3.2 版本 Ronny 3分钟前暂无评论 阅读 3 次 TAIP 是调用腾讯 AI 接口的 Java 客户端,为调用腾讯 AI 功能的开发人员提供了一系列的交互方法。 目前版本已经...

Ronny
07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea新建springCloud项目(5)- 订单服务

1.创建订单api,如下: 2.创建订单实现逻辑 3.新建订单、订单商品表 -- 订单 create table `order_master` ( `order_id` varchar(32) not null, `buyer_name` varchar(32) not null comment......

monroeCode
14分钟前
0
1
游戏开发经验谈(二):对战类全球服游戏的设计与实现

上篇文章《游戏开发经验谈(一):游戏架构里隐藏的五个坑及其应对方案》,我们主要讲解了游戏架构设计当中隐藏的一些坑及其应对方案,错过的小伙伴可以回溯之前的内容。本期内容,将会重点介...

UCloudTech
24分钟前
0
0
Mysql基本语法

一.联合主键 drop table CONTENT_AND_CATALOG;CREATE TABLE `tobebetter`.`CONTENT_AND_CATALOG` ( `ID` VARCHAR(120) NOT NULL , `CONTENT_ID` VARCHAR(120) , `CA......

我是菜鸟我骄傲
25分钟前
0
0
179. centos7 安装mariadb

1. centos7 中安装mariadb 1.1 执行安装 centos7 自带了mariadb yum -y install mariadb mariadb-server 1.2 启动mariadb systemctl start mariadb 1.3 设置开机启动 systemctl enable maria......

Lucky_Me
32分钟前
0
0
【AI实战】动手训练自己的目标检测模型(YOLO篇)

在前面的文章中,已经介绍了基于SSD使用自己的数据训练目标检测模型(见文章:手把手教你训练自己的目标检测模型),本文将基于另一个目标检测模型YOLO,介绍如何使用自己的数据进行训练。 ...

雪饼
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部