깔끔하게 파이토치 모델을 C++ 완성된 애플리케이션에 넣어 사용하는 방법을 정리하는 글이다

개발 환경은 다음과 같다

OS: Ubuntu 16.04

Pytorch 1.0

CMAKE 3.13.3

libtorch cpu버전

C++편집기: Dev C++

우선 새 폴더를 만들어 CMakeLists.txt와 Cpp 소스코드를 만든다


CMakeLists.txt:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)

project(custom_ops)


find_package(Torch REQUIRED)


add_executable(example-app example-app.cpp)

target_link_libraries(example-app "${TORCH_LIBRARIES}")

set_property(TARGET example-app PROPERTY CXX_STANDARD 11)



C++ 코드:


C++ 코드는, 실행시 모델 경로를 같이 전달하면 확인 후 load하며 잘 load가 되었다면 cout을 통해 ok를 출력하는 코드이다

두 파일이 있는 폴더에 새폴더를 만들어 build로 이름짓고 폴더로 들어가 터미널을 실행한다


그리고 CMAKE를 만드는 명령어들을 실행한다


cmake -S '소스코드있는 경로' -DCMAKE_PREFIX_PATH='libtorch 경로'

make

순서대로 입력 후 빌드가 성공적으로 끝나면 ./example-app '모델경로' 명령어로 완성된 애플리케이션을 실행하낟

ok가 출력되면 성공



이제 실제 load한 모델에 인풋값을 통과시켜보는 작업을 한다

C++ 코드를 아래와 같이 수정한다

이때 자신이 사용하는 모델의 인풋 shape에 맞게 inputs을 생성해준다

터미널로 돌아가 

make

./example-app '모델경로'

순서대로 명령어를 실행하면 된다 

그 결과 아래와 같은 결과를 얻었다. 


+ Recent posts