Caffe 미세먼지 팁들
장점:
빠르다. 코드 작성 없이도 실행시킬수 있다.
Good for feedforward networks
Good for finetuning existing networks
Train models without writing any code!
Python interface is pretty useful!
단점:
Need to write C++ / CUDA for new GPU layers
Not good for recurrent networks
Cumbersome for big networks (GoogLeNet, ResNet)
그냥 feature 뽑거나, classification finetuning에서는 매우 편하다. 하지만 새로운 loss layer가 필요하게 되거나, 그 외의 특이한 아키텍쳐 구조로 설계하려면 방대한 C/C++ code도 이해해야한다.
https://github.com/gramuah/ccnn.git
답글삭제Count CNN by Caffe
https://github.com/piiswrong/dec.git
답글삭제DEC clustering by Caffe
http://caffe.berkeleyvision.org/install_apt.html
답글삭제Caffe install for Ubuntu
Caffe Install for Ubuntu :
답글삭제딥러닝에 관심을 갖게 되면서 관련 툴을 찾다가 처음 찾아 돌려본게 이 Caffe라는 툴이었고, 당시에는 vagrant란
VM에 다 갖춰진 채로 받아서 한번 샘플을 돌려본 적이 있습니다. pylearn2를 보다보니 거의 연구소 내부에서 쓰는
자체 툴을 공개한거라(물론 이 자체로도 고맙슴다만) 모니터링이나 새로 모델을 걸어보는데 상당한 불편이 있어
다시 Caffe 사이트를 찾아가서 보다 보니, 그 짧은 기간(2주) 동안 상당한 보강이 되어있군여 ! 놀랍슴다.
간단히 소개드렸지만 이 툴은 지아양칭(贾扬清)이란, 칭화대를 졸업하고 UC버클리 PhD를 한, 젊은 구글 연구원이
만든 딥러닝 툴인데 원래 파이썬/cuda-convent로 구현했던 DeCaf란 툴을 C++/CUDA로 다시 구현한 툴로 Caffe란
이름은 "Convolutional Architecture for Fast Feature Embedding"란 상당히 복잡한 개념을 줄인 용어로군여. 현재는
버클리비전이란 버클리대 연구소에서 오픈소스로 관리되고 있습니다.
C++에 지레 겁먹고 다시 볼 생각을 안했었는데, 엔진부분은 C++로 짜였지만 거의 모든 기능이 파이썬으로 편리하게
래핑(wrapping)이 되어있고 이제는 오히려 iPyhton노트북으로 사용하는걸 '권장'하고 있습니다. 마치 C로 구현한
OpenCV가 cv2.pyd 파일 하나로 거의 모든 기능을 가져다 쓸 수 있게 해놓은거 처럼 말이죠. 당장 우분투 리눅스에
깔아봤슴다.
설치과정이 워낙 깔끔해서 문서에 나온 대로 해 주면 바로 사용이 가능하더군요. 제가 쓰는 환경은 Ubuntu 14.04
데스크탑 버전입니다. 일단 소스( https://github.com/BVLC/caffe )를 받아서 풀어 놓고서 :
1. dependency 설치
sudo apt-get install libatlas-base-dev
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
저는 파이썬을 반드시 써야 하므로 파이썬에도 dependecy를 추가해주기 위해서
sudo pip install -r ~/Dev/caffe/python/requirements.txt
를 실행해줍니다. 제가 왠만한 파이썬 모듈은 거의 깐 걸로 알았는데 추가해서 가져오는 파이썬 모듈들도 꽤나 많네요.
또한 caffe관련 파이썬 모듈들을 임포트할 수 있도록
export PYTHONPATH=~/Dev/caffe/python:$PYTHONPATH
를 .bashrc에 추가해 줍니다.
2. config
cp Makefile.config.example Makefile.config
(물론 GPU를 쓰려면 CUDA 환경은 갖춰진 상태에서 컴파일해야 합니다. 제 경우 첫번째 빌드에서 코어덤프가 났는데
원인은 Makefile.config 중 CUDA_ARCH 부분의 끝 두줄, arch=compute_50 부분의 커멘트를 안풀어준거 였네요.
문서를 보면 CUDA 6.0 이상 최신 버전은 이걸 풀어주라고 되어있습니다)
3. make
make all
make test
make runtest
make pycaffe
위의 runtest를 실행하면, 무슨 나사에서 돌아가는 프로젝트인지 무려 718가지 테스트를 돌립니다 !
전에 vagrant VM에서 돌렸던 MNIST 문자인식 샘플을 다시 한번 돌려봅니다.
cd ~/Dev/caffe/data/mnist
./get_mnist.sh
cd ~/Dev/caffe/examples/mnist
./create_mnist.sh
cd ~/Dev/caffe/examples/mnist
./train_lenet.sh
역시 마찬가지로 10000번 반복에 결과는 0.0298, 지난번 보다 조금 높게 나왔습니다. 새로 깔아본건 이걸
파이썬으로 요리하는걸 배우기 위해서이니까 몇가지 예제를 iPython 노트북에서 돌려보기로 하지요.