본문 바로가기

AI/OpenVINO

3-4. Hello Object Detection

참조: https://docs.openvino.ai/2024/notebooks/hello-detection-with-output.html

 

Hello Object Detection — OpenVINO™ documentation

Hello Object Detection This Jupyter notebook can be launched on-line, opening an interactive environment in a browser window. You can also make a local installation. Choose one of the following options: A very basic introduction to using object detection m

docs.openvino.ai

 

아직까지 어려운 예제만 해왔다... 이제 좀 쉬운 것을 하면서 정리해보자. 

문자 검출(text detection)을 하는 예제로 주어진 사진에서 가로 문자만 검출해 낼 것이다. 

필요한 패키지: opencv-python, tqdm

팔요한 파일: notebook_utils.py

 

우리가 모델 자체를 만들어 학습시키는 것이 아니기에 받아오도록 한다.

 

코드에서 보듯이 모델 이름은 'horizontal-text-detection-0001'이고, OpenVINO toolkit 사이트에서 가지고 온다.

눈치빠른 분은 알겠지만, 이 모델은 OpenVINO IR 형식이므로 변환 같은 것은 필요없이 읽어서 사용하면 된다.

 

물론 여기서는 GPU가 없는 것을 가정하므로, device.value = 'CPU'이다.

사용할 이미지를 읽어서 필요한 정보를 가져오자.

 

입력은 [1, 3, 704, 704] 형식의 이미지로 각각의 의미는 N(batch size), C(channel수), H(height), W(width)이다. 

그런데 보통 이미지들은 사이즈도 다르고, H, W, C의 순서로 되어 있어 위의 코드처럼 변환이 필요하다. 

출력은 [N, 5]의 형식으로 되어있는데, N은 검출 문자의 갯수, 5는 각 검출 문자의 좌표(x_min, y_min, x_max, y_max)와 confidence 이다. 

해당 모델에 대한 더 자세한 설명은 여기서 볼 수 있다.

 

이제 실제 이미지를 넣어서 추론해보고 그것을 표현해보자.

 

convert_result_to_image()는 검출된 문자를 감싸는 박스를 그리는 함수이다.

위의 함수를 살짝 변경하여, 글자는 붉은 색 박스로, 그 확률은 녹색 글자로 표현하였다.

 

그러면 이제 자신의 이미지로 바꾸어보자.

샘플 이미지는 아래의 키보드이다.

keyboard.jpg
0.06MB

 

이것을 위의 코드처럼 똑같이 돌려준다.

 

이 이미지는 900x300 크기를 가진다.

똑같이 추론하고 그림을 그려보면 다음과 같다.

 

한글자 한글자는 텍스트로 인식하지 않는 것 같다. 왼쪽 Ctrl도 인식하지 못했네... 

하나의 이미지에서 이렇게 검출이 가능하다면 연속적인 이미지인 동영상에서도 각 프레임에서 인식시켜서 동작할 수 있다.이번 예제는 쉬우니 찬찬히 뜯어보도록 하자.