Detectron2 : 기본적인 엔드 투 엔드 튜토리얼

https://commons.wikimedia.org/wiki/File:Monocular_Telescope_at_Eiffel_Tower_In_Paris.jpg

역사 우선

2018 년 Facebook AI는 Detectron 이라는 객체 감지 라이브러리를 개발했습니다 . 놀라운 라이브러리 였지만 사용하기가 조금 어려웠습니다. 자신의 이전 버전은 Detectron을 설치하고 샘플 데모를 실행하는 방법에 대한 블로그 게시물 을 작성했습니다 . Detectron은 설치 및 사용이 약간 어려웠으며 Caffe2에 의해 구동되었습니다. 2018 년 이후로 Caffe2 및 PyTorch를 단일 저장소로 가져 오는 많은 코드 변경이 있었으며 이로 인해 Detectron 사용이 어려워졌습니다.

커뮤니티에서 건설적인 피드백이 있었고 Facebook은 v2를 내놓았습니다.

Detectron2의 GitHub 페이지에 따르면 :

Detectron2는 최첨단 객체 감지 알고리즘을 구현하는 Facebook AI Research의 차세대 소프트웨어 시스템입니다.

Detectron2는 이제 TensorFlow 자체와 경쟁하는 정도까지 훨씬 더 활발한 커뮤니티를 보유한 PyTorch를 사용하여 구축되었습니다. 또한 설정 지침이 훨씬 더 쉽고 API를 사용하여 점수 결과를 추출하기가 매우 쉽습니다. YOLO와 같은 다른 프레임 워크는 평범한 다차원 배열로 제공되는 스코어링 결과의 매우 모호한 형식을 가지고 있습니다. YOLO와 함께 일하는 사람은 누구나 점수 결과를 분석하고 처음부터 올바르게 얻는 데 필요한 노력을 상상할 수 있습니다.

충분한 역사,이 게시물에서는 객체 감지를 위해 웹 API를 호스팅하는 Detectron2 도커 이미지를 준비하고 서비스 소비자 역할을하는 작은 웹 애플리케이션에서 사용하는 방법에 대한 종단 간 연습을 안내합니다.

1. 설치

먼저 설치부터 시작하겠습니다. 불행히도 Windows는 지원되지 않지만 컨테이너를 사용하여 우회하겠습니다. 빨리하기 위해, 우리는 GPU에 GPU, CUDA 및 NVIDIA의 모든 멋진 것들을 필요로하므로 CPU 버전을 설치하는 것을 신경 쓰지 않을 것입니다.

따라서 선호하는 텍스트 편집기를 사용하여이 콘텐츠로 Dockerfile을 만듭니다.

먼저 Detectron2 설정 명령에서 요청한대로 Python 버전이 3.6 이상인 기본 이미지를 선택합니다. 다음으로 몇 가지 필수 구성 요소가 설치되고 Detectron2 설치 페이지 에서 동일한 설치 지침 사본이 설치됩니다 . 설치된 버전은 CPU 버전이므로 빠르지는 않지만 튜토리얼에 충분합니다. 마지막으로,이 도커 이미지는 클라이언트의 점수 매기기 호출을 수락하기 위해 웹 API 웹 사이트를 호스팅하므로 Flask가 포함됩니다.

먼저 이미지를 빌드하겠습니다.

docker build --rm . -t ylashin/detectron2:latest

docker run -it ylashin/detectron2:latest bin/bash

다음 test.py스크립트는 docker CLI를 사용하거나 컨테이너에 설치된 nano를 사용하여 컨테이너에 복사해야합니다.

관련된 주요 작업은 다음과 같습니다.

  1. Detectron2 버전을 인쇄합니다.
  2. Lionel Messi와 축구 공에 대한 이미지 다운로드 .
  3. 사전 훈련 된 아키텍처 중 하나를 사용하여 예측 자 인스턴스를 만듭니다.
  4. 예측 자 인스턴스를 사용하여 다운로드 한 이미지의 점수를 매 깁니다.

Detectron2는 작성 당시 버전 0.1.1 인 것 같습니다. 또한 스코어링이 올바르게 수행되고 결과는 YOLO와 같은 평범한 텐서가 아닙니다. 경계 상자 및 예측 클래스와 같이 사용하기 쉬운 멤버가있는 형식화 된 클래스입니다. 나중에 클래스 코드를 사람이 읽을 수있는 이름으로 매핑 할 것입니다. 여기에있는 것은 경계 상자 몇 개와 높은 점수 몇 개와 0 (사람) 및 32 (스포츠 공)의 예상 등급입니다.

PS 해결중인 문제에 따라 올바른 아키텍처를 선택하고 유사한 데이터 세트에 대해 교육되었는지 확인해야합니다. 그렇지 않으면 사용자 지정 교육을 수행해야 할 수도 있습니다.

