참조: 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()는 검출된 문자를 감싸는 박스를 그리는 함수이다.
위의 함수를 살짝 변경하여, 글자는 붉은 색 박스로, 그 확률은 녹색 글자로 표현하였다.
그러면 이제 자신의 이미지로 바꾸어보자.
샘플 이미지는 아래의 키보드이다.
이것을 위의 코드처럼 똑같이 돌려준다.
이 이미지는 900x300 크기를 가진다.
똑같이 추론하고 그림을 그려보면 다음과 같다.
한글자 한글자는 텍스트로 인식하지 않는 것 같다. 왼쪽 Ctrl도 인식하지 못했네...
하나의 이미지에서 이렇게 검출이 가능하다면 연속적인 이미지인 동영상에서도 각 프레임에서 인식시켜서 동작할 수 있다.이번 예제는 쉬우니 찬찬히 뜯어보도록 하자.
'AI > OpenVINO' 카테고리의 다른 글
3-6. Hello Image Segmentation (2) | 2024.07.16 |
---|---|
3-5. Hello Image Classification (0) | 2024.07.15 |
3-3. Frame interpolation using FILM and OpenVINO (0) | 2024.07.11 |
3-2. Colorize grayscale images using DDColor and OpenVINO (0) | 2024.07.10 |
3-1. 3D Human Pose Estimation with OpenVINO (0) | 2024.07.08 |