AWS Lambda의 물체 감지 API(Flash+ylolov5)를 사용한 구축

개요


AWS Lambda를 사용하여 물체 감지 API(Flash+ylolov5)를 구축합니다.AWS 람바다를 사용하여 머신러닝의 추론 모델을 구축함으로써 비용 절감을 목표로 한다.
아래의 보도를 참고하게 해 주세요.
https://zenn.dev/gokauz/articles/72e543796a6423
창고의 내용을 업데이트하고 API Gateway에서 사용법 등을 추가한다.

Lambda에 함수 등록


다음 GiitHub 창고를 복제합니다.
git clone https://github.com/ldasjp8/yolov5-lambda.git

로컬 실행


그리고venv를 사용하여 가상 환경을 만들고 모듈을 설치합니다.
cd yolov5-lambda
python -m venv venv
source venv/bin/activate
cd yolov5
pip install --upgrade pip
pip install -r requirements.txt
이후 다음 동작을 수행할 때 물체 검출 결과의 json 데이터를 출력합니다.
python app.py

프로그램 설계


본문 첫머리에서 말한 바와 같이 우리는 다음과 같은 보도의 성과를 이용했다.
https://zenn.dev/gokauz/articles/72e543796a6423
Jupter Notebook을 사용합니다.
cd ../
jupyter notebook
Jupyter Notebook이 시작되면 다음build_and_test.ipynb을 선택하여 단계에 따라 실행합니다.

이번에 제작된 창고 변경의 한 가지로 먼저 conf.json 파일을 불러와야 한다.

clone의 창고에 conf.json.template가 보관되어 있기 때문에 conf.json에서 이름을 변경하고 profile 프로젝트에서 AWS CLI에 프로필 이름을 제공해 주십시오.
mv conf.json.template conf.json
code conf.json
Notebook을 실행할 때 docker를 시작해야 합니다.

(선택 사항) AWS Lambda에서 테스트 수행


다음은 AWS Lambda에서 테스트한 실행 방법입니다.또한 상기 노트북에서 추론을 집행하기 때문에 본 작업은 필수적이지 않다.(이것은 나의 비망록이다.)
Lambda의 함수 페이지에 액세스하여 [테스트] 탭을 선택합니다.
그리고 다음과 같이 템플릿에서'agigateway-aws-proxy'를 선택하면 샘플로 사용된 이미지의base64 인코딩된 문자열을 body 프로젝트에 제공합니다.그림의base64 인코딩 문자열 제작에 관하여 상기 노트북의'추론 시도'항목에 참고하십시오.

다음과 같이 실행 결과를 확인할 수 있습니다.

API Gateway 설정


API Gateway의 API 생성에서 REST API의 구문을 클릭합니다.

API 이름을 지정하고 API 생성 버튼을 클릭합니다.

리소스 만들기


이번에는'detect'라는 자원을 만들었다.아래와 같이 '동작' > '자원 만들기' 를 선택하여 자원 이름에 'detect' 를 제공하고 '자원 만들기' 단추를 누르십시오.

생성 방법


그런 다음 POST 메서드를 작성합니다.다음과 같이 작업 > 메서드 제작에서 POST를 입력합니다.


다음 방법의 설정 화면에서 "Lambda 프록시 통합 사용"을 선택하여 "Lambda 함수"에 생성된 Lambda 함수의 이름을 입력하고 저장합니다.

권한 추가 대화 상자를 표시하고 OK 버튼을 누릅니다.

그런 다음 메소드 요청을 선택합니다.

HTTP 요청 머리글에 Content-Type을 추가합니다.

그런 다음 화면 왼쪽에 있는 설정을 선택하여 바이너리 미디어 유형에/를 제공합니다.용도에 따라 설정을 변경하십시오.

그리고 화면 왼쪽에 있는 "자원"을 선택하고 테스트를 선택하십시오.

그리고 요청 본문에 다음 수치를 입력하고 '테스트' 단추를 누르십시오.

결과는 다음과 같은 결과를 얻을 수 있다면 성공할 것이다.

API 프로그램


테스트가 완료되면 API 프로그램 을 선택합니다.

관문 이름 (예: dev) 을 주고 "depro"를 누르십시오.

그 결과는 다음과 같습니다. URL을 발행합니다.

다음 그림과 같이 그 URL을 사용하십시오. 결과가 성공하면.
curl --data-binary @bus.jpg  https://z7weh36vfg.execute-api.us-east-1.amazonaws.com/dev/detect
이하의 Google Colab도 시도할 수 있습니다.
https://colab.research.google.com/drive/1f0hUKi6Z6t0-zXaAwDW-j8fqshi43K8J?usp=sharing

사용자 정의 도메인 설정


API Gateway


아래와 같이 "사용자 정의 도메인 이름"을 선택하고 "만들기"단추를 선택하십시오.

그런 다음 다음과 같이 도메인 이름 입력, 끝점 유형 및 ACM 인증서를 설정합니다.

나중에 마이그레이션할 다음 화면에서 레이블 API 매핑을 선택하고 화면 오른쪽에 있는 API 매핑 설정을 선택합니다.

그런 다음 방금 만든 API 이름과 관문 이름을 입력하여 저장합니다.

Route 53


Route 53에서 이전에 지정한 사용자 정의 도메인 이름에 따라 정보를 입력합니다.

결과는 다음과 같이 API를 사용자 정의 도메인에 공개할 수 있습니다.
curl --data-binary @bus.jpg https://yolov5-lambda.hi-dd.com/detect

(참조) ECR 및 lambda 함수 업데이트 방법


이번에 새로 추가된 노트북update.ipynb으로 창고에 보관한다.생성된 ECR 및 lambda 함수를 한 번에 업데이트하는 데 사용됩니다.
사용 시 conf.json에서 제작된 리포지토리name 및 functiname을 입력한 후 Notebook을 실행합니다.

총결산


이 글은 AWS Lambda를 사용하여 물체 탐지 API(Flash+ylolov5)를 구축했다.
AWS 람바다를 이용해 머신러닝의 추론 모형을 구축할 때 이 기사를 참고할 수 있다면 좋겠다.

좋은 웹페이지 즐겨찾기