Aspose.Imaging 클라우드 로고

객체 감지는 컴퓨터 비전 및 이미지 처리와 관련된 컴퓨터 기술로, 디지털 이미지와 비디오에서 특정 클래스(예: 사람, 건물 또는 자동차)의 의미적 객체 인스턴스를 감지하는 것을 다룹니다. Cloud API를 사용하여 객체 감지를 프로그래밍 방식으로 수행해야 하는 경우 Aspose.Imaging Cloud API가 완벽한 선택입니다. 또한 고객의 편의를 위해 언어별 SDK도 개발했습니다. 따라서 Aspose.Imaging Cloud Java SDK는 Java를 사용한 객체 인식에 적합한 선택입니다.

최근 릴리스 버전에서 SDK에 객체 감지 기능을 통합했으며, 이 기능의 도움으로 사용자는 레이블과 확률에 따라 입력 이미지에서 객체 경계를 감지할 수 있습니다. API는 현재 3가지 래스터 이미지 형식(BMP, JPG, JPEG2000)을 지원하며, SSD(Single Shot Detector)는 객체를 인식하는 감지 방법입니다. 그럼에도 불구하고, 후속 릴리스에서는 여러 다른 방법과 이미지 형식을 통합할 계획입니다. API를 통해 작업이 수행되면 감지된 객체 경계, 레이블 및 점수가 있는 JSON 객체나 객체 경계와 레이블이 있는 결과 이미지를 얻을 수 있습니다. 현재 사람, 자전거, 자동차, 고양이, 개, 말 등의 객체를 식별할 수 있습니다. 사용 가능한 레이블 목록에 대한 자세한 내용은 다음 링크를 방문하세요.

객체를 감지하고 이미지에서 강조 표시

이미지 내부의 객체를 감지하는 데는 두 가지 옵션이 있습니다. 즉, 저장소에 있는 이미지에 대한 작업을 수행하거나 요청 본문에 전달된 이미지에 대한 작업을 수행하는 것입니다.

클라우드 스토리지에서 이미지 처리

첫 번째 방법은 먼저 Cloud Storage에 이미지를 업로드한 다음 API URL에 이름을 전달해야 합니다. 객체 감지 후 API는 응답에서 결과 이미지를 반환합니다.

또한 클라우드 저장소가 파일을 저장하고 액세스하는 빠르고 쉬운 방법이라는 것을 알고 있습니다. 객체 감지 절차는 클라우드 저장소에 저장된 이미지에서 쉽게 수행할 수 있으며 결과 파일은 응답 헤더에 반환됩니다. 다음 cURL 명령에서 객체 감지 작업은 여러 객체가 포함된 이미지에서 수행되며 인수는 감지 모델로 SSD(Single Shot Detector)를 사용하고 임계값을 50으로 유지하고 결과 이미지에 객체 레이블을 포함하고 객체 감지 점수도 지정하도록 지정됩니다. 또한 allowedLabels 인수에 대해 허용되는 레이블의 쉼표로 구분된 목록으로 Zebra, giraffe, horse를 지정했습니다. 그럼에도 불구하고 로컬 시스템에 결과 파일을 저장하려면 -o를 사용하여 결과 파일의 위치를 지정해 볼 수 있습니다.

cURL 명령

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/71ElMFUKIvL.jpg/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=zebra, giraffe, horse" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o c:/pdftest/mydetected.jpeg

자바 코드 조각

 public void VisualBoundsAnImageInCloud() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = "blue";
	String folder = CloudPath; // Input file is saved at the Examples folder in the storage
	String storage = null; // We are using default Cloud Storage

	GetVisualObjectBoundsRequest request = new GetVisualObjectBoundsRequest(getSampleImageFileName(), method, threshold, includeLabel, includeScore, color, folder, storage);

	byte[] resultImage = ImagingApi.getVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
객체 감지를 위한 소스 파일

이미지 1:- 객체 감지를 위한 소스 파일

감지된 객체가 포함된 결과 이미지

이미지 2: 인식된 객체가 포함된 결과 파일

저장소 없이 이미지 처리

이미지 처리 API는 로컬 저장소에서 이미지를 요청 본문으로 직접 전달할 수 있는 두 번째 방법(POST)을 제공합니다. 또한 outPath 매개변수 값을 지정하여 결과 이미지를 Cloud Storage에 저장할 수 있습니다. 그러나 값을 지정하지 않으면 응답에 스트리밍된 이미지가 포함됩니다.

cURL 명령

curl -X POST "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow" -H "accept: application/json" -H "authorization: Bearer <jwt token>" -H "Content-Type: multipart/form-data" -d {"imageData":{}}

요청 URL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow

자바 코드 조각

public void VisualBoundsAnImageInRequestBody() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = null;
	String outPath = null;
	String storage = null; // We are using default Cloud Storage

	byte[] inputStream = Files.readAllBytes(Paths.get(ExampleImagesFolder, getSampleImageFileName()));
	CreateVisualObjectBoundsRequest request = new CreateVisualObjectBoundsRequest(inputStream, method, threshold, includeLabel, includeScore, color, outPath, storage);	

	byte[] resultImage = ImagingApi.createVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
말이 있는 입력 이미지

그림 3: 달리는 말이 있는 입력 이미지

이미지에서 말 물체가 감지되었습니다

그림 4: 98% 점수로 감지된 말

결론

이 글에서는 Java SDK를 사용하여 객체 인식과 관련된 기능을 살펴보았습니다. 이 SDK는 너무 놀라워서 한 번의 시도로 여러 객체를 정확하게 판별할 수 있습니다. 사용자의 편의를 위해 객체를 강조 표시하고 그에 따라 레이블을 지정할 수 있습니다. API를 사용하는 동안 문제가 발생하면 무료 제품 지원 포럼을 통해 언제든지 문의해 주십시오.

관련기사

자세한 내용은 다음 링크를 참조하세요.