5.5 KiB
IoT 기기에서 객체 감지기 호출하기 - Wio Terminal
객체 감지기가 게시되면 IoT 기기에서 사용할 수 있습니다.
이미지 분류기 프로젝트 복사하기
대부분의 재고 감지기는 이전 강의에서 만든 이미지 분류기와 동일합니다.
작업 - 이미지 분류기 프로젝트 복사하기
-
제조 프로젝트의 2강의 단계를 따라 ArduCam을 Wio Terminal에 연결하세요.
카메라를 고정된 위치에 두고 싶을 수도 있습니다. 예를 들어, 케이블을 상자나 캔 위에 걸거나, 양면 테이프로 카메라를 상자에 고정하는 방법이 있습니다.
-
PlatformIO를 사용하여 새로운 Wio Terminal 프로젝트를 만드세요. 이 프로젝트의 이름을
stock-counter
로 지정하세요. -
제조 프로젝트의 2강의 단계를 따라 카메라에서 이미지를 캡처하세요.
-
제조 프로젝트의 2강의 단계를 따라 이미지 분류기를 호출하세요. 이 코드의 대부분은 객체를 감지하는 데 재사용됩니다.
분류기 코드를 이미지 감지기로 변경하기
이미지를 분류하는 데 사용한 코드는 객체를 감지하는 코드와 매우 유사합니다. 주요 차이점은 Custom Vision에서 얻은 URL과 호출 결과입니다.
작업 - 분류기 코드를 이미지 감지기로 변경하기
-
main.cpp
파일 상단에 다음 포함 지시문을 추가하세요:#include <vector>
-
classifyImage
함수를detectStock
으로 이름을 변경하세요. 함수 이름과buttonPressed
함수에서의 호출 모두 변경해야 합니다. -
detectStock
함수 위에 낮은 확률의 감지를 필터링하기 위한 임계값을 선언하세요:const float threshold = 0.3f;
이미지 분류기는 태그당 하나의 결과만 반환하지만, 객체 감지기는 여러 결과를 반환하므로 낮은 확률의 결과는 필터링해야 합니다.
-
detectStock
함수 위에 예측을 처리하는 함수를 선언하세요:void processPredictions(std::vector<JsonVariant> &predictions) { for(JsonVariant prediction : predictions) { String tag = prediction["tagName"].as<String>(); float probability = prediction["probability"].as<float>(); char buff[32]; sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0); Serial.println(buff); } }
이 함수는 예측 목록을 받아 시리얼 모니터에 출력합니다.
-
detectStock
함수에서 예측을 반복하는for
루프의 내용을 다음으로 교체하세요:std::vector<JsonVariant> passed_predictions; for(JsonVariant prediction : predictions) { float probability = prediction["probability"].as<float>(); if (probability > threshold) { passed_predictions.push_back(prediction); } } processPredictions(passed_predictions);
이 코드는 예측을 반복하며 확률을 임계값과 비교합니다. 임계값보다 높은 확률을 가진 모든 예측은
list
에 추가되고processPredictions
함수로 전달됩니다. -
코드를 업로드하고 실행하세요. 카메라를 선반 위의 물체에 향하게 하고 C 버튼을 누르세요. 시리얼 모니터에서 출력을 확인할 수 있습니다:
Connecting to WiFi.. Connected! Image captured Image read to buffer with length 17416 tomato paste: 35.84% tomato paste: 35.87% tomato paste: 34.11% tomato paste: 35.16%
💁 이미지에 적합한 값을 찾기 위해
threshold
를 조정해야 할 수도 있습니다.촬영된 이미지를 확인할 수 있으며, Custom Vision의 Predictions 탭에서 이러한 값을 볼 수 있습니다.
💁 이 코드는 code-detect/wio-terminal 폴더에서 찾을 수 있습니다.
😀 재고 카운터 프로그램이 성공적으로 작동했습니다!
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.