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(); }