2. API 게시

다음 단계는 컨테이너 외부에서이 스코어링 기능에 액세스 할 수 있도록하는 것입니다. Flask 웹 API는 이미지를 수락하고 점수 결과를 반환하기 위해 해당 컨테이너에서 호스팅되어야합니다. 단순화를 위해 API는 이미지 URL을 수락하고 자체적으로 다운로드를 수행합니다. 자연스러운 일인 바이너리 페이로드를 허용하지 않지만 약간의 수정으로 동일한 테스트 스크립트를 사용하기 쉽습니다.

또한 응답은 복잡한 구문 분석없이 호출자에게 필요한 충분한 정보가있는 JSON 개체로 직렬화 된 사전이됩니다.

이제 컨테이너가 Flask 웹 서버를 호스팅하므로 웹 API 포트 게시 된 상태로 시작해야합니다. 따라서 현재 컨테이너를 종료하고 포트 게시로 다시 시작하십시오.

docker run -p 8181:5000 -it ylashin/detectron2:latest bin/bash

이제 컨테이너 내에 파일을 만들고 그 안에 web_api.py다음 GitHub 요점을 붙여 넣습니다.

이것은 이전에 사용 된 거의 동일한 테스트 스크립트이며 다음과 같은 차이점이 있습니다.

  • 각 요청마다 사용할 준비가 된 전역 예측 자 인스턴스를 갖도록 일부 리팩토링합니다.
  • Web API 끝점에 매핑 된 함수는 점수를 매길 이미지 URL이있는 JSON 개체로 HTTP 요청을 수신하는 데 사용됩니다.
  • 이 함수는 최종 응답 개체를 준비하기 위해 채점 및 일부 사후 처리를 수행합니다.

python web_api.py

Postman에서 응답을 아래로 스크롤하면 경계 상자, 점수 및 클래스 예측과 같은 예상 점수 필드를 찾을 수 있습니다.

이제 웹 API 서버가 제대로 작동하는 것 같습니다. Dockerfile 정의의 일부로 포함하는 것이 좋습니다. 이렇게하면 빌드 된 이미지를 도커 허브 나 다른 레지스트리로 푸시하고 다른 사람과 공유하거나 매번 빌드 할 걱정없이 사용할 수 있습니다.

업데이트 된 Dockerfile 은이 게시물에 연결된 저장소 에서 찾을 수 있지만 간결성을 위해 Docker 파일에 추가 된 델타는 다음과 같습니다.

WORKDIR /app
COPY web_api.py web_api.py
ENTRYPOINT ["python", "/app/web_api.py"]

docker run -p 8181:5000 -d ylashin/detectron2:latest

실행중인 컨테이너에 만족하면 컨테이너를 종료하고 이미지를 게시 할 수 있습니다.

docker push ylashin/detectron2:latest

클라이언트 앱

휴, 거의 다 왔습니다. 마지막 단계는 RESTful 클라이언트에서 해당 웹 API를 사용하는 것입니다. 하지만 먼저 Azure CLI 및 Azure 컨테이너 인스턴스 서비스를 사용하여 Azure에서 컨테이너를 시작합니다. 컨테이너를 로컬로 계속 사용하려면이 Azure 비트를 건너 뛰고 나중에 제공 될 웹 앱에서 웹 API URL을 조정할 수 있습니다.

az group create --name detectron2 --location eastus
az container create --resource-group detectron2 --name predictor --image ylashin/detectron2:latest --cpu 2 --memory 4  --dns-name-label detectron2api --ports 5000
az container show --resource-group detectron2 --name predictor --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

어디에서나 REST 클라이언트에서 사용할 수있는 웹 API 엔드 포인트가 클라우드에서 실행되고 있습니다. 작은 자바 스크립트 앱을 만들었습니다. 앱은 매우 간단합니다.

  • 텍스트 상자와 버튼이 있습니다.
  • 텍스트 상자에 공개 이미지 URL을 입력하고 버튼을 클릭합니다.
  • 앱은 API를 호출하고 요청 된 이미지를 렌더링하고 경계 상자를 그립니다.

git clone https://github.com/ylashin/detectron2-tutorial
cd '.\3. client\'
npm install
npm install -g browserify
npm install -g watchify
watchify index.js -o bundle.js

이 게시물의 설치 섹션에 사용 된 이미지는 위에서 시도한 것입니다. 메시와 공의 경계 상자, 점수 및 레이블을 볼 수 있습니다. API의 JSON 응답과 함께 개발자 콘솔 창이 표시됩니다.

이 웹 앱에서 고려해야 할 주요 부분은 매우 간단하고 직관적 인 API 응답을 구문 분석하고 사용하는 것입니다.

나머지 코드는 모두 npm 패키지를 통한 배관 및 HTML 캔버스 렌더링입니다.

마무리

