컴퓨터 비전 분야에서 인공지능은 크게 두 가지 일반적인 작업을 수행하는데, 하나는 분류이고 다른 하나는 객체 탐지이다.
분류:이미지가 어떤 분류에 속하는지를 판단합니다. 예를 들어, 고양이인지 개인지 분류합니다.
목표 탐지:이미지 내 여러 개의 서로 다른 대상의 위치, 수량 및 크기를 식별하는 데 사용됩니다.
이전 비디오 튜토리얼에서 우리는 OpenMV4 Plus를 사용하여 다양한 물체를 분류하기 위한 신경망을 온라인으로 훈련시키는 방법을 설명했습니다. 이를 통해 OpenMV의 시야에 들어온 영상이 특정 물체인지 실시간으로 판단할 수 있으며, 예를 들어 사람의 얼굴에 마스크가 착용되어 있는지 여부를 확인할 수 있습니다. 그러나 얼굴 또는 마스크의 위치 좌표 및 얼굴 수량은 출력할 수 없습니다.
목표 감지 기술은 분류 작업보다 훨씬 복잡하고 계산량도 훨씬 크기 때문에 마이크로컨트롤러 분야에서는 매우 드물다. OpenMV의 주제어 MCU는 STM32H7이며, 현재 당사 OpenMV에 단일 마이크로컨트롤러에서 목표 감지와 유사한 작업을 실행할 수 있는 새로운 기능이 추가되었으며, 성능이 매우 뛰어나다.

