CognitiveJ一個Java的人臉圖像識別開源分析庫

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.Gradleios

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.臉部檢測 能夠檢測圖片中的人臉,並返回一組臉部結果集合。dom

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.臉部屬性檢測 顯示所檢測到的臉部的屬性,例如性別、年齡、是否佩戴眼鏡等ide

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 個候選樣本。ui

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();
}
相關文章
相關標籤/搜索