caffe 간단 한 시작 안내 (1) - cifar 실행 예
caffe 는 우호 적 이 고 손 쉽게 시작 할 수 있 는 오픈 소스 딥 러 닝 플랫폼 으로 이미지 관련 처리 에 주로 사용 되 며 CNN 등 다양한 딥 러 닝 네트워크 를 지원 할 수 있 습 니 다.
caffe 를 바탕 으로 개발 자 는 간단 한 학습 네트워크 를 편리 하고 신속하게 개발 하여 분류, 포 지 셔 닝 등 임 무 를 수행 할 수 있 으 며 과학 연구 에 도 사용 할 수 있 으 며 소스 코드 를 바탕 으로 수정 하여 자신의 알고리즘 을 실현 할 수 있 습 니 다.
본 논문 의 주요 목적 은 카페 의 기본 적 인 사용 방법 을 소개 하 는 것 이다. 본 고 를 통 해 일반 엔지니어 들 이 카페 를 이용 하여 자신의 간단 한 모델 을 훈련 시 킬 수 있 기 를 바란다.
본 고 는 주로 다음 과 같은 내용 을 포함한다. caffe 를 운영 하 는 예 로 cifar 훈련 집 을 훈련 시 키 고 다른 사람 이 정의 한 인터넷 으로 자신의 데 이 터 를 훈련 시 키 며 훈련 된 모델 fine tune 자신의 데 이 터 를 사용한다.
배경 지식 소개
깊이 있 는 학습 은 기계 학습 의 한 가지 로 주요 목 표 는 학습 방법 을 통 해 기 존의 일반 프로 그래 밍 으로 해결 할 수 없 었 던 문 제 를 해결 하 는 것 이다. 예 를 들 어 이미지 인식, 문자 인식 등 이다.
기계 학습 에서 의 '학습' 은 프로그램 에 경험 데 이 터 를 입력 하고 몇 번 의 '교체' 를 통 해 알고리즘 파 라 메 터 를 계속 개선 하면 최종 적 으로 '모델' 을 얻 을 수 있 고 새로운 데이터 입력 모델 을 사용 하여 원 하 는 결 과 를 계산 할 수 있다 는 것 을 말한다.
예 를 들 어 이미지 분류 작업 에서 경험 데 이 터 는 이미지 와 대응 하 는 문자 로 모델 을 훈련 한 후에 새로운 그림 을 모델 로 연산 하면 해당 하 는 유형 을 알 수 있다.
이상 은 간단하게 소개 할 뿐 기계 학습, 권 적 신경 망 에 관 한 기초 지식 을 먼저 배 우 는 것 을 권장 합 니 다.
설치 하 다.
이 부분 은 인터넷 에 많은 튜 토리 얼 이 있 는데 여기 서 생략 합 니 다. 또한 저 는 docker 의 미 러 로 직접 설 치 했 습 니 다. 인터넷 에서 caffe 가 있 는 docker 미 러 를 직접 찾 을 수 있 습 니 다.좋 은 점 은 환경 을 설치 하 는 시간 을 절약 하 는 것 이다. 단점 은 뒤에 파일 을 설치 하 는 것 이 번 거 로 울 수 있다 는 것 이다. 장기 적 으로 계획 하 는 것 이 좋 을 지, 아니면 컴퓨터 에 직접 설치 하 는 것 이 좋 을 지 건의 하 는 것 이다.
훈련 cifar 훈련 집
cifar 는 흔히 볼 수 있 는 이미지 분류 훈련 집 으로 수만 장의 사진 과 20 개의 분 류 를 포함 하고 caffe 는 네트워크 를 제공 하여 cifar 데이터 세트 를 분류 하 는 데 사용 된다.
cifar 네트워크 의 정 의 는 examples / cifar 10 디 렉 터 리 에서 훈련 하 는 과정 이 매우 간단 합 니 다.
(아래 명령 은 모두 caffe 기본 루트 디 렉 터 리 에서 실 행 됩 니 다. 아래 와 같 습 니 다)
1. 훈련 데이터 획득
cd $CAFFE_ROOT
./data/cifar10/get_cifar10.sh
./examples/cifar10/create_cifar10.sh
2. 훈련 시작
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
3. 훈련 이 끝나 면 우 리 는 얻 을 수 있다.
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
이때 우 리 는 훈련 을 통 해 모델 을 얻어 뒤의 분류 에 사용 했다.
4. 다음 에 우 리 는 모델 을 사용 하여 새로운 데 이 터 를 분류 합 니 다.
먼저 다른 사람의 모델 로 분류 해 보 세 요. (기본 적 인 ImageNet 모델)
python python/classify.py examples/images/cat.jpg foo
다음은 우리 가 자신의 모델 을 지정 하여 분류 할 것 이다.
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --center_only examples/images/cat.jpg foo
위의 이 말 은 cifar 10 을 사용 한 다 는 뜻 입 니 다.quick. prototxt 네트워크 + cifar 10quick_iter_4000. cafemodel. h5 모델 은 examples / images / cat. jpg 그림 을 분류 합 니 다.
기본 classify 스 크 립 트 는 결 과 를 직접 출력 하지 않 고 결 과 를 foo 파일 에 입력 합 니 다. 직관 적 이지 않 습 니 다. 여기 서 저 는 인터넷 에서 수정판 을 찾 았 습 니 다. 인 자 를 추가 하여 출력 확률 이 가장 높 은 분 류 를 할 수 있 습 니 다.
python / classify. py 바 꾸 기, 다운로드 주소:http://download.csdn.net/detail/caisenchuan/9513196
이 스 크 립 트 는 두 개의 인 자 를 추가 하여 labels 를 지정 할 수 있 습 니 다.file, 그리고 분류 결 과 를 직접 출력 할 수 있 습 니 다.
python python/classify.py --print_results --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --labels_file data/cifar10/cifar10_words.txt --center_only examples/images/cat.jpg foo
출력 결과:
Loading file: examples/images/cat.jpg
Classifying 1 inputs.
predict 3 inputs.
Done in 0.02 s.
Predictions : [[ 0.03903743 0.00722749 0.04582177 0.44352672 0.01203315 0.11832549
0.02335102 0.25013766 0.03541689 0.02512246]]
python/classify.py:176: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)
labels = labels_df.sort('synset_id')['name'].values
[('cat', '0.44353'), ('horse', '0.25014'), ('dog', '0.11833'), ('bird', '0.04582'), ('airplane', '0.03904')]
Saving results into foo
Tips
마지막 으로 네트워크 훈련 에 사용 되 는 관련 파일 을 정리 합 니 다.
cifar10_quick_solver. prototxt: 프로젝트 설정, 교체 횟수 등 정 보 를 설정 하 는 데 사 용 됩 니 다. 훈련 할 때 caffe train 에서 이 파일 을 지정 하면 훈련 을 시작 합 니 다.
cifar10_quick_train_test. prototxt: 훈련 네트워크 설정, 훈련 용 네트워크 설정, 이 파일 의 이름 은 solver. prototxt 에서 지정 합 니 다.
cifar10_quick_iter_4000. cafemodel. h5: 훈련 된 모델, 뒤에 이 모델 로 분류 합 니 다.
cifar10_quick_iter_4000. solversate. h5: 훈련 된 것 이기 도 합 니 다. 중단 후 훈련 을 계속 하 는 데 사용 할 파일 입 니 다.
cifar10_분류 용 네트워크
다음으로 전송:https://www.cnblogs.com/alexcai/p/5468164.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.