제가 알고 있는 커맨드 윈도우 실행 방법은 다음과 같습니다.

- 검색

- 실행 대화 상자


첫 번째, 검색 방법은 버튼을 누르시고, "command prompt"를 입력하시고 엔터 (혹은 마우스 클릭)을 누르시면 됩니다. 아래의 그림은 "command" 까지만 입력한 상태에서의 "command prompt"가 검색된 화면 입니다.



두 번째, 실행 대화 상자 방법은 " + r"동시에 누르시면 됩니다. 버튼을 누르시면 아래와 같습니다.




위에서의 두가지 방법을 실행하면 결과 화면은 아래와 같습니다.



< 출처 : http://loenahmik.blogspot.kr/2016/09/windows-caffe.html >


테스트 환경은 아래와 같습니다.

- Windows 7(64bit)

- Visual Studio 2013

- Caffe

- MNIST


설치과정은 생략하고 데스트 위주로 정리합니다.


LeNet을 활용한 MNIST 예제

- Training과 Test에 사용할 데이터 다운로드

< 참고파일 : .\data\mnist\get_mnist.sh >

(caffe가 설치된 폴더를 기준으로 작성하였습니다.)


* 아래 링크들을 클릭하시면 다운로드 하실 수 있습니다.

TrainingImages

TrainingLabels

TestImages

TestLabels


* 압축을 해제하시면 아래의 파일들이 있습니다.

(이 파일들을 '.\data\mnist\'로 옮겨 주세요, 이후에 경로 지정을 이곳으로 합니다.)

train-images.idx3-ubyte

train-labels.idx1-ubyte

t10k-images.idx3-ubyte

t10k-labels.idx1-ubyte



- lmdb로 변환

< 참고파일 : .\examples\mnist\create_mnist.sh >


* convert_minist_data.exe을 활용하여 lmdb로 변환합니다.

첫 번째 training 데이터 입니다.

> .\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\train-images.idx3-ubyte .\data\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb --backend=lmdb


두 번째로는 test 데이터 입니다.

> .\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\t10k-images.idx3-ubyte .\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb --backend=lmdb


결과는 아래의 그림과 같이 새로 만들어진 폴더를 확인 하실 수 있습니다.



- Net과 Solver는 caffe에서 제공해주는 것을 그대로 사용하겠습니다.

* Net 위치 : .\examples\mnist\lenet_train_test.prototxt

* Solver 위치 : .\examples\mnist\lenet_solver.prototxt


<TroubleShooting>

lenet_train_test.prototxt 파일에 보시면 아래 그림과 같이 레이어 안에 'source' 위치를 지정하는 곳이 있습니다. 이 곳은 이전 "lmdb로 변환"에서 결과를 저장하는 곳 ("training : .\examples\mnist\mnist_train_lmdb""test : .\examples\mnist\mnist_test_lmdb"로 각각 지정한 곳입니다.)


- Training 과정

< 참고파일 : .\examples\mnist\train_lenet.sh >


> .\Builtx64\Debug\caffe.exe train --solver=examples\mnist\lenet_solver_prototxt


결과로 생성된 파일은 아래의 그림과 같습니다.




이 글은 Visual Studio를 활용하여 MEX함수를 Debug하는 방법입니다.


일단 저의 환경설정은 아래와 같습니다.
(아래에 설명하는 방법은 버전과는 상관없이 작동합니다. 참고만 하세요)

- Windows 7(64bit)

- MATLAB R2016a

- Visual Studio 2013


실행 예제는 MATWORKS사에서 기본 적으로 제공하는 예제로 설명을 드리겠습니다.

- arrayProduct.c

- demo_arrayProduct.m


첫 번째 소스는 MATLAB Command windows에서 아래와 같이 입력하시면 바로 보실수 있습니다.


>> edit([matlabroot '/extern/examples/mex/arrayProduct.c']);


두 번째 소스는 아래와 같습니다.


%% demo_arrayProduct.m


%% clear

clear all; close all; clc;


%% call arrayProduct

scalar = 5

A = [1.6, 2, 5.2]

B = arrayProduct(scalar, A)


위의 두 소스는 소스 목록에 보시면 링크 되어있으므로 다운 받으셔도 됩니다.



자, 이제 준비를 마쳤으므로 디버깅 (Debugging)하는 방법을 설명 드리겠습니다.


첫 번째, mex 파일을 디버깅할 수 있도록 빌드한다.


>> mex -g arrayProduct.c




두 번째, Visual Studio와 연결한다.


Visual Studio를 실행하시고, [DEBUG] -> [Attach to Process] 선택을 하시면 됩니다.



그 다음 MATLAB.exe을 더블클릭 해주시면 됩니다.


이제 파일을 선택해주시면 됩니다.
(모두들 잘 아시겠지만, 파일 선택은 [FILE] -> [Open] -> [File] 선택해 주시면 됩니다.)


여기서는 MEX파일을 선택해 줍니다.

(예제에서는 'arrayProduct.c'가 이에 해당됩니다.)


예제 파일이 열렸습니다.

저희들은 디버깅을 원하기 때문에 디버깅 포인트를 아래 그림과 같이 클릭해 주시면 됩니다.
(mex는 'mexFunction()'가 메인 이라고 보시면 되기때문에 이 함수 안에 찍으시면 됩니다.)


이제 실제적으로 MATLAB에서 디버깅을 시작하시면 '스텝 인'을 함수 'arrayProduct()'에서 누르시면 됩니다.


위와 같이 실행을 하시면 Visual Studio에서 바로 디버깅 포인터를 확인 하실 수 있습니다.


즐 코딩하세요~

+ Recent posts