TOP

균열 검출 API

균열 검출 API는 이미지에서 균열에 해당하는 픽셀 정보를 식별하는 기술

연구 책임자

지능정보융합연구실

이성희

등록일

2025-01-14

누적 호출수

607

Keyword

균열 검출,도로

카테고리

시각지능

균열 검출 API란?

균열 검출 API는 이미지에서 균열에 해당하는 픽셀 정보를 식별하는 기술입니다. 이 API는 도로 균열 이미지 데이터셋을 기반으로 학습되었으며, 도로 이미지에서 균열을 효과적으로 검출할 수 있도록 설계되었습니다. RESTful 구조의 HTTP 기반 Open API로 제공되며, JSON 포맷의 입력을 지원합니다. 인증 방식은 ETRI에서 제공하는 Access Key를 사용합니다.

API 호출 1일 허용량

기술명 API명 1일 허용량
이미지 인식 기술 균열 검출 API 5,000건/일

알림 사항

1. 입력 및 출력 이미지 크기
본 모델은 입력 이미지 크기를 224×224로 고정하여 학습되었습니다. 결과 또한 동일한 해상도로 반환됩니다. 해상도가 높은 이미지를 그대로 입력할 경우 탐지 성능이 저하될 수 있습니다.
2. 고해상도 이미지 처리 방법
고해상도 이미지는 224×224 크기로 나누어 여러 장의 이미지로 API를 호출한 후, 각각의 결과를 합쳐서 최종 결과를 생성하는 방법을 적용 시 탐지 성능이 더 좋을 수 있습니다.

균열 검출 API 사용하기

상호참조 해결 API는 REST API이며, 다의어 조회의 대상 어휘 데이터를 HTTP 통신으로 ETRI Open API 서버에 전달하면 됩니다. 서버가 제공하는 REST API의 URI는 다음과 같으며 POST 방식으로 호출해야 합니다.

http://epretx.etri.re.kr:8000/api/CrackDetect

[HTTP Request Header]
"Authorization" : "YOUR_ACCESS_KEY"

[HTTP Request Body]
{
  "request_id": "reserved field",	
  "argument": {
            "file": "{이미지 base64 인코딩}"
            "type": "jpg or png"
  }  
위와 같은 HTTP 요청을 e-PreTX 서버로 전달하면 서버는 JSON 형태의 Text 데이터를 HTTP 응답 메시지로 반환합니다. 다음은 HTTP 응답 예제 입니다.
[HTTP Response Header]
Access-Control-Allow-Origin:*
Connection:close
Content-Length:0
Content-Type:application/json; charset=UTF-8

[HTTP Response Body]
{
  "request_id": "reserved field",
  "result": 0,
  "return_type": "com.google.gson.internal.LinkedTreeMap",
  "return_object": {균열 검출 해결 분석 결과 JSON}
}

구현 예제(Python)

python 3.0을 기준으로 작성되었습니다.
HTTP 통신을 위해 urllib3 라이브러리를 사용하여 제공하고 있습니다. Python 3.0 이하의 버전에서 예제를 실행하기 위해서는 별도로 urllib3의 설치가 필요합니다.
설치에 대한 설명은 https://pypi.python.org/pypi/urllib3 를 참고하시기 바랍니다.
urllib3 라이브러리에 대한 자세한 설명은 https://urllib3.readthedocs.io/en/latest/ 에서 확인 하실 수 있습니다.
    #-*- coding:utf-8 -*-
  import urllib3
  import json
   
  openApiURL = "http://epretx.etri.re.kr:8000/api/CrackDetect"
  accessKey = "YOUR_ACCESS_KEY"
  imageFilePath = "IMAGE_FILE_PATH"
  type = "IMAGE_FILE_TYPE"

  file = open(imageFilePath, "rb")
  imageContents = base64.b64encode(file.read()).decode("utf8")
  file.close()
   
  requestJson = { 
      "argument": {
          "type": type,
          "file": imageContents
      }
  }
   
  http = urllib3.PoolManager()
  response = http.request(
      "POST",
      openApiURL,
      headers={"Content-Type": "application/json; charset=UTF-8","Authorization" :  accessKey},
      body=json.dumps(requestJson)
  )
   
  print("[responseCode]" + str(response.status))
  print("[responBody]")
  print(str(response.data,"utf-8"))
                                        

균열 검출 검출 레퍼런스

다음은 파라미터에 대한 설명입니다.
Field 명 타입 필수 여부 설명
access_key String O API 사용을 위해 ETRI에서 발급한 사용자 API Key 입니다.
argument Object O API 사용 요청 시 분석을 위해 전달할 내용입니다.
file String O 균열 검출하고자 하는 이미지를 Base64 문자열 변환한 내용
type String O 이미지 파일의 확장자
분석된 결과는 다음과 같은 내용이 포함되어 있습니다.
구분 JSON Key 이름 설명
균열 검출 기본 정보 prediction 크랙이 있는 픽셀 값
균열 검출API의 오류 코드 목록은 다음과 같습니다.
http status code result reason 설명
403 -1 Empty Auth Header Authorization 헤더가 없는 경우
403 -1 Invalid Key KEY API 키가 없는 경우
403
-1 Blocked KEY API 키가 관리자에 의해서 차단된 경우
403
-1 Daily Limit Exceeded 일간 호출 제한에 걸린 경우
403
-1 Monthly Limit Exceeded
월간 호출 제한에 걸린 경우
403
-1 Yearly Limit Exceeded
연간 호출 제한에 걸린 경우
403
-1 Too Many Keys 같은 IP에서 여러 API 키가 사용된 경우
403
-1 Too Many IPs 하나의 API 키를 여러 IP 에서 사용한 경우
403
-1 Not Allowed IP API 호출 가능한 IP 가 아닌경우
(API 설정에서 허용된 IP가 아닌경우)
403
-1 Not Allowed Subpath 하위경로 접근 제한이 되어 있는 경우
403 -1 Invalid API
등록되지 않은 API를 요청한 경우
408 -1
Request Timeout
서버의 요청 대기가 시간을 초과한 경우
413
-1 Body Size Limit Exceeded
요청 바디가 설정된 값보다 큰 경우
429
-1 Concurrent Limit Exceeded
연속호출 허용 범위를 넘어서 호출한 경우
500 -1 Internal Server Error 내부 오류 발생한 경우