오늘 우리는 여러분께 설명드리겠습니다실제 도로 환경에서의 교통 표지판 검출을 위한 훈련 데모이며, 실제 도로에서의 교통 표지판을 검출합니다.예를 들어 경적 금지, 주차 금지, 최고 속도 80km/h 등 실제 도로 환경을 의미하며, 실험실 내 무간섭 환경을 의미하지 않습니다.
해당 프로젝트의 전체 내용은 다음 주소에서 확인할 수 있으며, 모든 코드와 모델이 포함되어 있습니다: https://book.openmv.cc/project/traffic-sign.html
일반적으로 알려져 있듯이, 실제 환경은 특히 도로 환경에서 매우 복잡하며, 간섭 요인이 많습니다. 우리는 스마트폰 등의 장치를 사용하여 실제 환경에서 교통 표지판 이미지를 촬영하였고, OpenMV 파트너사인 EdgeImpulse 온라인 웹사이트를 통해 모델을 학습시켰습니다. 이 과정에서 약 270장의 이미지를 라벨링하였으며, 학습 시간은 단 10분이 소요되었습니다. 학습된 모델의 F1 스코어 정확도는 92%에 달했고, OpenMV에서의 실행 프레임률은 초당 10프레임에 이르러, 매우 부드럽고 정확한 성능을 보였습니다.
사용자는 당사의 동영상 튜토리얼을 참고하여 원하는 대상(예: 다양한 숫자, 다양한 과일, 다양한 표지물, 다양한 부품, 또는 특정 불규칙한 대상 등)을 검출하도록 모델을 학습시킬 수 있으며, 이를 통해 해당 대상의 수량, 좌표 및 객체 유형 이름 등을 인식할 수 있습니다.
주의 사항:이 영상 강의에서 다루는 신경망 기반 목표 점 검출 기능은 OpenMV4 H7 Plus뿐만 아니라 OpenMV4 H7에도 적용 가능합니다. 훈련된 FOMO 목표 점 검출 모델의 크기가 작고 성능이 우수하며 용량이 수십 KB에 불과하기 때문입니다. 따라서 메모리 용량이 OpenMV4 H7 Plus보다 작은 OpenMV4 H7에서도 약간 더 작은 규모의 모델을 훈련하여 실행할 수 있습니다.
다음은 원리에 대한 간략한 설명입니다:
OpenMV에서 FOMO 객체 포인트 검출의 주요 설계 결정은 많은 객체 검출 문제에서 실제로 객체의 크기가 필요하지 않고 단지 이미지 내에서의 위치만 필요하다는 아이디어에 기반합니다. 일단 객체의 위치를 알게 되면, OpenMV를 이용해 자동차를 인식된 목표물 쪽으로 이동시키거나, 드론을 특정 지점에 착륙시키거나, 로봇 팔을 제어하여 특정 대상 물체를 집는 등의 후속 작업을 수행할 수 있습니다.
FOMO 모델은 EdgeImpulse에서 마이크로컨트롤러 환경을 위해 특별히 설계한 모델로, 일반적인 객체 검출과 달리 여러 객체의 위치와 수량만 감지할 수 있으며, 구체적인 크기는 파악할 수 없습니다.
FOMO 모델의 기본 원리는 매우 간단하고 유연합니다. 먼저 이미지를 블록 단위로 분할하며, 각 블록은 8×8 픽셀 크기입니다. 해상도가 96×96인 경우 총 12×12개의 셀로 구성되며, 해상도가 360×360인 경우에는 총 40×40개의 셀로 구성됩니다. 이후 각 셀에 대해 독립적으로 이미지 분류를 수행합니다.
YOLO V5 또는 MobileNet SSD와 비교할 때 FOMO는 다수의 소형 객체에서 훨씬 우수한 성능을 보입니다. FOMO 객체 포인트 검출은 MobileNet SSD보다 30배 빠릅니다.
감지 대상이 유사한 크기를 갖는 경우, 예를 들어 인식하려는 표지물의 크기가 거의 비슷하여 매우 큰 물체와 매우 작은 물체가 혼재하지 않는 경우, FOMO의 성능이 더욱 향상됩니다.
OpenMV는 EdgeImpulse를 사용하여 온라인에서 신경망 객체 탐지 모델을 학습시키며, 주로 다음 단계로 구성됩니다: 이미지 데이터셋 수집 및 업로드, 객체 라벨링, 학습, 모델 테스트, 배포.
*이미지 데이터셋 수집: 실제 인식 대상 환경에서 특정 객체를 촬영하여 이미지 데이터를 수집합니다. 인식을 수행할 환경에서 직접 이미지를 촬영하여 수집하며, 실제 학습 환경과 실제 검출 환경이 거의 동일하므로 성능이 더욱 향상됩니다.
* 표시 대상: 훈련, 탐지 대상 위치 및 대상 이름을 위한 후속 작업을 용이하게 하기 위해 데이터셋 내에서 탐지할 모든 대상을 사각형으로 표시하고 각 대상의 이름과 정확히 매칭합니다.
* 훈련 모델: 라벨링이 완료된 후, 당사에서 설계한 합성곱 신경망 파라미터에 따라 모델을 훈련합니다.
* 테스트 모델: 학습된 모델을 기반으로 테스트를 수행하며, 성능이 부족할 경우 학습 데이터 세트를 확대하거나 학습 파라미터를 조정한 후 재학습하여 만족스러운 모델을 얻을 때까지 반복합니다.
*배포: 학습이 완료된 모델 파일을 OpenMV 내장 USB 저장 장치에 복사하여 실행하면 됩니다.
다음은 구체적인 절차를 시연하는 것입니다:
01. 이미지 데이터 세트 수집 및 업로드
1. 우선 웹사이트 edgeimpulse.com에 로그인한 후 ‘로그인’을 선택하고, 새로 생성한 프로젝트 이름을 입력한 다음 ‘이미지’ → ‘여러 객체 분류’를 선택합니다.

이 두 번째 단계는 이미지 업로드를 선택하는 것입니다. 이미지 데이터셋은 다음과 같은 여러 가지 방식으로 확보할 수 있습니다:
1. OpenMV IDE를 통해 실시간으로 영상을 촬영합니다. OpenMV IDE 내의 도구인 ‘데이터셋 편집기’를 사용하여 새 데이터셋을 생성하고 실시간으로 영상을 촬영합니다. 자세한 내용은 이전에 제작한 동영상 강의 ‘객체 분류: 마스크 인식’을 참조하십시오.

2. 인터넷에서 다운로드한 이미지 또는 스마트폰으로 직접 촬영한 이미지를 사용합니다. 가능하면 실제 검출 환경과 동일한 이미지를 사용하는 것이 좋습니다. 당사는 주차 금지, 경적 금지, 최고 속도 80km/h 등 교통 표지판에 대한 400~500장의 이미지를 준비하였으며, 모든 이미지는 실제 도로에서 촬영된 것입니다. 이 데이터셋은 당사 GitHub 및 튜토리얼 웹사이트에서 다운로드할 수 있습니다.
02. 표시 대상
각 카테고리별로 약 100장의 이미지를 업로드한 후, 업로드된 이미지에 대해 어노테이션 작업을 수행하여 인식 대상 객체의 위치와 카테고리를 표시한다.


