더북(TheBook)

지금부터는 Net 클래스 객체를 생성하여 네트워크를 구성하고, 생성된 네트워크에서 특정 입력에 대한 출력을 얻기 위해 필요한 일련의 OpenCV 함수 사용법에 대해 자세히 알아보겠습니다.

Net 클래스 객체는 보통 사용자가 직접 생성하지 않으며 readNet() 등의 함수를 이용하여 생성합니다. readNet() 함수는 미리 학습된 딥러닝 모델과 네트워크 구성 파일을 이용하여 Net 객체를 생성합니다. readNet() 함수 원형은 다음과 같습니다.

Net readNet(const String& model, 
 const String& config = "", 
 const String& framework = "");

model

훈련된 가중치를 저장하고 있는 이진 파일 이름

config

네트워크 구성을 저장하고 있는 텍스트 파일 이름

framework

명시적인 딥러닝 프레임워크 이름

반환값

Net 객체

 

readNet() 함수는 훈련된 가중치가 저장된 model 파일과 네트워크 구조를 표현하는 config 파일을 이용하여 Net 객체를 생성합니다. 만약 model 파일에 네트워크 훈련 가중치와 네트워크 구조가 함께 저장되어 있다면 config 인자를 생략할 수 있습니다. framework 인자에는 모델 파일 생성 시 사용된 딥러닝 프레임워크 이름을 지정합니다. 만약 model 또는 config 파일 이름 확장자를 통해 프레임워크 구분이 가능한 경우에는 framework 인자를 생략할 수 있습니다. modelconfig 인자에 지정할 수 있는 파일 이름 확장자와 framework에 지정 가능한 프레임워크 이름을 표 16-1에 정리했습니다.

▼ 표 16-1 딥러닝 프레임워크에 따른 model 및 config 파일 확장자

딥러닝 프레임워크

model 파일 확장자

model 파일 확장자

framework 문자열

카페

*.caffemodel

*.prototxt

“caffe”

텐서플로

*.pb

*.pbtxt

“tensorflow”

토치

*.t7 또는 *.net

 

“torch”

다크넷

*.weights

*.cfg

“darknet”

DLDT

*.bin

*.xml

“dldt”

ONNX

*.onnx

 

“onnx”

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.