본문 바로가기

AI/OpenVINO

3-9. Convert a TensorFlow Object Detection Model to OpenVINO™

참고: https://docs.openvino.ai/2024/notebooks/tensorflow-object-detection-to-openvino-with-output.html

 

Convert a TensorFlow Object Detection Model to OpenVINO™ — OpenVINO™ documentation

Convert a TensorFlow Object Detection Model to OpenVINO™ 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: TensorFlow, or TF

docs.openvino.ai

 

이번 예시는 제목에서 느낄수 있듯이 TensorFlow의 사물 검사하는 모델을 OpenVINO로 가지고 와서 추론하는 것이다.

그 모델의 이름은  Faster R-CNN with Resnet-50 V1 이고, 이제 차근차근 해보자.

 

먼저 필요한 패키지들을 설치해야 하지만, 지금까지 예제를 따라했더라면 다 설치되어 있을 것이다.

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

그리고 notebook_utils.py 라는 파일도 다운받고 import한다.

 

모델을 다운 받아서 압축을 푼다.

 

모델을 다운 받는 주소는 아래와 같다.

https://www.kaggle.com/models/tensorflow/faster-rcnn-resnet-v1/frameworks/tensorFlow2/variations/faster-rcnn-resnet50-v1-640x640/versions/1?tf-hub-format=compressed

 

다운로드된 tar파일에는 이런 파일들이 들어있다.

 

 

모델을 OpenVINO에서 사용할 수 있도록 IR 모델로 변환 시켜주고 저장한다. (bin, xml 파일이 생성된다)

 

이제 IR 모델을 읽어서 device에 맞게 컴파일 해준다. 당연히 device.value = 'CPU'

 

앞의 예제들에서는 TensorFlow든 PyTorch든 모델을 읽어서 테스트부터 했지만,

이번 예시는 이 과정을 건너뛰고 IR모델로 변환 후 OpenVINO에서 추론을 할 것이다.

 

가지고 온 모델의 입력 형태와 출력 형태를 알아본다.

 

일단 테스트해보고 입출력에 대해서 설명하는 것이 이해를 도울 것 같다.

입력으로 사용할 이미지를 다운로드 받고 무슨 이미지인지 한번 살펴보자.

 

 

그 유명한 코코가 자전거를 타고(?) 있다. 이제 이것을 입력을 넣고 출력이 어떻게 나오는지 본다.

결과에 의하면 검출 개수는 300개이고 여기서 요효한 것들만 찾아서 표시하는 작업을 할 것이다.

 

그런데! 여기서 한가지 다운 받지 않은 것이 있다. 이 모델을 학습시킬 때 사용했던 사진에 대한 정답지이다. 

예를 들어서 추론 결과가 '3'으로 나왔다면 '3'이 무엇을 말하는지 알려주는 정답지가 필요하다. 

사람부터 비행기, 전자레인지, 등등 91개의 물체를 검출할 수 있는 모델이었다. 

 

이제 추론결과를 가지고 정답지와 연결해가면서 이 모델이 무엇을 찾았는지 살펴보자.

 

visualize_inference_result()는 추측할 수 있듯이 추론 결과와 입력 이미지, 정답지를 넣으면 검출한 것들을 이미지에 표시해주는 함수이다.검출 개수를 10개까지 늘려보면 아래와 같다.

 

이제 인터넷에서 아무 사진이나 입력해서 어떤것을 검출하는지 테스트해보자.

 

한강 공원 사진을 가져와 봤다.

아래는 추론 결과다.

 

잘 찾아 낸 것처럼 보인다.  나무라든가 다리같은 것을 학습하지 않아서 그런지 그런것은 못찾는다.

이번 예제는 여기까지 한다.