DeepLearning/YOLO

3. YOLO c++, cpp dll 활용 (MFC)

woongs_93 2021. 1. 4. 13:57
반응형

이번엔 앞서 Yolo를 빌드하고 학습하는 방법을 다뤘으니 학습한 가중치 파일을 cpp(MFC) 환경에서 불러와 detect 해보려 한다.

 

 

 

 

0. git에서 받은 darknet-mask/build/darknet 경로에서 yolo_cpp_dll.sln 을 실행

 

yolo_cpp_dll.sln

 

 

1. 프로젝트 속성에서 추가 포함 디렉터리 및 라이브러리 경로 설정

 

 

2. Release/x64 빌드

 

 

3. MFC 프로젝트 생성

 

MFC 프로젝트를 생성 후 프로젝트 속성에서 darknet-master 경로 설정.

 

추가 포함 디렉터리

 

라이브러리 경로

 

 

4. C/C++ -> 전처리기에 OPENCV, CUDNN, _CRT_SECURE_NO_WARNINGS 추가

 

 

 

5. include "yolo_v2_class.hpp" 및 lib 추가

 

라이브러리는 아래와같이 코드로 추가 할 수 있다.

#include "yolo_v2_class.hpp"

#ifdef DEBUG
#pragma comment(lib, "yolo_cpp_dll.lib")
#else
#pragma comment(lib, "yolo_cpp_dll.lib")
#endif

 

 

 

6. 가중치 파일 불러오기

 

BOOL LoadWeight(string strCfg, string strWeight) {
	if (m_pDetector)
		delete m_pDetector;

	m_pDetector = new Detector(strCfg, strWeight);

	if (m_pDetector) {
		m_bLoaded = true;
		return TRUE;
	}
	else
		return FALSE;
}

 

 

 

7. detect

 

m_result = m_pDetector->detect(cv_image, 0.5);

- detect(cv::Mat image, thresh 값)

- 결과는 bbox_t 구조체의 vector로 반환.

 

 

 

8. 결과

 

 

잘된다.

 

 

 

 

 

 

 

 

 

끝.

반응형