Caffe crop
5260 단어 Caffe
[python] view plain
copy
print ?
layer {
name: ”data”
type: ”Data”
top: ”data”
top: ”label”
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 600
mean_file: ”examples/images/imagenet_mean.binaryproto”
}
data_param {
source: ”examples/images/train_lmdb”
batch_size: 256
backend: LMDB
}
}
layer {
name: ”data”
type: ”Data”
top: ”data”
top: ”label”
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 600
mean_file: ”examples/images/imagenet_mean.binaryproto”
}
data_param {
source: ”examples/images/val_lmdb”
batch_size: 50
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
mirror: true
crop_size: 600
mean_file: "examples/images/imagenet_mean.binaryproto"
}
data_param {
source: "examples/images/train_lmdb"
batch_size: 256
backend: LMDB
}
}
layer {
name: "data"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
mirror: false
crop_size: 600
mean_file: "examples/images/imagenet_mean.binaryproto"
}
data_param {
source: "examples/images/val_lmdb"
batch_size: 50
backend: LMDB
}
}
위의 데이터층의 정의에서 거울과crop 을 사용한 것을 알 수 있다size, mean 도 정의했습니다file.
crop을 이용하여사이즈 이런 방식은 중심의 관심점과 모서리 특징을 잘라낼 수 있고mirror는 거울을 만들어 작은 데이터 집합의 부족함을 보완할 수 있다.
여기서 크랩에 대해서 중점을 두고크기 훈련층과 테스트층의 차이점:
우선 Mean 에 대해 알아야 합니다.file 및 crop사이즈는 상관없어요.mean_file는 훈련집 사진에 따라 제작된,crop사이즈는 트레이닝 세트 이미지를 재단하는 것으로 두 가지 모두 원시적인 트레이닝 세트 이미지를 처리한다.원본 트레이닝 이미지의 크기가 800*800이면cropsize 이미지가 600*600이면 meanfile 및 cropsize의 그림은 모두 800*800의 그림집입니다.
카페에서 crop 을 정의했다면size, 그럼train에서crop보다 크게크기의 그림은 무작위로 편집되며 테스트에서 중간 부분만 캡처합니다 (자세한 내용은/caffe/src/caffe/data transformer.cpp 참조):
[python] view plain
copy
print ?
//We only do random crop when we do training.
if (phase_ == TRAIN) {
h_off = Rand(datum_height - crop_size + 1);
w_off = Rand(datum_width - crop_size + 1);
} else {
h_off = (datum_height - crop_size) / 2;
w_off = (datum_width - crop_size) / 2;
}
}
//We only do random crop when we do training.
if (phase_ == TRAIN) {
h_off = Rand(datum_height - crop_size + 1);
w_off = Rand(datum_width - crop_size + 1);
} else {
h_off = (datum_height - crop_size) / 2;
w_off = (datum_width - crop_size) / 2;
}
}
다음은 내가 인터넷에서 찾은 내가 그림을 재단하는 프로그램이다.
제공된 웹 주소와 함께 자세히 볼 수 있습니다.http://blog.csdn.NET/u011762313/article/details/48343799
우리는 수동으로 그림을 재단하여pycaffe에 가져올 수 있으며 식별률을 높일 수 있다(pycaffe는caffemodel을 이용하여 분류할 수 있다:
이 단계는 다음과 같다).[python] view plain
copy
print ?
#분류확률분포기록pridects = np.zeros((1, CLASS_NUM))
# 이미지 차원(두께, 폭)img_shape = np.array(img.shape)
# 자르기 크기(H, W)crop_dims = (32, 96)
crop_dims = np.array(crop_dims)
# 여기에 사용된 그림의 높이는 모두 32로 고정되며, 길이는 96으로 가변적이다.
# 자르기 시작 0, 끝 wrange
w_range = img_shape[1] - crop_dims[1]
#왼쪽에서 오른쪽으로 한 번 자르고 오른쪽에서 왼쪽으로 한 번 자르면 보폭은 96/4=24for k in range(0, w_range + 1, crop_dims[1] / 4) + range(w_range, 1, -crop_dims[1] / 4):
# 이미지 자르기 crop_img = img[:, k:k + crop_dims[1], :]
# 데이터 입력, 사전 처리 net.blobs[’data’].data[…] = transformer.preprocess(‘data’, crop_img)
# 전방향 교체, 즉 분류 out = net.forward()
# 분류마다 확률 분포 중첩 pridects += out[’prob’]
# 가장 큰 확률로 최종 결과 분포pridect = pridects.argmax()
#
pridects = np.zeros((1, CLASS_NUM))
# 이미지 차원(높음, 넓이)imgshape = np.array(img.shape) #자르기의 크기(높음, 넓이) cropdims = (32, 96) crop_dims = np.array(crop dims)# 여기에 사용된 그림의 높이는 모두 32로 고정되어 있으며 길이는 변할 수 있습니다. 최소 96# 재단 기점은 0이고 끝점은 w 입니다.range w_range = img_shape[1] - crop_dims[1] # 왼쪽에서 오른쪽으로 한 번 자르고 오른쪽에서 왼쪽으로 한 번 자르면 96/4=24 for k in range(0, w range + 1, crop dims[1]/4) + range(w range, 1, -crop dims[1]/4): # 이미지 커팅 cropimg = img[:,k:k + crop dims[1],:] # 데이터 입력, 사전 처리 net.blobs['data'].data[...] = transformer.preprocess('data', crop img) # 전방향 교체, 즉 분류out = net.forward () # 매번 분류, 확률 분포 중첩pridects + = out ['prob'] # 최대 확률 분포 최종 결과pridect = pridects.argmax()
주: 그림이 너무 크면,
적당히 줄여야 하는batch크기 값입니다. 그렇지 않으면 GPU를 사용할 때 캐시 크기를 초과하여 오류가 발생할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Windows 10의 Ubuntu에 Caffe를 배치하고 Single Shot MultiBox Detector 실행예전에는 Ubuntu on Windows 10에서 카페가 LMDB의 동작에 문제가 있었지만 지금은 동작의 상태인 것 같다.저는 버클리 대학의 카페입니다. Intel은 자체 CPU에서 빠른 컴퓨팅을 위한 컴파일러 및 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.