우리는 Detectron2의 표면을 거의 긁지 않았으며, 더 많은 놀라운 기능을 탐색 할 수 있습니다. 또한 게시물을 가능한 한 간결하게 만들기 위해 많은 단축키가 만들어졌습니다. 알다시피, Detectron2는 기능이 있지만 더 중요한 사용 편의성 때문에 모든 개발자 도구 상자에 매우 환영받는 추가 기능입니다.

Azure에서 컨테이너를 생성 한 경우 리소스 그룹을 삭제하거나 실험이 완료되면 컨테이너를 중지하십시오. 그렇지 않으면 크레딧이 계속 소진됩니다.

자원

Detectron 샌드 박스 준비를위한 빠르고 쉬운 가이드

Suggested posts

딥 러닝 및 MovieLens 데이터를 활용하여 영화 추천 예측 (2 부)

딥 러닝 및 MovieLens 데이터를 활용하여 영화 추천 예측 (2 부)

작성자 : Annie Phan, Drew Solomon, Yuyang Li 및 Roma Coffin 개요 : 이전 게시물에 이어 이제 우리의 주요 목표는 추천 작업 응용 프로그램을위한 협업 필터링을위한 새로운 딥 러닝 아키텍처를 구현하는 것입니다. 특히 변압기 개발 및 튜닝을 목표로합니다.

계층화 된 정규화 : 추가 정보를 사용하여 신경망의 성능 향상

EEG 기반 감정 분류 데이터 세트에서 연구 된 심층 신경망 훈련을위한 새로운 정규화 방법.

계층화 된 정규화 : 추가 정보를 사용하여 신경망의 성능 향상

몇 달 전, 저는 뇌 영상 방법을 개발할 때 가장 어려운 문제인 참가자들 간의 EEG 활동의 열악한 동질성에 빠르게 직면했을 때 EEG 기록을 사용하여 유발 된 감정을 분류하는 방법을 연구하기 시작했습니다. 이 문제는 그림 1을 사용하여 쉽게 설명 할 수 있으며, 플롯은 먼저 각 비디오 및 참가자에 대한 각 EEG 기록에 대한 특징을 추출한 다음 데이터를 포함하기 위해 차원 감소 도구 UMAP를 구현하여 얻었습니다.

Related posts

머신 러닝 모델 품질 향상을위한 우리의 탐구

머신 러닝 모델 품질 향상을위한 우리의 탐구

이전 블로그 게시물에서 오늘날의 기계 학습 생태계에서 품질과 신뢰가 얼마나 중요한 문제인지 살펴 보았습니다. 읽을 기회가 없다면이 게시물에 뛰어 들기 전에 읽어 보는 것이 좋습니다.

인공 지능 및 학습

인공 지능 및 학습

인공 지능 (AI) 알고리즘이 대중화 되었기 때문에, 특히 엔터테인먼트 및 소셜 미디어의 가장 인기있는 제품에 고용되거나 차를 성공적으로 운전할 수 있기 때문에 이전과는 달리 공개 조사를 받았습니다. 모든 종류의 분야에서 온 사람들은 Elon Musk 또는 Steven Hawking과 같은 AI에 대해 이야기하는 유명 과학자의 영향을 받아 알고리즘을 우리 삶의 특정 측면에 허용하는 윤리적 의미와 그들의 경력이 새로운 기술로 대체 될 위험이 있습니다.

앰비언트 인텔리전스 — 보이지 않는 인터페이스

인간-컴퓨터 상호 작용을 인간-환경 상호 작용으로 대체하기 위해 Ambient Intelligence가 설정되는 방식

앰비언트 인텔리전스 — 보이지 않는 인터페이스

미디어, Ex Machina 및 I, Robot과 같은 공상 과학 영화, Elon Musk와 같은 몇몇 노골적인 공상가 덕분에 대부분의 사람들은 이제 인공 지능 (AI), 다양한 하위 집합 및 많은 잠재력에 대한 기본적인 이해를 가지고 있습니다. 응용 프로그램. 하지만 AmI (Ambient Intelligence)는 어떻습니까? 들어 보셨나요? 이 신흥 분야가이 시점에서 10 년 이상 지속 되었음에도 불구하고 걱정하지 마십시오.

AI 혁명에서 소프트웨어 엔지니어조차 안전하지 않을 수 있습니다.

AI 혁명에서 소프트웨어 엔지니어조차 안전하지 않을 수 있습니다.

기계 학습 및 유사한 기술이 경제에 미치는 영향을 평가하는 논쟁에서 세계 전문가들은 크게 두 개의 진영으로 나뉩니다. 우리가 낙관론자라고 부르는 한 진영은 과거의 기술적 격변과 마찬가지로이 디지털 혁명이 경제를 탈선시키고 실업률을 영원히 전염병 수준으로 치 솟게하지 않을 것이라고 생각합니다.