TensorFlow와 Caffe 소개
TensorFlow와 Caffe는 두 가지 주요 머신러닝 라이브러리입니다. TensorFlow는 Google에서 개발한 오픈 소스 머신러닝 프레임워크로, 다양한 머신러닝 모델을 쉽게 구현할 수 있습니다. Caffe는 Berkeley Vision and Learning Center에서 개발한 딥러닝 프레임워크로, 특히 이미지 처리에 강력한 성능을 보입니다.
TensorFlow C++ API 사용
TensorFlow는 주로 Python에서 사용되지만, C++ API도 제공합니다. 다음은 TensorFlow C++ API를 사용하여 간단한 텐서를 생성하고 조작하는 예제입니다.
1. TensorFlow 설치
TensorFlow C++ API를 사용하려면 TensorFlow 라이브러리를 빌드해야 합니다. 이는 시간이 오래 걸릴 수 있으므로 미리 설치된 바이너리를 사용하는 것이 좋습니다. 다음은 TensorFlow C++ API를 설정하는 과정입니다.
TensorFlow C++ 라이브러리 다운로드
wget https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-linux-x86_64-2.4.0.tar.gz
sudo tar -C /usr/local -xzf libtensorflow-cpu-linux-x86_64-2.4.0.tar.gz
sudo ldconfig
2. TensorFlow C++ 예제
다음은 TensorFlow C++ API를 사용하여 간단한 텐서를 생성하고 출력하는 예제입니다.
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(TensorFlowExample)
set(CMAKE_CXX_STANDARD 17)
find_package(TensorFlow REQUIRED)
add_executable(tensorflow_example main.cpp)
target_link_libraries(tensorflow_example tensorflow)
main.cpp
#include <iostream>
#include <tensorflow/core/framework/tensor.h>
#include <tensorflow/core/platform/env.h>
using namespace tensorflow;
int main() {
Tensor tensor(DT_FLOAT, TensorShape({2, 3}));
auto matrix = tensor.matrix<float>();
matrix(0, 0) = 1.0;
matrix(0, 1) = 2.0;
matrix(0, 2) = 3.0;
matrix(1, 0) = 4.0;
matrix(1, 1) = 5.0;
matrix(1, 2) = 6.0;
std::cout << tensor.DebugString() << std::endl;
return 0;
}
빌드 및 실행
mkdir build
cd build
cmake ..
make
./tensorflow_example
이 코드는 2x3 텐서를 생성하고 값을 할당한 후 출력합니다.
Caffe 사용
Caffe는 주로 이미지 처리에 강력한 성능을 보이는 딥러닝 프레임워크입니다. 다음은 Caffe를 사용하여 간단한 네트워크를 정의하고 실행하는 예제입니다.
1. Caffe 설치
Caffe를 설치하려면 다음 명령어를 사용합니다.
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
Caffe 소스 코드를 클론하고 빌드합니다.
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
make all -j8
make test -j8
make runtest -j8
2. Caffe C++ 예제
다음은 Caffe를 사용하여 간단한 네트워크를 정의하고 실행하는 예제입니다.
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(CaffeExample)
set(CMAKE_CXX_STANDARD 17)
find_package(Caffe REQUIRED)
add_executable(caffe_example main.cpp)
target_link_libraries(caffe_example ${Caffe_LIBRARIES})
include_directories(${Caffe_INCLUDE_DIRS})
main.cpp
#include <iostream>
#include <caffe/caffe.hpp>
using namespace caffe;
int main() {
// Initialize the network
Net<float> net("path_to_deploy.prototxt", TEST);
net.CopyTrainedLayersFrom("path_to_model.caffemodel");
// Input data
std::vector<float> input_data(224 * 224 * 3, 1.0); // Example input data
Blob<float>* input_blob = net.input_blobs()[0];
input_blob->Reshape(1, 3, 224, 224);
memcpy(input_blob->mutable_cpu_data(), input_data.data(), sizeof(float) * input_data.size());
// Forward pass
net.Forward();
// Output results
const float* output_data = net.output_blobs()[0]->cpu_data();
for (int i = 0; i < 10; ++i) {
std::cout << "Output[" << i << "]: " << output_data[i] << std::endl;
}
return 0;
}
빌드 및 실행
mkdir build
cd build
cmake ..
make
./caffe_example
이 코드는 Caffe 네트워크를 초기화하고, 예제 입력 데이터를 네트워크에 전달하여 결과를 출력합니다. path_to_deploy.prototxt
와 path_to_model.caffemodel
파일은 실제 모델 파일 경로로 대체해야 합니다.
이제 29일차의 학습을 마쳤습니다. TensorFlow와 Caffe를 사용하여 머신러닝 모델을 C++에서 구현하고 사용하는 방법을 학습하고 실습해보았습니다.
질문이나 피드백이 있으면 언제든지 댓글로 남겨 주세요. 내일은 "오픈 소스 프로젝트 참여 방법 및 기여"에 대해 학습하겠습니다.
'-----ETC----- > C++ 고급 프로그래밍과 응용 프로젝트 시리즈' 카테고리의 다른 글
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 30: 오픈 소스 프로젝트 참여 방법 및 기여 (0) | 2024.08.01 |
---|---|
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 28: C++로 게임 개발 (SFML, SDL) (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 26: C++로 네트워크 프로그래밍 (소켓 프로그래밍) (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 27: C++에서의 데이터베이스 연동 (SQLite, MySQL) (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 24: gRPC를 이용한 분산 시스템 (0) | 2024.08.01 |