03. 모델 훈련
훈련 설계 매개변수를 설정하고 해상도를 128×128로 변경한 후, 모든 매개변수는 기본값을 그대로 사용합니다. 저장을 클릭하세요.

특징을 생성합니다. 세 가지 색상은 각각 세 가지 표시를 나타냅니다.

목표 감지 훈련 파라미터를 설정합니다. 훈련 에포크 수는 기본값으로 60회이며, 학습률은 0.001, 검증 데이터셋 비율은 20%입니다. 데이터 증강을 선택하고 체크 표시합니다. 전이 학습 모델로는 기본값인 MobileNetV2 0.35 또는 MobileNetV2 0.1을 선택할 수 있습니다. (참고: SSD는 사용할 수 없으며, OpenMV에서는 실행되지 않습니다.)
학습을 시작합니다. 학습 완료 후 얻어진 신경망 모델의 F1 점수는 91.2%이며, 현재 버전을 저장할 수 있습니다.

저장 위치를 선택하고 설명을 입력한 후 저장을 선택하세요.

04. 모델 배포
학습 완료된 모델 파일을 내보냅니다. 라이브러리만 내보내면 되며, OpenMV를 선택한 후 Build를 클릭하면 모델 배포 및 내보내기가 시작됩니다.

시스템이 자동으로 우리가 내보낸 모델을 다운로드합니다. 여기서는 우리가 300장의 이미지로 학습한 모델입니다. 이를 통해 전체 학습 과정이 완료됩니다.

05. 모델 실행
OpenMV에서 모델 실행:
OpenMV Plus에 연결한 후, 학습이 완료된 세 개의 파일을 OpenMV 내장 USB 드라이브에 저장하고, ei_object_detection.py 파일을 OpenMV IDE에서 엽니다. 실행 버튼을 클릭하면 시리얼 터미널에 실행 결과가 표시됩니다.


이 기능은 OpenMV4에서도 실행 가능합니다. OpenMV4는 외장 SDRAM을 탑재하지 않아 메모리 용량이 작기 때문에, 모델 크기를 축소하여 OpenMV4에서 실행할 수 있도록 조정할 수 있습니다.
모델의 크기를 줄이는 방법은 두 가지입니다:
1. 훈련 해상도를 낮추고, 128×128 해상도를 96×96으로 변경합니다.
이차, 사용 중인 전이 학습 모델을 수정하여 MobileNetV2 0.35를 MobileNetV2 0.1로 변경합니다.
마지막으로 훈련이 완료된 새 파일을 OpenMV4에 넣고 실행하면 됩니다.
위는 당사의 목표 점 검출 튜토리얼입니다. 귀하의 성과를 기대합니다!

OpenMV 기반 AI 경비 시스템: 주요 장소에서 문이 닫히지 않았을 경우 자동 알림
중요 장소의 출입문이 장시간 닫히지 않았는지 자동으로 판단하고, 즉시 알림을 제공합니다.

인원이 경계를 넘어설 경우 즉시 경고가 발생하며, OpenMV가 ‘안전한 경계 감각’을 실현합니다.
가상 경계선을 통해 인원 또는 장비의 경계 위반 행위를 식별합니다.

“AI 도시관리관” 등장: OpenMV 기반 점용 영업 자동 식별 시스템
점유형 영업 행위를 자동으로 식별하여 도시의 일상적 관리 업무를 지원합니다.

가스통을 무분별하게 배치하셨습니까? OpenMV를 활용한 자동 위험 경고 시스템
가스통의 부적절한 배치 위치를 자동으로 식별하여 가스 관련 안전 위험을 사전에 탐지합니다.

대전류 작업 시 절연 장갑을 착용하지 않으셨습니까? OpenMV가 즉시 경고합니다!
작업자가 절연 장갑을 착용했는지 자동으로 식별하여 안전한 작업을 지원합니다.

OpenMV 스마트 카메라를 활용하여 알루미늄 판 표면 결함을 실시간으로 식별
알루미늄 판재 표면의 긁힘, 오목함 등 결함을 온라인으로 식별하여 품질 관리를 지원합니다.