Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Deep Learning with Tutorial
With Caffe & Window10, VS 2015
2017.07.24
석사 박사 통합과정
김영준
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
목차
1. Machine Learning//추후 업데이트
2. Artificial Neural Network//추후 업데이트
3. Deep Learning//추후 업데이트
4. CNN//추후 업데이트
5. Caffe
• 소개
• 설치
• Window 설치
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
목차
• Tutorial 0. – 훈련, 학습 그리고 분류, Batch File
• Tutorial 1. – Mnist 필기 숫자 인식 분류
• Tutorial 2. – Mnist 필기 숫자 인식 분류 – 자체 이미지 이용
• Tutorial 3. – Imagenet 이미지 인식 분류
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe - 소개
• Caffe (*Convolutional Architecture for Fast Feature Embedding)
• UC Berkeley – BVLC (Berkeley vision and Learning Center)
• Framework by BAIR (Berkeley Artificial Intelligence Research)
※Convolution: 중첩, 꼬임, 나선. 수학에선 중첩 적분
중첩 적분을 의미하는 수학 연산자로, 어떠한 함수가 두 개 존재할 때 두 함수 중 하나를 반전 시킨 후 이동한 값을
나머지 다른 함수에 곱한 다음에, 각 구간에 대하여 적분을 함으로써 새로운 함수를 만들어내는 것이다. 합성곱이
라고도 하며, 만약 함수 f와 함수 g를 콘볼루션 한다고 할 때, 수학 기호로는 f*g와 같이 표기한다.
[네이버 지식백과] 콘볼루션 [Convolution] (두산백과)
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe - 소개
• Creator: Yangqing Jia
• Project during his PhD at UC Berkeley.
• Github의 개발자 다수 참여: https://github.com/BVLC/caffe/
• Open source community
• C++, CUDA 기반
• BSD License (수정, 재배포, 상업적 사용이 가능)
• *GPGPU Acceleration
※ General-Purpose computing on Graphics Processing Units , GPU 상의 범용 계
산 – CPU가 맡았던 응용프로그램 계산을 GPU가 하는 것.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 설치 – 설치환경
• 운영체제: 초기화된 Window 10 환경
• 설정 – 업데이트 및 복구 – 복구 – 이 PC 초기화(개인 파일 유지)
• Visual Studio 2013이 구동 가능한 Window 운영체제에서 설치 가능
• Hard Drive: 최소 100GB 용량 확보
• 설치 파일, 라이브러리 파일, Caffemodel 파일 등 용량 필요
• CPU & GPU: Caffe는 CPU 혹은 GPU에 따라 구동 가능, 사용할 처리
장치(PU)에 따라 적절한 제품을 준비할것
• 어떤 처리장치이든 고용량 RAM. 고성능이면서 코어 수가 많을수록 좋음,
GPU가 훨씬 빠른 성능 구현 가능. GTX 10xx 시리즈, Titan 시리즈 사용시 유
리
• RAM – CPU 사용시 고용량일 수록 유리, GPU 또한 그래픽 카드의
RAM이 클수록 좋음
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 설치
1. 직접 설치 – CMD Prompt 으로 다운로드 후 VS에서 직접 빌드 후
Caffe Binary 획득
2. Prebuilt 다운 – 자신의 PC에 맞는 prebuilt 다운 후 Caffe Binary 획
득
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 설치 – Requirement & Optional Dependencies
Requirement
• VS 2013 or 2015
• Cmake 3.4 or Higher
• Git 설치
• Thirdparty.rar 파일을 다운로드 받아야함. https://github.com/happynear/caffe-windows
• 받은 파일은 ~~/caffe/window/thirdparty 에 압축을 풀도록한다.
Optional Dependencies
• PC 환경에 맞는 CUDA 와 Cudnn
• CUDA 8.0 for VS 2015
• Python
• Matlab
※ 환경변수에서 Path에 Python, Cmake 둘 모두 포함되어야 한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 설치 – Requirement & Optional Dependencies
• 환경변수 시스템 변수 설정 하는 법
• 내 PC – 오른쪽 마우스 속성 – 고급 시스템 설정 – 고급 탭 – 환경변수, 시스템
변수에서 Path 편집 – 새로 만들기 – 환경변수에 추가할 대상의 파일 위치 추
가 및 확인.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 설치 – Requirement & Optional Dependencies
• 환경변수 시스템 변수 설정 하는 법
다음 주소는 꼭 등록해야 좋은 주소
C:/ ~~ /caffe/windows/thirdparty/bins
※다운 받은 caffe/windows/thirdparty에 파일이 없을 경우 따로 Thirdparty.rar을 받아야함 공유 참고
※ https://github.com/happynear/caffe-windows
C:/ ~~ /Python27
C:/ ~~ /Python27/Scripts
C:/ ~~ / Python27/Lib/site-packages
※ 아래는 Program Files에 CUDA를 설치 했을 때 자동으로 등록되는 환경변수 경로 – Cudnn을 정석대로
CUDA에 설치시 따로 경로 변수 설정할 필요 없다.
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치
1. 필요한 Requirements를 모두 설치 후 Caffe를 설치할 장소를 미리
만든다. Ex) C:Projects
2. CMD Prompt 에서 해당 폴더에 이동
• cd.. :상위 디렉토리 이동
• cd ~~ : 현 디렉토리 내에 ~~ 폴더로 이동
3. 위치에서 다음과 같이 명령한다. 첫 번째 줄은 git를 이용하여
Caffe 다운
1. C:Projects> git clone https://github.com/BVLC/caffe.git
2. C:Projects> cd caffe
3. C:Projectscaffe> git checkout windows
4. :: Edit any of the options inside build_win.cmd to suit your needs
5. C:Projectscaffe> scriptsbuild_win.cmd
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치
4. 다운로드 받은 경로 (ex) C:/project/)로 탐색기로 들어가 확인한다.
5. ~~/Caffe/windows 에 보면 Caffe.sln 솔루션이 있다.
6. 먼저 솔루션을 더블클릭하여 VS2015를 실행한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치
7. 솔루션 탐색기에 프로젝트들이 잘 뜨는 것을 확
인한다.
8. 만일 프로젝트가 load 되지 않은 상태라면 필요한
visual studio 구성을 모두 설치한다.
※ 해당 프로젝트를 더블클릭하여 확인가능
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치
9. Caffe sln 에서 Props를 확장
10. CommonSettings.props를 연다.
11. 다음 슬라이드의 파란색 글 부분을
자신의 PC에 맞게 바꾼다.
12. 그 외에 matlab support, Python
Support 등도 바꾸어 설정 가능하다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치 – CommonSettings.props
• <CpuOnlyBuild>false</CpuOnlyBuild>
• <UseCuDNN>true</UseCuDNN>
• <UseNCCL>true</UseNCCL>
• <CudaVersion>8.0</CudaVersion>
• …..
• <CudaArchitecture>compute_61,sm_61;compute_61,sm_61;</CudaA
rchitecture>
• <CuDnnPath>C:Program FilesNVIDIA GPU Computing
ToolkitCUDAv8.0</CuDnnPath>
※ CudaArchitecture 부분의 숫자는
https://developer.nvidia.com/cuda-gpus 에서 확인 가능
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치 – 빌드
• 빌드 설정을 Release, x64 로 변경 한다.
• Solution - libcaffe 부터 빌드를 시작한다.
• 대부분의 에러는 여기서 나타난다.
• 이후 caffe, classification, compute image mean, convert cifar data, convert
imageset, convert mnist data 까지 빌드를 한다.
• 만일 matlab과 python suppor가 True 라면 Pycaffe, matcaffe, python 등을
빌드 가능하므로 전체 Caffe solution을 빌드한다.
• ※Mxnet_caffe_wrapper는 unload 시킨다. 쓰이지도 않고 중간에 에러
발생
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – 직접 설치 – 빌드
• 빌드 후 Caffe/build/x64/release 에 binaries(.exe 파일) 가 있으면 제
대로 빌드/설치가 된 것이다.
• 앞으로 튜토리얼과 CNN 을 이 Binary들을 이용하여 실행하게 된다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
5. Caffe – Prebuilt Binaries
• https://github.com/BVLC/caffe/tree/windows 에서 다운로드 가능하
며 각각의 빌드 환경에 따라 미리 만들어진 binaries를 그대로 사용
가능하다.
• 미리 만들어진 Binaries는 다운 받은 zip폴더 내부 Bin 폴더에 있다.
• 쓰고자 하는 .exe 파일들을 원하는 폴더에 옮겨 쓰면 된다.
• .exe는 더블 클릭시 아무런 반응이 없으며 CMD prompts 를 통해 실
행과 필요한 input 파일을 지정해줘야 실행된다.
• 이때 Batch 파일을 만들어 사용하면 편리하다.
• 자세한 내용은 Tutorial 참고
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial
• Tutorial 에서는 설치/빌드한 caffe library 중 caffe.exe 와
classification.exe 의 사용법을 이해하는 데 도움이 되는 내용을 다
룬다.
• Tutorial 1,2,3,4 는 MNIST, IMAGENT 등의 이미지 데이터베이스 셋
을 가지고 훈련시키는 예제를 다루며
• Tutorial 0은 예제를 다루기 전 알아두면 편리한 기법을 설명한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – 훈련, 학습 그리고 분류
• Caffe tutorial 에서 진행하는 이미지 분류의 과정은 다음과 같다.
• Data를 준비한다. 경우에 따라 빠른 속도를 위해 LMDB, LEVELDB 형식으로 만든다.
• Training set, Test set, Training CNN(solver.prototxt, train_val.prototxt) 모델을 이용하여
기계(Caffe.exe)에게 학습을 시킨다.
• 학습 시킨 결과로 caffemodel을 만든다.
• Input image 와 Test CNN 모델, 학습 결과인 caffemodel을 이용해 기계
(Classification.exe)에게 분류를 시킨다.
Machine
(Caffe.exe)Training set
Machine
(Classification.exe)
Test set
Input image
With Label
ex) a, b, c, d
.caffemodel
Machine
”Input image is A”
CNN
CNN
.caffemodel
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – 훈련, 학습 그리고 분류
• 모든 과정들이 비슷한 과정을 거치기 때문에 한 폴더에 필요한 파일들을 모아 실행시
키는 것이 편리하다. 아래의 예시를 살펴볼 것
1. C:/projects/ 경로에 caffe 라이브러리를 설치, 빌드한다.
- C:/projects/caffe/~~~
2. C:/Projects/tutorial/경로를 만든 후 해당 경로에 bin폴더를 만든다.
3. C:/projects/caffe/build/x64/release 안의 binaries를 복사하여 C:/Projects/tutorial/bin
에 붙여넣는다.
- 쓰일 파일은 .exe, binaries 이지만 그냥 모든 파일을 복사해도 된다.
4. Project 폴더에서 앞으로 다루어질 튜토리얼이 진행될 것이다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Caffe binaries 사용
• Tutorial 혹은 추후 CNN layer를 설계하고 머신을 학습시킬시 Caffe
binaries를 사용하게 될 것이다.
• 사용하는 binaries와 사용되는 순서는 다음과 같다
convert_imageset/mnist_data.exe
compute_image_mean.exe
caffe.exe
classification.exe
준비된 이미지 셋을 섞고 lmdb/leveldb 데이터베이스 형식으로 만든다.
대부분의 경우 training, testing 시에 image data에서 mean image를 뺀다.
Train 설정(solver.prototxt)와 Train CNN 모델(train_val.prototxt)을 이용하여
학습시킨다. 결과는 .caffemodel
학습된 모델, caffemodel을 이용하여 input image를 분류한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Caffe binaries 사용
• 모든 binary 들은 Flags와 input을 같이 명령해야 하는데
• 각 binary와 input file은 해당 dir 위치 까지 같이 명령해주어야 한다.
• Input file이 여러 개일 때는 띄어쓰기로 구분한다.
• 각 Binary들이 필요로 하는 input, flag 는 해당 binary .exe 파일을 cmd로 명
령하면 보여준다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Caffe binaries 사용
Ex) 아래의 예시는 Convert_mnist_data.exe를 보여준다.
Buildx64Releaseconvert_mnist_data.exe -backend="leveldb"
C:/DL/Caffe/examples/mnist/train-images.idx3-ubyte
C:/DL/Caffe/examples/mnist/train-labels.idx1-ubyte
C:/DL/Caffe/examples/mnist/mnist_train_leveldb
(위 예시의 각 input과 Flag 사이는 띄어쓰기로 구분되어있다.)
.exe 파일의 위치까지 cmd 에서 이동해도 되고 원래 위치에서 해당
파일까지의 경로를  backslash 를 이용하여 명령해도 된다. (/ slash
과 구분)
Input file의 경우 / slash를 이용하여 명령해도 되고 .exe와 같은 위치
라면 input file의 파일명 + 확장자 만 써주면 된다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Caffe binaries 사용
convert_imageset_data.exe
[FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
convert_mnist_data.exe
[FLAGS] input_image_file input_label_file output_db_file
compute_image_mean.exe
[FLAGS] INPUT_DB [OUTPUT_FILE]
classification.exe
deploy.prototxt network.caffemodel labels.txt img.jpg
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Caffe binaries 사용
caffe.exe
C:/DL/Caffe/Build/x64/Release/caffe.exe train -
solver=C:/DL/Caffe/examples/mnist/lenet_solver.prototxt
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용
• 매번 Train, test, data 실행할 때 마다 경로와 파일을 일일이 쳐주기
힘들기 때문에
• Bat file 을 활용한다.
• Txt 로 작성하여 확장자만 .bat으로 만들면 된다.
• 각 exe.를 자동으로 실행 시켜주는 실행파일의 역할
• 필요한 input, Flags가 들어가며 이들의 경로도 포함
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용
1. Tutorial 폴더에 MNist 폴더를 만들고 내부에 data 폴더를 만든다.
2. Data 폴더 안에 train, test, input 폴더를 만든다.
3. C:/projects/tutorial/Mnist 경로에 새 텍스트 만들기를 하여 txt 파
일을 하나 만든 후 연다.
4. 다음 슬라이드와 같이 한다
※다음 batch 파일은 자체 필기 숫자 이미지 모음을 사용할 때
convert_imageset.exe를 실행하는 기능을 한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_imageset.exe – 1
• @set CAFFE_BIN="C:/project/tutorial/bin/"
• @set DATA_ROOT="C:/project/tutorial/MNist/data/"
• @echo ==========================
• @set TRAIN_DATA_ROOT="C:/project/tutorial/MNist/data/train/"
• @set TEST_DATA_ROOT="C:/project/tutorial/MNist/data/test/"
• @echo ==========================
• @set TRAIN_DATA_TXT="C:/project/tutorial/MNist/data/train.txt"
• @set TEST_DATA_TXT="C:/project/tutorial/MNist/data/test.txt"
• @echo ==========================
• @set TRAIN_LMDB="C:/project/tutorial/MNist/data/train_lmdb"
• @set TEST_LMDB="C:/project/tutorial/MNist/data/test_lmdb“
• @echo ==========================
• @set RESIZE_HEIGHT=28
• @set RESIZE_WIDTH=28
• @echo ==========================
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_imageset.exe – 2
• @echo Delete previous files...
• @echo ==========================
• rmdir /s /q %TRAIN_LMDB%
• rmdir /s /q %TEST_LMDB%
• @echo ==========================
• @echo Creating train LMDB...
• @echo ==========================
• %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% -
shuffle %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LMDB%
• @echo ==========================
• @echo Creating test LMDB...
• @echo ==========================
• %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% -
shuffle %TEST_DATA_ROOT% %TEST_DATA_TXT% %TEST_LMDB%
• @echo ==========================
• @echo Done...
• @echo ==========================
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_imageset.exe – 3
• 작성후 파일명을 01_convert_imageset_Mnist_lmdb.bat 로 변경한
다.
• 확장자명까지 변경한다.
• 탐색기 보기 탭 확장자명 표시
• 실행을 위해선 bat 파일에 기입한 위치에 Test/train 의 image, .txt
파일이 필요하다.
• 실행 이후 기입한 위치에 train/test_lmdb 폴더와 함께 내부에 lmdb
파일이 생성된다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_imageset.exe – 3
• Image Label 파일 만들기 (train.txt & test.txt)
• 위의 파일은 이미지들의 목록과 해당이미지가 어떤 라벨(label) 을 가지는지
에 대한 정보를 포함한다.
• 형식은 반드시 = class01_0001.jpg 1 와 같이 만들도록 한다.
• test와 train 폴더 내부의 이미지 이름을 일정한 규칙으로 변경한다.
• Ex) class01_0001.jpg
• Cmd를 통해 test,train 폴더로 이동 후 dir/ b>list.txt 를 실행한다.
• 위의 명령은 해당 dir에 있는 모든 파일의 이름을 가져와 list.txt에 저장하는 명령이다.
• Batch 파일로 만들어도 편리하다.
• List.txt 의 목록을 excel로 가져와 left 함수, concatenate 함수를 이용하여 위의 형식으로
만든다.
• 만들어진 목록을 test.txt , train.txt 에 저장한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용
• 앞서서 소개한 batch는 절대 경로를 이용한 batch 파일이다.
• 현재 경로를 반환 ./ 상위 경로를 반환 ../
• 등의 문법을 이용하면 상대 경로를 이용해 만들 수 있다.
• 다음은 자주 쓰이는 .exe binary들의 batch 예시이다.
• Classification의 경우 여러 개의 이미지를 검사하게 bat을 작성할
수 있다.
• 경로를 잘 확인하고 쓰도록 한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_imageset.exe
• @set CAFFE_BIN="../bin/"
• @set DATA_ROOT="./data/"
• @set TRAIN_DATA_ROOT="./data/train/"
• @set TEST_DATA_ROOT="./data/test/"
• @set TRAIN_DATA_TXT="./data/train.txt"
• @set TEST_DATA_TXT="./data/test.txt"
• @set TRAIN_LMDB="./data/train_lmdb"
• @set TEST_LMDB="./data/test_lmdb"
• @set RESIZE_HEIGHT=28
• @set RESIZE_WIDTH=28
• @echo ==========================
• @echo Delete previous files...
• @echo ==========================
• rmdir /s /q %TRAIN_LMDB%
• rmdir /s /q %TEST_LMDB%
• @echo ==========================
• @echo Creating train LMDB...
• @echo ==========================
• %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% -shuffle %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LMDB%
• @echo ==========================
• @echo Creating test LMDB...
• @echo ==========================
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – convert_mnist_data.exe
• @set CAFFE_BIN="../bin/"
• @set DATA_ROOT="./data/"
• s
• @set TRAIN_DATA_ROOT="./data/train/train-images.idx3-ubyte"
• @set TEST_DATA_ROOT="./data/test/t10k-images.idx3-ubyte"
• @set TRAIN_DATA_TXT="./data/train-labels.idx1-ubyte"
• @set TEST_DATA_TXT="./data/t10k-labels.idx1-ubyte "
• @set TRAIN_LEVELDB="./data/train_leveldb"
• @set TEST_LEVELDB="./data/test_leveldb"
• @echo ==========================
• @echo Delete previous files...
• @echo ==========================
• rmdir /s /q %TRAIN_LEVELDB%
• rmdir /s /q %TEST_LEVELDB%
• @echo ==========================
• @echo Creating train LEVELDB...
• @echo ==========================
• %CAFFE_BIN%convert_mnist_data.exe -backend="leveldb" %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LEVELDB%
• @echo ==========================
• @echo Creating test LEVELDB...
• @echo ==========================
• %CAFFE_BIN%convert_mnist_data.exe -backend="leveldb" %TEST_DATA_ROOT% %TEST_DATA_TXT% %TEST_LEVELDB%
• @echo ==========================
• @echo Done...
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – conpute_image_mean.exe
• @set CAFFE_BIN="../bin/"
• @set TRAIN_LMDB="./data/train_lmdb/"
• @set DBTYPE="lmdb"
• @echo ==========================
• @echo Delete previous files...
• @echo ==========================
• rmdir /s /q %TRAIN_LMDB%mean.binaryproto
• @echo ==========================
• @echo Creating mean_imagedata
• @echo ==========================
• %CAFFE_BIN%compute_image_mean.exe -backend=%DBTYPE% %TRAIN_LMDB% mean.binaryproto
• @echo ==========================
• @echo Done...
• @echo ==========================
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – train.exe
• @set CAFFE_BIN="../bin/"
• @set SOLVER="solver.prototxt"
• @echo ==========================
• @echo Training...
• @echo ==========================
• %CAFFE_BIN%caffe.exe train -solver=%SOLVER%
• @echo ==========================
• @echo Done...
• @echo ==========================
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – Batch 사용 – classification.exe
• @set CAFFE_BIN="../bin/"
• @set DEPLOY_PROTOTXT="deploy.prototxt"
• @set CAFFE_MODEL="lenet_iter_1000.caffemodel"
• @set TRAIN_TXT="./data/labels.txt"
• @set TEST_IMAGE="./data/input/"
• @echo ==========================
• @echo Classifying...
• @echo ==========================
• %CAFFE_BIN%classification.exe %DEPLOY_PROTOTXT% %CAFFE_MODEL% %TRAIN_TXT% %TEST_IMAGE%im
g_1.jpg
• @echo ==========================
• @echo Done...
• @echo ==========================
• pause
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – solver.prototxt test_val.prototxt deploy.prototxt
• caffe.exe와 classification.exe를 실행하기 위해선 3가지의 .prototxt 파일
이 필요하다. 위치는 batch파일의 위치와 동일하게
c:/projects/tutorial/MNIST 와 같이 각 튜토리얼 폴더 내부이다.
• Solver.prototxt : train 의 설정 횟수 snapshot(caffemodel 출력) 간격 등을
설정할 수 있다. 내부에 train_val.prototxt를 지정하는 항목이 있다. 경로
와 함께 test_val.prototxt를 적어야한다.
• test_val.prototxt : 이미지셋을 train 시킬 CNN 모델이 담겨 있다. 모델에
따라 형식이 조금씩 다르며 각 모델은 input에 해당하는 이미셋을 내용
에서 지정한다. LMDB 나 LEVELDB 혹은 이미지 경로 자체가 설정되기도
한다. 또한 Mean image가 설정될 수 있으므로 주의해서 설정한다.
• Deploty.prototxt 기계가 주어진 이미지를 classification.exe을 통해 분류
시 이미지가 거칠 CNN 모델이 담겨있다. 대부분의 형식이 test_val 과 동
일하다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – solver.prototxt test_val.prototxt deploy.prototxt
• 세가지 prototxt의 사용하는 이름은 모델마다 다를 수 있다.
• 내부의 경로가 제대로 설정 되어 있지 않으면 오류가 날 수 있다.
• 훈련의 설정은 보통 solver.prototxt에서 하게 된다.
• Solver는 모델의 최적화(optimization)을 담당하며 그 종류는 아래
의 주소에서 확인할 수 있다.
http://caffe.berkeleyvision.org/tutorial/solver.html
• CNN Layer 구조를 배우기 전까지는 deploy, test_val 파일을 건들기
는 힘들기 때문에 tutorial 0 에선 solver만 간략히 설명한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – solver.prototxt
Train할때 쓸 CNN 모델이
담긴 prototxt file을 지명
한다.
Test 횟수를 나타낸다.
N번 train에 한번 test 시킨다
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – solver.prototxt
Base_lr: learning rate 초기값
Momentum: 지난 update에서의 weight를 나타낸다
Weight_decay: weight의 초기에 decay 되는 정도를 나타낸다.
lr_policy: learning rate의 형상을 결정한다.
종류는 step, multistep, inv, fixed, poly 등이 있다.
*Inv 는 inverse decay 를 나타낸다.
Gamma: learning rate을 떨어뜨리는 factor가 된다. 만일 0.1이면
lr*0.1 이런 형식이다.
Power: gamma와 비슷하게 lr 에 곱해질 factor에 가해질 지수이다.
lr*a^power
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 0. – solver.prototxt
100회에 한번씩 cmd에서 display된다.
훈련 iteration의 최대값을 의미한다.
훈련중 snapshot을 찍어 그 상태에서의
caffemodel을 출력한다.
연산 유닛의 종류를 결정한다. 그래픽카드를
쓰면 GPU
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 1. MNIST
• MNIST dataset이란
손글씨 인식 데이터셋으로 32x32 사이즈의 6만장의 train samples,
만장의 test semples 로 이뤄져 있다.
http://yann.lecun.com/exdb/mnist/ 주소에서 다운 받는다.
4가지 파일은 각각 test & train label과 imageset 파일이다.
이미지는 셋 파일로 압축되어있다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 1. MNIST
• Mnist 폴더를 생성한다.
• Data/train Data/test 경로를 생성한다.
• convert_mnist_data.bat
• caffe.bat
• classification.bat
• 세가지 bat을 생성하여 Mnist 폴더에 저장한다.
• 세가지 prototxt 파일을 C:/~~/Caffe/examples/mnist 에서 가져와 Mnist
폴더에 복사한다. prototxt 내용의 경로를 알맞게 바꾼다.
(lenet.prototxt -> deploty.prototxt,
lenet_train_test.prototxt -> train_val.prototxt,
lenet_solver.prototxt-> solver.prototxt)
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 1. MNIST
• http://yann.lecun.com/exdb/mnist/ 에서 받은 4가지 파일 중 image
들은 각각 data/train, data/test에 넣는다. (파일명에 나타나있다)
• Label 파일들은 data 폴더에 넣는다.
• 새 텍스트 파일을 만들어 파일명을 labels.txt로 만든다.
• 내용은 아래와 같이 숫자 줄 바꾸기 를 반복하여 0~9까지 만든다.
0
1
2
3
4
5
6
7
8
9
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 1. MNIST
• Input image로 쓰일 사진을 만든다.
• 오른쪽 과같이 28x28 사이즈 필기
이미지를 검은 배경 하얀 숫자로 제
작한다.
(그림판, 알씨꾸미기 등 활용)
• projects/tutorial/mnist/data/input
위 경로에 저장한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 1. MNIST
• 훈련시킬 준비가 되었으므로 Convert_mnist_data.bat , caffe.bat를
실행한다.
• Caffe.bat의 결과로 caffemodel이 출력되며 이름 형식은
lenet_iter_#####.caffemodel 이다.
• 위 파일명을 classification.bat 편집에서 삽입한 후 classification.bat
배치파일을 차례로 실행한다.
• 결과를 확인한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• 위의 예제에선 주어진 데이터 셋을 이용하여 훈련시켰다.
• 이번 예제에선 사용자가 제작한 이미지셋을 준비하고 훈련시키는
과정을 다룬다.
• 이번 예제에선 https://github.com/aleju/imgaug 에서 제작된 파이
썬 image augmentation 라이브러리를 이용한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• 오른쪽과 같은 숫자 이미지 10개를 하
나씩 제작한다. (이전 예제와 같음)
• 이 이미지들은 기본이 될 이미지로서
Augmentation을 통해 증식 된다.
• 기본 이미지가 많을 수록 더 정확한 분
류 및 인식이 가능하다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• Image augmentation
https://github.com/aleju/imgaug 에서 받은 zip 파일 내부 generate_example_images.py 를 이
용하여 이미지를 개당 64개로 증식 시킨다.
- 다음 슬라이드는 augmentation을 이용하기 쉽게 만든 코드이다.
(txt 파일을 만들어 붙여넣고, .py로 확장자 변경)
- 한 폴더에 증식 시킬 이미지와 .py 파일을 넣고 .py를 IDLE 로 실행시킨다.
- Image = misc.imresize(ndimage.imread(“ 이미지 파일명.확장자“)~~~~~
위와 같이 증식시킬 이미지를 등록하고 실행한다.
** Matlab 등 다른 언어로 이미지를 증식시킬 수 있다. 이물 이미지는 빈 화면에 이물을 회전 확장 축소 이동시킨 후
합치는 방식으로 다량으로 제작 가능하다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• from __future__ import print_function, division
• import imgaug as ia
• from imgaug import augmenters as iaa
• from imgaug import parameters as iap
• import numpy as np
• from scipy import ndimage, misc
• from skimage import data
• import matplotlib.pyplot as plt
• from matplotlib import gridspec
• import six
• import six.moves as sm
• np.random.seed(44)
• ia.seed(44)
• def main():
• draw_single_sequential_images()
• def draw_single_sequential_images():
• image = misc.imresize(ndimage.imread("6.jpg")[0:643, 0:643], (256, 256))
• sometimes = lambda aug: iaa.Sometimes(0.5, aug)
• seq = iaa.Sequential(
• [
• # apply the following augmenters to most images
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• 증식 시킨 이미지들을 일정 비율 (7:3) 으로 나누어 train 폴더와
test 폴더에 나눈다.
• 이름은 Class 별로 Class##_####.jpg 형식의 이름으로 변경시킨다.
(알씨 이름바꾸기 추천)
• Test 와 Train 이미지들의 이름이 겹쳐도 문제없다.
• train.txt 와 test.txt 를 Excel을 이용해 작성한다.
• 이름 형식은 이전 예제와 똑같이 Class##_####.jpg ## 모양이다.
(ex: Class1_0001.jpg 1 )
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. MNIST_Self
• 이미지와 라벨이 준비 되었으므로 Prototxt 파일을 확인한 후
bat 파일을 실행한다.
• 01_convert_imageset.bat
• 02_compute_image_mean.bat
• 03_caffe.bat
Caffemodel 파일을 확인하고 classification.bat에 입력한다.
• 04_classification.bat
결과를 확인한다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. Imagenet-Alexnet
• Imagenet은 이미지 분류 인식 대회의 이미지database 이다.
• Caffe에는 ILSVRC2012 라는 이름으로 data set과 모델이 포함되어
있다.
• 약 128만 장의 라벨링된 training set, 5만장의 validation set, 10만장
의 test set 으로 구성되어 있다.
• 1000개의 class로 구성되어 있다.
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. Imagenet-Alexnet
• Alexnet은 2012년도 대회에서 우승한 네트워크이다.
워낙 많은 데이터양으로 인해 개인이 caffemodel을 출력하긴 쉽지
않다. 아래의 주소에서 미리 훈련된 caffemodel을 받을수 있다.
• http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel
Metrology & Thin film Process Lab.
Seoul National University
School of Mechanical and Aerospace Engineering
Tutorial 2. Imagenet-Alexnet
• Projects/tutorial/alexnet을 만든다.
• Data/input을 만든다.
• 이전 슬라이드에서 받은 caffemodel 파일을 alexnet 폴더에 가져온다.
• C:~~~CAFFEdatailsvrc12 경로에서 get_ilsvrc_aux.sh 를 워드패드로 열어 보면
http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz 이라는 주소를 볼 수 있다. 위 경로에서 받은
압축파일에 synset_words.txt를 복사해 alexnet/data폴더에 붙여넣는다.
• C:~~~CAFFEmodelsbvlc_alexnet 경로에서 deploy.prototxt를 복사해 alexnet 폴더에 붙여넣는다.
• C:~~~CAFFEexamplesimages 경로에서 cat.jpg를 data/input에 복사 붙여넣는다.
• .caffemodel, deploty.prototxt, labels.txt(synset_words.txt), cat.jpg
• 04_classification.bat 실행
• 결과를 확인한다.

More Related Content

PDF
운영이관업무 효율화방안
PDF
[Open-infradays 2019 Korea] jabayo on Kubeflow
PDF
[231]나는서버를썰터이니너는개발만하여라 양지욱
PPTX
[123] electron 김성훈
PPTX
Image Deep Learning 실무적용
PPTX
Electron forge
PPTX
빌드 속도를 올려보자
PPTX
수업환경 구축 - 웹데이터베이스 구축 밀 실습
운영이관업무 효율화방안
[Open-infradays 2019 Korea] jabayo on Kubeflow
[231]나는서버를썰터이니너는개발만하여라 양지욱
[123] electron 김성훈
Image Deep Learning 실무적용
Electron forge
빌드 속도를 올려보자
수업환경 구축 - 웹데이터베이스 구축 밀 실습

Similar to Caffe Tutorial with window10, VS2015 (20)

PPTX
회사에서 새로운 기술_적용하기
PDF
모두의 클라우드 딥러닝
PDF
자바 웹프로젝트 개발환경 셋팅
PDF
201702-Oracle Container Cloud Service
PDF
Oracle Container Cloud Service & Docker Overview
PDF
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
PDF
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
PDF
[NDC17] 왓 스튜디오 서비스파트
PPTX
Vue 뽀개기 1장 환경설정 및 spa설정
PDF
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
PDF
도구를 활용한 더 나은 웹 개발: Yeoman
PDF
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
PDF
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
PPT
WIPI.ppt
PPTX
Spring boot DI
PDF
deview2014
PDF
[1A4]자바스크립트 라이브러리 개발 운영 경험기
PPTX
pyOpenCL 입문
PDF
01.개발환경 교육교재
PDF
Machine Learning Model Serving with Backend.AI
회사에서 새로운 기술_적용하기
모두의 클라우드 딥러닝
자바 웹프로젝트 개발환경 셋팅
201702-Oracle Container Cloud Service
Oracle Container Cloud Service & Docker Overview
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC17] 왓 스튜디오 서비스파트
Vue 뽀개기 1장 환경설정 및 spa설정
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
도구를 활용한 더 나은 웹 개발: Yeoman
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
WIPI.ppt
Spring boot DI
deview2014
[1A4]자바스크립트 라이브러리 개발 운영 경험기
pyOpenCL 입문
01.개발환경 교육교재
Machine Learning Model Serving with Backend.AI
Ad

Caffe Tutorial with window10, VS2015

  • 1. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Deep Learning with Tutorial With Caffe & Window10, VS 2015 2017.07.24 석사 박사 통합과정 김영준
  • 2. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 목차 1. Machine Learning//추후 업데이트 2. Artificial Neural Network//추후 업데이트 3. Deep Learning//추후 업데이트 4. CNN//추후 업데이트 5. Caffe • 소개 • 설치 • Window 설치
  • 3. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 목차 • Tutorial 0. – 훈련, 학습 그리고 분류, Batch File • Tutorial 1. – Mnist 필기 숫자 인식 분류 • Tutorial 2. – Mnist 필기 숫자 인식 분류 – 자체 이미지 이용 • Tutorial 3. – Imagenet 이미지 인식 분류
  • 4. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe - 소개 • Caffe (*Convolutional Architecture for Fast Feature Embedding) • UC Berkeley – BVLC (Berkeley vision and Learning Center) • Framework by BAIR (Berkeley Artificial Intelligence Research) ※Convolution: 중첩, 꼬임, 나선. 수학에선 중첩 적분 중첩 적분을 의미하는 수학 연산자로, 어떠한 함수가 두 개 존재할 때 두 함수 중 하나를 반전 시킨 후 이동한 값을 나머지 다른 함수에 곱한 다음에, 각 구간에 대하여 적분을 함으로써 새로운 함수를 만들어내는 것이다. 합성곱이 라고도 하며, 만약 함수 f와 함수 g를 콘볼루션 한다고 할 때, 수학 기호로는 f*g와 같이 표기한다. [네이버 지식백과] 콘볼루션 [Convolution] (두산백과)
  • 5. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe - 소개 • Creator: Yangqing Jia • Project during his PhD at UC Berkeley. • Github의 개발자 다수 참여: https://github.com/BVLC/caffe/ • Open source community • C++, CUDA 기반 • BSD License (수정, 재배포, 상업적 사용이 가능) • *GPGPU Acceleration ※ General-Purpose computing on Graphics Processing Units , GPU 상의 범용 계 산 – CPU가 맡았던 응용프로그램 계산을 GPU가 하는 것.
  • 6. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 설치 – 설치환경 • 운영체제: 초기화된 Window 10 환경 • 설정 – 업데이트 및 복구 – 복구 – 이 PC 초기화(개인 파일 유지) • Visual Studio 2013이 구동 가능한 Window 운영체제에서 설치 가능 • Hard Drive: 최소 100GB 용량 확보 • 설치 파일, 라이브러리 파일, Caffemodel 파일 등 용량 필요 • CPU & GPU: Caffe는 CPU 혹은 GPU에 따라 구동 가능, 사용할 처리 장치(PU)에 따라 적절한 제품을 준비할것 • 어떤 처리장치이든 고용량 RAM. 고성능이면서 코어 수가 많을수록 좋음, GPU가 훨씬 빠른 성능 구현 가능. GTX 10xx 시리즈, Titan 시리즈 사용시 유 리 • RAM – CPU 사용시 고용량일 수록 유리, GPU 또한 그래픽 카드의 RAM이 클수록 좋음
  • 7. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 설치 1. 직접 설치 – CMD Prompt 으로 다운로드 후 VS에서 직접 빌드 후 Caffe Binary 획득 2. Prebuilt 다운 – 자신의 PC에 맞는 prebuilt 다운 후 Caffe Binary 획 득
  • 8. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 설치 – Requirement & Optional Dependencies Requirement • VS 2013 or 2015 • Cmake 3.4 or Higher • Git 설치 • Thirdparty.rar 파일을 다운로드 받아야함. https://github.com/happynear/caffe-windows • 받은 파일은 ~~/caffe/window/thirdparty 에 압축을 풀도록한다. Optional Dependencies • PC 환경에 맞는 CUDA 와 Cudnn • CUDA 8.0 for VS 2015 • Python • Matlab ※ 환경변수에서 Path에 Python, Cmake 둘 모두 포함되어야 한다.
  • 9. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 설치 – Requirement & Optional Dependencies • 환경변수 시스템 변수 설정 하는 법 • 내 PC – 오른쪽 마우스 속성 – 고급 시스템 설정 – 고급 탭 – 환경변수, 시스템 변수에서 Path 편집 – 새로 만들기 – 환경변수에 추가할 대상의 파일 위치 추 가 및 확인.
  • 10. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 설치 – Requirement & Optional Dependencies • 환경변수 시스템 변수 설정 하는 법 다음 주소는 꼭 등록해야 좋은 주소 C:/ ~~ /caffe/windows/thirdparty/bins ※다운 받은 caffe/windows/thirdparty에 파일이 없을 경우 따로 Thirdparty.rar을 받아야함 공유 참고 ※ https://github.com/happynear/caffe-windows C:/ ~~ /Python27 C:/ ~~ /Python27/Scripts C:/ ~~ / Python27/Lib/site-packages ※ 아래는 Program Files에 CUDA를 설치 했을 때 자동으로 등록되는 환경변수 경로 – Cudnn을 정석대로 CUDA에 설치시 따로 경로 변수 설정할 필요 없다. C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0
  • 11. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 1. 필요한 Requirements를 모두 설치 후 Caffe를 설치할 장소를 미리 만든다. Ex) C:Projects 2. CMD Prompt 에서 해당 폴더에 이동 • cd.. :상위 디렉토리 이동 • cd ~~ : 현 디렉토리 내에 ~~ 폴더로 이동 3. 위치에서 다음과 같이 명령한다. 첫 번째 줄은 git를 이용하여 Caffe 다운 1. C:Projects> git clone https://github.com/BVLC/caffe.git 2. C:Projects> cd caffe 3. C:Projectscaffe> git checkout windows 4. :: Edit any of the options inside build_win.cmd to suit your needs 5. C:Projectscaffe> scriptsbuild_win.cmd
  • 12. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 4. 다운로드 받은 경로 (ex) C:/project/)로 탐색기로 들어가 확인한다. 5. ~~/Caffe/windows 에 보면 Caffe.sln 솔루션이 있다. 6. 먼저 솔루션을 더블클릭하여 VS2015를 실행한다.
  • 13. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 7. 솔루션 탐색기에 프로젝트들이 잘 뜨는 것을 확 인한다. 8. 만일 프로젝트가 load 되지 않은 상태라면 필요한 visual studio 구성을 모두 설치한다. ※ 해당 프로젝트를 더블클릭하여 확인가능
  • 14. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 9. Caffe sln 에서 Props를 확장 10. CommonSettings.props를 연다. 11. 다음 슬라이드의 파란색 글 부분을 자신의 PC에 맞게 바꾼다. 12. 그 외에 matlab support, Python Support 등도 바꾸어 설정 가능하다.
  • 15. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 – CommonSettings.props • <CpuOnlyBuild>false</CpuOnlyBuild> • <UseCuDNN>true</UseCuDNN> • <UseNCCL>true</UseNCCL> • <CudaVersion>8.0</CudaVersion> • ….. • <CudaArchitecture>compute_61,sm_61;compute_61,sm_61;</CudaA rchitecture> • <CuDnnPath>C:Program FilesNVIDIA GPU Computing ToolkitCUDAv8.0</CuDnnPath> ※ CudaArchitecture 부분의 숫자는 https://developer.nvidia.com/cuda-gpus 에서 확인 가능
  • 16. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 – 빌드 • 빌드 설정을 Release, x64 로 변경 한다. • Solution - libcaffe 부터 빌드를 시작한다. • 대부분의 에러는 여기서 나타난다. • 이후 caffe, classification, compute image mean, convert cifar data, convert imageset, convert mnist data 까지 빌드를 한다. • 만일 matlab과 python suppor가 True 라면 Pycaffe, matcaffe, python 등을 빌드 가능하므로 전체 Caffe solution을 빌드한다. • ※Mxnet_caffe_wrapper는 unload 시킨다. 쓰이지도 않고 중간에 에러 발생
  • 17. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – 직접 설치 – 빌드 • 빌드 후 Caffe/build/x64/release 에 binaries(.exe 파일) 가 있으면 제 대로 빌드/설치가 된 것이다. • 앞으로 튜토리얼과 CNN 을 이 Binary들을 이용하여 실행하게 된다.
  • 18. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering 5. Caffe – Prebuilt Binaries • https://github.com/BVLC/caffe/tree/windows 에서 다운로드 가능하 며 각각의 빌드 환경에 따라 미리 만들어진 binaries를 그대로 사용 가능하다. • 미리 만들어진 Binaries는 다운 받은 zip폴더 내부 Bin 폴더에 있다. • 쓰고자 하는 .exe 파일들을 원하는 폴더에 옮겨 쓰면 된다. • .exe는 더블 클릭시 아무런 반응이 없으며 CMD prompts 를 통해 실 행과 필요한 input 파일을 지정해줘야 실행된다. • 이때 Batch 파일을 만들어 사용하면 편리하다. • 자세한 내용은 Tutorial 참고
  • 19. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial • Tutorial 에서는 설치/빌드한 caffe library 중 caffe.exe 와 classification.exe 의 사용법을 이해하는 데 도움이 되는 내용을 다 룬다. • Tutorial 1,2,3,4 는 MNIST, IMAGENT 등의 이미지 데이터베이스 셋 을 가지고 훈련시키는 예제를 다루며 • Tutorial 0은 예제를 다루기 전 알아두면 편리한 기법을 설명한다.
  • 20. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – 훈련, 학습 그리고 분류 • Caffe tutorial 에서 진행하는 이미지 분류의 과정은 다음과 같다. • Data를 준비한다. 경우에 따라 빠른 속도를 위해 LMDB, LEVELDB 형식으로 만든다. • Training set, Test set, Training CNN(solver.prototxt, train_val.prototxt) 모델을 이용하여 기계(Caffe.exe)에게 학습을 시킨다. • 학습 시킨 결과로 caffemodel을 만든다. • Input image 와 Test CNN 모델, 학습 결과인 caffemodel을 이용해 기계 (Classification.exe)에게 분류를 시킨다. Machine (Caffe.exe)Training set Machine (Classification.exe) Test set Input image With Label ex) a, b, c, d .caffemodel Machine ”Input image is A” CNN CNN .caffemodel
  • 21. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – 훈련, 학습 그리고 분류 • 모든 과정들이 비슷한 과정을 거치기 때문에 한 폴더에 필요한 파일들을 모아 실행시 키는 것이 편리하다. 아래의 예시를 살펴볼 것 1. C:/projects/ 경로에 caffe 라이브러리를 설치, 빌드한다. - C:/projects/caffe/~~~ 2. C:/Projects/tutorial/경로를 만든 후 해당 경로에 bin폴더를 만든다. 3. C:/projects/caffe/build/x64/release 안의 binaries를 복사하여 C:/Projects/tutorial/bin 에 붙여넣는다. - 쓰일 파일은 .exe, binaries 이지만 그냥 모든 파일을 복사해도 된다. 4. Project 폴더에서 앞으로 다루어질 튜토리얼이 진행될 것이다.
  • 22. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Caffe binaries 사용 • Tutorial 혹은 추후 CNN layer를 설계하고 머신을 학습시킬시 Caffe binaries를 사용하게 될 것이다. • 사용하는 binaries와 사용되는 순서는 다음과 같다 convert_imageset/mnist_data.exe compute_image_mean.exe caffe.exe classification.exe 준비된 이미지 셋을 섞고 lmdb/leveldb 데이터베이스 형식으로 만든다. 대부분의 경우 training, testing 시에 image data에서 mean image를 뺀다. Train 설정(solver.prototxt)와 Train CNN 모델(train_val.prototxt)을 이용하여 학습시킨다. 결과는 .caffemodel 학습된 모델, caffemodel을 이용하여 input image를 분류한다.
  • 23. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Caffe binaries 사용 • 모든 binary 들은 Flags와 input을 같이 명령해야 하는데 • 각 binary와 input file은 해당 dir 위치 까지 같이 명령해주어야 한다. • Input file이 여러 개일 때는 띄어쓰기로 구분한다. • 각 Binary들이 필요로 하는 input, flag 는 해당 binary .exe 파일을 cmd로 명 령하면 보여준다.
  • 24. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Caffe binaries 사용 Ex) 아래의 예시는 Convert_mnist_data.exe를 보여준다. Buildx64Releaseconvert_mnist_data.exe -backend="leveldb" C:/DL/Caffe/examples/mnist/train-images.idx3-ubyte C:/DL/Caffe/examples/mnist/train-labels.idx1-ubyte C:/DL/Caffe/examples/mnist/mnist_train_leveldb (위 예시의 각 input과 Flag 사이는 띄어쓰기로 구분되어있다.) .exe 파일의 위치까지 cmd 에서 이동해도 되고 원래 위치에서 해당 파일까지의 경로를 backslash 를 이용하여 명령해도 된다. (/ slash 과 구분) Input file의 경우 / slash를 이용하여 명령해도 되고 .exe와 같은 위치 라면 input file의 파일명 + 확장자 만 써주면 된다.
  • 25. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Caffe binaries 사용 convert_imageset_data.exe [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME convert_mnist_data.exe [FLAGS] input_image_file input_label_file output_db_file compute_image_mean.exe [FLAGS] INPUT_DB [OUTPUT_FILE] classification.exe deploy.prototxt network.caffemodel labels.txt img.jpg
  • 26. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Caffe binaries 사용 caffe.exe C:/DL/Caffe/Build/x64/Release/caffe.exe train - solver=C:/DL/Caffe/examples/mnist/lenet_solver.prototxt
  • 27. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 • 매번 Train, test, data 실행할 때 마다 경로와 파일을 일일이 쳐주기 힘들기 때문에 • Bat file 을 활용한다. • Txt 로 작성하여 확장자만 .bat으로 만들면 된다. • 각 exe.를 자동으로 실행 시켜주는 실행파일의 역할 • 필요한 input, Flags가 들어가며 이들의 경로도 포함
  • 28. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 1. Tutorial 폴더에 MNist 폴더를 만들고 내부에 data 폴더를 만든다. 2. Data 폴더 안에 train, test, input 폴더를 만든다. 3. C:/projects/tutorial/Mnist 경로에 새 텍스트 만들기를 하여 txt 파 일을 하나 만든 후 연다. 4. 다음 슬라이드와 같이 한다 ※다음 batch 파일은 자체 필기 숫자 이미지 모음을 사용할 때 convert_imageset.exe를 실행하는 기능을 한다.
  • 29. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_imageset.exe – 1 • @set CAFFE_BIN="C:/project/tutorial/bin/" • @set DATA_ROOT="C:/project/tutorial/MNist/data/" • @echo ========================== • @set TRAIN_DATA_ROOT="C:/project/tutorial/MNist/data/train/" • @set TEST_DATA_ROOT="C:/project/tutorial/MNist/data/test/" • @echo ========================== • @set TRAIN_DATA_TXT="C:/project/tutorial/MNist/data/train.txt" • @set TEST_DATA_TXT="C:/project/tutorial/MNist/data/test.txt" • @echo ========================== • @set TRAIN_LMDB="C:/project/tutorial/MNist/data/train_lmdb" • @set TEST_LMDB="C:/project/tutorial/MNist/data/test_lmdb“ • @echo ========================== • @set RESIZE_HEIGHT=28 • @set RESIZE_WIDTH=28 • @echo ==========================
  • 30. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_imageset.exe – 2 • @echo Delete previous files... • @echo ========================== • rmdir /s /q %TRAIN_LMDB% • rmdir /s /q %TEST_LMDB% • @echo ========================== • @echo Creating train LMDB... • @echo ========================== • %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% - shuffle %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LMDB% • @echo ========================== • @echo Creating test LMDB... • @echo ========================== • %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% - shuffle %TEST_DATA_ROOT% %TEST_DATA_TXT% %TEST_LMDB% • @echo ========================== • @echo Done... • @echo ==========================
  • 31. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_imageset.exe – 3 • 작성후 파일명을 01_convert_imageset_Mnist_lmdb.bat 로 변경한 다. • 확장자명까지 변경한다. • 탐색기 보기 탭 확장자명 표시 • 실행을 위해선 bat 파일에 기입한 위치에 Test/train 의 image, .txt 파일이 필요하다. • 실행 이후 기입한 위치에 train/test_lmdb 폴더와 함께 내부에 lmdb 파일이 생성된다.
  • 32. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_imageset.exe – 3 • Image Label 파일 만들기 (train.txt & test.txt) • 위의 파일은 이미지들의 목록과 해당이미지가 어떤 라벨(label) 을 가지는지 에 대한 정보를 포함한다. • 형식은 반드시 = class01_0001.jpg 1 와 같이 만들도록 한다. • test와 train 폴더 내부의 이미지 이름을 일정한 규칙으로 변경한다. • Ex) class01_0001.jpg • Cmd를 통해 test,train 폴더로 이동 후 dir/ b>list.txt 를 실행한다. • 위의 명령은 해당 dir에 있는 모든 파일의 이름을 가져와 list.txt에 저장하는 명령이다. • Batch 파일로 만들어도 편리하다. • List.txt 의 목록을 excel로 가져와 left 함수, concatenate 함수를 이용하여 위의 형식으로 만든다. • 만들어진 목록을 test.txt , train.txt 에 저장한다.
  • 33. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 • 앞서서 소개한 batch는 절대 경로를 이용한 batch 파일이다. • 현재 경로를 반환 ./ 상위 경로를 반환 ../ • 등의 문법을 이용하면 상대 경로를 이용해 만들 수 있다. • 다음은 자주 쓰이는 .exe binary들의 batch 예시이다. • Classification의 경우 여러 개의 이미지를 검사하게 bat을 작성할 수 있다. • 경로를 잘 확인하고 쓰도록 한다.
  • 34. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_imageset.exe • @set CAFFE_BIN="../bin/" • @set DATA_ROOT="./data/" • @set TRAIN_DATA_ROOT="./data/train/" • @set TEST_DATA_ROOT="./data/test/" • @set TRAIN_DATA_TXT="./data/train.txt" • @set TEST_DATA_TXT="./data/test.txt" • @set TRAIN_LMDB="./data/train_lmdb" • @set TEST_LMDB="./data/test_lmdb" • @set RESIZE_HEIGHT=28 • @set RESIZE_WIDTH=28 • @echo ========================== • @echo Delete previous files... • @echo ========================== • rmdir /s /q %TRAIN_LMDB% • rmdir /s /q %TEST_LMDB% • @echo ========================== • @echo Creating train LMDB... • @echo ========================== • %CAFFE_BIN%convert_imageset.exe -resize_height=%RESIZE_HEIGHT% -resize_width=%RESIZE_WIDTH% -shuffle %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LMDB% • @echo ========================== • @echo Creating test LMDB... • @echo ==========================
  • 35. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – convert_mnist_data.exe • @set CAFFE_BIN="../bin/" • @set DATA_ROOT="./data/" • s • @set TRAIN_DATA_ROOT="./data/train/train-images.idx3-ubyte" • @set TEST_DATA_ROOT="./data/test/t10k-images.idx3-ubyte" • @set TRAIN_DATA_TXT="./data/train-labels.idx1-ubyte" • @set TEST_DATA_TXT="./data/t10k-labels.idx1-ubyte " • @set TRAIN_LEVELDB="./data/train_leveldb" • @set TEST_LEVELDB="./data/test_leveldb" • @echo ========================== • @echo Delete previous files... • @echo ========================== • rmdir /s /q %TRAIN_LEVELDB% • rmdir /s /q %TEST_LEVELDB% • @echo ========================== • @echo Creating train LEVELDB... • @echo ========================== • %CAFFE_BIN%convert_mnist_data.exe -backend="leveldb" %TRAIN_DATA_ROOT% %TRAIN_DATA_TXT% %TRAIN_LEVELDB% • @echo ========================== • @echo Creating test LEVELDB... • @echo ========================== • %CAFFE_BIN%convert_mnist_data.exe -backend="leveldb" %TEST_DATA_ROOT% %TEST_DATA_TXT% %TEST_LEVELDB% • @echo ========================== • @echo Done...
  • 36. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – conpute_image_mean.exe • @set CAFFE_BIN="../bin/" • @set TRAIN_LMDB="./data/train_lmdb/" • @set DBTYPE="lmdb" • @echo ========================== • @echo Delete previous files... • @echo ========================== • rmdir /s /q %TRAIN_LMDB%mean.binaryproto • @echo ========================== • @echo Creating mean_imagedata • @echo ========================== • %CAFFE_BIN%compute_image_mean.exe -backend=%DBTYPE% %TRAIN_LMDB% mean.binaryproto • @echo ========================== • @echo Done... • @echo ==========================
  • 37. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – train.exe • @set CAFFE_BIN="../bin/" • @set SOLVER="solver.prototxt" • @echo ========================== • @echo Training... • @echo ========================== • %CAFFE_BIN%caffe.exe train -solver=%SOLVER% • @echo ========================== • @echo Done... • @echo ==========================
  • 38. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – Batch 사용 – classification.exe • @set CAFFE_BIN="../bin/" • @set DEPLOY_PROTOTXT="deploy.prototxt" • @set CAFFE_MODEL="lenet_iter_1000.caffemodel" • @set TRAIN_TXT="./data/labels.txt" • @set TEST_IMAGE="./data/input/" • @echo ========================== • @echo Classifying... • @echo ========================== • %CAFFE_BIN%classification.exe %DEPLOY_PROTOTXT% %CAFFE_MODEL% %TRAIN_TXT% %TEST_IMAGE%im g_1.jpg • @echo ========================== • @echo Done... • @echo ========================== • pause
  • 39. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – solver.prototxt test_val.prototxt deploy.prototxt • caffe.exe와 classification.exe를 실행하기 위해선 3가지의 .prototxt 파일 이 필요하다. 위치는 batch파일의 위치와 동일하게 c:/projects/tutorial/MNIST 와 같이 각 튜토리얼 폴더 내부이다. • Solver.prototxt : train 의 설정 횟수 snapshot(caffemodel 출력) 간격 등을 설정할 수 있다. 내부에 train_val.prototxt를 지정하는 항목이 있다. 경로 와 함께 test_val.prototxt를 적어야한다. • test_val.prototxt : 이미지셋을 train 시킬 CNN 모델이 담겨 있다. 모델에 따라 형식이 조금씩 다르며 각 모델은 input에 해당하는 이미셋을 내용 에서 지정한다. LMDB 나 LEVELDB 혹은 이미지 경로 자체가 설정되기도 한다. 또한 Mean image가 설정될 수 있으므로 주의해서 설정한다. • Deploty.prototxt 기계가 주어진 이미지를 classification.exe을 통해 분류 시 이미지가 거칠 CNN 모델이 담겨있다. 대부분의 형식이 test_val 과 동 일하다.
  • 40. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – solver.prototxt test_val.prototxt deploy.prototxt • 세가지 prototxt의 사용하는 이름은 모델마다 다를 수 있다. • 내부의 경로가 제대로 설정 되어 있지 않으면 오류가 날 수 있다. • 훈련의 설정은 보통 solver.prototxt에서 하게 된다. • Solver는 모델의 최적화(optimization)을 담당하며 그 종류는 아래 의 주소에서 확인할 수 있다. http://caffe.berkeleyvision.org/tutorial/solver.html • CNN Layer 구조를 배우기 전까지는 deploy, test_val 파일을 건들기 는 힘들기 때문에 tutorial 0 에선 solver만 간략히 설명한다.
  • 41. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – solver.prototxt Train할때 쓸 CNN 모델이 담긴 prototxt file을 지명 한다. Test 횟수를 나타낸다. N번 train에 한번 test 시킨다
  • 42. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – solver.prototxt Base_lr: learning rate 초기값 Momentum: 지난 update에서의 weight를 나타낸다 Weight_decay: weight의 초기에 decay 되는 정도를 나타낸다. lr_policy: learning rate의 형상을 결정한다. 종류는 step, multistep, inv, fixed, poly 등이 있다. *Inv 는 inverse decay 를 나타낸다. Gamma: learning rate을 떨어뜨리는 factor가 된다. 만일 0.1이면 lr*0.1 이런 형식이다. Power: gamma와 비슷하게 lr 에 곱해질 factor에 가해질 지수이다. lr*a^power
  • 43. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 0. – solver.prototxt 100회에 한번씩 cmd에서 display된다. 훈련 iteration의 최대값을 의미한다. 훈련중 snapshot을 찍어 그 상태에서의 caffemodel을 출력한다. 연산 유닛의 종류를 결정한다. 그래픽카드를 쓰면 GPU
  • 44. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 1. MNIST • MNIST dataset이란 손글씨 인식 데이터셋으로 32x32 사이즈의 6만장의 train samples, 만장의 test semples 로 이뤄져 있다. http://yann.lecun.com/exdb/mnist/ 주소에서 다운 받는다. 4가지 파일은 각각 test & train label과 imageset 파일이다. 이미지는 셋 파일로 압축되어있다.
  • 45. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 1. MNIST • Mnist 폴더를 생성한다. • Data/train Data/test 경로를 생성한다. • convert_mnist_data.bat • caffe.bat • classification.bat • 세가지 bat을 생성하여 Mnist 폴더에 저장한다. • 세가지 prototxt 파일을 C:/~~/Caffe/examples/mnist 에서 가져와 Mnist 폴더에 복사한다. prototxt 내용의 경로를 알맞게 바꾼다. (lenet.prototxt -> deploty.prototxt, lenet_train_test.prototxt -> train_val.prototxt, lenet_solver.prototxt-> solver.prototxt)
  • 46. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 1. MNIST • http://yann.lecun.com/exdb/mnist/ 에서 받은 4가지 파일 중 image 들은 각각 data/train, data/test에 넣는다. (파일명에 나타나있다) • Label 파일들은 data 폴더에 넣는다. • 새 텍스트 파일을 만들어 파일명을 labels.txt로 만든다. • 내용은 아래와 같이 숫자 줄 바꾸기 를 반복하여 0~9까지 만든다. 0 1 2 3 4 5 6 7 8 9
  • 47. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 1. MNIST • Input image로 쓰일 사진을 만든다. • 오른쪽 과같이 28x28 사이즈 필기 이미지를 검은 배경 하얀 숫자로 제 작한다. (그림판, 알씨꾸미기 등 활용) • projects/tutorial/mnist/data/input 위 경로에 저장한다.
  • 48. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 1. MNIST • 훈련시킬 준비가 되었으므로 Convert_mnist_data.bat , caffe.bat를 실행한다. • Caffe.bat의 결과로 caffemodel이 출력되며 이름 형식은 lenet_iter_#####.caffemodel 이다. • 위 파일명을 classification.bat 편집에서 삽입한 후 classification.bat 배치파일을 차례로 실행한다. • 결과를 확인한다.
  • 49. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • 위의 예제에선 주어진 데이터 셋을 이용하여 훈련시켰다. • 이번 예제에선 사용자가 제작한 이미지셋을 준비하고 훈련시키는 과정을 다룬다. • 이번 예제에선 https://github.com/aleju/imgaug 에서 제작된 파이 썬 image augmentation 라이브러리를 이용한다.
  • 50. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • 오른쪽과 같은 숫자 이미지 10개를 하 나씩 제작한다. (이전 예제와 같음) • 이 이미지들은 기본이 될 이미지로서 Augmentation을 통해 증식 된다. • 기본 이미지가 많을 수록 더 정확한 분 류 및 인식이 가능하다.
  • 51. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • Image augmentation https://github.com/aleju/imgaug 에서 받은 zip 파일 내부 generate_example_images.py 를 이 용하여 이미지를 개당 64개로 증식 시킨다. - 다음 슬라이드는 augmentation을 이용하기 쉽게 만든 코드이다. (txt 파일을 만들어 붙여넣고, .py로 확장자 변경) - 한 폴더에 증식 시킬 이미지와 .py 파일을 넣고 .py를 IDLE 로 실행시킨다. - Image = misc.imresize(ndimage.imread(“ 이미지 파일명.확장자“)~~~~~ 위와 같이 증식시킬 이미지를 등록하고 실행한다. ** Matlab 등 다른 언어로 이미지를 증식시킬 수 있다. 이물 이미지는 빈 화면에 이물을 회전 확장 축소 이동시킨 후 합치는 방식으로 다량으로 제작 가능하다.
  • 52. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • from __future__ import print_function, division • import imgaug as ia • from imgaug import augmenters as iaa • from imgaug import parameters as iap • import numpy as np • from scipy import ndimage, misc • from skimage import data • import matplotlib.pyplot as plt • from matplotlib import gridspec • import six • import six.moves as sm • np.random.seed(44) • ia.seed(44) • def main(): • draw_single_sequential_images() • def draw_single_sequential_images(): • image = misc.imresize(ndimage.imread("6.jpg")[0:643, 0:643], (256, 256)) • sometimes = lambda aug: iaa.Sometimes(0.5, aug) • seq = iaa.Sequential( • [ • # apply the following augmenters to most images
  • 53. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • 증식 시킨 이미지들을 일정 비율 (7:3) 으로 나누어 train 폴더와 test 폴더에 나눈다. • 이름은 Class 별로 Class##_####.jpg 형식의 이름으로 변경시킨다. (알씨 이름바꾸기 추천) • Test 와 Train 이미지들의 이름이 겹쳐도 문제없다. • train.txt 와 test.txt 를 Excel을 이용해 작성한다. • 이름 형식은 이전 예제와 똑같이 Class##_####.jpg ## 모양이다. (ex: Class1_0001.jpg 1 )
  • 54. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. MNIST_Self • 이미지와 라벨이 준비 되었으므로 Prototxt 파일을 확인한 후 bat 파일을 실행한다. • 01_convert_imageset.bat • 02_compute_image_mean.bat • 03_caffe.bat Caffemodel 파일을 확인하고 classification.bat에 입력한다. • 04_classification.bat 결과를 확인한다.
  • 55. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. Imagenet-Alexnet • Imagenet은 이미지 분류 인식 대회의 이미지database 이다. • Caffe에는 ILSVRC2012 라는 이름으로 data set과 모델이 포함되어 있다. • 약 128만 장의 라벨링된 training set, 5만장의 validation set, 10만장 의 test set 으로 구성되어 있다. • 1000개의 class로 구성되어 있다.
  • 56. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. Imagenet-Alexnet • Alexnet은 2012년도 대회에서 우승한 네트워크이다. 워낙 많은 데이터양으로 인해 개인이 caffemodel을 출력하긴 쉽지 않다. 아래의 주소에서 미리 훈련된 caffemodel을 받을수 있다. • http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel
  • 57. Metrology & Thin film Process Lab. Seoul National University School of Mechanical and Aerospace Engineering Tutorial 2. Imagenet-Alexnet • Projects/tutorial/alexnet을 만든다. • Data/input을 만든다. • 이전 슬라이드에서 받은 caffemodel 파일을 alexnet 폴더에 가져온다. • C:~~~CAFFEdatailsvrc12 경로에서 get_ilsvrc_aux.sh 를 워드패드로 열어 보면 http://dl.caffe.berkeleyvision.org/caffe_ilsvrc12.tar.gz 이라는 주소를 볼 수 있다. 위 경로에서 받은 압축파일에 synset_words.txt를 복사해 alexnet/data폴더에 붙여넣는다. • C:~~~CAFFEmodelsbvlc_alexnet 경로에서 deploy.prototxt를 복사해 alexnet 폴더에 붙여넣는다. • C:~~~CAFFEexamplesimages 경로에서 cat.jpg를 data/input에 복사 붙여넣는다. • .caffemodel, deploty.prototxt, labels.txt(synset_words.txt), cat.jpg • 04_classification.bat 실행 • 결과를 확인한다.