웹 inference.js

inference.js로 브라우저에서 엣지 실시간 예측을 실행하세요

inferencejs 는 Roboflow에서 학습된 모델을 사용하여 브라우저를 통해 실시간 추론을 가능하게 하는 JavaScript 패키지입니다.

자세한 내용은 inferencejs 참조 문서 여기에서 확인하세요

대부분의 비즈니스 애플리케이션의 경우, Hosted API 가 적합합니다. 그러나 많은 소비자 애플리케이션과 일부 엔터프라이즈 사용 사례에서는 서버 호스팅 모델을 사용하는 것이 비현실적일 수 있습니다(예: 사용자의 대역폭이 제한되었거나 원격 API를 사용할 때보다 더 낮은 지연 시간이 필요한 경우).

학습 리소스

  • 웹캠으로 내 모델 사용해보기: 다음에서 웹캠 데모를 체험할 수 있습니다: hand-detector 모델 데모 (공개 EgoHands 데이터셋).

  • 대화형 Replit 환경: Repl.it에 "Getting Started" 프로젝트를 게시했으며, 다음을 보여주는 튜토리얼이 포함되어 있습니다: Repl.it 템플릿을 사용하여 YOLOv8 모델을 배포하는 방법.

  • GitHub 템플릿: Roboflow 홈페이지는 를 사용하여 inferencejs COCO inference 위젯을 구동합니다. README에는 GitHub Pages를 사용해 웹에 모델을 배포하기 위해 리포지토리 템플릿을 사용하는 방법이 안내되어 있습니다.

  • 문서: 특정 함수에 대해 더 자세한 정보를 원하신다면, inferencejs와 관련하여 문서 페이지 를 확인하거나 아래 가이드에서 언급된 inferencejs 메서드를 클릭하면 해당 문서로 이동합니다.

지원 모델

inferencejs 는 현재 다음 모델 아키텍처를 지원합니다:

설치

추론 기능을 추가하려면 inference 를 프로젝트에 추가하세요. npm으로 설치하거나 페이지의 <head> 태그에 스크립트 태그를 추가하면 됩니다.

npm install inferencejs
<script src="https://cdn.jsdelivr.net/npm/inferencejs"></script>

초기화 inferencejs

인증

다음에서 publishable_key 를 Roboflow 워크스페이스 설정에서 얻을 수 있습니다.

먼저 다음을 import 합니다: InferenceEngine 그리고 새로운 inference engine 객체를 생성합니다.

inferencejs 는 여러 모델을 메인 UI 스레드를 막지 않고 사용할 수 있도록 webworker를 사용합니다. 각 모델은 다음을 통해 로드됩니다: InferenceEngine 필요한 스레드 관리 작업을 추상화해 주는 우리의 webworker 매니저.

import { InferenceEngine } from "inferencejs";
const inferEngine = new InferenceEngine();

이제 roboflow에서 귀하의 publishable_key 와 모델 메타데이터(모델 이름 및 버전), 그리고 confidence threshold 및 overlap threshold와 같은 구성 파라미터를 사용하여 모델을 로드할 수 있습니다.

const workerId = await inferEngine.startWorker("[model name]", "[version]", "[publishable key]");

inferencejs 는 선택한 모델을 실행하는 워커를 시작합니다. 반환된 워커 ID는 다음의 워커 ID와 일치합니다: InferenceEngine 이를 사용하여 추론을 수행합니다. 모델에서 추론하려면 다음을 호출할 수 있습니다: infer 메서드, 대상: InferenceEngine.

이제 이미지를 로드하고 해당 워커에서 추론해 보겠습니다.

const image = document.getElementById("image"); // id가 `image`인 이미지 요소 가져오기
const predictions = await inferEngine.infer(workerId, image); // 이미지에서 추론

이는 다양한 이미지 형식을 받을 수 있습니다(HTMLImageElement, HTMLVideoElement, ImageBitmap, 또는 TFJS Tensor).

이는 예측의 배열을 반환합니다(이 경우 클래스는 RFObjectDetectionPrediction )

구성

에서 예측을 필터링하는 방식을 사용자 지정 및 구성하려면, inferencejs 워커 생성 시 파라미터를 전달할 수 있습니다.

const configuration = {scoreThreshold: 0.5, iouThreshold: 0.5, maxNumBoxes: 20};
const workerId = await inferEngine.startWorker("[model name]", "[version]", "[publishable key]", configuration);

또는 추론 시 구성 옵션을 전달할 수 있습니다

const configuration = {
    scoreThreshold: 0.5,
    iouThreshold: 0.5,
    maxNumBoxes: 20
};
const predictions = await inferEngine.infer(workerId, image, configuration);

Last updated

Was this helpful?