From 683cbc1cae06b5073684c273f8094294ea0a4442 Mon Sep 17 00:00:00 2001 From: linmin Date: Wed, 12 Feb 2014 12:13:51 +0800 Subject: [PATCH 001/113] implemented padding aware im2col and col2im functions --- include/caffe/util/im2col.hpp | 20 ++++++ include/caffe/vision_layers.hpp | 3 +- src/caffe/layers/conv_layer.cpp | 49 +++++++++++--- src/caffe/layers/im2col_layer.cpp | 31 +++++++-- src/caffe/util/im2col.cpp | 60 +++++++++++++++++ src/caffe/util/im2col.cu | 106 ++++++++++++++++++++++++++++++ 6 files changed, 254 insertions(+), 15 deletions(-) diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index 83c01ddab53..dd01bdc54fb 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -25,6 +25,26 @@ void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int psize, const int stride, Dtype* data_im); +template +void padded_im2col_cpu(const Dtype* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_col); + +template +void padded_col2im_cpu(const Dtype* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + Dtype* data_im); + +template +void padded_im2col_gpu(const Dtype* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_col); + +template +void padded_col2im_gpu(const Dtype* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + Dtype* data_im); + } // namespace caffe #endif // CAFFE_UTIL_IM2COL_HPP_ diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 1861535dc52..ca54f2b4c6c 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -272,9 +272,9 @@ class Im2colLayer : public Layer { int CHANNELS_; int HEIGHT_; int WIDTH_; + int PAD_; }; - template class PoolingLayer : public Layer { public: @@ -326,6 +326,7 @@ class ConvolutionLayer : public Layer { int STRIDE_; int NUM_; int CHANNELS_; + int PAD_; int HEIGHT_; int WIDTH_; int NUM_OUTPUT_; diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index f2608be2f64..8f06524c2db 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -18,6 +18,7 @@ void ConvolutionLayer::SetUp(const vector*>& bottom, KSIZE_ = this->layer_param_.kernelsize(); STRIDE_ = this->layer_param_.stride(); GROUP_ = this->layer_param_.group(); + PAD_ = this->layer_param_.pad(); NUM_ = bottom[0]->num(); CHANNELS_ = bottom[0]->channels(); HEIGHT_ = bottom[0]->height(); @@ -27,8 +28,8 @@ void ConvolutionLayer::SetUp(const vector*>& bottom, CHECK_EQ(CHANNELS_ % GROUP_, 0); // The im2col result buffer would only hold one image at a time to avoid // overly large memory usage. - int height_out = (HEIGHT_ - KSIZE_) / STRIDE_ + 1; - int width_out = (WIDTH_ - KSIZE_) / STRIDE_ + 1; + int height_out = (HEIGHT_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1; + int width_out = (WIDTH_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1; col_buffer_.Reshape(1, CHANNELS_ * KSIZE_ * KSIZE_, height_out, width_out); // Set the parameters CHECK_EQ(NUM_OUTPUT_ % GROUP_, 0) @@ -87,8 +88,13 @@ void ConvolutionLayer::Forward_cpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, col_data); + } else { + padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + } // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, @@ -117,8 +123,13 @@ void ConvolutionLayer::Forward_gpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, col_data); + } else { + padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + } // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, @@ -166,8 +177,13 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, col_data); + } else { + padded_im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + } // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, @@ -184,8 +200,13 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - col2im_cpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + if (PAD_ == 0) { + col2im_cpu(col_diff, CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } else { + padded_col2im_cpu(col_diff, CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } } } return Dtype(0.); @@ -224,8 +245,13 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, col_data); + } else { + padded_im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + } // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, @@ -242,8 +268,13 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - col2im_gpu(col_diff, CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + col2im_gpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } else { + padded_col2im_gpu(col_diff, CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } } } return Dtype(0.); diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 976c8441e69..7aced1d5c28 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -16,11 +16,12 @@ void Im2colLayer::SetUp(const vector*>& bottom, CHECK_EQ(top->size(), 1) << "Im2col Layer takes a single blob as output."; KSIZE_ = this->layer_param_.kernelsize(); STRIDE_ = this->layer_param_.stride(); + PAD_ = this->layer_param_.pad(); CHANNELS_ = bottom[0]->channels(); HEIGHT_ = bottom[0]->height(); WIDTH_ = bottom[0]->width(); (*top)[0]->Reshape(bottom[0]->num(), CHANNELS_ * KSIZE_ * KSIZE_, - (HEIGHT_ - KSIZE_) / STRIDE_ + 1, (WIDTH_ - KSIZE_) / STRIDE_ + 1); + (HEIGHT_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1, (WIDTH_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1); }; template @@ -29,8 +30,13 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = (*top)[0]->mutable_cpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, top_data + (*top)[0]->offset(n)); + } else { + padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); + } } } @@ -40,8 +46,13 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, top_data + (*top)[0]->offset(n)); + } else { + padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); + } } } @@ -51,8 +62,13 @@ Dtype Im2colLayer::Backward_cpu(const vector*>& top, const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } else { + padded_col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } } return Dtype(0.); } @@ -64,8 +80,13 @@ Dtype Im2colLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + if (PAD_ == 0) { + col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } else { + padded_col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } } return Dtype(0.); } diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index db79bb2cdc9..bf5db055c47 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -29,6 +29,31 @@ void im2col_cpu(const Dtype* data_im, const int channels, } } +template +void padded_im2col_cpu(const Dtype* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_col) { + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int channels_col = channels * ksize * ksize; + for (int c = 0; c < channels_col; ++c) { + int w_offset = c % ksize; + int h_offset = (c / ksize) % ksize; + int c_im = c / ksize / ksize; + for (int h = 0; h < height_col; ++h) { + for (int w = 0; w < width_col; ++w) { + int h_pad = h * stride - pad + h_offset; + int w_pad = w * stride - pad + w_offset; + if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) + data_col[(c * height_col + h) * width_col + w] = + data_im[(c_im * height + h_pad) * width + w_pad]; + else + data_col[(c * height_col + h) * width_col + w] = 0; + } + } + } +} + // Explicit instantiation template void im2col_cpu(const float* data_im, const int channels, const int height, const int width, const int ksize, const int stride, @@ -36,6 +61,12 @@ template void im2col_cpu(const float* data_im, const int channels, template void im2col_cpu(const double* data_im, const int channels, const int height, const int width, const int ksize, const int stride, double* data_col); +template void padded_im2col_cpu(const float* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + float* data_col); +template void padded_im2col_cpu(const double* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + double* data_col); template void col2im_cpu(const Dtype* data_col, const int channels, @@ -58,6 +89,29 @@ void col2im_cpu(const Dtype* data_col, const int channels, } } +template +void padded_col2im_cpu(const Dtype* data_col, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_im) { + memset(data_im, 0, sizeof(Dtype) * height * width * channels); + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int channels_col = channels * ksize * ksize; + for (int c = 0; c < channels_col; ++c) { + int w_offset = c % ksize; + int h_offset = (c / ksize) % ksize; + int c_im = c / ksize / ksize; + for (int h = 0; h < height_col; ++h) { + for (int w = 0; w < width_col; ++w) { + int h_pad = h * stride - pad + h_offset; + int w_pad = w * stride - pad + w_offset; + if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) + data_im[(c_im * height + h_pad) * width + w_pad] += data_col[(c * height_col + h) * width_col + w]; + } + } + } +} + // Explicit instantiation template void col2im_cpu(const float* data_col, const int channels, const int height, const int width, const int psize, const int stride, @@ -65,5 +119,11 @@ template void col2im_cpu(const float* data_col, const int channels, template void col2im_cpu(const double* data_col, const int channels, const int height, const int width, const int psize, const int stride, double* data_im); +template void padded_col2im_cpu(const float* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + float* data_im); +template void padded_col2im_cpu(const double* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + double* data_im); } // namespace caffe diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 0b0c8b8354f..0903964608e 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -34,6 +34,32 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, } } +template +__global__ void padded_im2col_gpu_kernel(const int n, const Dtype* data_im, + const int height, const int width, const int ksize, const int pad, + const int stride, const int height_col, const int width_col, Dtype* data_col) { + int index = threadIdx.x + blockIdx.x * blockDim.x; + if (index < n) { + int w_out = index % width_col; + index /= width_col; + int h_out = index % height_col; + int channel_in = index / height_col; + int channel_out = channel_in * ksize * ksize; + int h_in = h_out * stride - pad; + int w_in = w_out * stride - pad; + data_col += (channel_out * height_col + h_out) * width_col + w_out; + data_im += (channel_in * height + h_in) * width + w_in; + for (int i = 0; i < ksize; ++i) { + for (int j = 0; j < ksize; ++j) { + int h = h_in + i; + int w = w_in + j; + *data_col = (h >= 0 && w >= 0 && h < width && w < height) ? data_im[i * width + j] : 0; + data_col += height_col * width_col; + } + } + } +} + template void im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int ksize, const int stride, @@ -49,6 +75,21 @@ void im2col_gpu(const Dtype* data_im, const int channels, CUDA_POST_KERNEL_CHECK; } +template +void padded_im2col_gpu(const Dtype* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_col) { + // We are going to launch channels * height_col * width_col kernels, each + // kernel responsible for copying a single-channel grid. + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int num_kernels = channels * height_col * width_col; + padded_im2col_gpu_kernel<<>>( + num_kernels, data_im, height, width, ksize, pad, stride, height_col, width_col, + data_col); + CUDA_POST_KERNEL_CHECK; +} + // Explicit instantiation template void im2col_gpu(const float* data_im, const int channels, @@ -57,6 +98,12 @@ template void im2col_gpu(const float* data_im, const int channels, template void im2col_gpu(const double* data_im, const int channels, const int height, const int width, const int ksize, const int stride, double* data_col); +template void padded_im2col_gpu(const float* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + float* data_col); +template void padded_im2col_gpu(const double* data_im, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + double* data_col); template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, @@ -95,6 +142,43 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, } } +template +__global__ void padded_col2im_gpu_kernel(const int n, const Dtype* data_col, + const int height, const int width, const int channels, const int ksize, const int pad, + const int stride, const int height_col, const int width_col, Dtype* data_im) { + int index = threadIdx.x + blockIdx.x * blockDim.x; + if (index < n) { + Dtype val = 0; + int w = index % width + pad; + int h = (index / width) % height + pad; + int c = index / (width * height); + // compute the start and end of the output + int w_col_start = (w < ksize) ? 0 : (w - ksize) / stride + 1; + int w_col_end = min(w / stride + 1, width_col); + int h_col_start = (h < ksize) ? 0 : (h - ksize) / stride + 1; + int h_col_end = min(h / stride + 1, height_col); + /* + for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { + for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { + // the col location: [c * width * height + h_out, w_out] + int c_col = c * ksize * ksize + (h - h_col * stride) * ksize + (w - w_col * stride); + val += data_col[(c_col * height_col + h_col) * width_col + w_col]; + } + } + */ + // equivalent implementation + int offset = (c * ksize * ksize + h * ksize + w) * height_col * width_col; + int coeff_h_col = (1 - stride * ksize * height_col) * width_col; + int coeff_w_col = (1 - stride * height_col * width_col); + for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { + for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { + val += data_col[offset + h_col * coeff_h_col + w_col * coeff_w_col]; + } + } + data_im[index] = val; + } +} + template void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int ksize, const int stride, @@ -111,6 +195,22 @@ void col2im_gpu(const Dtype* data_col, const int channels, CUDA_POST_KERNEL_CHECK; } +template +void padded_col2im_gpu(const Dtype* data_col, const int channels, + const int height, const int width, const int ksize, const int pad, const int stride, + Dtype* data_im) { + //CUDA_CHECK(cudaMemset(data_im, 0, sizeof(Dtype) * height * width * channels)); + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int num_kernels = channels * height * width; + // To avoid involving atomic operations, we will launch one kernel per + // bottom dimension, and then in the kernel add up the top dimensions. + padded_col2im_gpu_kernel<<>>( + num_kernels, data_col, height, width, channels, ksize, pad, stride, + height_col, width_col, data_im); + CUDA_POST_KERNEL_CHECK; +} + // Explicit instantiation template void col2im_gpu(const float* data_col, const int channels, @@ -119,6 +219,12 @@ template void col2im_gpu(const float* data_col, const int channels, template void col2im_gpu(const double* data_col, const int channels, const int height, const int width, const int psize, const int stride, double* data_im); +template void padded_col2im_gpu(const float* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + float* data_im); +template void padded_col2im_gpu(const double* data_col, const int channels, + const int height, const int width, const int psize, const int pad, const int stride, + double* data_im); } // namespace caffe From 60bb4d49163629010ff7f175739325ff1d859d7f Mon Sep 17 00:00:00 2001 From: linmin Date: Fri, 14 Feb 2014 16:01:38 +0800 Subject: [PATCH 002/113] add test code to test the padding aware im2col col2im functions --- examples/padded_im2col_test.cpp | 124 ++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 examples/padded_im2col_test.cpp diff --git a/examples/padded_im2col_test.cpp b/examples/padded_im2col_test.cpp new file mode 100644 index 00000000000..6516a77dbd4 --- /dev/null +++ b/examples/padded_im2col_test.cpp @@ -0,0 +1,124 @@ +#include +#include + +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/vision_layers.hpp" + +using namespace caffe; + +int main(int argc, char** argv) { + + if (argc < 9) { + LOG(ERROR) << "padded_im2col_test [CPU/GPU] input_size channel pad filter_size filter_number stride batch_size"; + return 0; + } + + int input_size = atoi(argv[2]); + int channel = atoi(argv[3]); + int pad = atoi(argv[4]); + int filter_size = atoi(argv[5]); + int filter_number = atoi(argv[6]); + int stride = atoi(argv[7]); + int batch_size = atoi(argv[8]); + int output_size = (input_size + 2 * pad - filter_size) / stride + 1; + int middle_size = input_size + 2 * pad; + + // Setup convolution layer that supports padding + + vector*> bottom1; + vector*> top1; + + bottom1.push_back(new Blob(batch_size, channel, input_size, input_size)); + top1.push_back(new Blob(batch_size, filter_number, output_size, output_size)); + + LayerParameter layer_param; + layer_param.set_kernelsize(filter_size); + layer_param.set_pad(pad); + layer_param.set_stride(stride); + layer_param.set_num_output(filter_number); + + ConvolutionLayer conv_layer(layer_param); + conv_layer.SetUp(bottom1, &top1); + + // Setup convolution layer that does not support padding + + vector*> bottom2; + vector*> top2; + vector*> middle; + bottom2.push_back(new Blob(batch_size, channel, input_size, input_size)); + middle.push_back(new Blob(batch_size, channel, middle_size, middle_size)); + top2.push_back(new Blob(batch_size, filter_number, output_size, output_size)); + + PaddingLayer padding_layer(layer_param); + padding_layer.SetUp(bottom2, &middle); + + layer_param.set_pad(0); + ConvolutionLayer conv_layer_nopad(layer_param); + conv_layer_nopad.SetUp(middle, &top2); + + // Setup euclidean_loss + + vector*> loss_input; + loss_input.push_back(top1[0]); + loss_input.push_back(top2[0]); + vector*> diff_loss_input; + diff_loss_input.push_back(bottom1[0]); + diff_loss_input.push_back(bottom2[0]); + + // Fill bottom data + caffe_vRngGaussian(bottom1[0]->count(), bottom1[0]->mutable_cpu_data(), float(0), float(0.01)); + bottom2[0]->CopyFrom(*bottom1[0]); + + // Fill top diff + caffe_vRngGaussian(top1[0]->count(), top1[0]->mutable_cpu_diff(), float(0), float(0.01)); + top2[0]->CopyFrom(*top1[0], true); + + // Fill Conv Filter + caffe_vRngGaussian(conv_layer.blobs()[0].get()->count(), conv_layer.blobs()[0].get()->mutable_cpu_data(), float(0), float(0.01)); + caffe_vRngGaussian(conv_layer.blobs()[1].get()->count(), conv_layer.blobs()[1].get()->mutable_cpu_data(), float(0), float(0.01)); + + // Fill conv nopad with the same weights + conv_layer_nopad.blobs()[0].get()->CopyFrom(*conv_layer.blobs()[0].get()); + conv_layer_nopad.blobs()[1].get()->CopyFrom(*conv_layer.blobs()[1].get()); + + if (strcmp(argv[1], "GPU") == 0) { + LOG(ERROR) << "Using GPU"; + Caffe::set_mode(Caffe::GPU); + } else { + LOG(ERROR) << "Using CPU"; + Caffe::set_mode(Caffe::CPU); + } + + // Forward + conv_layer.Forward(bottom1, &top1); + padding_layer.Forward(bottom2, &middle); + conv_layer_nopad.Forward(middle, &top2); + Blob difference_(batch_size, filter_number, output_size, output_size); + int count = loss_input[0]->count(); + int num = loss_input[0]->num(); + caffe_sub(count, loss_input[0]->cpu_data(), loss_input[1]->cpu_data(), difference_.mutable_cpu_data()); + float loss_input0 = caffe_cpu_dot(count, loss_input[0]->cpu_data(), loss_input[0]->cpu_data()) / num / float(2); + float loss_input1 = caffe_cpu_dot(count, loss_input[1]->cpu_data(), loss_input[1]->cpu_data()) / num / float(2); + float loss = caffe_cpu_dot(count, difference_.cpu_data(), difference_.cpu_data()) / num / float(2); + + // Backward + conv_layer.Backward(top1, true, &bottom1); + conv_layer_nopad.Backward(top2, true, &middle); + padding_layer.Backward(middle, true, &bottom2); + Blob diff_difference_(batch_size, channel, input_size, input_size); + count = diff_loss_input[0]->count(); + num = diff_loss_input[0]->num(); + caffe_sub(count, diff_loss_input[0]->cpu_diff(), diff_loss_input[1]->cpu_diff(), diff_difference_.mutable_cpu_data()); + float diff_loss_input0 = caffe_cpu_dot(count, diff_loss_input[0]->cpu_diff(), diff_loss_input[0]->cpu_diff()) / num / float(2); + float diff_loss_input1 = caffe_cpu_dot(count, diff_loss_input[1]->cpu_diff(), diff_loss_input[1]->cpu_diff()) / num / float(2); + float diff_loss = caffe_cpu_dot(count, diff_difference_.cpu_data(), diff_difference_.cpu_data()) / num / float(2); + + LOG(ERROR) << "loss0: " << loss_input0 << " loss1: " << loss_input1 << " euclidean distance: " << loss; + LOG(ERROR) << "diff_loss0: " << diff_loss_input0 << " diff_loss1: " << diff_loss_input1 << " diff euclidean distance: " << diff_loss; + return 0; +} From 6cd2cd2077deff41a632ac58da878cb745333b84 Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 18 Feb 2014 18:57:51 +0800 Subject: [PATCH 003/113] add code to measure timing --- examples/padded_im2col_test.cpp | 110 ++++++++++++++++++++++++++---- include/caffe/util/cuda_timer.hpp | 44 ++++++++++++ 2 files changed, 139 insertions(+), 15 deletions(-) create mode 100644 include/caffe/util/cuda_timer.hpp diff --git a/examples/padded_im2col_test.cpp b/examples/padded_im2col_test.cpp index 6516a77dbd4..9ba1242d3e1 100644 --- a/examples/padded_im2col_test.cpp +++ b/examples/padded_im2col_test.cpp @@ -2,19 +2,25 @@ #include #include +#include +#include +#include #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/filler.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/vision_layers.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/util/cuda_timer.hpp" using namespace caffe; +using std::cout; int main(int argc, char** argv) { - - if (argc < 9) { - LOG(ERROR) << "padded_im2col_test [CPU/GPU] input_size channel pad filter_size filter_number stride batch_size"; + + if (argc < 10) { + LOG(ERROR) << "padded_im2col_test [CPU/GPU] input_size channel pad filter_size filter_number stride batch_size num_exec"; return 0; } @@ -27,12 +33,13 @@ int main(int argc, char** argv) { int batch_size = atoi(argv[8]); int output_size = (input_size + 2 * pad - filter_size) / stride + 1; int middle_size = input_size + 2 * pad; + int num_exec = atoi(argv[9]); // Setup convolution layer that supports padding vector*> bottom1; vector*> top1; - + bottom1.push_back(new Blob(batch_size, channel, input_size, input_size)); top1.push_back(new Blob(batch_size, filter_number, output_size, output_size)); @@ -53,7 +60,7 @@ int main(int argc, char** argv) { bottom2.push_back(new Blob(batch_size, channel, input_size, input_size)); middle.push_back(new Blob(batch_size, channel, middle_size, middle_size)); top2.push_back(new Blob(batch_size, filter_number, output_size, output_size)); - + PaddingLayer padding_layer(layer_param); padding_layer.SetUp(bottom2, &middle); @@ -73,7 +80,7 @@ int main(int argc, char** argv) { // Fill bottom data caffe_vRngGaussian(bottom1[0]->count(), bottom1[0]->mutable_cpu_data(), float(0), float(0.01)); bottom2[0]->CopyFrom(*bottom1[0]); - + // Fill top diff caffe_vRngGaussian(top1[0]->count(), top1[0]->mutable_cpu_diff(), float(0), float(0.01)); top2[0]->CopyFrom(*top1[0], true); @@ -81,7 +88,7 @@ int main(int argc, char** argv) { // Fill Conv Filter caffe_vRngGaussian(conv_layer.blobs()[0].get()->count(), conv_layer.blobs()[0].get()->mutable_cpu_data(), float(0), float(0.01)); caffe_vRngGaussian(conv_layer.blobs()[1].get()->count(), conv_layer.blobs()[1].get()->mutable_cpu_data(), float(0), float(0.01)); - + // Fill conv nopad with the same weights conv_layer_nopad.blobs()[0].get()->CopyFrom(*conv_layer.blobs()[0].get()); conv_layer_nopad.blobs()[1].get()->CopyFrom(*conv_layer.blobs()[1].get()); @@ -93,11 +100,68 @@ int main(int argc, char** argv) { LOG(ERROR) << "Using CPU"; Caffe::set_mode(Caffe::CPU); } - - // Forward - conv_layer.Forward(bottom1, &top1); - padding_layer.Forward(bottom2, &middle); - conv_layer_nopad.Forward(middle, &top2); + + CudaTimer timer; + + if (pad == 0) { // If pad == 0; test GPU only + int M_ = filter_number; + int K_ = channel * filter_size * filter_size; + int N_ = output_size * output_size; + Blob col_buffer_; + col_buffer_.Reshape(1, channel * filter_size * filter_size, output_size, output_size); + const float* bottom_data = bottom1[0]->gpu_data(); + float* top_data = top1[0]->mutable_gpu_data(); + float* col_data = col_buffer_.mutable_gpu_data(); + const float* weight = conv_layer.blobs()[0]->gpu_data(); + int weight_offset = M_ * K_; + int col_offset = K_ * N_; + int top_offset = M_ * N_; + + // First, im2col + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + for (int n = 0; n < batch_size; ++n) { + im2col_gpu(bottom_data + bottom1[0]->offset(n), channel, input_size, + input_size, filter_size, stride, col_data); + } + } + LOG(ERROR) << "padding=0 im2col_gpu: " << timer.Toc() / num_exec << " ms."; + + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + for (int n = 0; n < batch_size; ++n) { + padded_im2col_gpu(bottom_data + bottom1[0]->offset(n), channel, input_size, + input_size, filter_size, 0, stride, col_data); + } + } + LOG(ERROR) << "padding=0 padded_im2col_gpu: " << timer.Toc() / num_exec << " ms."; + return 0; + } + + + // If pad is not 0, compare the padding aware version with the pad + conv version. + // comparing the time and the results. + + //Forward + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + conv_layer.Forward(bottom1, &top1); + } + LOG(ERROR) << "padding aware conv forward pass: " << timer.Toc() / num_exec << " ms."; + + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + padding_layer.Forward(bottom2, &middle); + } + // LOG(ERROR) << "pad forward pass: " << timer.Toc() / num_exec << " ms."; + float pad_time = timer.Toc() / num_exec; + + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + conv_layer_nopad.Forward(middle, &top2); + } + LOG(ERROR) << "pad + conv forward pass: " << pad_time + timer.Toc() / num_exec << " ms."; + Blob difference_(batch_size, filter_number, output_size, output_size); int count = loss_input[0]->count(); int num = loss_input[0]->num(); @@ -107,9 +171,25 @@ int main(int argc, char** argv) { float loss = caffe_cpu_dot(count, difference_.cpu_data(), difference_.cpu_data()) / num / float(2); // Backward - conv_layer.Backward(top1, true, &bottom1); - conv_layer_nopad.Backward(top2, true, &middle); - padding_layer.Backward(middle, true, &bottom2); + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + conv_layer.Backward(top1, true, &bottom1); + } + LOG(ERROR) << "padding aware conv backward pass: " << timer.Toc() / num_exec << " ms."; + + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + conv_layer_nopad.Backward(top2, true, &middle); + } + // LOG(ERROR) << "conv backward pass: " << timer.Toc() / num_exec << " ms."; + float conv_time = timer.Toc() / num_exec; + + timer.Tic(); + for (int i = 0; i < num_exec; ++i) { + padding_layer.Backward(middle, true, &bottom2); + } + LOG(ERROR) << "pad + conv backward pass: " << conv_time + timer.Toc() / num_exec << " ms."; + Blob diff_difference_(batch_size, channel, input_size, input_size); count = diff_loss_input[0]->count(); num = diff_loss_input[0]->num(); diff --git a/include/caffe/util/cuda_timer.hpp b/include/caffe/util/cuda_timer.hpp new file mode 100644 index 00000000000..f53b2d4a457 --- /dev/null +++ b/include/caffe/util/cuda_timer.hpp @@ -0,0 +1,44 @@ +#ifndef CAFFE_CUDA_TIMER_HPP_ +#define CAFFE_CUDA_TIMER_HPP_ + +#include "caffe/common.hpp" + +namespace caffe { + +class CudaTimer { + +protected: + cudaEvent_t start; + cudaEvent_t stop; + bool on; + +public: + CudaTimer() : on(false) { + CUDA_CHECK(cudaEventCreate(&start)); + CUDA_CHECK(cudaEventCreate(&stop)); + } + ~CudaTimer() { + CUDA_CHECK(cudaEventDestroy(start)); + CUDA_CHECK(cudaEventDestroy(stop)); + } + + void Tic() { + CUDA_CHECK(cudaEventRecord(start, 0)); + on = true; + } + + float Toc() { + float time; + CHECK(on) << "Tic before Toc"; + CUDA_CHECK(cudaEventRecord(stop, 0)); + CUDA_CHECK(cudaEventSynchronize(start)); + CUDA_CHECK(cudaEventSynchronize(stop)); + CUDA_CHECK(cudaEventElapsedTime(&time, start, stop)); + on = false; + return time; + } +}; + +} // namespace caffe + +#endif // CAFFE_CUDA_TIMER_HPP_ From 4b273e35cc2b3c29f291d4fa96139a0260ffcde7 Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 25 Feb 2014 09:59:30 +0800 Subject: [PATCH 004/113] remove the pad=0 case in conv_layer and im2col_layer --- src/caffe/layers/conv_layer.cpp | 54 +++++++------------------------ src/caffe/layers/im2col_layer.cpp | 36 +++++---------------- 2 files changed, 20 insertions(+), 70 deletions(-) diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 8f06524c2db..3eb5506300c 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -88,13 +88,8 @@ void ConvolutionLayer::Forward_cpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - if (PAD_ == 0) { - im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, col_data); - } else { - padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - } + padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, @@ -123,13 +118,8 @@ void ConvolutionLayer::Forward_gpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - if (PAD_ == 0) { - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, col_data); - } else { - padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - } + padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, @@ -177,13 +167,8 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - if (PAD_ == 0) { - im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, col_data); - } else { - padded_im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - } + padded_im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { caffe_cpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, @@ -200,13 +185,8 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - if (PAD_ == 0) { - col2im_cpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } else { - padded_col2im_cpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } + padded_col2im_cpu(col_diff, CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } } return Dtype(0.); @@ -245,13 +225,8 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - if (PAD_ == 0) { - im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, col_data); - } else { - padded_im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - } + padded_im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, @@ -268,13 +243,8 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - if (PAD_ == 0) { - col2im_gpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } else { - padded_col2im_gpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } + padded_col2im_gpu(col_diff, CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } } return Dtype(0.); diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 7aced1d5c28..bb4cb4048e9 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -30,13 +30,8 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = (*top)[0]->mutable_cpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - if (PAD_ == 0) { - im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, top_data + (*top)[0]->offset(n)); - } else { - padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); - } + padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -46,13 +41,8 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - if (PAD_ == 0) { - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, top_data + (*top)[0]->offset(n)); - } else { - padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); - } + padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -62,13 +52,8 @@ Dtype Im2colLayer::Backward_cpu(const vector*>& top, const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - if (PAD_ == 0) { - col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } else { - padded_col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } + padded_col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); } @@ -80,13 +65,8 @@ Dtype Im2colLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - if (PAD_ == 0) { - col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } else { - padded_col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } + padded_col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); } From 2848aa1f8da0272797ee51234293dfa87eda266a Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 25 Feb 2014 10:09:58 +0800 Subject: [PATCH 005/113] remove padding layers in imagenet definitions --- examples/imagenet/imagenet_train.prototxt | 48 ++++------------------- examples/imagenet/imagenet_val.prototxt | 48 ++++------------------- models/imagenet.prototxt | 48 ++++------------------- 3 files changed, 24 insertions(+), 120 deletions(-) diff --git a/examples/imagenet/imagenet_train.prototxt b/examples/imagenet/imagenet_train.prototxt index e395302e5ef..9764687c35f 100644 --- a/examples/imagenet/imagenet_train.prototxt +++ b/examples/imagenet/imagenet_train.prototxt @@ -65,15 +65,6 @@ layers { bottom: "pool1" top: "norm1" } -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "norm1" - top: "pad2" -} layers { layer { name: "conv2" @@ -81,6 +72,7 @@ layers { num_output: 256 group: 2 kernelsize: 5 + pad: 2 weight_filler { type: "gaussian" std: 0.01 @@ -94,7 +86,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad2" + bottom: "norm1" top: "conv2" } layers { @@ -127,21 +119,13 @@ layers { bottom: "pool2" top: "norm2" } -layers { - layer { - name: "pad3" - type: "padding" - pad: 1 - } - bottom: "norm2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 384 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -155,7 +139,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad3" + bottom: "norm2" top: "conv3" } layers { @@ -166,15 +150,6 @@ layers { bottom: "conv3" top: "conv3" } -layers { - layer { - name: "pad4" - type: "padding" - pad: 1 - } - bottom: "conv3" - top: "pad4" -} layers { layer { name: "conv4" @@ -182,6 +157,7 @@ layers { num_output: 384 group: 2 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -195,7 +171,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad4" + bottom: "conv3" top: "conv4" } layers { @@ -206,15 +182,6 @@ layers { bottom: "conv4" top: "conv4" } -layers { - layer { - name: "pad5" - type: "padding" - pad: 1 - } - bottom: "conv4" - top: "pad5" -} layers { layer { name: "conv5" @@ -222,6 +189,7 @@ layers { num_output: 256 group: 2 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -235,7 +203,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad5" + bottom: "conv4" top: "conv5" } layers { diff --git a/examples/imagenet/imagenet_val.prototxt b/examples/imagenet/imagenet_val.prototxt index e523d29ed90..a004b74f626 100644 --- a/examples/imagenet/imagenet_val.prototxt +++ b/examples/imagenet/imagenet_val.prototxt @@ -53,15 +53,6 @@ layers { bottom: "pool1" top: "norm1" } -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "norm1" - top: "pad2" -} layers { layer { name: "conv2" @@ -69,8 +60,9 @@ layers { num_output: 256 group: 2 kernelsize: 5 + pad: 2 } - bottom: "pad2" + bottom: "norm1" top: "conv2" } layers { @@ -103,23 +95,15 @@ layers { bottom: "pool2" top: "norm2" } -layers { - layer { - name: "pad3" - type: "padding" - pad: 1 - } - bottom: "norm2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 384 kernelsize: 3 + pad: 1 } - bottom: "pad3" + bottom: "norm2" top: "conv3" } layers { @@ -130,15 +114,6 @@ layers { bottom: "conv3" top: "conv3" } -layers { - layer { - name: "pad4" - type: "padding" - pad: 1 - } - bottom: "conv3" - top: "pad4" -} layers { layer { name: "conv4" @@ -146,8 +121,9 @@ layers { num_output: 384 group: 2 kernelsize: 3 + pad: 1 } - bottom: "pad4" + bottom: "conv3" top: "conv4" } layers { @@ -158,15 +134,6 @@ layers { bottom: "conv4" top: "conv4" } -layers { - layer { - name: "pad5" - type: "padding" - pad: 1 - } - bottom: "conv4" - top: "pad5" -} layers { layer { name: "conv5" @@ -174,8 +141,9 @@ layers { num_output: 256 group: 2 kernelsize: 3 + pad: 1 } - bottom: "pad5" + bottom: "conv4" top: "conv5" } layers { diff --git a/models/imagenet.prototxt b/models/imagenet.prototxt index 0fec21b3c50..0b1f41ab914 100644 --- a/models/imagenet.prototxt +++ b/models/imagenet.prototxt @@ -57,15 +57,6 @@ layers { bottom: "pool1" top: "norm1" } -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "norm1" - top: "pad2" -} layers { layer { name: "conv2" @@ -73,6 +64,7 @@ layers { num_output: 256 group: 2 kernelsize: 5 + pad: 2 weight_filler { type: "gaussian" std: 0.01 @@ -86,7 +78,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad2" + bottom: "norm1" top: "conv2" } layers { @@ -119,21 +111,13 @@ layers { bottom: "pool2" top: "norm2" } -layers { - layer { - name: "pad3" - type: "padding" - pad: 1 - } - bottom: "norm2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 384 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -147,7 +131,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad3" + bottom: "norm2" top: "conv3" } layers { @@ -158,15 +142,6 @@ layers { bottom: "conv3" top: "conv3" } -layers { - layer { - name: "pad4" - type: "padding" - pad: 1 - } - bottom: "conv3" - top: "pad4" -} layers { layer { name: "conv4" @@ -174,6 +149,7 @@ layers { num_output: 384 group: 2 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -187,7 +163,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad4" + bottom: "conv3" top: "conv4" } layers { @@ -198,15 +174,6 @@ layers { bottom: "conv4" top: "conv4" } -layers { - layer { - name: "pad5" - type: "padding" - pad: 1 - } - bottom: "conv4" - top: "pad5" -} layers { layer { name: "conv5" @@ -214,6 +181,7 @@ layers { num_output: 256 group: 2 kernelsize: 3 + pad: 1 weight_filler { type: "gaussian" std: 0.01 @@ -227,7 +195,7 @@ layers { weight_decay: 1. weight_decay: 0. } - bottom: "pad5" + bottom: "conv4" top: "conv5" } layers { From ab1e05fa7cac4ce5c2ec6b8d6aea332843d3ff08 Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 25 Feb 2014 12:48:21 +0800 Subject: [PATCH 006/113] unified to padding aware version remove test code (no longer needed and won't compile) --- examples/padded_im2col_test.cpp | 204 ------------------------------ include/caffe/util/im2col.hpp | 26 +--- src/caffe/layers/conv_layer.cpp | 12 +- src/caffe/layers/im2col_layer.cpp | 8 +- src/caffe/util/im2col.cpp | 58 +-------- src/caffe/util/im2col.cu | 113 +---------------- 6 files changed, 19 insertions(+), 402 deletions(-) delete mode 100644 examples/padded_im2col_test.cpp diff --git a/examples/padded_im2col_test.cpp b/examples/padded_im2col_test.cpp deleted file mode 100644 index 9ba1242d3e1..00000000000 --- a/examples/padded_im2col_test.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include -#include - -#include -#include -#include -#include - -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/filler.hpp" -#include "caffe/proto/caffe.pb.h" -#include "caffe/vision_layers.hpp" -#include "caffe/util/im2col.hpp" -#include "caffe/util/cuda_timer.hpp" - -using namespace caffe; -using std::cout; - -int main(int argc, char** argv) { - - if (argc < 10) { - LOG(ERROR) << "padded_im2col_test [CPU/GPU] input_size channel pad filter_size filter_number stride batch_size num_exec"; - return 0; - } - - int input_size = atoi(argv[2]); - int channel = atoi(argv[3]); - int pad = atoi(argv[4]); - int filter_size = atoi(argv[5]); - int filter_number = atoi(argv[6]); - int stride = atoi(argv[7]); - int batch_size = atoi(argv[8]); - int output_size = (input_size + 2 * pad - filter_size) / stride + 1; - int middle_size = input_size + 2 * pad; - int num_exec = atoi(argv[9]); - - // Setup convolution layer that supports padding - - vector*> bottom1; - vector*> top1; - - bottom1.push_back(new Blob(batch_size, channel, input_size, input_size)); - top1.push_back(new Blob(batch_size, filter_number, output_size, output_size)); - - LayerParameter layer_param; - layer_param.set_kernelsize(filter_size); - layer_param.set_pad(pad); - layer_param.set_stride(stride); - layer_param.set_num_output(filter_number); - - ConvolutionLayer conv_layer(layer_param); - conv_layer.SetUp(bottom1, &top1); - - // Setup convolution layer that does not support padding - - vector*> bottom2; - vector*> top2; - vector*> middle; - bottom2.push_back(new Blob(batch_size, channel, input_size, input_size)); - middle.push_back(new Blob(batch_size, channel, middle_size, middle_size)); - top2.push_back(new Blob(batch_size, filter_number, output_size, output_size)); - - PaddingLayer padding_layer(layer_param); - padding_layer.SetUp(bottom2, &middle); - - layer_param.set_pad(0); - ConvolutionLayer conv_layer_nopad(layer_param); - conv_layer_nopad.SetUp(middle, &top2); - - // Setup euclidean_loss - - vector*> loss_input; - loss_input.push_back(top1[0]); - loss_input.push_back(top2[0]); - vector*> diff_loss_input; - diff_loss_input.push_back(bottom1[0]); - diff_loss_input.push_back(bottom2[0]); - - // Fill bottom data - caffe_vRngGaussian(bottom1[0]->count(), bottom1[0]->mutable_cpu_data(), float(0), float(0.01)); - bottom2[0]->CopyFrom(*bottom1[0]); - - // Fill top diff - caffe_vRngGaussian(top1[0]->count(), top1[0]->mutable_cpu_diff(), float(0), float(0.01)); - top2[0]->CopyFrom(*top1[0], true); - - // Fill Conv Filter - caffe_vRngGaussian(conv_layer.blobs()[0].get()->count(), conv_layer.blobs()[0].get()->mutable_cpu_data(), float(0), float(0.01)); - caffe_vRngGaussian(conv_layer.blobs()[1].get()->count(), conv_layer.blobs()[1].get()->mutable_cpu_data(), float(0), float(0.01)); - - // Fill conv nopad with the same weights - conv_layer_nopad.blobs()[0].get()->CopyFrom(*conv_layer.blobs()[0].get()); - conv_layer_nopad.blobs()[1].get()->CopyFrom(*conv_layer.blobs()[1].get()); - - if (strcmp(argv[1], "GPU") == 0) { - LOG(ERROR) << "Using GPU"; - Caffe::set_mode(Caffe::GPU); - } else { - LOG(ERROR) << "Using CPU"; - Caffe::set_mode(Caffe::CPU); - } - - CudaTimer timer; - - if (pad == 0) { // If pad == 0; test GPU only - int M_ = filter_number; - int K_ = channel * filter_size * filter_size; - int N_ = output_size * output_size; - Blob col_buffer_; - col_buffer_.Reshape(1, channel * filter_size * filter_size, output_size, output_size); - const float* bottom_data = bottom1[0]->gpu_data(); - float* top_data = top1[0]->mutable_gpu_data(); - float* col_data = col_buffer_.mutable_gpu_data(); - const float* weight = conv_layer.blobs()[0]->gpu_data(); - int weight_offset = M_ * K_; - int col_offset = K_ * N_; - int top_offset = M_ * N_; - - // First, im2col - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - for (int n = 0; n < batch_size; ++n) { - im2col_gpu(bottom_data + bottom1[0]->offset(n), channel, input_size, - input_size, filter_size, stride, col_data); - } - } - LOG(ERROR) << "padding=0 im2col_gpu: " << timer.Toc() / num_exec << " ms."; - - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - for (int n = 0; n < batch_size; ++n) { - padded_im2col_gpu(bottom_data + bottom1[0]->offset(n), channel, input_size, - input_size, filter_size, 0, stride, col_data); - } - } - LOG(ERROR) << "padding=0 padded_im2col_gpu: " << timer.Toc() / num_exec << " ms."; - return 0; - } - - - // If pad is not 0, compare the padding aware version with the pad + conv version. - // comparing the time and the results. - - //Forward - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - conv_layer.Forward(bottom1, &top1); - } - LOG(ERROR) << "padding aware conv forward pass: " << timer.Toc() / num_exec << " ms."; - - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - padding_layer.Forward(bottom2, &middle); - } - // LOG(ERROR) << "pad forward pass: " << timer.Toc() / num_exec << " ms."; - float pad_time = timer.Toc() / num_exec; - - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - conv_layer_nopad.Forward(middle, &top2); - } - LOG(ERROR) << "pad + conv forward pass: " << pad_time + timer.Toc() / num_exec << " ms."; - - Blob difference_(batch_size, filter_number, output_size, output_size); - int count = loss_input[0]->count(); - int num = loss_input[0]->num(); - caffe_sub(count, loss_input[0]->cpu_data(), loss_input[1]->cpu_data(), difference_.mutable_cpu_data()); - float loss_input0 = caffe_cpu_dot(count, loss_input[0]->cpu_data(), loss_input[0]->cpu_data()) / num / float(2); - float loss_input1 = caffe_cpu_dot(count, loss_input[1]->cpu_data(), loss_input[1]->cpu_data()) / num / float(2); - float loss = caffe_cpu_dot(count, difference_.cpu_data(), difference_.cpu_data()) / num / float(2); - - // Backward - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - conv_layer.Backward(top1, true, &bottom1); - } - LOG(ERROR) << "padding aware conv backward pass: " << timer.Toc() / num_exec << " ms."; - - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - conv_layer_nopad.Backward(top2, true, &middle); - } - // LOG(ERROR) << "conv backward pass: " << timer.Toc() / num_exec << " ms."; - float conv_time = timer.Toc() / num_exec; - - timer.Tic(); - for (int i = 0; i < num_exec; ++i) { - padding_layer.Backward(middle, true, &bottom2); - } - LOG(ERROR) << "pad + conv backward pass: " << conv_time + timer.Toc() / num_exec << " ms."; - - Blob diff_difference_(batch_size, channel, input_size, input_size); - count = diff_loss_input[0]->count(); - num = diff_loss_input[0]->num(); - caffe_sub(count, diff_loss_input[0]->cpu_diff(), diff_loss_input[1]->cpu_diff(), diff_difference_.mutable_cpu_data()); - float diff_loss_input0 = caffe_cpu_dot(count, diff_loss_input[0]->cpu_diff(), diff_loss_input[0]->cpu_diff()) / num / float(2); - float diff_loss_input1 = caffe_cpu_dot(count, diff_loss_input[1]->cpu_diff(), diff_loss_input[1]->cpu_diff()) / num / float(2); - float diff_loss = caffe_cpu_dot(count, diff_difference_.cpu_data(), diff_difference_.cpu_data()) / num / float(2); - - LOG(ERROR) << "loss0: " << loss_input0 << " loss1: " << loss_input1 << " euclidean distance: " << loss; - LOG(ERROR) << "diff_loss0: " << diff_loss_input0 << " diff_loss1: " << diff_loss_input1 << " diff euclidean distance: " << diff_loss; - return 0; -} diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index dd01bdc54fb..521efd31593 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -7,41 +7,21 @@ namespace caffe { template void im2col_cpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_col); - -template -void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - Dtype* data_im); - -template -void im2col_gpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_col); - -template -void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - Dtype* data_im); - -template -void padded_im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_col); template -void padded_col2im_cpu(const Dtype* data_col, const int channels, +void col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, Dtype* data_im); template -void padded_im2col_gpu(const Dtype* data_im, const int channels, +void im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_col); template -void padded_col2im_gpu(const Dtype* data_col, const int channels, +void col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, Dtype* data_im); diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 3eb5506300c..69a860bf285 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -88,7 +88,7 @@ void ConvolutionLayer::Forward_cpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { @@ -118,7 +118,7 @@ void ConvolutionLayer::Forward_gpu(const vector*>& bottom, int top_offset = M_ * N_; for (int n = 0; n < NUM_; ++n) { // First, im2col - padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // Second, innerproduct with groups for (int g = 0; g < GROUP_; ++g) { @@ -167,7 +167,7 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - padded_im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_cpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { @@ -185,7 +185,7 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - padded_col2im_cpu(col_diff, CHANNELS_, HEIGHT_, + col2im_cpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } } @@ -225,7 +225,7 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, for (int n = 0; n < NUM_; ++n) { // since we saved memory in the forward pass by not storing all col data, // we will need to recompute them. - padded_im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); // gradient w.r.t. weight. Note that we will accumulate diffs. for (int g = 0; g < GROUP_; ++g) { @@ -243,7 +243,7 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - padded_col2im_gpu(col_diff, CHANNELS_, HEIGHT_, + col2im_gpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } } diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index bb4cb4048e9..5f9986a2f86 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -30,7 +30,7 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = (*top)[0]->mutable_cpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - padded_im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -41,7 +41,7 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { - padded_im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -52,7 +52,7 @@ Dtype Im2colLayer::Backward_cpu(const vector*>& top, const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - padded_col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); @@ -65,7 +65,7 @@ Dtype Im2colLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { - padded_col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index bf5db055c47..b32f6eeecc8 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -10,27 +10,6 @@ namespace caffe { template void im2col_cpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_col) { - int height_col = (height - ksize) / stride + 1; - int width_col = (width - ksize) / stride + 1; - int channels_col = channels * ksize * ksize; - for (int c = 0; c < channels_col; ++c) { - int w_offset = c % ksize; - int h_offset = (c / ksize) % ksize; - int c_im = c / ksize / ksize; - for (int h = 0; h < height_col; ++h) { - for (int w = 0; w < width_col; ++w) { - data_col[(c * height_col + h) * width_col + w] = - data_im[(c_im * height + h * stride + h_offset) * width - + w * stride + w_offset]; - } - } - } -} - -template -void padded_im2col_cpu(const Dtype* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_col) { int height_col = (height + 2 * pad - ksize) / stride + 1; @@ -56,41 +35,14 @@ void padded_im2col_cpu(const Dtype* data_im, const int channels, // Explicit instantiation template void im2col_cpu(const float* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - float* data_col); -template void im2col_cpu(const double* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - double* data_col); -template void padded_im2col_cpu(const float* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, float* data_col); -template void padded_im2col_cpu(const double* data_im, const int channels, +template void im2col_cpu(const double* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, double* data_col); template void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_im) { - memset(data_im, 0, sizeof(Dtype) * height * width * channels); - int height_col = (height - ksize) / stride + 1; - int width_col = (width - ksize) / stride + 1; - int channels_col = channels * ksize * ksize; - for (int c = 0; c < channels_col; ++c) { - int w_offset = c % ksize; - int h_offset = (c / ksize) % ksize; - int c_im = c / ksize / ksize; - for (int h = 0; h < height_col; ++h) { - for (int w = 0; w < width_col; ++w) { - data_im[(c_im * height + h * stride + h_offset) * width + w * stride - + w_offset] += data_col[(c * height_col + h) * width_col + w]; - } - } - } -} - -template -void padded_col2im_cpu(const Dtype* data_col, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_im) { memset(data_im, 0, sizeof(Dtype) * height * width * channels); @@ -114,15 +66,9 @@ void padded_col2im_cpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_cpu(const float* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - float* data_im); -template void col2im_cpu(const double* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - double* data_im); -template void padded_col2im_cpu(const float* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, float* data_im); -template void padded_col2im_cpu(const double* data_col, const int channels, +template void col2im_cpu(const double* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, double* data_im); diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 0903964608e..7f1376d6b16 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -9,33 +9,8 @@ namespace caffe { - template __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, - const int height, const int width, const int ksize, - const int stride, const int height_col, const int width_col, Dtype* data_col) { - int index = threadIdx.x + blockIdx.x * blockDim.x; - if (index < n) { - int w_out = index % width_col; - index /= width_col; - int h_out = index % height_col; - int channel_in = index / height_col; - int channel_out = channel_in * ksize * ksize; - int h_in = h_out * stride; - int w_in = w_out * stride; - data_col += (channel_out * height_col + h_out) * width_col + w_out; - data_im += (channel_in * height + h_in) * width + w_in; - for (int i = 0; i < ksize; ++i) { - for (int j = 0; j < ksize; ++j) { - *data_col = data_im[i * width + j]; - data_col += height_col * width_col; - } - } - } -} - -template -__global__ void padded_im2col_gpu_kernel(const int n, const Dtype* data_im, const int height, const int width, const int ksize, const int pad, const int stride, const int height_col, const int width_col, Dtype* data_col) { int index = threadIdx.x + blockIdx.x * blockDim.x; @@ -62,21 +37,6 @@ __global__ void padded_im2col_gpu_kernel(const int n, const Dtype* data_im, template void im2col_gpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_col) { - // We are going to launch channels * height_col * width_col kernels, each - // kernel responsible for copying a single-channel grid. - int height_col = (height - ksize) / stride + 1; - int width_col = (width - ksize) / stride + 1; - int num_kernels = channels * height_col * width_col; - im2col_gpu_kernel<<>>( - num_kernels, data_im, height, width, ksize, stride, height_col, width_col, - data_col); - CUDA_POST_KERNEL_CHECK; -} - -template -void padded_im2col_gpu(const Dtype* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_col) { // We are going to launch channels * height_col * width_col kernels, each @@ -84,7 +44,7 @@ void padded_im2col_gpu(const Dtype* data_im, const int channels, int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; int num_kernels = channels * height_col * width_col; - padded_im2col_gpu_kernel<<>>( + im2col_gpu_kernel<<>>( num_kernels, data_im, height, width, ksize, pad, stride, height_col, width_col, data_col); CUDA_POST_KERNEL_CHECK; @@ -93,57 +53,14 @@ void padded_im2col_gpu(const Dtype* data_im, const int channels, // Explicit instantiation template void im2col_gpu(const float* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - float* data_col); -template void im2col_gpu(const double* data_im, const int channels, - const int height, const int width, const int ksize, const int stride, - double* data_col); -template void padded_im2col_gpu(const float* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, float* data_col); -template void padded_im2col_gpu(const double* data_im, const int channels, +template void im2col_gpu(const double* data_im, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, double* data_col); template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, - const int height, const int width, const int channels, const int ksize, - const int stride, const int height_col, const int width_col, Dtype* data_im) { - int index = threadIdx.x + blockIdx.x * blockDim.x; - if (index < n) { - Dtype val = 0; - int w = index % width; - int h = (index / width) % height; - int c = index / (width * height); - // compute the start and end of the output - int w_col_start = (w < ksize) ? 0 : (w - ksize) / stride + 1; - int w_col_end = min(w / stride + 1, width_col); - int h_col_start = (h < ksize) ? 0 : (h - ksize) / stride + 1; - int h_col_end = min(h / stride + 1, height_col); - /* - for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { - for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { - // the col location: [c * width * height + h_out, w_out] - int c_col = c * ksize * ksize + (h - h_col * stride) * ksize + (w - w_col * stride); - val += data_col[(c_col * height_col + h_col) * width_col + w_col]; - } - } - */ - // equivalent implementation - int offset = (c * ksize * ksize + h * ksize + w) * height_col * width_col; - int coeff_h_col = (1 - stride * ksize * height_col) * width_col; - int coeff_w_col = (1 - stride * height_col * width_col); - for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { - for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { - val += data_col[offset + h_col * coeff_h_col + w_col * coeff_w_col]; - } - } - data_im[index] = val; - } -} - -template -__global__ void padded_col2im_gpu_kernel(const int n, const Dtype* data_col, const int height, const int width, const int channels, const int ksize, const int pad, const int stride, const int height_col, const int width_col, Dtype* data_im) { int index = threadIdx.x + blockIdx.x * blockDim.x; @@ -181,22 +98,6 @@ __global__ void padded_col2im_gpu_kernel(const int n, const Dtype* data_col, template void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int ksize, const int stride, - Dtype* data_im) { - //CUDA_CHECK(cudaMemset(data_im, 0, sizeof(Dtype) * height * width * channels)); - int height_col = (height - ksize) / stride + 1; - int width_col = (width - ksize) / stride + 1; - int num_kernels = channels * height * width; - // To avoid involving atomic operations, we will launch one kernel per - // bottom dimension, and then in the kernel add up the top dimensions. - col2im_gpu_kernel<<>>( - num_kernels, data_col, height, width, channels, ksize, stride, - height_col, width_col, data_im); - CUDA_POST_KERNEL_CHECK; -} - -template -void padded_col2im_gpu(const Dtype* data_col, const int channels, const int height, const int width, const int ksize, const int pad, const int stride, Dtype* data_im) { //CUDA_CHECK(cudaMemset(data_im, 0, sizeof(Dtype) * height * width * channels)); @@ -205,7 +106,7 @@ void padded_col2im_gpu(const Dtype* data_col, const int channels, int num_kernels = channels * height * width; // To avoid involving atomic operations, we will launch one kernel per // bottom dimension, and then in the kernel add up the top dimensions. - padded_col2im_gpu_kernel<<>>( + col2im_gpu_kernel<<>>( num_kernels, data_col, height, width, channels, ksize, pad, stride, height_col, width_col, data_im); CUDA_POST_KERNEL_CHECK; @@ -214,15 +115,9 @@ void padded_col2im_gpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_gpu(const float* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - float* data_im); -template void col2im_gpu(const double* data_col, const int channels, - const int height, const int width, const int psize, const int stride, - double* data_im); -template void padded_col2im_gpu(const float* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, float* data_im); -template void padded_col2im_gpu(const double* data_col, const int channels, +template void col2im_gpu(const double* data_col, const int channels, const int height, const int width, const int psize, const int pad, const int stride, double* data_im); From 870664626ad65482a805af00a22a32eff513c06a Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 25 Feb 2014 12:56:51 +0800 Subject: [PATCH 007/113] remove padding_layer and its test --- include/caffe/vision_layers.hpp | 29 ------ src/caffe/layer_factory.cpp | 2 - src/caffe/layers/padding_layer.cu | 139 -------------------------- src/caffe/test/test_padding_layer.cpp | 114 --------------------- 4 files changed, 284 deletions(-) delete mode 100644 src/caffe/layers/padding_layer.cu delete mode 100644 src/caffe/test/test_padding_layer.cpp diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index ca54f2b4c6c..5dd3c9076d6 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -192,34 +192,6 @@ class InnerProductLayer : public Layer { shared_ptr bias_multiplier_; }; - -template -class PaddingLayer : public Layer { - public: - explicit PaddingLayer(const LayerParameter& param) - : Layer(param) {} - virtual void SetUp(const vector*>& bottom, - vector*>* top); - - protected: - virtual void Forward_cpu(const vector*>& bottom, - vector*>* top); - virtual void Forward_gpu(const vector*>& bottom, - vector*>* top); - virtual Dtype Backward_cpu(const vector*>& top, - const bool propagate_down, vector*>* bottom); - virtual Dtype Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom); - unsigned int PAD_; - int NUM_; - int CHANNEL_; - int HEIGHT_IN_; - int WIDTH_IN_; - int HEIGHT_OUT_; - int WIDTH_OUT_; -}; - - template class LRNLayer : public Layer { public: @@ -526,4 +498,3 @@ class AccuracyLayer : public Layer { } // namespace caffe #endif // CAFFE_VISION_LAYERS_HPP_ - diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index ff69c91e498..8733ff863e6 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -41,8 +41,6 @@ Layer* GetLayer(const LayerParameter& param) { return new InnerProductLayer(param); } else if (type == "lrn") { return new LRNLayer(param); - } else if (type == "padding") { - return new PaddingLayer(param); } else if (type == "pool") { return new PoolingLayer(param); } else if (type == "relu") { diff --git a/src/caffe/layers/padding_layer.cu b/src/caffe/layers/padding_layer.cu deleted file mode 100644 index 90f5508b434..00000000000 --- a/src/caffe/layers/padding_layer.cu +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2013 Yangqing Jia - -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" - -#include - -namespace caffe { - -template -void PaddingLayer::SetUp(const vector*>& bottom, - vector*>* top) { - PAD_ = this->layer_param_.pad(); - CHECK_EQ(bottom.size(), 1) << "Padding Layer takes a single blob as input."; - CHECK_EQ(top->size(), 1) << "Padding Layer takes a single blob as output."; - NUM_ = bottom[0]->num(); - CHANNEL_ = bottom[0]->channels(); - HEIGHT_IN_ = bottom[0]->height(); - WIDTH_IN_ = bottom[0]->width(); - HEIGHT_OUT_ = HEIGHT_IN_ + PAD_ * 2; - WIDTH_OUT_ = WIDTH_IN_ + PAD_ * 2; - (*top)[0]->Reshape(NUM_, CHANNEL_, HEIGHT_OUT_, WIDTH_OUT_); - -}; - -template -void PaddingLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - const Dtype* bottom_data = bottom[0]->cpu_data(); - memset(top_data, 0, sizeof(Dtype) * (*top)[0]->count()); - // In short, top[n, c, h, w] = bottom[n, c, h-pad, w-pad] if in range - for (int n = 0; n < NUM_; ++n) { - for (int c = 0; c < CHANNEL_; ++c) { - for (int h = 0; h < HEIGHT_IN_; ++h) { - // copy the width part - memcpy( - top_data + ((n * CHANNEL_ + c) * HEIGHT_OUT_ + h + PAD_) - * WIDTH_OUT_ + PAD_, - bottom_data + ((n * CHANNEL_ + c) * HEIGHT_IN_ + h) * WIDTH_IN_, - sizeof(Dtype) * WIDTH_IN_); - } - } - } -} - -template -Dtype PaddingLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - //memset(bottom_data, 0, sizeof(Dtype) * (*bottom)[0]->count()); - for (int n = 0; n < NUM_; ++n) { - for (int c = 0; c < CHANNEL_; ++c) { - for (int h = 0; h < HEIGHT_IN_; ++h) { - // copy the width part - memcpy( - bottom_diff + ((n * CHANNEL_ + c) * HEIGHT_IN_ + h) * WIDTH_IN_, - top_diff + ((n * CHANNEL_ + c) * HEIGHT_OUT_ + h + PAD_) - * WIDTH_OUT_ + PAD_, - sizeof(Dtype) * WIDTH_IN_); - } - } - } - return Dtype(0.); -} - -template -__global__ void PaddingForward(const int count, const Dtype* in, Dtype* out, - const int num, const int channel, const int height_in, const int width_in, - const int pad) { - int index = threadIdx.x + blockIdx.x * blockDim.x; - if (index < count) { - int height_out = height_in + pad + pad; - int width_out = width_in + pad + pad; - int w = index % width_in; - index /= width_in; - int h = index % height_in; - index /= height_in; - int c = index % channel; - index /= channel; - out[((index * channel + c) * height_out + h + pad) * width_out + pad + w] = - in[((index * channel + c) * height_in + h) * width_in + w]; - } -} - -template -void PaddingLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - const int count = bottom[0]->count(); - // First, set all data to be zero for the boundary pixels - CUDA_CHECK(cudaMemset(top_data, 0, sizeof(Dtype) * (*top)[0]->count())); - PaddingForward<<>>( - count, bottom_data, top_data, NUM_, CHANNEL_, HEIGHT_IN_, WIDTH_IN_, - PAD_); - CUDA_POST_KERNEL_CHECK; -} - -template -__global__ void PaddingBackward(const int count, const Dtype* in, Dtype* out, - const int num, const int channel, const int height_in, const int width_in, - const int pad) { - int index = threadIdx.x + blockIdx.x * blockDim.x; - if (index < count) { - int height_out = height_in + pad + pad; - int width_out = width_in + pad + pad; - int w = index % width_in; - index /= width_in; - int h = index % height_in; - index /= height_in; - int c = index % channel; - index /= channel; - out[((index * channel + c) * height_in + h) * width_in + w] = - in[((index * channel + c) * height_out + h + pad) * width_out + pad + w]; - } -} - -template -Dtype PaddingLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - if (propagate_down) { - const Dtype* top_diff = top[0]->gpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); - const int count = (*bottom)[0]->count(); - PaddingBackward<<>>( - count, top_diff, bottom_diff, NUM_, CHANNEL_, HEIGHT_IN_, WIDTH_IN_, - PAD_); - CUDA_POST_KERNEL_CHECK; - } - return Dtype(0); -} - -INSTANTIATE_CLASS(PaddingLayer); - - -} // namespace caffe diff --git a/src/caffe/test/test_padding_layer.cpp b/src/caffe/test/test_padding_layer.cpp deleted file mode 100644 index da48111a66d..00000000000 --- a/src/caffe/test/test_padding_layer.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2013 Yangqing Jia - -#include -#include - -#include "gtest/gtest.h" -#include "caffe/blob.hpp" -#include "caffe/common.hpp" -#include "caffe/filler.hpp" -#include "caffe/vision_layers.hpp" -#include "caffe/test/test_gradient_check_util.hpp" - -#include "caffe/test/test_caffe_main.hpp" - -namespace caffe { - -extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; - -template -class PaddingLayerTest : public ::testing::Test { - protected: - PaddingLayerTest() - : blob_bottom_(new Blob(2, 3, 4, 5)), - blob_top_(new Blob()) { - // fill the values - FillerParameter filler_param; - GaussianFiller filler(filler_param); - filler.Fill(this->blob_bottom_); - blob_bottom_vec_.push_back(blob_bottom_); - blob_top_vec_.push_back(blob_top_); - }; - virtual ~PaddingLayerTest() { delete blob_bottom_; delete blob_top_; } - Blob* const blob_bottom_; - Blob* const blob_top_; - vector*> blob_bottom_vec_; - vector*> blob_top_vec_; -}; - -typedef ::testing::Types Dtypes; -TYPED_TEST_CASE(PaddingLayerTest, Dtypes); - -TYPED_TEST(PaddingLayerTest, TestCPU) { - LayerParameter layer_param; - layer_param.set_pad(1); - Caffe::set_mode(Caffe::CPU); - PaddingLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); - layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); - EXPECT_EQ(this->blob_top_->num(), 2); - EXPECT_EQ(this->blob_top_->channels(), 3); - EXPECT_EQ(this->blob_top_->height(), 6); - EXPECT_EQ(this->blob_top_->width(), 7); - for (int n = 0; n < 2; ++n) { - for (int c = 0; c < 3; ++c) { - for (int h = 0; h < 4; ++h) { - for (int w = 0; w < 5; ++w) { - EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), - this->blob_top_->data_at(n, c, h + 1, w + 1)); - } - } - } - } -} - -TYPED_TEST(PaddingLayerTest, TestCPUGrad) { - LayerParameter layer_param; - layer_param.set_pad(1); - Caffe::set_mode(Caffe::CPU); - PaddingLayer layer(layer_param); - GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); -} - -TYPED_TEST(PaddingLayerTest, TestGPU) { - if (CAFFE_TEST_CUDA_PROP.major >= 2) { - LayerParameter layer_param; - layer_param.set_pad(1); - Caffe::set_mode(Caffe::GPU); - PaddingLayer layer(layer_param); - layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); - layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); - EXPECT_EQ(this->blob_top_->num(), 2); - EXPECT_EQ(this->blob_top_->channels(), 3); - EXPECT_EQ(this->blob_top_->height(), 6); - EXPECT_EQ(this->blob_top_->width(), 7); - for (int n = 0; n < 2; ++n) { - for (int c = 0; c < 3; ++c) { - for (int h = 0; h < 4; ++h) { - for (int w = 0; w < 5; ++w) { - EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), - this->blob_top_->data_at(n, c, h + 1, w + 1)); - } - } - } - } - } else { - LOG(ERROR) << "Skipping test (gpu version too low)."; - } -} - -TYPED_TEST(PaddingLayerTest, TestGPUGrad) { - if (CAFFE_TEST_CUDA_PROP.major >= 2) { - LayerParameter layer_param; - layer_param.set_pad(1); - Caffe::set_mode(Caffe::GPU); - PaddingLayer layer(layer_param); - GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); - } else { - LOG(ERROR) << "Skipping test (gpu version too low)."; - } -} - -} From 68627aeeec217b52d624d29f9131b7f659f0e810 Mon Sep 17 00:00:00 2001 From: linmin Date: Tue, 25 Feb 2014 12:58:23 +0800 Subject: [PATCH 008/113] remove cuda_timer as is no longer needed --- include/caffe/util/cuda_timer.hpp | 44 ------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 include/caffe/util/cuda_timer.hpp diff --git a/include/caffe/util/cuda_timer.hpp b/include/caffe/util/cuda_timer.hpp deleted file mode 100644 index f53b2d4a457..00000000000 --- a/include/caffe/util/cuda_timer.hpp +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef CAFFE_CUDA_TIMER_HPP_ -#define CAFFE_CUDA_TIMER_HPP_ - -#include "caffe/common.hpp" - -namespace caffe { - -class CudaTimer { - -protected: - cudaEvent_t start; - cudaEvent_t stop; - bool on; - -public: - CudaTimer() : on(false) { - CUDA_CHECK(cudaEventCreate(&start)); - CUDA_CHECK(cudaEventCreate(&stop)); - } - ~CudaTimer() { - CUDA_CHECK(cudaEventDestroy(start)); - CUDA_CHECK(cudaEventDestroy(stop)); - } - - void Tic() { - CUDA_CHECK(cudaEventRecord(start, 0)); - on = true; - } - - float Toc() { - float time; - CHECK(on) << "Tic before Toc"; - CUDA_CHECK(cudaEventRecord(stop, 0)); - CUDA_CHECK(cudaEventSynchronize(start)); - CUDA_CHECK(cudaEventSynchronize(stop)); - CUDA_CHECK(cudaEventElapsedTime(&time, start, stop)); - on = false; - return time; - } -}; - -} // namespace caffe - -#endif // CAFFE_CUDA_TIMER_HPP_ From 800ba3e9faeef37db97a07ee4626a85e9ba4e7ad Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 24 Feb 2014 21:37:38 -0800 Subject: [PATCH 009/113] Merge pull request #128 from mavenlin/pad-im2col im2col and col2im learn to pad and padding layer is obsolete From 4eca4d41cd683d261faadd927bfe87fa06b62c26 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Sun, 23 Feb 2014 13:02:32 -0800 Subject: [PATCH 010/113] Adding GPU coverage to the DataLayer test. --- src/caffe/test/test_data_layer.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/caffe/test/test_data_layer.cpp b/src/caffe/test/test_data_layer.cpp index 66e9956838b..719c50eb058 100644 --- a/src/caffe/test/test_data_layer.cpp +++ b/src/caffe/test/test_data_layer.cpp @@ -81,6 +81,7 @@ TYPED_TEST(DataLayerTest, TestRead) { EXPECT_EQ(this->blob_top_label_->channels(), 1); EXPECT_EQ(this->blob_top_label_->height(), 1); EXPECT_EQ(this->blob_top_label_->width(), 1); + // Go through the data 100 times for (int iter = 0; iter < 100; ++iter) { layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); @@ -94,6 +95,21 @@ TYPED_TEST(DataLayerTest, TestRead) { } } } + + // Same test, in GPU mode. + Caffe::set_mode(Caffe::GPU); + for (int iter = 0; iter < 100; ++iter) { + layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); + for (int i = 0; i < 5; ++i) { + EXPECT_EQ(i, this->blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < 5; ++i) { + for (int j = 0; j < 24; ++j) { + EXPECT_EQ(i, this->blob_top_data_->cpu_data()[i * 24 + j]) + << "debug: i " << i << " j " << j; + } + } + } } } From 92302c90295193c78aace9aeb68a3a951925d83e Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Sun, 23 Feb 2014 12:29:14 -0800 Subject: [PATCH 011/113] HDF5DataLayer, with test. --- Makefile | 9 +- include/caffe/util/io.hpp | 9 ++ include/caffe/vision_layers.hpp | 30 ++++ src/caffe/layer_factory.cpp | 2 + src/caffe/layers/hdf5_data_layer.cpp | 107 ++++++++++++++ .../test/test_data/generate_sample_data.py | 17 +++ src/caffe/test/test_data/sample_data.h5 | Bin 0 -> 2504 bytes src/caffe/test/test_hdf5data_layer.cpp | 130 ++++++++++++++++++ src/caffe/util/io.cpp | 38 +++++ 9 files changed, 340 insertions(+), 2 deletions(-) create mode 100644 src/caffe/layers/hdf5_data_layer.cpp create mode 100644 src/caffe/test/test_data/generate_sample_data.py create mode 100644 src/caffe/test/test_data/sample_data.h5 create mode 100644 src/caffe/test/test_hdf5data_layer.cpp diff --git a/Makefile b/Makefile index e5cf929d0df..455f94bec36 100644 --- a/Makefile +++ b/Makefile @@ -73,8 +73,13 @@ MKL_LIB_DIR := $(MKL_DIR)/lib $(MKL_DIR)/lib/intel64 INCLUDE_DIRS += ./src ./include $(CUDA_INCLUDE_DIR) $(MKL_INCLUDE_DIR) LIBRARY_DIRS += $(CUDA_LIB_DIR) $(MKL_LIB_DIR) -LIBRARIES := cudart cublas curand mkl_rt pthread \ - glog protobuf leveldb snappy boost_system \ +LIBRARIES := cudart cublas curand \ + mkl_rt \ + pthread \ + glog protobuf leveldb \ + snappy \ + boost_system \ + hdf5 hdf5_hl \ opencv_core opencv_highgui opencv_imgproc PYTHON_LIBRARIES := boost_python python2.7 WARNINGS := -Wall diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 3174fd0d5fc..b2d489ce720 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -5,6 +5,10 @@ #include +#include +#include "hdf5.h" +#include "hdf5_hl.h" + #include #include "caffe/blob.hpp" @@ -48,6 +52,11 @@ inline bool ReadImageToDatum(const string& filename, const int label, return ReadImageToDatum(filename, label, 0, 0, datum); } +template +void load_2d_dataset( + hid_t file_id, const char* dataset_name_, + boost::scoped_ptr* array, hsize_t* dims); + } // namespace caffe #endif // CAFFE_UTIL_IO_H_ diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 5dd3c9076d6..b6f607a1d9f 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -5,6 +5,9 @@ #include #include +#include + +#include "hdf5.h" #include @@ -351,6 +354,33 @@ class DataLayer : public Layer { }; +template +class HDF5DataLayer : public Layer { + public: + explicit HDF5DataLayer(const LayerParameter& param) + : Layer(param) {} + virtual ~HDF5DataLayer(); + virtual void SetUp(const vector*>& bottom, + vector*>* top); + + protected: + virtual void Forward_cpu(const vector*>& bottom, + vector*>* top); + virtual void Forward_gpu(const vector*>& bottom, + vector*>* top); + virtual Dtype Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + virtual Dtype Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + + boost::scoped_ptr data; + boost::scoped_ptr label; + hsize_t data_dims[2]; + hsize_t label_dims[2]; + hsize_t current_row; +}; + + template class SoftmaxLayer : public Layer { public: diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 8733ff863e6..d7798ea9053 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -27,6 +27,8 @@ Layer* GetLayer(const LayerParameter& param) { return new ConvolutionLayer(param); } else if (type == "data") { return new DataLayer(param); + } else if (type == "hdf5_data") { + return new HDF5DataLayer(param); } else if (type == "dropout") { return new DropoutLayer(param); } else if (type == "euclidean_loss") { diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp new file mode 100644 index 00000000000..eac01d56c68 --- /dev/null +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -0,0 +1,107 @@ +/* +TODO: +- only load parts of the file, in accordance with a prototxt param "max_mem" +- How does Dtype affect the loading of the data, which is always float? +*/ + +#include +#include +#include +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/layer.hpp" +#include "caffe/util/io.hpp" +#include "caffe/vision_layers.hpp" + +using std::string; + +namespace caffe { + +template +HDF5DataLayer::~HDF5DataLayer() { } + +template +void HDF5DataLayer::SetUp(const vector*>& bottom, + vector*>* top) { + CHECK_EQ(bottom.size(), 0) << "HDF5DataLayer takes no input blobs."; + CHECK_EQ(top->size(), 2) << "HDF5DataLayer takes two blobs as output."; + + // Load the HDF5 file and initialize the counter. + const char* hdf_filename = this->layer_param_.source().c_str(); + LOG(INFO) << "Loading HDF5 file" << hdf_filename; + hid_t file_id = H5Fopen(hdf_filename, H5F_ACC_RDONLY, H5P_DEFAULT); + load_2d_dataset(file_id, "data", &data, data_dims); + load_2d_dataset(file_id, "label", &label, label_dims); + herr_t status = H5Fclose(file_id); + assert(data_dims[0] == label_dims[0]); + current_row = 0; + + // Reshape blobs. + (*top)[0]->Reshape(this->layer_param_.batchsize(), data_dims[1], 1, 1); + (*top)[1]->Reshape(this->layer_param_.batchsize(), label_dims[1], 1, 1); + LOG(INFO) << "output data size: " << (*top)[0]->num() << "," + << (*top)[0]->channels() << "," << (*top)[0]->height() << "," + << (*top)[0]->width(); +} + +template +void HDF5DataLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const int batchsize = this->layer_param_.batchsize(); + for (int i = 0; i < batchsize; ++i, ++current_row) { + if (current_row == data_dims[0]) { + current_row = 0; + } + + memcpy( &(*top)[0]->mutable_cpu_data()[i * data_dims[1]], + &(data.get()[current_row * data_dims[1]]), + sizeof(Dtype) * data_dims[1]); + + memcpy( &(*top)[1]->mutable_cpu_data()[i * label_dims[1]], + &(label.get()[current_row * label_dims[1]]), + sizeof(Dtype) * label_dims[1]); + } +} + +template +void HDF5DataLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const int batchsize = this->layer_param_.batchsize(); + for (int i = 0; i < batchsize; ++i, ++current_row) { + if (current_row == data_dims[0]) { + current_row = 0; + } + + CUDA_CHECK(cudaMemcpy( + &(*top)[0]->mutable_gpu_data()[i * data_dims[1]], + &(data.get()[current_row * data_dims[1]]), + sizeof(Dtype) * data_dims[1], + cudaMemcpyHostToDevice)); + + CUDA_CHECK(cudaMemcpy( + &(*top)[1]->mutable_gpu_data()[i * label_dims[1]], + &(label.get()[current_row * label_dims[1]]), + sizeof(Dtype) * label_dims[1], + cudaMemcpyHostToDevice)); + } +} + +// The backward operations are dummy - they do not carry any computation. +template +Dtype HDF5DataLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + return Dtype(0.); +} + +template +Dtype HDF5DataLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + return Dtype(0.); +} + +INSTANTIATE_CLASS(HDF5DataLayer); + +} // namespace caffe diff --git a/src/caffe/test/test_data/generate_sample_data.py b/src/caffe/test/test_data/generate_sample_data.py new file mode 100644 index 00000000000..1f16fad9160 --- /dev/null +++ b/src/caffe/test/test_data/generate_sample_data.py @@ -0,0 +1,17 @@ +""" +Generate data used in the HDF5DataLayer test. +""" + +import numpy as np +import h5py + +num_cols = 8 +num_rows = 10 +data = np.arange(num_cols * num_rows).reshape(num_rows, num_cols) +label = np.arange(num_rows)[:, np.newaxis] +print data +print label + +with h5py.File('./sample_data.h5', 'w') as f: + f['data'] = data.astype('float32') + f['label'] = label.astype('float32') diff --git a/src/caffe/test/test_data/sample_data.h5 b/src/caffe/test/test_data/sample_data.h5 new file mode 100644 index 0000000000000000000000000000000000000000..fe581afaa72bf3acb536682456e3104d0400f0fa GIT binary patch literal 2504 zcmeIyF)Twt7{KxGy_P%;Nr{Ar#2X9-LkELF;#FGdAT$^ZhE_-nO&AOYiAF?9L>dth z5$R|&8jT%|Mx)Val-FQJ8p4JtuFMQkZ#JohhwZC2CznwQboy`g}U3^#TZIX)H*6VNQM*r*Iz5}^z zI&aoErweuYRM$Ln>t8Ic6-~QTTv#emyS$7{=NF16%{GPx@?@Y9#q({4Jvba4js5mI zM&_HD?O`8h%al;M0_oapv_+b@(~SGR4H)SBm{-t{k$sTP@6aci&XuXejL5Q%d`~qq zIhFCme_3xBd;huayskIBKku)Nem1Y%kMHuzU4K2VYWh!Z^VseCPv@2U9{=@k+=22a ztBQD|j2f!Z1b +#include + +#include + +#include "gtest/gtest.h" +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/proto/caffe.pb.h" +#include "caffe/test/test_caffe_main.hpp" + +using std::string; + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +template +class HDF5DataLayerTest : public ::testing::Test { + protected: + HDF5DataLayerTest() + : blob_top_data_(new Blob()), + blob_top_label_(new Blob()), + filename(NULL) {}; + virtual void SetUp() { + blob_top_vec_.push_back(blob_top_data_); + blob_top_vec_.push_back(blob_top_label_); + + // TODO: generate sample HDF5 file on the fly. + // For now, use example HDF5 file. + // TODO: how to best deal with the relativeness of the path? + filename = "src/caffe/test/test_data/sample_data.h5"; + LOG(INFO) << "Using sample HDF5 data file " << filename; + }; + + virtual ~HDF5DataLayerTest() { + delete blob_top_data_; + delete blob_top_label_; + } + + char* filename; + Blob* const blob_top_data_; + Blob* const blob_top_label_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +typedef ::testing::Types Dtypes; +TYPED_TEST_CASE(HDF5DataLayerTest, Dtypes); + +TYPED_TEST(HDF5DataLayerTest, TestRead) { + // Create LayerParameter with the known parameters. + // The data file we are reading has 10 rows and 8 columns, + // with values from 0 to 10*8 reshaped in row-major order. + LayerParameter param; + int batchsize = 5; + param.set_batchsize(batchsize); + param.set_source(this->filename); + int num_rows = 10; + int num_cols = 8; + HDF5DataLayer layer(param); + + // Test that the layer setup got the correct parameters. + layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); + EXPECT_EQ(this->blob_top_data_->num(), batchsize); + EXPECT_EQ(this->blob_top_data_->channels(), num_cols); + EXPECT_EQ(this->blob_top_data_->height(), 1); + EXPECT_EQ(this->blob_top_data_->width(), 1); + + EXPECT_EQ(this->blob_top_label_->num(), batchsize); + EXPECT_EQ(this->blob_top_label_->channels(), 1); + EXPECT_EQ(this->blob_top_label_->height(), 1); + EXPECT_EQ(this->blob_top_label_->width(), 1); + + // Go through the data 100 times. + for (int iter = 0; iter < 100; ++iter) { + layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); + + // On even iterations, we're reading the first half of the data. + // On odd iterations, we're reading the second half of the data. + int label_offset = (iter % 2 == 0) ? 0 : batchsize; + int data_offset = (iter % 2 == 0) ? 0 : batchsize * num_cols; + + for (int i = 0; i < batchsize; ++i) { + EXPECT_EQ( + label_offset + i, + this->blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < batchsize; ++i) { + for (int j = 0; j < num_cols; ++j) { + EXPECT_EQ( + data_offset + i * num_cols + j, + this->blob_top_data_->cpu_data()[i * num_cols + j]) + << "debug: i " << i << " j " << j; + } + } + } + + // Exact same test in GPU mode. + Caffe::set_mode(Caffe::GPU); + // Go through the data 100 times. + for (int iter = 0; iter < 100; ++iter) { + layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); + + // On even iterations, we're reading the first half of the data. + // On odd iterations, we're reading the second half of the data. + int label_offset = (iter % 2 == 0) ? 0 : batchsize; + int data_offset = (iter % 2 == 0) ? 0 : batchsize * num_cols; + + for (int i = 0; i < batchsize; ++i) { + EXPECT_EQ( + label_offset + i, + this->blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < batchsize; ++i) { + for (int j = 0; j < num_cols; ++j) { + EXPECT_EQ( + data_offset + i * num_cols + j, + this->blob_top_data_->cpu_data()[i * num_cols + j]) + << "debug: i " << i << " j " << j; + } + } + } +} + +} // namespace caffe diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 0f0060aeb1c..2ed8127d27b 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -102,4 +102,42 @@ bool ReadImageToDatum(const string& filename, const int label, return true; } +template <> +void load_2d_dataset(hid_t file_id, const char* dataset_name_, + boost::scoped_ptr* array, hsize_t* dims) { + herr_t status; + + int ndims; + status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); + assert(ndims == 2); + + H5T_class_t class_; + status = H5LTget_dataset_info( + file_id, dataset_name_, dims, &class_, NULL); + assert(class_ == H5T_NATIVE_FLOAT); + + array->reset(new float[dims[0] * dims[1]]); + status = H5LTread_dataset_float( + file_id, dataset_name_, array->get()); +} + +template <> +void load_2d_dataset(hid_t file_id, const char* dataset_name_, + boost::scoped_ptr* array, hsize_t* dims) { + herr_t status; + + int ndims; + status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); + assert(ndims == 2); + + H5T_class_t class_; + status = H5LTget_dataset_info( + file_id, dataset_name_, dims, &class_, NULL); + assert(class_ == H5T_NATIVE_DOUBLE); + + array->reset(new double[dims[0] * dims[1]]); + status = H5LTread_dataset_double( + file_id, dataset_name_, array->get()); +} + } // namespace caffe From 420c9288af545312faa1a789d7f5d2be2ec78e25 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Mon, 24 Feb 2014 22:35:33 -0800 Subject: [PATCH 012/113] minor comment edit --- src/caffe/layers/hdf5_data_layer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index eac01d56c68..0f8f68e9d6d 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -1,7 +1,6 @@ /* TODO: - only load parts of the file, in accordance with a prototxt param "max_mem" -- How does Dtype affect the loading of the data, which is always float? */ #include From f3edc7c504702ac64586c8290d6ff4f0554b5dc8 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Sat, 15 Feb 2014 01:39:14 -0800 Subject: [PATCH 013/113] name blobs and params for their layers in python wrapper note that pairs of params with the same layer name are the params & bias --- python/caffe/pycaffe.cpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index 1beec163c8f..7e17d564938 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -32,12 +32,16 @@ using boost::python::vector_indexing_suite; class CaffeBlob { public: + CaffeBlob(const shared_ptr > &blob, const string& name) + : blob_(blob), name_(name) {} + CaffeBlob(const shared_ptr > &blob) : blob_(blob) {} CaffeBlob() {} + string name() const { return name_; } int num() const { return blob_->num(); } int channels() const { return blob_->channels(); } int height() const { return blob_->height(); } @@ -51,6 +55,7 @@ class CaffeBlob { protected: shared_ptr > blob_; + string name_; }; @@ -219,15 +224,27 @@ struct CaffeNet void set_device(int device_id) { Caffe::SetDevice(device_id); } vector blobs() { - return vector(net_->blobs().begin(), net_->blobs().end()); + vector result; + for (int i = 0; i < net_->blobs().size(); ++i) { + result.push_back(CaffeBlob(net_->blobs()[i], net_->blob_names()[i])); + } + return result; } vector params() { - return vector(net_->params().begin(), net_->params().end()); + vector result; + int ix = 0; + for (int i = 0; i < net_->layers().size(); ++i) { + for (int j = 0; j < net_->layers()[i]->blobs().size(); ++j) { + result.push_back(CaffeBlob(net_->params()[ix], net_->layer_names()[i])); + ix++; + } + } + return result; } // The pointer to the internal caffe::Net instant. - shared_ptr > net_; + shared_ptr > net_; }; @@ -251,6 +268,7 @@ BOOST_PYTHON_MODULE(pycaffe) boost::python::class_( "CaffeBlob", boost::python::no_init) + .add_property("name", &CaffeBlob::name) .add_property("num", &CaffeBlob::num) .add_property("channels", &CaffeBlob::channels) .add_property("height", &CaffeBlob::height) From ba95a87e11938d06b243a1de2dd5b89cb3298613 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 11:44:28 -0800 Subject: [PATCH 014/113] add cpplint.py and "make lint" to run on all c source files --- Makefile | 5 + scripts/cpplint.py | 4753 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4758 insertions(+) create mode 100755 scripts/cpplint.py diff --git a/Makefile b/Makefile index 303eb2a5690..acbb697d491 100644 --- a/Makefile +++ b/Makefile @@ -110,6 +110,11 @@ init: linecount: clean cloc --read-lang-def=$(PROJECT).cloc src/$(PROJECT)/ +lint: + ./scripts/cpplint.py $(CXX_SRCS) $(HXX_SRCS) $(CU_SRCS) \ + $(TEST_SRCS) $(TEST_HDRS) $(EXAMPLE_SRCS) \ + $(PY$(PROJECT)_SRC) $(MAT$(PROJECT)_SRC) + test: init $(TEST_BINS) tools: init $(TOOL_BINS) diff --git a/scripts/cpplint.py b/scripts/cpplint.py new file mode 100755 index 00000000000..76d07352783 --- /dev/null +++ b/scripts/cpplint.py @@ -0,0 +1,4753 @@ +#!/usr/bin/python +# +# Copyright (c) 2009 Google Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Does google-lint on c++ files. + +The goal of this script is to identify places in the code that *may* +be in non-compliance with google style. It does not attempt to fix +up these problems -- the point is to educate. It does also not +attempt to find all problems, or to ensure that everything it does +find is legitimately a problem. + +In particular, we can get very confused by /* and // inside strings! +We do a small hack, which is to ignore //'s with "'s after them on the +same line, but it is far from perfect (in either direction). +""" + +import codecs +import copy +import getopt +import math # for log +import os +import re +import sre_compile +import string +import sys +import unicodedata + + +_USAGE = """ +Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] + [--counting=total|toplevel|detailed] [--root=subdir] + [--linelength=digits] + [file] ... + + The style guidelines this tries to follow are those in + http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml + + Every problem is given a confidence score from 1-5, with 5 meaning we are + certain of the problem, and 1 meaning it could be a legitimate construct. + This will miss some errors, and is not a substitute for a code review. + + To suppress false-positive errors of a certain category, add a + 'NOLINT(category)' comment to the line. NOLINT or NOLINT(*) + suppresses errors of all categories on that line. + + The files passed in will be linted; at least one file must be provided. + Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the + extensions with the --extensions flag. + + Flags: + + output=vs7 + By default, the output is formatted to ease emacs parsing. Visual Studio + compatible output (vs7) may also be used. Other formats are unsupported. + + verbose=# + Specify a number 0-5 to restrict errors to certain verbosity levels. + + filter=-x,+y,... + Specify a comma-separated list of category-filters to apply: only + error messages whose category names pass the filters will be printed. + (Category names are printed with the message and look like + "[whitespace/indent]".) Filters are evaluated left to right. + "-FOO" and "FOO" means "do not print categories that start with FOO". + "+FOO" means "do print categories that start with FOO". + + Examples: --filter=-whitespace,+whitespace/braces + --filter=whitespace,runtime/printf,+runtime/printf_format + --filter=-,+build/include_what_you_use + + To see a list of all the categories used in cpplint, pass no arg: + --filter= + + counting=total|toplevel|detailed + The total number of errors found is always printed. If + 'toplevel' is provided, then the count of errors in each of + the top-level categories like 'build' and 'whitespace' will + also be printed. If 'detailed' is provided, then a count + is provided for each category like 'build/class'. + + root=subdir + The root directory used for deriving header guard CPP variable. + By default, the header guard CPP variable is calculated as the relative + path to the directory that contains .git, .hg, or .svn. When this flag + is specified, the relative path is calculated from the specified + directory. If the specified directory does not exist, this flag is + ignored. + + Examples: + Assuing that src/.git exists, the header guard CPP variables for + src/chrome/browser/ui/browser.h are: + + No flag => CHROME_BROWSER_UI_BROWSER_H_ + --root=chrome => BROWSER_UI_BROWSER_H_ + --root=chrome/browser => UI_BROWSER_H_ + + linelength=digits + This is the allowed line length for the project. The default value is + 80 characters. + + Examples: + --linelength=120 + + extensions=extension,extension,... + The allowed file extensions that cpplint will check + + Examples: + --extensions=hpp,cpp +""" + +# We categorize each error message we print. Here are the categories. +# We want an explicit list so we can list them all in cpplint --filter=. +# If you add a new error message with a new category, add it to the list +# here! cpplint_unittest.py should tell you if you forget to do this. +_ERROR_CATEGORIES = [ + 'build/class', + 'build/deprecated', + 'build/endif_comment', + 'build/explicit_make_pair', + 'build/forward_decl', + 'build/header_guard', + 'build/include', + 'build/include_alpha', + 'build/include_order', + 'build/include_what_you_use', + 'build/namespaces', + 'build/printf_format', + 'build/storage_class', + 'legal/copyright', + 'readability/alt_tokens', + 'readability/braces', + 'readability/casting', + 'readability/check', + 'readability/constructors', + 'readability/fn_size', + 'readability/function', + 'readability/multiline_comment', + 'readability/multiline_string', + 'readability/namespace', + 'readability/nolint', + 'readability/nul', + 'readability/streams', + 'readability/todo', + 'readability/utf8', + 'runtime/arrays', + 'runtime/casting', + 'runtime/explicit', + 'runtime/int', + 'runtime/init', + 'runtime/invalid_increment', + 'runtime/member_string_references', + 'runtime/memset', + 'runtime/operator', + 'runtime/printf', + 'runtime/printf_format', + 'runtime/references', + 'runtime/string', + 'runtime/threadsafe_fn', + 'runtime/vlog', + 'whitespace/blank_line', + 'whitespace/braces', + 'whitespace/comma', + 'whitespace/comments', + 'whitespace/empty_conditional_body', + 'whitespace/empty_loop_body', + 'whitespace/end_of_line', + 'whitespace/ending_newline', + 'whitespace/forcolon', + 'whitespace/indent', + 'whitespace/line_length', + 'whitespace/newline', + 'whitespace/operators', + 'whitespace/parens', + 'whitespace/semicolon', + 'whitespace/tab', + 'whitespace/todo' + ] + +# The default state of the category filter. This is overrided by the --filter= +# flag. By default all errors are on, so only add here categories that should be +# off by default (i.e., categories that must be enabled by the --filter= flags). +# All entries here should start with a '-' or '+', as in the --filter= flag. +_DEFAULT_FILTERS = ['-build/include_alpha'] + +# We used to check for high-bit characters, but after much discussion we +# decided those were OK, as long as they were in UTF-8 and didn't represent +# hard-coded international strings, which belong in a separate i18n file. + + +# C++ headers +_CPP_HEADERS = frozenset([ + # Legacy + 'algobase.h', + 'algo.h', + 'alloc.h', + 'builtinbuf.h', + 'bvector.h', + 'complex.h', + 'defalloc.h', + 'deque.h', + 'editbuf.h', + 'fstream.h', + 'function.h', + 'hash_map', + 'hash_map.h', + 'hash_set', + 'hash_set.h', + 'hashtable.h', + 'heap.h', + 'indstream.h', + 'iomanip.h', + 'iostream.h', + 'istream.h', + 'iterator.h', + 'list.h', + 'map.h', + 'multimap.h', + 'multiset.h', + 'ostream.h', + 'pair.h', + 'parsestream.h', + 'pfstream.h', + 'procbuf.h', + 'pthread_alloc', + 'pthread_alloc.h', + 'rope', + 'rope.h', + 'ropeimpl.h', + 'set.h', + 'slist', + 'slist.h', + 'stack.h', + 'stdiostream.h', + 'stl_alloc.h', + 'stl_relops.h', + 'streambuf.h', + 'stream.h', + 'strfile.h', + 'strstream.h', + 'tempbuf.h', + 'tree.h', + 'type_traits.h', + 'vector.h', + # 17.6.1.2 C++ library headers + 'algorithm', + 'array', + 'atomic', + 'bitset', + 'chrono', + 'codecvt', + 'complex', + 'condition_variable', + 'deque', + 'exception', + 'forward_list', + 'fstream', + 'functional', + 'future', + 'initializer_list', + 'iomanip', + 'ios', + 'iosfwd', + 'iostream', + 'istream', + 'iterator', + 'limits', + 'list', + 'locale', + 'map', + 'memory', + 'mutex', + 'new', + 'numeric', + 'ostream', + 'queue', + 'random', + 'ratio', + 'regex', + 'set', + 'sstream', + 'stack', + 'stdexcept', + 'streambuf', + 'string', + 'strstream', + 'system_error', + 'thread', + 'tuple', + 'typeindex', + 'typeinfo', + 'type_traits', + 'unordered_map', + 'unordered_set', + 'utility', + 'valarray', + 'vector', + # 17.6.1.2 C++ headers for C library facilities + 'cassert', + 'ccomplex', + 'cctype', + 'cerrno', + 'cfenv', + 'cfloat', + 'cinttypes', + 'ciso646', + 'climits', + 'clocale', + 'cmath', + 'csetjmp', + 'csignal', + 'cstdalign', + 'cstdarg', + 'cstdbool', + 'cstddef', + 'cstdint', + 'cstdio', + 'cstdlib', + 'cstring', + 'ctgmath', + 'ctime', + 'cuchar', + 'cwchar', + 'cwctype', + ]) + +# Assertion macros. These are defined in base/logging.h and +# testing/base/gunit.h. Note that the _M versions need to come first +# for substring matching to work. +_CHECK_MACROS = [ + 'DCHECK', 'CHECK', + 'EXPECT_TRUE_M', 'EXPECT_TRUE', + 'ASSERT_TRUE_M', 'ASSERT_TRUE', + 'EXPECT_FALSE_M', 'EXPECT_FALSE', + 'ASSERT_FALSE_M', 'ASSERT_FALSE', + ] + +# Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE +_CHECK_REPLACEMENT = dict([(m, {}) for m in _CHECK_MACROS]) + +for op, replacement in [('==', 'EQ'), ('!=', 'NE'), + ('>=', 'GE'), ('>', 'GT'), + ('<=', 'LE'), ('<', 'LT')]: + _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement + _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement + _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement + _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement + _CHECK_REPLACEMENT['EXPECT_TRUE_M'][op] = 'EXPECT_%s_M' % replacement + _CHECK_REPLACEMENT['ASSERT_TRUE_M'][op] = 'ASSERT_%s_M' % replacement + +for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'), + ('>=', 'LT'), ('>', 'LE'), + ('<=', 'GT'), ('<', 'GE')]: + _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement + _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement + _CHECK_REPLACEMENT['EXPECT_FALSE_M'][op] = 'EXPECT_%s_M' % inv_replacement + _CHECK_REPLACEMENT['ASSERT_FALSE_M'][op] = 'ASSERT_%s_M' % inv_replacement + +# Alternative tokens and their replacements. For full list, see section 2.5 +# Alternative tokens [lex.digraph] in the C++ standard. +# +# Digraphs (such as '%:') are not included here since it's a mess to +# match those on a word boundary. +_ALT_TOKEN_REPLACEMENT = { + 'and': '&&', + 'bitor': '|', + 'or': '||', + 'xor': '^', + 'compl': '~', + 'bitand': '&', + 'and_eq': '&=', + 'or_eq': '|=', + 'xor_eq': '^=', + 'not': '!', + 'not_eq': '!=' + } + +# Compile regular expression that matches all the above keywords. The "[ =()]" +# bit is meant to avoid matching these keywords outside of boolean expressions. +# +# False positives include C-style multi-line comments and multi-line strings +# but those have always been troublesome for cpplint. +_ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( + r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') + + +# These constants define types of headers for use with +# _IncludeState.CheckNextIncludeOrder(). +_C_SYS_HEADER = 1 +_CPP_SYS_HEADER = 2 +_LIKELY_MY_HEADER = 3 +_POSSIBLE_MY_HEADER = 4 +_OTHER_HEADER = 5 + +# These constants define the current inline assembly state +_NO_ASM = 0 # Outside of inline assembly block +_INSIDE_ASM = 1 # Inside inline assembly block +_END_ASM = 2 # Last line of inline assembly block +_BLOCK_ASM = 3 # The whole block is an inline assembly block + +# Match start of assembly blocks +_MATCH_ASM = re.compile(r'^\s*(?:asm|_asm|__asm|__asm__)' + r'(?:\s+(volatile|__volatile__))?' + r'\s*[{(]') + + +_regexp_compile_cache = {} + +# Finds occurrences of NOLINT or NOLINT(...). +_RE_SUPPRESSION = re.compile(r'\bNOLINT\b(\([^)]*\))?') + +# {str, set(int)}: a map from error categories to sets of linenumbers +# on which those errors are expected and should be suppressed. +_error_suppressions = {} + +# The root directory used for deriving header guard CPP variable. +# This is set by --root flag. +_root = None + +# The allowed line length of files. +# This is set by --linelength flag. +_line_length = 80 + +# The allowed extensions for file names +# This is set by --extensions flag. +_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) + +def ParseNolintSuppressions(filename, raw_line, linenum, error): + """Updates the global list of error-suppressions. + + Parses any NOLINT comments on the current line, updating the global + error_suppressions store. Reports an error if the NOLINT comment + was malformed. + + Args: + filename: str, the name of the input file. + raw_line: str, the line of input text, with comments. + linenum: int, the number of the current line. + error: function, an error handler. + """ + # FIXME(adonovan): "NOLINT(" is misparsed as NOLINT(*). + matched = _RE_SUPPRESSION.search(raw_line) + if matched: + category = matched.group(1) + if category in (None, '(*)'): # => "suppress all" + _error_suppressions.setdefault(None, set()).add(linenum) + else: + if category.startswith('(') and category.endswith(')'): + category = category[1:-1] + if category in _ERROR_CATEGORIES: + _error_suppressions.setdefault(category, set()).add(linenum) + else: + error(filename, linenum, 'readability/nolint', 5, + 'Unknown NOLINT error category: %s' % category) + + +def ResetNolintSuppressions(): + "Resets the set of NOLINT suppressions to empty." + _error_suppressions.clear() + + +def IsErrorSuppressedByNolint(category, linenum): + """Returns true if the specified error category is suppressed on this line. + + Consults the global error_suppressions map populated by + ParseNolintSuppressions/ResetNolintSuppressions. + + Args: + category: str, the category of the error. + linenum: int, the current line number. + Returns: + bool, True iff the error should be suppressed due to a NOLINT comment. + """ + return (linenum in _error_suppressions.get(category, set()) or + linenum in _error_suppressions.get(None, set())) + +def Match(pattern, s): + """Matches the string with the pattern, caching the compiled regexp.""" + # The regexp compilation caching is inlined in both Match and Search for + # performance reasons; factoring it out into a separate function turns out + # to be noticeably expensive. + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].match(s) + + +def ReplaceAll(pattern, rep, s): + """Replaces instances of pattern in a string with a replacement. + + The compiled regex is kept in a cache shared by Match and Search. + + Args: + pattern: regex pattern + rep: replacement text + s: search string + + Returns: + string with replacements made (or original string if no replacements) + """ + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].sub(rep, s) + + +def Search(pattern, s): + """Searches the string for the pattern, caching the compiled regexp.""" + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].search(s) + + +class _IncludeState(dict): + """Tracks line numbers for includes, and the order in which includes appear. + + As a dict, an _IncludeState object serves as a mapping between include + filename and line number on which that file was included. + + Call CheckNextIncludeOrder() once for each header in the file, passing + in the type constants defined above. Calls in an illegal order will + raise an _IncludeError with an appropriate error message. + + """ + # self._section will move monotonically through this set. If it ever + # needs to move backwards, CheckNextIncludeOrder will raise an error. + _INITIAL_SECTION = 0 + _MY_H_SECTION = 1 + _C_SECTION = 2 + _CPP_SECTION = 3 + _OTHER_H_SECTION = 4 + + _TYPE_NAMES = { + _C_SYS_HEADER: 'C system header', + _CPP_SYS_HEADER: 'C++ system header', + _LIKELY_MY_HEADER: 'header this file implements', + _POSSIBLE_MY_HEADER: 'header this file may implement', + _OTHER_HEADER: 'other header', + } + _SECTION_NAMES = { + _INITIAL_SECTION: "... nothing. (This can't be an error.)", + _MY_H_SECTION: 'a header this file implements', + _C_SECTION: 'C system header', + _CPP_SECTION: 'C++ system header', + _OTHER_H_SECTION: 'other header', + } + + def __init__(self): + dict.__init__(self) + self.ResetSection() + + def ResetSection(self): + # The name of the current section. + self._section = self._INITIAL_SECTION + # The path of last found header. + self._last_header = '' + + def SetLastHeader(self, header_path): + self._last_header = header_path + + def CanonicalizeAlphabeticalOrder(self, header_path): + """Returns a path canonicalized for alphabetical comparison. + + - replaces "-" with "_" so they both cmp the same. + - removes '-inl' since we don't require them to be after the main header. + - lowercase everything, just in case. + + Args: + header_path: Path to be canonicalized. + + Returns: + Canonicalized path. + """ + return header_path.replace('-inl.h', '.h').replace('-', '_').lower() + + def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): + """Check if a header is in alphabetical order with the previous header. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + header_path: Canonicalized header to be checked. + + Returns: + Returns true if the header is in alphabetical order. + """ + # If previous section is different from current section, _last_header will + # be reset to empty string, so it's always less than current header. + # + # If previous line was a blank line, assume that the headers are + # intentionally sorted the way they are. + if (self._last_header > header_path and + not Match(r'^\s*$', clean_lines.elided[linenum - 1])): + return False + return True + + def CheckNextIncludeOrder(self, header_type): + """Returns a non-empty error message if the next header is out of order. + + This function also updates the internal state to be ready to check + the next include. + + Args: + header_type: One of the _XXX_HEADER constants defined above. + + Returns: + The empty string if the header is in the right order, or an + error message describing what's wrong. + + """ + error_message = ('Found %s after %s' % + (self._TYPE_NAMES[header_type], + self._SECTION_NAMES[self._section])) + + last_section = self._section + + if header_type == _C_SYS_HEADER: + if self._section <= self._C_SECTION: + self._section = self._C_SECTION + else: + self._last_header = '' + return error_message + elif header_type == _CPP_SYS_HEADER: + if self._section <= self._CPP_SECTION: + self._section = self._CPP_SECTION + else: + self._last_header = '' + return error_message + elif header_type == _LIKELY_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + self._section = self._OTHER_H_SECTION + elif header_type == _POSSIBLE_MY_HEADER: + if self._section <= self._MY_H_SECTION: + self._section = self._MY_H_SECTION + else: + # This will always be the fallback because we're not sure + # enough that the header is associated with this file. + self._section = self._OTHER_H_SECTION + else: + assert header_type == _OTHER_HEADER + self._section = self._OTHER_H_SECTION + + if last_section != self._section: + self._last_header = '' + + return '' + + +class _CppLintState(object): + """Maintains module-wide state..""" + + def __init__(self): + self.verbose_level = 1 # global setting. + self.error_count = 0 # global count of reported errors + # filters to apply when emitting error messages + self.filters = _DEFAULT_FILTERS[:] + self.counting = 'total' # In what way are we counting errors? + self.errors_by_category = {} # string to int dict storing error counts + + # output format: + # "emacs" - format that emacs can parse (default) + # "vs7" - format that Microsoft Visual Studio 7 can parse + self.output_format = 'emacs' + + def SetOutputFormat(self, output_format): + """Sets the output format for errors.""" + self.output_format = output_format + + def SetVerboseLevel(self, level): + """Sets the module's verbosity, and returns the previous setting.""" + last_verbose_level = self.verbose_level + self.verbose_level = level + return last_verbose_level + + def SetCountingStyle(self, counting_style): + """Sets the module's counting options.""" + self.counting = counting_style + + def SetFilters(self, filters): + """Sets the error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "+whitespace/indent"). + Each filter should start with + or -; else we die. + + Raises: + ValueError: The comma-separated filters did not all start with '+' or '-'. + E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" + """ + # Default filters always have less priority than the flag ones. + self.filters = _DEFAULT_FILTERS[:] + for filt in filters.split(','): + clean_filt = filt.strip() + if clean_filt: + self.filters.append(clean_filt) + for filt in self.filters: + if not (filt.startswith('+') or filt.startswith('-')): + raise ValueError('Every filter in --filters must start with + or -' + ' (%s does not)' % filt) + + def ResetErrorCounts(self): + """Sets the module's error statistic back to zero.""" + self.error_count = 0 + self.errors_by_category = {} + + def IncrementErrorCount(self, category): + """Bumps the module's error statistic.""" + self.error_count += 1 + if self.counting in ('toplevel', 'detailed'): + if self.counting != 'detailed': + category = category.split('/')[0] + if category not in self.errors_by_category: + self.errors_by_category[category] = 0 + self.errors_by_category[category] += 1 + + def PrintErrorCounts(self): + """Print a summary of errors by category, and the total.""" + for category, count in self.errors_by_category.iteritems(): + sys.stderr.write('Category \'%s\' errors found: %d\n' % + (category, count)) + sys.stderr.write('Total errors found: %d\n' % self.error_count) + +_cpplint_state = _CppLintState() + + +def _OutputFormat(): + """Gets the module's output format.""" + return _cpplint_state.output_format + + +def _SetOutputFormat(output_format): + """Sets the module's output format.""" + _cpplint_state.SetOutputFormat(output_format) + + +def _VerboseLevel(): + """Returns the module's verbosity setting.""" + return _cpplint_state.verbose_level + + +def _SetVerboseLevel(level): + """Sets the module's verbosity, and returns the previous setting.""" + return _cpplint_state.SetVerboseLevel(level) + + +def _SetCountingStyle(level): + """Sets the module's counting options.""" + _cpplint_state.SetCountingStyle(level) + + +def _Filters(): + """Returns the module's list of output filters, as a list.""" + return _cpplint_state.filters + + +def _SetFilters(filters): + """Sets the module's error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "whitespace/indent"). + Each filter should start with + or -; else we die. + """ + _cpplint_state.SetFilters(filters) + + +class _FunctionState(object): + """Tracks current function name and the number of lines in its body.""" + + _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. + _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. + + def __init__(self): + self.in_a_function = False + self.lines_in_function = 0 + self.current_function = '' + + def Begin(self, function_name): + """Start analyzing function body. + + Args: + function_name: The name of the function being tracked. + """ + self.in_a_function = True + self.lines_in_function = 0 + self.current_function = function_name + + def Count(self): + """Count line in current function body.""" + if self.in_a_function: + self.lines_in_function += 1 + + def Check(self, error, filename, linenum): + """Report if too many lines in function body. + + Args: + error: The function to call with any errors found. + filename: The name of the current file. + linenum: The number of the line to check. + """ + if Match(r'T(EST|est)', self.current_function): + base_trigger = self._TEST_TRIGGER + else: + base_trigger = self._NORMAL_TRIGGER + trigger = base_trigger * 2**_VerboseLevel() + + if self.lines_in_function > trigger: + error_level = int(math.log(self.lines_in_function / base_trigger, 2)) + # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ... + if error_level > 5: + error_level = 5 + error(filename, linenum, 'readability/fn_size', error_level, + 'Small and focused functions are preferred:' + ' %s has %d non-comment lines' + ' (error triggered by exceeding %d lines).' % ( + self.current_function, self.lines_in_function, trigger)) + + def End(self): + """Stop analyzing function body.""" + self.in_a_function = False + + +class _IncludeError(Exception): + """Indicates a problem with the include order in a file.""" + pass + + +class FileInfo: + """Provides utility functions for filenames. + + FileInfo provides easy access to the components of a file's path + relative to the project root. + """ + + def __init__(self, filename): + self._filename = filename + + def FullName(self): + """Make Windows paths like Unix.""" + return os.path.abspath(self._filename).replace('\\', '/') + + def RepositoryName(self): + """FullName after removing the local path to the repository. + + If we have a real absolute path name here we can try to do something smart: + detecting the root of the checkout and truncating /path/to/checkout from + the name so that we get header guards that don't include things like + "C:\Documents and Settings\..." or "/home/username/..." in them and thus + people on different computers who have checked the source out to different + locations won't see bogus errors. + """ + fullname = self.FullName() + + if os.path.exists(fullname): + project_dir = os.path.dirname(fullname) + + if os.path.exists(os.path.join(project_dir, ".svn")): + # If there's a .svn file in the current directory, we recursively look + # up the directory tree for the top of the SVN checkout + root_dir = project_dir + one_up_dir = os.path.dirname(root_dir) + while os.path.exists(os.path.join(one_up_dir, ".svn")): + root_dir = os.path.dirname(root_dir) + one_up_dir = os.path.dirname(one_up_dir) + + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1:] + + # Not SVN <= 1.6? Try to find a git, hg, or svn top level directory by + # searching up from the current path. + root_dir = os.path.dirname(fullname) + while (root_dir != os.path.dirname(root_dir) and + not os.path.exists(os.path.join(root_dir, ".git")) and + not os.path.exists(os.path.join(root_dir, ".hg")) and + not os.path.exists(os.path.join(root_dir, ".svn"))): + root_dir = os.path.dirname(root_dir) + + if (os.path.exists(os.path.join(root_dir, ".git")) or + os.path.exists(os.path.join(root_dir, ".hg")) or + os.path.exists(os.path.join(root_dir, ".svn"))): + prefix = os.path.commonprefix([root_dir, project_dir]) + return fullname[len(prefix) + 1:] + + # Don't know what to do; header guard warnings may be wrong... + return fullname + + def Split(self): + """Splits the file into the directory, basename, and extension. + + For 'chrome/browser/browser.cc', Split() would + return ('chrome/browser', 'browser', '.cc') + + Returns: + A tuple of (directory, basename, extension). + """ + + googlename = self.RepositoryName() + project, rest = os.path.split(googlename) + return (project,) + os.path.splitext(rest) + + def BaseName(self): + """File base name - text after the final slash, before the final period.""" + return self.Split()[1] + + def Extension(self): + """File extension - text following the final period.""" + return self.Split()[2] + + def NoExtension(self): + """File has no source file extension.""" + return '/'.join(self.Split()[0:2]) + + def IsSource(self): + """File has a source file extension.""" + return self.Extension()[1:] in ('c', 'cc', 'cpp', 'cxx') + + +def _ShouldPrintError(category, confidence, linenum): + """If confidence >= verbose, category passes filter and is not suppressed.""" + + # There are three ways we might decide not to print an error message: + # a "NOLINT(category)" comment appears in the source, + # the verbosity level isn't high enough, or the filters filter it out. + if IsErrorSuppressedByNolint(category, linenum): + return False + if confidence < _cpplint_state.verbose_level: + return False + + is_filtered = False + for one_filter in _Filters(): + if one_filter.startswith('-'): + if category.startswith(one_filter[1:]): + is_filtered = True + elif one_filter.startswith('+'): + if category.startswith(one_filter[1:]): + is_filtered = False + else: + assert False # should have been checked for in SetFilter. + if is_filtered: + return False + + return True + + +def Error(filename, linenum, category, confidence, message): + """Logs the fact we've found a lint error. + + We log where the error was found, and also our confidence in the error, + that is, how certain we are this is a legitimate style regression, and + not a misidentification or a use that's sometimes justified. + + False positives can be suppressed by the use of + "cpplint(category)" comments on the offending line. These are + parsed into _error_suppressions. + + Args: + filename: The name of the file containing the error. + linenum: The number of the line containing the error. + category: A string used to describe the "category" this bug + falls under: "whitespace", say, or "runtime". Categories + may have a hierarchy separated by slashes: "whitespace/indent". + confidence: A number from 1-5 representing a confidence score for + the error, with 5 meaning that we are certain of the problem, + and 1 meaning that it could be a legitimate construct. + message: The error message. + """ + if _ShouldPrintError(category, confidence, linenum): + _cpplint_state.IncrementErrorCount(category) + if _cpplint_state.output_format == 'vs7': + sys.stderr.write('%s(%s): %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + elif _cpplint_state.output_format == 'eclipse': + sys.stderr.write('%s:%s: warning: %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + else: + sys.stderr.write('%s:%s: %s [%s] [%d]\n' % ( + filename, linenum, message, category, confidence)) + + +# Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. +_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( + r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') +# Matches strings. Escape codes should already be removed by ESCAPES. +_RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES = re.compile(r'"[^"]*"') +# Matches characters. Escape codes should already be removed by ESCAPES. +_RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES = re.compile(r"'.'") +# Matches multi-line C++ comments. +# This RE is a little bit more complicated than one might expect, because we +# have to take care of space removals tools so we can handle comments inside +# statements better. +# The current rule is: We only clear spaces from both sides when we're at the +# end of the line. Otherwise, we try to remove spaces from the right side, +# if this doesn't work we try on left side but only if there's a non-character +# on the right. +_RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile( + r"""(\s*/\*.*\*/\s*$| + /\*.*\*/\s+| + \s+/\*.*\*/(?=\W)| + /\*.*\*/)""", re.VERBOSE) + + +def IsCppString(line): + """Does line terminate so, that the next symbol is in string constant. + + This function does not consider single-line nor multi-line comments. + + Args: + line: is a partial line of code starting from the 0..n. + + Returns: + True, if next character appended to 'line' is inside a + string constant. + """ + + line = line.replace(r'\\', 'XX') # after this, \\" does not match to \" + return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 + + +def CleanseRawStrings(raw_lines): + """Removes C++11 raw strings from lines. + + Before: + static const char kData[] = R"( + multi-line string + )"; + + After: + static const char kData[] = "" + (replaced by blank line) + ""; + + Args: + raw_lines: list of raw lines. + + Returns: + list of lines with C++11 raw strings replaced by empty strings. + """ + + delimiter = None + lines_without_raw_strings = [] + for line in raw_lines: + if delimiter: + # Inside a raw string, look for the end + end = line.find(delimiter) + if end >= 0: + # Found the end of the string, match leading space for this + # line and resume copying the original lines, and also insert + # a "" on the last line. + leading_space = Match(r'^(\s*)\S', line) + line = leading_space.group(1) + '""' + line[end + len(delimiter):] + delimiter = None + else: + # Haven't found the end yet, append a blank line. + line = '' + + else: + # Look for beginning of a raw string. + # See 2.14.15 [lex.string] for syntax. + matched = Match(r'^(.*)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) + if matched: + delimiter = ')' + matched.group(2) + '"' + + end = matched.group(3).find(delimiter) + if end >= 0: + # Raw string ended on same line + line = (matched.group(1) + '""' + + matched.group(3)[end + len(delimiter):]) + delimiter = None + else: + # Start of a multi-line raw string + line = matched.group(1) + '""' + + lines_without_raw_strings.append(line) + + # TODO(unknown): if delimiter is not None here, we might want to + # emit a warning for unterminated string. + return lines_without_raw_strings + + +def FindNextMultiLineCommentStart(lines, lineix): + """Find the beginning marker for a multiline comment.""" + while lineix < len(lines): + if lines[lineix].strip().startswith('/*'): + # Only return this marker if the comment goes beyond this line + if lines[lineix].strip().find('*/', 2) < 0: + return lineix + lineix += 1 + return len(lines) + + +def FindNextMultiLineCommentEnd(lines, lineix): + """We are inside a comment, find the end marker.""" + while lineix < len(lines): + if lines[lineix].strip().endswith('*/'): + return lineix + lineix += 1 + return len(lines) + + +def RemoveMultiLineCommentsFromRange(lines, begin, end): + """Clears a range of lines for multi-line comments.""" + # Having // dummy comments makes the lines non-empty, so we will not get + # unnecessary blank line warnings later in the code. + for i in range(begin, end): + lines[i] = '// dummy' + + +def RemoveMultiLineComments(filename, lines, error): + """Removes multiline (c-style) comments from lines.""" + lineix = 0 + while lineix < len(lines): + lineix_begin = FindNextMultiLineCommentStart(lines, lineix) + if lineix_begin >= len(lines): + return + lineix_end = FindNextMultiLineCommentEnd(lines, lineix_begin) + if lineix_end >= len(lines): + error(filename, lineix_begin + 1, 'readability/multiline_comment', 5, + 'Could not find end of multi-line comment') + return + RemoveMultiLineCommentsFromRange(lines, lineix_begin, lineix_end + 1) + lineix = lineix_end + 1 + + +def CleanseComments(line): + """Removes //-comments and single-line C-style /* */ comments. + + Args: + line: A line of C++ source. + + Returns: + The line with single-line comments removed. + """ + commentpos = line.find('//') + if commentpos != -1 and not IsCppString(line[:commentpos]): + line = line[:commentpos].rstrip() + # get rid of /* ... */ + return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line) + + +class CleansedLines(object): + """Holds 3 copies of all lines with different preprocessing applied to them. + + 1) elided member contains lines without strings and comments, + 2) lines member contains lines without comments, and + 3) raw_lines member contains all the lines without processing. + All these three members are of , and of the same length. + """ + + def __init__(self, lines): + self.elided = [] + self.lines = [] + self.raw_lines = lines + self.num_lines = len(lines) + self.lines_without_raw_strings = CleanseRawStrings(lines) + for linenum in range(len(self.lines_without_raw_strings)): + self.lines.append(CleanseComments( + self.lines_without_raw_strings[linenum])) + elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) + self.elided.append(CleanseComments(elided)) + + def NumLines(self): + """Returns the number of lines represented.""" + return self.num_lines + + @staticmethod + def _CollapseStrings(elided): + """Collapses strings and chars on a line to simple "" or '' blocks. + + We nix strings first so we're not fooled by text like '"http://"' + + Args: + elided: The line being processed. + + Returns: + The line with collapsed strings. + """ + if not _RE_PATTERN_INCLUDE.match(elided): + # Remove escaped characters first to make quote/single quote collapsing + # basic. Things that look like escaped characters shouldn't occur + # outside of strings and chars. + elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided) + elided = _RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES.sub("''", elided) + elided = _RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES.sub('""', elided) + return elided + + +def FindEndOfExpressionInLine(line, startpos, depth, startchar, endchar): + """Find the position just after the matching endchar. + + Args: + line: a CleansedLines line. + startpos: start searching at this position. + depth: nesting level at startpos. + startchar: expression opening character. + endchar: expression closing character. + + Returns: + On finding matching endchar: (index just after matching endchar, 0) + Otherwise: (-1, new depth at end of this line) + """ + for i in xrange(startpos, len(line)): + if line[i] == startchar: + depth += 1 + elif line[i] == endchar: + depth -= 1 + if depth == 0: + return (i + 1, 0) + return (-1, depth) + + +def CloseExpression(clean_lines, linenum, pos): + """If input points to ( or { or [ or <, finds the position that closes it. + + If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the + linenum/pos that correspond to the closing of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, linenum, pos) pointer *past* the closing brace, or + (line, len(lines), -1) if we never find a close. Note we ignore + strings and comments when matching; and the line we return is the + 'cleansed' line at linenum. + """ + + line = clean_lines.elided[linenum] + startchar = line[pos] + if startchar not in '({[<': + return (line, clean_lines.NumLines(), -1) + if startchar == '(': endchar = ')' + if startchar == '[': endchar = ']' + if startchar == '{': endchar = '}' + if startchar == '<': endchar = '>' + + # Check first line + (end_pos, num_open) = FindEndOfExpressionInLine( + line, pos, 0, startchar, endchar) + if end_pos > -1: + return (line, linenum, end_pos) + + # Continue scanning forward + while linenum < clean_lines.NumLines() - 1: + linenum += 1 + line = clean_lines.elided[linenum] + (end_pos, num_open) = FindEndOfExpressionInLine( + line, 0, num_open, startchar, endchar) + if end_pos > -1: + return (line, linenum, end_pos) + + # Did not find endchar before end of file, give up + return (line, clean_lines.NumLines(), -1) + + +def FindStartOfExpressionInLine(line, endpos, depth, startchar, endchar): + """Find position at the matching startchar. + + This is almost the reverse of FindEndOfExpressionInLine, but note + that the input position and returned position differs by 1. + + Args: + line: a CleansedLines line. + endpos: start searching at this position. + depth: nesting level at endpos. + startchar: expression opening character. + endchar: expression closing character. + + Returns: + On finding matching startchar: (index at matching startchar, 0) + Otherwise: (-1, new depth at beginning of this line) + """ + for i in xrange(endpos, -1, -1): + if line[i] == endchar: + depth += 1 + elif line[i] == startchar: + depth -= 1 + if depth == 0: + return (i, 0) + return (-1, depth) + + +def ReverseCloseExpression(clean_lines, linenum, pos): + """If input points to ) or } or ] or >, finds the position that opens it. + + If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the + linenum/pos that correspond to the opening of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, linenum, pos) pointer *at* the opening brace, or + (line, 0, -1) if we never find the matching opening brace. Note + we ignore strings and comments when matching; and the line we + return is the 'cleansed' line at linenum. + """ + line = clean_lines.elided[linenum] + endchar = line[pos] + if endchar not in ')}]>': + return (line, 0, -1) + if endchar == ')': startchar = '(' + if endchar == ']': startchar = '[' + if endchar == '}': startchar = '{' + if endchar == '>': startchar = '<' + + # Check last line + (start_pos, num_open) = FindStartOfExpressionInLine( + line, pos, 0, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Continue scanning backward + while linenum > 0: + linenum -= 1 + line = clean_lines.elided[linenum] + (start_pos, num_open) = FindStartOfExpressionInLine( + line, len(line) - 1, num_open, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Did not find startchar before beginning of file, give up + return (line, 0, -1) + + +def CheckForCopyright(filename, lines, error): + """Logs an error if no Copyright message appears at the top of the file.""" + + # We'll say it should occur by line 10. Don't forget there's a + # dummy line at the front. + for line in xrange(1, min(len(lines), 11)): + if re.search(r'Copyright', lines[line], re.I): break + else: # means no copyright line was found + error(filename, 0, 'legal/copyright', 5, + 'No copyright message found. ' + 'You should have a line: "Copyright [year] "') + + +def GetHeaderGuardCPPVariable(filename): + """Returns the CPP variable that should be used as a header guard. + + Args: + filename: The name of a C++ header file. + + Returns: + The CPP variable that should be used as a header guard in the + named file. + + """ + + # Restores original filename in case that cpplint is invoked from Emacs's + # flymake. + filename = re.sub(r'_flymake\.h$', '.h', filename) + filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) + + fileinfo = FileInfo(filename) + file_path_from_root = fileinfo.RepositoryName() + if _root: + file_path_from_root = re.sub('^' + _root + os.sep, '', file_path_from_root) + return re.sub(r'[-./\s]', '_', file_path_from_root).upper() + '_' + + +def CheckForHeaderGuard(filename, lines, error): + """Checks that the file contains a header guard. + + Logs an error if no #ifndef header guard is present. For other + headers, checks that the full pathname is used. + + Args: + filename: The name of the C++ header file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + + cppvar = GetHeaderGuardCPPVariable(filename) + + ifndef = None + ifndef_linenum = 0 + define = None + endif = None + endif_linenum = 0 + for linenum, line in enumerate(lines): + linesplit = line.split() + if len(linesplit) >= 2: + # find the first occurrence of #ifndef and #define, save arg + if not ifndef and linesplit[0] == '#ifndef': + # set ifndef to the header guard presented on the #ifndef line. + ifndef = linesplit[1] + ifndef_linenum = linenum + if not define and linesplit[0] == '#define': + define = linesplit[1] + # find the last occurrence of #endif, save entire line + if line.startswith('#endif'): + endif = line + endif_linenum = linenum + + if not ifndef: + error(filename, 0, 'build/header_guard', 5, + 'No #ifndef header guard found, suggested CPP variable is: %s' % + cppvar) + return + + if not define: + error(filename, 0, 'build/header_guard', 5, + 'No #define header guard found, suggested CPP variable is: %s' % + cppvar) + return + + # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ + # for backward compatibility. + if ifndef != cppvar: + error_level = 0 + if ifndef != cppvar + '_': + error_level = 5 + + ParseNolintSuppressions(filename, lines[ifndef_linenum], ifndef_linenum, + error) + error(filename, ifndef_linenum, 'build/header_guard', error_level, + '#ifndef header guard has wrong style, please use: %s' % cppvar) + + if define != ifndef: + error(filename, 0, 'build/header_guard', 5, + '#ifndef and #define don\'t match, suggested CPP variable is: %s' % + cppvar) + return + + if endif != ('#endif // %s' % cppvar): + error_level = 0 + if endif != ('#endif // %s' % (cppvar + '_')): + error_level = 5 + + ParseNolintSuppressions(filename, lines[endif_linenum], endif_linenum, + error) + error(filename, endif_linenum, 'build/header_guard', error_level, + '#endif line should be "#endif // %s"' % cppvar) + + +def CheckForBadCharacters(filename, lines, error): + """Logs an error for each line containing bad characters. + + Two kinds of bad characters: + + 1. Unicode replacement characters: These indicate that either the file + contained invalid UTF-8 (likely) or Unicode replacement characters (which + it shouldn't). Note that it's possible for this to throw off line + numbering if the invalid UTF-8 occurred adjacent to a newline. + + 2. NUL bytes. These are problematic for some tools. + + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + for linenum, line in enumerate(lines): + if u'\ufffd' in line: + error(filename, linenum, 'readability/utf8', 5, + 'Line contains invalid UTF-8 (or Unicode replacement character).') + if '\0' in line: + error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') + + +def CheckForNewlineAtEOF(filename, lines, error): + """Logs an error if there is no newline char at the end of the file. + + Args: + filename: The name of the current file. + lines: An array of strings, each representing a line of the file. + error: The function to call with any errors found. + """ + + # The array lines() was created by adding two newlines to the + # original file (go figure), then splitting on \n. + # To verify that the file ends in \n, we just have to make sure the + # last-but-two element of lines() exists and is empty. + if len(lines) < 3 or lines[-2]: + error(filename, len(lines) - 2, 'whitespace/ending_newline', 5, + 'Could not find a newline character at the end of the file.') + + +def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): + """Logs an error if we see /* ... */ or "..." that extend past one line. + + /* ... */ comments are legit inside macros, for one line. + Otherwise, we prefer // comments, so it's ok to warn about the + other. Likewise, it's ok for strings to extend across multiple + lines, as long as a line continuation character (backslash) + terminates each line. Although not currently prohibited by the C++ + style guide, it's ugly and unnecessary. We don't do well with either + in this lint program, so we warn about both. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Remove all \\ (escaped backslashes) from the line. They are OK, and the + # second (escaped) slash may trigger later \" detection erroneously. + line = line.replace('\\\\', '') + + if line.count('/*') > line.count('*/'): + error(filename, linenum, 'readability/multiline_comment', 5, + 'Complex multi-line /*...*/-style comment found. ' + 'Lint may give bogus warnings. ' + 'Consider replacing these with //-style comments, ' + 'with #if 0...#endif, ' + 'or with more clearly structured multi-line comments.') + + if (line.count('"') - line.count('\\"')) % 2: + error(filename, linenum, 'readability/multiline_string', 5, + 'Multi-line string ("...") found. This lint script doesn\'t ' + 'do well with such strings, and may give bogus warnings. ' + 'Use C++11 raw strings or concatenation instead.') + + +threading_list = ( + ('asctime(', 'asctime_r('), + ('ctime(', 'ctime_r('), + ('getgrgid(', 'getgrgid_r('), + ('getgrnam(', 'getgrnam_r('), + ('getlogin(', 'getlogin_r('), + ('getpwnam(', 'getpwnam_r('), + ('getpwuid(', 'getpwuid_r('), + ('gmtime(', 'gmtime_r('), + ('localtime(', 'localtime_r('), + ('rand(', 'rand_r('), + ('strtok(', 'strtok_r('), + ('ttyname(', 'ttyname_r('), + ) + + +def CheckPosixThreading(filename, clean_lines, linenum, error): + """Checks for calls to thread-unsafe functions. + + Much code has been originally written without consideration of + multi-threading. Also, engineers are relying on their old experience; + they have learned posix before threading extensions were added. These + tests guide the engineers to use thread-safe functions (when using + posix directly). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + for single_thread_function, multithread_safe_function in threading_list: + ix = line.find(single_thread_function) + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison + if ix >= 0 and (ix == 0 or (not line[ix - 1].isalnum() and + line[ix - 1] not in ('_', '.', '>'))): + error(filename, linenum, 'runtime/threadsafe_fn', 2, + 'Consider using ' + multithread_safe_function + + '...) instead of ' + single_thread_function + + '...) for improved thread safety.') + + +def CheckVlogArguments(filename, clean_lines, linenum, error): + """Checks that VLOG() is only used for defining a logging level. + + For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and + VLOG(FATAL) are not. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): + error(filename, linenum, 'runtime/vlog', 5, + 'VLOG() should be used with numeric verbosity level. ' + 'Use LOG() if you want symbolic severity levels.') + + +# Matches invalid increment: *count++, which moves pointer instead of +# incrementing a value. +_RE_PATTERN_INVALID_INCREMENT = re.compile( + r'^\s*\*\w+(\+\+|--);') + + +def CheckInvalidIncrement(filename, clean_lines, linenum, error): + """Checks for invalid increment *count++. + + For example following function: + void increment_counter(int* count) { + *count++; + } + is invalid, because it effectively does count++, moving pointer, and should + be replaced with ++*count, (*count)++ or *count += 1. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if _RE_PATTERN_INVALID_INCREMENT.match(line): + error(filename, linenum, 'runtime/invalid_increment', 5, + 'Changing pointer instead of value (or unused value of operator*).') + + +class _BlockInfo(object): + """Stores information about a generic block of code.""" + + def __init__(self, seen_open_brace): + self.seen_open_brace = seen_open_brace + self.open_parentheses = 0 + self.inline_asm = _NO_ASM + + def CheckBegin(self, filename, clean_lines, linenum, error): + """Run checks that applies to text up to the opening brace. + + This is mostly for checking the text after the class identifier + and the "{", usually where the base class is specified. For other + blocks, there isn't much to check, so we always pass. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass + + def CheckEnd(self, filename, clean_lines, linenum, error): + """Run checks that applies to text after the closing brace. + + This is mostly used for checking end of namespace comments. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + pass + + +class _ClassInfo(_BlockInfo): + """Stores information about a class.""" + + def __init__(self, name, class_or_struct, clean_lines, linenum): + _BlockInfo.__init__(self, False) + self.name = name + self.starting_linenum = linenum + self.is_derived = False + if class_or_struct == 'struct': + self.access = 'public' + self.is_struct = True + else: + self.access = 'private' + self.is_struct = False + + # Remember initial indentation level for this class. Using raw_lines here + # instead of elided to account for leading comments. + initial_indent = Match(r'^( *)\S', clean_lines.raw_lines[linenum]) + if initial_indent: + self.class_indent = len(initial_indent.group(1)) + else: + self.class_indent = 0 + + # Try to find the end of the class. This will be confused by things like: + # class A { + # } *x = { ... + # + # But it's still good enough for CheckSectionSpacing. + self.last_line = 0 + depth = 0 + for i in range(linenum, clean_lines.NumLines()): + line = clean_lines.elided[i] + depth += line.count('{') - line.count('}') + if not depth: + self.last_line = i + break + + def CheckBegin(self, filename, clean_lines, linenum, error): + # Look for a bare ':' + if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): + self.is_derived = True + + def CheckEnd(self, filename, clean_lines, linenum, error): + # Check that closing brace is aligned with beginning of the class. + # Only do this if the closing brace is indented by only whitespaces. + # This means we will not check single-line class definitions. + indent = Match(r'^( *)\}', clean_lines.elided[linenum]) + if indent and len(indent.group(1)) != self.class_indent: + if self.is_struct: + parent = 'struct ' + self.name + else: + parent = 'class ' + self.name + error(filename, linenum, 'whitespace/indent', 3, + 'Closing brace should be aligned with beginning of %s' % parent) + + +class _NamespaceInfo(_BlockInfo): + """Stores information about a namespace.""" + + def __init__(self, name, linenum): + _BlockInfo.__init__(self, False) + self.name = name or '' + self.starting_linenum = linenum + + def CheckEnd(self, filename, clean_lines, linenum, error): + """Check end of namespace comments.""" + line = clean_lines.raw_lines[linenum] + + # Check how many lines is enclosed in this namespace. Don't issue + # warning for missing namespace comments if there aren't enough + # lines. However, do apply checks if there is already an end of + # namespace comment and it's incorrect. + # + # TODO(unknown): We always want to check end of namespace comments + # if a namespace is large, but sometimes we also want to apply the + # check if a short namespace contained nontrivial things (something + # other than forward declarations). There is currently no logic on + # deciding what these nontrivial things are, so this check is + # triggered by namespace size only, which works most of the time. + if (linenum - self.starting_linenum < 10 + and not Match(r'};*\s*(//|/\*).*\bnamespace\b', line)): + return + + # Look for matching comment at end of namespace. + # + # Note that we accept C style "/* */" comments for terminating + # namespaces, so that code that terminate namespaces inside + # preprocessor macros can be cpplint clean. + # + # We also accept stuff like "// end of namespace ." with the + # period at the end. + # + # Besides these, we don't accept anything else, otherwise we might + # get false negatives when existing comment is a substring of the + # expected namespace. + if self.name: + # Named namespace + if not Match((r'};*\s*(//|/\*).*\bnamespace\s+' + re.escape(self.name) + + r'[\*/\.\\\s]*$'), + line): + error(filename, linenum, 'readability/namespace', 5, + 'Namespace should be terminated with "// namespace %s"' % + self.name) + else: + # Anonymous namespace + if not Match(r'};*\s*(//|/\*).*\bnamespace[\*/\.\\\s]*$', line): + error(filename, linenum, 'readability/namespace', 5, + 'Namespace should be terminated with "// namespace"') + + +class _PreprocessorInfo(object): + """Stores checkpoints of nesting stacks when #if/#else is seen.""" + + def __init__(self, stack_before_if): + # The entire nesting stack before #if + self.stack_before_if = stack_before_if + + # The entire nesting stack up to #else + self.stack_before_else = [] + + # Whether we have already seen #else or #elif + self.seen_else = False + + +class _NestingState(object): + """Holds states related to parsing braces.""" + + def __init__(self): + # Stack for tracking all braces. An object is pushed whenever we + # see a "{", and popped when we see a "}". Only 3 types of + # objects are possible: + # - _ClassInfo: a class or struct. + # - _NamespaceInfo: a namespace. + # - _BlockInfo: some other type of block. + self.stack = [] + + # Stack of _PreprocessorInfo objects. + self.pp_stack = [] + + def SeenOpenBrace(self): + """Check if we have seen the opening brace for the innermost block. + + Returns: + True if we have seen the opening brace, False if the innermost + block is still expecting an opening brace. + """ + return (not self.stack) or self.stack[-1].seen_open_brace + + def InNamespaceBody(self): + """Check if we are currently one level inside a namespace body. + + Returns: + True if top of the stack is a namespace block, False otherwise. + """ + return self.stack and isinstance(self.stack[-1], _NamespaceInfo) + + def UpdatePreprocessor(self, line): + """Update preprocessor stack. + + We need to handle preprocessors due to classes like this: + #ifdef SWIG + struct ResultDetailsPageElementExtensionPoint { + #else + struct ResultDetailsPageElementExtensionPoint : public Extension { + #endif + + We make the following assumptions (good enough for most files): + - Preprocessor condition evaluates to true from #if up to first + #else/#elif/#endif. + + - Preprocessor condition evaluates to false from #else/#elif up + to #endif. We still perform lint checks on these lines, but + these do not affect nesting stack. + + Args: + line: current line to check. + """ + if Match(r'^\s*#\s*(if|ifdef|ifndef)\b', line): + # Beginning of #if block, save the nesting stack here. The saved + # stack will allow us to restore the parsing state in the #else case. + self.pp_stack.append(_PreprocessorInfo(copy.deepcopy(self.stack))) + elif Match(r'^\s*#\s*(else|elif)\b', line): + # Beginning of #else block + if self.pp_stack: + if not self.pp_stack[-1].seen_else: + # This is the first #else or #elif block. Remember the + # whole nesting stack up to this point. This is what we + # keep after the #endif. + self.pp_stack[-1].seen_else = True + self.pp_stack[-1].stack_before_else = copy.deepcopy(self.stack) + + # Restore the stack to how it was before the #if + self.stack = copy.deepcopy(self.pp_stack[-1].stack_before_if) + else: + # TODO(unknown): unexpected #else, issue warning? + pass + elif Match(r'^\s*#\s*endif\b', line): + # End of #if or #else blocks. + if self.pp_stack: + # If we saw an #else, we will need to restore the nesting + # stack to its former state before the #else, otherwise we + # will just continue from where we left off. + if self.pp_stack[-1].seen_else: + # Here we can just use a shallow copy since we are the last + # reference to it. + self.stack = self.pp_stack[-1].stack_before_else + # Drop the corresponding #if + self.pp_stack.pop() + else: + # TODO(unknown): unexpected #endif, issue warning? + pass + + def Update(self, filename, clean_lines, linenum, error): + """Update nesting state with current line. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Update pp_stack first + self.UpdatePreprocessor(line) + + # Count parentheses. This is to avoid adding struct arguments to + # the nesting stack. + if self.stack: + inner_block = self.stack[-1] + depth_change = line.count('(') - line.count(')') + inner_block.open_parentheses += depth_change + + # Also check if we are starting or ending an inline assembly block. + if inner_block.inline_asm in (_NO_ASM, _END_ASM): + if (depth_change != 0 and + inner_block.open_parentheses == 1 and + _MATCH_ASM.match(line)): + # Enter assembly block + inner_block.inline_asm = _INSIDE_ASM + else: + # Not entering assembly block. If previous line was _END_ASM, + # we will now shift to _NO_ASM state. + inner_block.inline_asm = _NO_ASM + elif (inner_block.inline_asm == _INSIDE_ASM and + inner_block.open_parentheses == 0): + # Exit assembly block + inner_block.inline_asm = _END_ASM + + # Consume namespace declaration at the beginning of the line. Do + # this in a loop so that we catch same line declarations like this: + # namespace proto2 { namespace bridge { class MessageSet; } } + while True: + # Match start of namespace. The "\b\s*" below catches namespace + # declarations even if it weren't followed by a whitespace, this + # is so that we don't confuse our namespace checker. The + # missing spaces will be flagged by CheckSpacing. + namespace_decl_match = Match(r'^\s*namespace\b\s*([:\w]+)?(.*)$', line) + if not namespace_decl_match: + break + + new_namespace = _NamespaceInfo(namespace_decl_match.group(1), linenum) + self.stack.append(new_namespace) + + line = namespace_decl_match.group(2) + if line.find('{') != -1: + new_namespace.seen_open_brace = True + line = line[line.find('{') + 1:] + + # Look for a class declaration in whatever is left of the line + # after parsing namespaces. The regexp accounts for decorated classes + # such as in: + # class LOCKABLE API Object { + # }; + # + # Templates with class arguments may confuse the parser, for example: + # template , + # class Vector = vector > + # class HeapQueue { + # + # Because this parser has no nesting state about templates, by the + # time it saw "class Comparator", it may think that it's a new class. + # Nested templates have a similar problem: + # template < + # typename ExportedType, + # typename TupleType, + # template class ImplTemplate> + # + # To avoid these cases, we ignore classes that are followed by '=' or '>' + class_decl_match = Match( + r'\s*(template\s*<[\w\s<>,:]*>\s*)?' + r'(class|struct)\s+([A-Z_]+\s+)*(\w+(?:::\w+)*)' + r'(([^=>]|<[^<>]*>|<[^<>]*<[^<>]*>\s*>)*)$', line) + if (class_decl_match and + (not self.stack or self.stack[-1].open_parentheses == 0)): + self.stack.append(_ClassInfo( + class_decl_match.group(4), class_decl_match.group(2), + clean_lines, linenum)) + line = class_decl_match.group(5) + + # If we have not yet seen the opening brace for the innermost block, + # run checks here. + if not self.SeenOpenBrace(): + self.stack[-1].CheckBegin(filename, clean_lines, linenum, error) + + # Update access control if we are inside a class/struct + if self.stack and isinstance(self.stack[-1], _ClassInfo): + classinfo = self.stack[-1] + access_match = Match( + r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' + r':(?:[^:]|$)', + line) + if access_match: + classinfo.access = access_match.group(2) + + # Check that access keywords are indented +1 space. Skip this + # check if the keywords are not preceded by whitespaces. + indent = access_match.group(1) + if (len(indent) != classinfo.class_indent + 1 and + Match(r'^\s*$', indent)): + if classinfo.is_struct: + parent = 'struct ' + classinfo.name + else: + parent = 'class ' + classinfo.name + slots = '' + if access_match.group(3): + slots = access_match.group(3) + error(filename, linenum, 'whitespace/indent', 3, + '%s%s: should be indented +1 space inside %s' % ( + access_match.group(2), slots, parent)) + + # Consume braces or semicolons from what's left of the line + while True: + # Match first brace, semicolon, or closed parenthesis. + matched = Match(r'^[^{;)}]*([{;)}])(.*)$', line) + if not matched: + break + + token = matched.group(1) + if token == '{': + # If namespace or class hasn't seen a opening brace yet, mark + # namespace/class head as complete. Push a new block onto the + # stack otherwise. + if not self.SeenOpenBrace(): + self.stack[-1].seen_open_brace = True + else: + self.stack.append(_BlockInfo(True)) + if _MATCH_ASM.match(line): + self.stack[-1].inline_asm = _BLOCK_ASM + elif token == ';' or token == ')': + # If we haven't seen an opening brace yet, but we already saw + # a semicolon, this is probably a forward declaration. Pop + # the stack for these. + # + # Similarly, if we haven't seen an opening brace yet, but we + # already saw a closing parenthesis, then these are probably + # function arguments with extra "class" or "struct" keywords. + # Also pop these stack for these. + if not self.SeenOpenBrace(): + self.stack.pop() + else: # token == '}' + # Perform end of block checks and pop the stack. + if self.stack: + self.stack[-1].CheckEnd(filename, clean_lines, linenum, error) + self.stack.pop() + line = matched.group(2) + + def InnermostClass(self): + """Get class info on the top of the stack. + + Returns: + A _ClassInfo object if we are inside a class, or None otherwise. + """ + for i in range(len(self.stack), 0, -1): + classinfo = self.stack[i - 1] + if isinstance(classinfo, _ClassInfo): + return classinfo + return None + + def CheckCompletedBlocks(self, filename, error): + """Checks that all classes and namespaces have been completely parsed. + + Call this when all lines in a file have been processed. + Args: + filename: The name of the current file. + error: The function to call with any errors found. + """ + # Note: This test can result in false positives if #ifdef constructs + # get in the way of brace matching. See the testBuildClass test in + # cpplint_unittest.py for an example of this. + for obj in self.stack: + if isinstance(obj, _ClassInfo): + error(filename, obj.starting_linenum, 'build/class', 5, + 'Failed to find complete declaration of class %s' % + obj.name) + elif isinstance(obj, _NamespaceInfo): + error(filename, obj.starting_linenum, 'build/namespaces', 5, + 'Failed to find complete declaration of namespace %s' % + obj.name) + + +def CheckForNonStandardConstructs(filename, clean_lines, linenum, + nesting_state, error): + r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. + + Complain about several constructs which gcc-2 accepts, but which are + not standard C++. Warning about these in lint is one way to ease the + transition to new compilers. + - put storage class first (e.g. "static const" instead of "const static"). + - "%lld" instead of %qd" in printf-type functions. + - "%1$d" is non-standard in printf-type functions. + - "\%" is an undefined character escape sequence. + - text after #endif is not allowed. + - invalid inner-style forward declaration. + - >? and ?= and )\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', + line): + error(filename, linenum, 'build/deprecated', 3, + '>? and ))?' + # r'\s*const\s*' + type_name + '\s*&\s*\w+\s*;' + error(filename, linenum, 'runtime/member_string_references', 2, + 'const string& members are dangerous. It is much better to use ' + 'alternatives, such as pointers or simple constants.') + + # Everything else in this function operates on class declarations. + # Return early if the top of the nesting stack is not a class, or if + # the class head is not completed yet. + classinfo = nesting_state.InnermostClass() + if not classinfo or not classinfo.seen_open_brace: + return + + # The class may have been declared with namespace or classname qualifiers. + # The constructor and destructor will not have those qualifiers. + base_classname = classinfo.name.split('::')[-1] + + # Look for single-argument constructors that aren't marked explicit. + # Technically a valid construct, but against style. + args = Match(r'\s+(?:inline\s+)?%s\s*\(([^,()]+)\)' + % re.escape(base_classname), + line) + if (args and + args.group(1) != 'void' and + not Match(r'(const\s+)?%s(\s+const)?\s*(?:<\w+>\s*)?&' + % re.escape(base_classname), args.group(1).strip())): + error(filename, linenum, 'runtime/explicit', 5, + 'Single-argument constructors should be marked explicit.') + + +def CheckSpacingForFunctionCall(filename, line, linenum, error): + """Checks for the correctness of various spacing around function calls. + + Args: + filename: The name of the current file. + line: The text of the line to check. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Since function calls often occur inside if/for/while/switch + # expressions - which have their own, more liberal conventions - we + # first see if we should be looking inside such an expression for a + # function call, to which we can apply more strict standards. + fncall = line # if there's no control flow construct, look at whole line + for pattern in (r'\bif\s*\((.*)\)\s*{', + r'\bfor\s*\((.*)\)\s*{', + r'\bwhile\s*\((.*)\)\s*[{;]', + r'\bswitch\s*\((.*)\)\s*{'): + match = Search(pattern, line) + if match: + fncall = match.group(1) # look inside the parens for function calls + break + + # Except in if/for/while/switch, there should never be space + # immediately inside parens (eg "f( 3, 4 )"). We make an exception + # for nested parens ( (a+b) + c ). Likewise, there should never be + # a space before a ( when it's a function argument. I assume it's a + # function argument when the char before the whitespace is legal in + # a function name (alnum + _) and we're not starting a macro. Also ignore + # pointers and references to arrays and functions coz they're too tricky: + # we use a very simple way to recognize these: + # " (something)(maybe-something)" or + # " (something)(maybe-something," or + # " (something)[something]" + # Note that we assume the contents of [] to be short enough that + # they'll never need to wrap. + if ( # Ignore control structures. + not Search(r'\b(if|for|while|switch|return|new|delete|catch|sizeof)\b', + fncall) and + # Ignore pointers/references to functions. + not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and + # Ignore pointers/references to arrays. + not Search(r' \([^)]+\)\[[^\]]+\]', fncall)): + if Search(r'\w\s*\(\s(?!\s*\\$)', fncall): # a ( used for a fn call + error(filename, linenum, 'whitespace/parens', 4, + 'Extra space after ( in function call') + elif Search(r'\(\s+(?!(\s*\\)|\()', fncall): + error(filename, linenum, 'whitespace/parens', 2, + 'Extra space after (') + if (Search(r'\w\s+\(', fncall) and + not Search(r'#\s*define|typedef', fncall) and + not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall)): + error(filename, linenum, 'whitespace/parens', 4, + 'Extra space before ( in function call') + # If the ) is followed only by a newline or a { + newline, assume it's + # part of a control statement (if/while/etc), and don't complain + if Search(r'[^)]\s+\)\s*[^{\s]', fncall): + # If the closing parenthesis is preceded by only whitespaces, + # try to give a more descriptive error message. + if Search(r'^\s+\)', fncall): + error(filename, linenum, 'whitespace/parens', 2, + 'Closing ) should be moved to the previous line') + else: + error(filename, linenum, 'whitespace/parens', 2, + 'Extra space before )') + + +def IsBlankLine(line): + """Returns true if the given line is blank. + + We consider a line to be blank if the line is empty or consists of + only white spaces. + + Args: + line: A line of a string. + + Returns: + True, if the given line is blank. + """ + return not line or line.isspace() + + +def CheckForFunctionLengths(filename, clean_lines, linenum, + function_state, error): + """Reports for long function bodies. + + For an overview why this is done, see: + http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions + + Uses a simplistic algorithm assuming other style guidelines + (especially spacing) are followed. + Only checks unindented functions, so class members are unchecked. + Trivial bodies are unchecked, so constructors with huge initializer lists + may be missed. + Blank/comment lines are not counted so as to avoid encouraging the removal + of vertical space and comments just to get through a lint check. + NOLINT *on the last line of a function* disables this check. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + function_state: Current function name and lines in body so far. + error: The function to call with any errors found. + """ + lines = clean_lines.lines + line = lines[linenum] + raw = clean_lines.raw_lines + raw_line = raw[linenum] + joined_line = '' + + starting_func = False + regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... + match_result = Match(regexp, line) + if match_result: + # If the name is all caps and underscores, figure it's a macro and + # ignore it, unless it's TEST or TEST_F. + function_name = match_result.group(1).split()[-1] + if function_name == 'TEST' or function_name == 'TEST_F' or ( + not Match(r'[A-Z_]+$', function_name)): + starting_func = True + + if starting_func: + body_found = False + for start_linenum in xrange(linenum, clean_lines.NumLines()): + start_line = lines[start_linenum] + joined_line += ' ' + start_line.lstrip() + if Search(r'(;|})', start_line): # Declarations and trivial functions + body_found = True + break # ... ignore + elif Search(r'{', start_line): + body_found = True + function = Search(r'((\w|:)*)\(', line).group(1) + if Match(r'TEST', function): # Handle TEST... macros + parameter_regexp = Search(r'(\(.*\))', joined_line) + if parameter_regexp: # Ignore bad syntax + function += parameter_regexp.group(1) + else: + function += '()' + function_state.Begin(function) + break + if not body_found: + # No body for the function (or evidence of a non-function) was found. + error(filename, linenum, 'readability/fn_size', 5, + 'Lint failed to find start of function body.') + elif Match(r'^\}\s*$', line): # function end + function_state.Check(error, filename, linenum) + function_state.End() + elif not Match(r'^\s*$', line): + function_state.Count() # Count non-blank/non-comment lines. + + +_RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') + + +def CheckComment(comment, filename, linenum, error): + """Checks for common mistakes in TODO comments. + + Args: + comment: The text of the comment from the line in question. + filename: The name of the current file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + match = _RE_PATTERN_TODO.match(comment) + if match: + # One whitespace is correct; zero whitespace is handled elsewhere. + leading_whitespace = match.group(1) + if len(leading_whitespace) > 1: + error(filename, linenum, 'whitespace/todo', 2, + 'Too many spaces before TODO') + + username = match.group(2) + if not username: + error(filename, linenum, 'readability/todo', 2, + 'Missing username in TODO; it should look like ' + '"// TODO(my_username): Stuff."') + + middle_whitespace = match.group(3) + # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison + if middle_whitespace != ' ' and middle_whitespace != '': + error(filename, linenum, 'whitespace/todo', 2, + 'TODO(my_username) should be followed by a space') + +def CheckAccess(filename, clean_lines, linenum, nesting_state, error): + """Checks for improper use of DISALLOW* macros. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] # get rid of comments and strings + + matched = Match((r'\s*(DISALLOW_COPY_AND_ASSIGN|' + r'DISALLOW_EVIL_CONSTRUCTORS|' + r'DISALLOW_IMPLICIT_CONSTRUCTORS)'), line) + if not matched: + return + if nesting_state.stack and isinstance(nesting_state.stack[-1], _ClassInfo): + if nesting_state.stack[-1].access != 'private': + error(filename, linenum, 'readability/constructors', 3, + '%s must be in the private: section' % matched.group(1)) + + else: + # Found DISALLOW* macro outside a class declaration, or perhaps it + # was used inside a function when it should have been part of the + # class declaration. We could issue a warning here, but it + # probably resulted in a compiler error already. + pass + + +def FindNextMatchingAngleBracket(clean_lines, linenum, init_suffix): + """Find the corresponding > to close a template. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: Current line number. + init_suffix: Remainder of the current line after the initial <. + + Returns: + True if a matching bracket exists. + """ + line = init_suffix + nesting_stack = ['<'] + while True: + # Find the next operator that can tell us whether < is used as an + # opening bracket or as a less-than operator. We only want to + # warn on the latter case. + # + # We could also check all other operators and terminate the search + # early, e.g. if we got something like this "a(),;\[\]]*([<>(),;\[\]])(.*)$', line) + if match: + # Found an operator, update nesting stack + operator = match.group(1) + line = match.group(2) + + if nesting_stack[-1] == '<': + # Expecting closing angle bracket + if operator in ('<', '(', '['): + nesting_stack.append(operator) + elif operator == '>': + nesting_stack.pop() + if not nesting_stack: + # Found matching angle bracket + return True + elif operator == ',': + # Got a comma after a bracket, this is most likely a template + # argument. We have not seen a closing angle bracket yet, but + # it's probably a few lines later if we look for it, so just + # return early here. + return True + else: + # Got some other operator. + return False + + else: + # Expecting closing parenthesis or closing bracket + if operator in ('<', '(', '['): + nesting_stack.append(operator) + elif operator in (')', ']'): + # We don't bother checking for matching () or []. If we got + # something like (] or [), it would have been a syntax error. + nesting_stack.pop() + + else: + # Scan the next line + linenum += 1 + if linenum >= len(clean_lines.elided): + break + line = clean_lines.elided[linenum] + + # Exhausted all remaining lines and still no matching angle bracket. + # Most likely the input was incomplete, otherwise we should have + # seen a semicolon and returned early. + return True + + +def FindPreviousMatchingAngleBracket(clean_lines, linenum, init_prefix): + """Find the corresponding < that started a template. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: Current line number. + init_prefix: Part of the current line before the initial >. + + Returns: + True if a matching bracket exists. + """ + line = init_prefix + nesting_stack = ['>'] + while True: + # Find the previous operator + match = Search(r'^(.*)([<>(),;\[\]])[^<>(),;\[\]]*$', line) + if match: + # Found an operator, update nesting stack + operator = match.group(2) + line = match.group(1) + + if nesting_stack[-1] == '>': + # Expecting opening angle bracket + if operator in ('>', ')', ']'): + nesting_stack.append(operator) + elif operator == '<': + nesting_stack.pop() + if not nesting_stack: + # Found matching angle bracket + return True + elif operator == ',': + # Got a comma before a bracket, this is most likely a + # template argument. The opening angle bracket is probably + # there if we look for it, so just return early here. + return True + else: + # Got some other operator. + return False + + else: + # Expecting opening parenthesis or opening bracket + if operator in ('>', ')', ']'): + nesting_stack.append(operator) + elif operator in ('(', '['): + nesting_stack.pop() + + else: + # Scan the previous line + linenum -= 1 + if linenum < 0: + break + line = clean_lines.elided[linenum] + + # Exhausted all earlier lines and still no matching angle bracket. + return False + + +def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): + """Checks for the correctness of various spacing issues in the code. + + Things we check for: spaces around operators, spaces after + if/for/while/switch, no spaces around parens in function calls, two + spaces between code and comment, don't start a block with a blank + line, don't end a function with a blank line, don't add a blank line + after public/protected/private, don't have too many blank lines in a row. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw = clean_lines.lines_without_raw_strings + line = raw[linenum] + + # Before nixing comments, check if the line is blank for no good + # reason. This includes the first line after a block is opened, and + # blank lines at the end of a function (ie, right before a line like '}' + # + # Skip all the blank line checks if we are immediately inside a + # namespace body. In other words, don't issue blank line warnings + # for this block: + # namespace { + # + # } + # + # A warning about missing end of namespace comments will be issued instead. + if IsBlankLine(line) and not nesting_state.InNamespaceBody(): + elided = clean_lines.elided + prev_line = elided[linenum - 1] + prevbrace = prev_line.rfind('{') + # TODO(unknown): Don't complain if line before blank line, and line after, + # both start with alnums and are indented the same amount. + # This ignores whitespace at the start of a namespace block + # because those are not usually indented. + if prevbrace != -1 and prev_line[prevbrace:].find('}') == -1: + # OK, we have a blank line at the start of a code block. Before we + # complain, we check if it is an exception to the rule: The previous + # non-empty line has the parameters of a function header that are indented + # 4 spaces (because they did not fit in a 80 column line when placed on + # the same line as the function name). We also check for the case where + # the previous line is indented 6 spaces, which may happen when the + # initializers of a constructor do not fit into a 80 column line. + exception = False + if Match(r' {6}\w', prev_line): # Initializer list? + # We are looking for the opening column of initializer list, which + # should be indented 4 spaces to cause 6 space indentation afterwards. + search_position = linenum-2 + while (search_position >= 0 + and Match(r' {6}\w', elided[search_position])): + search_position -= 1 + exception = (search_position >= 0 + and elided[search_position][:5] == ' :') + else: + # Search for the function arguments or an initializer list. We use a + # simple heuristic here: If the line is indented 4 spaces; and we have a + # closing paren, without the opening paren, followed by an opening brace + # or colon (for initializer lists) we assume that it is the last line of + # a function header. If we have a colon indented 4 spaces, it is an + # initializer list. + exception = (Match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)', + prev_line) + or Match(r' {4}:', prev_line)) + + if not exception: + error(filename, linenum, 'whitespace/blank_line', 2, + 'Redundant blank line at the start of a code block ' + 'should be deleted.') + # Ignore blank lines at the end of a block in a long if-else + # chain, like this: + # if (condition1) { + # // Something followed by a blank line + # + # } else if (condition2) { + # // Something else + # } + if linenum + 1 < clean_lines.NumLines(): + next_line = raw[linenum + 1] + if (next_line + and Match(r'\s*}', next_line) + and next_line.find('} else ') == -1): + error(filename, linenum, 'whitespace/blank_line', 3, + 'Redundant blank line at the end of a code block ' + 'should be deleted.') + + matched = Match(r'\s*(public|protected|private):', prev_line) + if matched: + error(filename, linenum, 'whitespace/blank_line', 3, + 'Do not leave a blank line after "%s:"' % matched.group(1)) + + # Next, we complain if there's a comment too near the text + commentpos = line.find('//') + if commentpos != -1: + # Check if the // may be in quotes. If so, ignore it + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison + if (line.count('"', 0, commentpos) - + line.count('\\"', 0, commentpos)) % 2 == 0: # not in quotes + # Allow one space for new scopes, two spaces otherwise: + if (not Match(r'^\s*{ //', line) and + ((commentpos >= 1 and + line[commentpos-1] not in string.whitespace) or + (commentpos >= 2 and + line[commentpos-2] not in string.whitespace))): + error(filename, linenum, 'whitespace/comments', 2, + 'At least two spaces is best between code and comments') + # There should always be a space between the // and the comment + commentend = commentpos + 2 + if commentend < len(line) and not line[commentend] == ' ': + # but some lines are exceptions -- e.g. if they're big + # comment delimiters like: + # //---------------------------------------------------------- + # or are an empty C++ style Doxygen comment, like: + # /// + # or C++ style Doxygen comments placed after the variable: + # ///< Header comment + # //!< Header comment + # or they begin with multiple slashes followed by a space: + # //////// Header comment + match = (Search(r'[=/-]{4,}\s*$', line[commentend:]) or + Search(r'^/$', line[commentend:]) or + Search(r'^!< ', line[commentend:]) or + Search(r'^/< ', line[commentend:]) or + Search(r'^/+ ', line[commentend:])) + if not match: + error(filename, linenum, 'whitespace/comments', 4, + 'Should have a space between // and comment') + CheckComment(line[commentpos:], filename, linenum, error) + + line = clean_lines.elided[linenum] # get rid of comments and strings + + # Don't try to do spacing checks for operator methods + line = re.sub(r'operator(==|!=|<|<<|<=|>=|>>|>)\(', 'operator\(', line) + + # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". + # Otherwise not. Note we only check for non-spaces on *both* sides; + # sometimes people put non-spaces on one side when aligning ='s among + # many lines (not that this is behavior that I approve of...) + if Search(r'[\w.]=[\w.]', line) and not Search(r'\b(if|while) ', line): + error(filename, linenum, 'whitespace/operators', 4, + 'Missing spaces around =') + + # It's ok not to have spaces around binary operators like + - * /, but if + # there's too little whitespace, we get concerned. It's hard to tell, + # though, so we punt on this one for now. TODO. + + # You should always have whitespace around binary operators. + # + # Check <= and >= first to avoid false positives with < and >, then + # check non-include lines for spacing around < and >. + match = Search(r'[^<>=!\s](==|!=|<=|>=)[^<>=!\s]', line) + if match: + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around %s' % match.group(1)) + # We allow no-spaces around << when used like this: 10<<20, but + # not otherwise (particularly, not when used as streams) + # Also ignore using ns::operator<<; + match = Search(r'(operator|\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line) + if (match and + not (match.group(1).isdigit() and match.group(2).isdigit()) and + not (match.group(1) == 'operator' and match.group(2) == ';')): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around <<') + elif not Match(r'#.*include', line): + # Avoid false positives on -> + reduced_line = line.replace('->', '') + + # Look for < that is not surrounded by spaces. This is only + # triggered if both sides are missing spaces, even though + # technically should should flag if at least one side is missing a + # space. This is done to avoid some false positives with shifts. + match = Search(r'[^\s<]<([^\s=<].*)', reduced_line) + if (match and + not FindNextMatchingAngleBracket(clean_lines, linenum, match.group(1))): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around <') + + # Look for > that is not surrounded by spaces. Similar to the + # above, we only trigger if both sides are missing spaces to avoid + # false positives with shifts. + match = Search(r'^(.*[^\s>])>[^\s=>]', reduced_line) + if (match and + not FindPreviousMatchingAngleBracket(clean_lines, linenum, + match.group(1))): + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around >') + + # We allow no-spaces around >> for almost anything. This is because + # C++11 allows ">>" to close nested templates, which accounts for + # most cases when ">>" is not followed by a space. + # + # We still warn on ">>" followed by alpha character, because that is + # likely due to ">>" being used for right shifts, e.g.: + # value >> alpha + # + # When ">>" is used to close templates, the alphanumeric letter that + # follows would be part of an identifier, and there should still be + # a space separating the template type and the identifier. + # type> alpha + match = Search(r'>>[a-zA-Z_]', line) + if match: + error(filename, linenum, 'whitespace/operators', 3, + 'Missing spaces around >>') + + # There shouldn't be space around unary operators + match = Search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line) + if match: + error(filename, linenum, 'whitespace/operators', 4, + 'Extra space for operator %s' % match.group(1)) + + # A pet peeve of mine: no spaces after an if, while, switch, or for + match = Search(r' (if\(|for\(|while\(|switch\()', line) + if match: + error(filename, linenum, 'whitespace/parens', 5, + 'Missing space before ( in %s' % match.group(1)) + + # For if/for/while/switch, the left and right parens should be + # consistent about how many spaces are inside the parens, and + # there should either be zero or one spaces inside the parens. + # We don't want: "if ( foo)" or "if ( foo )". + # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. + match = Search(r'\b(if|for|while|switch)\s*' + r'\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', + line) + if match: + if len(match.group(2)) != len(match.group(4)): + if not (match.group(3) == ';' and + len(match.group(2)) == 1 + len(match.group(4)) or + not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): + error(filename, linenum, 'whitespace/parens', 5, + 'Mismatching spaces inside () in %s' % match.group(1)) + if len(match.group(2)) not in [0, 1]: + error(filename, linenum, 'whitespace/parens', 5, + 'Should have zero or one spaces inside ( and ) in %s' % + match.group(1)) + + # You should always have a space after a comma (either as fn arg or operator) + # + # This does not apply when the non-space character following the + # comma is another comma, since the only time when that happens is + # for empty macro arguments. + # + # We run this check in two passes: first pass on elided lines to + # verify that lines contain missing whitespaces, second pass on raw + # lines to confirm that those missing whitespaces are not due to + # elided comments. + if Search(r',[^,\s]', line) and Search(r',[^,\s]', raw[linenum]): + error(filename, linenum, 'whitespace/comma', 3, + 'Missing space after ,') + + # You should always have a space after a semicolon + # except for few corner cases + # TODO(unknown): clarify if 'if (1) { return 1;}' is requires one more + # space after ; + if Search(r';[^\s};\\)/]', line): + error(filename, linenum, 'whitespace/semicolon', 3, + 'Missing space after ;') + + # Next we will look for issues with function calls. + CheckSpacingForFunctionCall(filename, line, linenum, error) + + # Except after an opening paren, or after another opening brace (in case of + # an initializer list, for instance), you should have spaces before your + # braces. And since you should never have braces at the beginning of a line, + # this is an easy test. + match = Match(r'^(.*[^ ({]){', line) + if match: + # Try a bit harder to check for brace initialization. This + # happens in one of the following forms: + # Constructor() : initializer_list_{} { ... } + # Constructor{}.MemberFunction() + # Type variable{}; + # FunctionCall(type{}, ...); + # LastArgument(..., type{}); + # LOG(INFO) << type{} << " ..."; + # map_of_type[{...}] = ...; + # + # We check for the character following the closing brace, and + # silence the warning if it's one of those listed above, i.e. + # "{.;,)<]". + # + # To account for nested initializer list, we allow any number of + # closing braces up to "{;,)<". We can't simply silence the + # warning on first sight of closing brace, because that would + # cause false negatives for things that are not initializer lists. + # Silence this: But not this: + # Outer{ if (...) { + # Inner{...} if (...){ // Missing space before { + # }; } + # + # There is a false negative with this approach if people inserted + # spurious semicolons, e.g. "if (cond){};", but we will catch the + # spurious semicolon with a separate check. + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + trailing_text = '' + if endpos > -1: + trailing_text = endline[endpos:] + for offset in xrange(endlinenum + 1, + min(endlinenum + 3, clean_lines.NumLines() - 1)): + trailing_text += clean_lines.elided[offset] + if not Match(r'^[\s}]*[{.;,)<\]]', trailing_text): + error(filename, linenum, 'whitespace/braces', 5, + 'Missing space before {') + + # Make sure '} else {' has spaces. + if Search(r'}else', line): + error(filename, linenum, 'whitespace/braces', 5, + 'Missing space before else') + + # You shouldn't have spaces before your brackets, except maybe after + # 'delete []' or 'new char * []'. + if Search(r'\w\s+\[', line) and not Search(r'delete\s+\[', line): + error(filename, linenum, 'whitespace/braces', 5, + 'Extra space before [') + + # You shouldn't have a space before a semicolon at the end of the line. + # There's a special case for "for" since the style guide allows space before + # the semicolon there. + if Search(r':\s*;\s*$', line): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Semicolon defining empty statement. Use {} instead.') + elif Search(r'^\s*;\s*$', line): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Line contains only semicolon. If this should be an empty statement, ' + 'use {} instead.') + elif (Search(r'\s+;\s*$', line) and + not Search(r'\bfor\b', line)): + error(filename, linenum, 'whitespace/semicolon', 5, + 'Extra space before last semicolon. If this should be an empty ' + 'statement, use {} instead.') + + # In range-based for, we wanted spaces before and after the colon, but + # not around "::" tokens that might appear. + if (Search('for *\(.*[^:]:[^: ]', line) or + Search('for *\(.*[^: ]:[^:]', line)): + error(filename, linenum, 'whitespace/forcolon', 2, + 'Missing space around colon in range-based for loop') + + +def CheckSectionSpacing(filename, clean_lines, class_info, linenum, error): + """Checks for additional blank line issues related to sections. + + Currently the only thing checked here is blank line before protected/private. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + class_info: A _ClassInfo objects. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + # Skip checks if the class is small, where small means 25 lines or less. + # 25 lines seems like a good cutoff since that's the usual height of + # terminals, and any class that can't fit in one screen can't really + # be considered "small". + # + # Also skip checks if we are on the first line. This accounts for + # classes that look like + # class Foo { public: ... }; + # + # If we didn't find the end of the class, last_line would be zero, + # and the check will be skipped by the first condition. + if (class_info.last_line - class_info.starting_linenum <= 24 or + linenum <= class_info.starting_linenum): + return + + matched = Match(r'\s*(public|protected|private):', clean_lines.lines[linenum]) + if matched: + # Issue warning if the line before public/protected/private was + # not a blank line, but don't do this if the previous line contains + # "class" or "struct". This can happen two ways: + # - We are at the beginning of the class. + # - We are forward-declaring an inner class that is semantically + # private, but needed to be public for implementation reasons. + # Also ignores cases where the previous line ends with a backslash as can be + # common when defining classes in C macros. + prev_line = clean_lines.lines[linenum - 1] + if (not IsBlankLine(prev_line) and + not Search(r'\b(class|struct)\b', prev_line) and + not Search(r'\\$', prev_line)): + # Try a bit harder to find the beginning of the class. This is to + # account for multi-line base-specifier lists, e.g.: + # class Derived + # : public Base { + end_class_head = class_info.starting_linenum + for i in range(class_info.starting_linenum, linenum): + if Search(r'\{\s*$', clean_lines.lines[i]): + end_class_head = i + break + if end_class_head < linenum - 1: + error(filename, linenum, 'whitespace/blank_line', 3, + '"%s:" should be preceded by a blank line' % matched.group(1)) + + +def GetPreviousNonBlankLine(clean_lines, linenum): + """Return the most recent non-blank line and its line number. + + Args: + clean_lines: A CleansedLines instance containing the file contents. + linenum: The number of the line to check. + + Returns: + A tuple with two elements. The first element is the contents of the last + non-blank line before the current line, or the empty string if this is the + first non-blank line. The second is the line number of that line, or -1 + if this is the first non-blank line. + """ + + prevlinenum = linenum - 1 + while prevlinenum >= 0: + prevline = clean_lines.elided[prevlinenum] + if not IsBlankLine(prevline): # if not a blank line... + return (prevline, prevlinenum) + prevlinenum -= 1 + return ('', -1) + + +def CheckBraces(filename, clean_lines, linenum, error): + """Looks for misplaced braces (e.g. at the end of line). + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + line = clean_lines.elided[linenum] # get rid of comments and strings + + if Match(r'\s*{\s*$', line): + # We allow an open brace to start a line in the case where someone is using + # braces in a block to explicitly create a new scope, which is commonly used + # to control the lifetime of stack-allocated variables. Braces are also + # used for brace initializers inside function calls. We don't detect this + # perfectly: we just don't complain if the last non-whitespace character on + # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the + # previous line starts a preprocessor block. + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if (not Search(r'[,;:}{(]\s*$', prevline) and + not Match(r'\s*#', prevline)): + error(filename, linenum, 'whitespace/braces', 4, + '{ should almost always be at the end of the previous line') + + # An else clause should be on the same line as the preceding closing brace. + if Match(r'\s*else\s*', line): + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if Match(r'\s*}\s*$', prevline): + error(filename, linenum, 'whitespace/newline', 4, + 'An else should appear on the same line as the preceding }') + + # If braces come on one side of an else, they should be on both. + # However, we have to worry about "else if" that spans multiple lines! + if Search(r'}\s*else[^{]*$', line) or Match(r'[^}]*else\s*{', line): + if Search(r'}\s*else if([^{]*)$', line): # could be multi-line if + # find the ( after the if + pos = line.find('else if') + pos = line.find('(', pos) + if pos > 0: + (endline, _, endpos) = CloseExpression(clean_lines, linenum, pos) + if endline[endpos:].find('{') == -1: # must be brace after if + error(filename, linenum, 'readability/braces', 5, + 'If an else has a brace on one side, it should have it on both') + else: # common case: else not followed by a multi-line if + error(filename, linenum, 'readability/braces', 5, + 'If an else has a brace on one side, it should have it on both') + + # Likewise, an else should never have the else clause on the same line + if Search(r'\belse [^\s{]', line) and not Search(r'\belse if\b', line): + error(filename, linenum, 'whitespace/newline', 4, + 'Else clause should never be on same line as else (use 2 lines)') + + # In the same way, a do/while should never be on one line + if Match(r'\s*do [^\s{]', line): + error(filename, linenum, 'whitespace/newline', 4, + 'do/while clauses should not be on a single line') + + # Block bodies should not be followed by a semicolon. Due to C++11 + # brace initialization, there are more places where semicolons are + # required than not, so we use a whitelist approach to check these + # rather than a blacklist. These are the places where "};" should + # be replaced by just "}": + # 1. Some flavor of block following closing parenthesis: + # for (;;) {}; + # while (...) {}; + # switch (...) {}; + # Function(...) {}; + # if (...) {}; + # if (...) else if (...) {}; + # + # 2. else block: + # if (...) else {}; + # + # 3. const member function: + # Function(...) const {}; + # + # 4. Block following some statement: + # x = 42; + # {}; + # + # 5. Block at the beginning of a function: + # Function(...) { + # {}; + # } + # + # Note that naively checking for the preceding "{" will also match + # braces inside multi-dimensional arrays, but this is fine since + # that expression will not contain semicolons. + # + # 6. Block following another block: + # while (true) {} + # {}; + # + # 7. End of namespaces: + # namespace {}; + # + # These semicolons seems far more common than other kinds of + # redundant semicolons, possibly due to people converting classes + # to namespaces. For now we do not warn for this case. + # + # Try matching case 1 first. + match = Match(r'^(.*\)\s*)\{', line) + if match: + # Matched closing parenthesis (case 1). Check the token before the + # matching opening parenthesis, and don't warn if it looks like a + # macro. This avoids these false positives: + # - macro that defines a base class + # - multi-line macro that defines a base class + # - macro that defines the whole class-head + # + # But we still issue warnings for macros that we know are safe to + # warn, specifically: + # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P + # - TYPED_TEST + # - INTERFACE_DEF + # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: + # + # We implement a whitelist of safe macros instead of a blacklist of + # unsafe macros, even though the latter appears less frequently in + # google code and would have been easier to implement. This is because + # the downside for getting the whitelist wrong means some extra + # semicolons, while the downside for getting the blacklist wrong + # would result in compile errors. + # + # In addition to macros, we also don't want to warn on compound + # literals. + closing_brace_pos = match.group(1).rfind(')') + opening_parenthesis = ReverseCloseExpression( + clean_lines, linenum, closing_brace_pos) + if opening_parenthesis[2] > -1: + line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] + macro = Search(r'\b([A-Z_]+)\s*$', line_prefix) + if ((macro and + macro.group(1) not in ( + 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', + 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', + 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or + Search(r'\s+=\s*$', line_prefix)): + match = None + + else: + # Try matching cases 2-3. + match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) + if not match: + # Try matching cases 4-6. These are always matched on separate lines. + # + # Note that we can't simply concatenate the previous line to the + # current line and do a single match, otherwise we may output + # duplicate warnings for the blank line case: + # if (cond) { + # // blank line + # } + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if prevline and Search(r'[;{}]\s*$', prevline): + match = Match(r'^(\s*)\{', line) + + # Check matching closing brace + if match: + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + if endpos > -1 and Match(r'^\s*;', endline[endpos:]): + # Current {} pair is eligible for semicolon check, and we have found + # the redundant semicolon, output warning here. + # + # Note: because we are scanning forward for opening braces, and + # outputting warnings for the matching closing brace, if there are + # nested blocks with trailing semicolons, we will get the error + # messages in reversed order. + error(filename, endlinenum, 'readability/braces', 4, + "You don't need a ; after a }") + + +def CheckEmptyBlockBody(filename, clean_lines, linenum, error): + """Look for empty loop/conditional body with only a single semicolon. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Search for loop keywords at the beginning of the line. Because only + # whitespaces are allowed before the keywords, this will also ignore most + # do-while-loops, since those lines should start with closing brace. + # + # We also check "if" blocks here, since an empty conditional block + # is likely an error. + line = clean_lines.elided[linenum] + matched = Match(r'\s*(for|while|if)\s*\(', line) + if matched: + # Find the end of the conditional expression + (end_line, end_linenum, end_pos) = CloseExpression( + clean_lines, linenum, line.find('(')) + + # Output warning if what follows the condition expression is a semicolon. + # No warning for all other cases, including whitespace or newline, since we + # have a separate check for semicolons preceded by whitespace. + if end_pos >= 0 and Match(r';', end_line[end_pos:]): + if matched.group(1) == 'if': + error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, + 'Empty conditional bodies should use {}') + else: + error(filename, end_linenum, 'whitespace/empty_loop_body', 5, + 'Empty loop bodies should use {} or continue') + + +def CheckCheck(filename, clean_lines, linenum, error): + """Checks the use of CHECK and EXPECT macros. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + + # Decide the set of replacement macros that should be suggested + lines = clean_lines.elided + check_macro = None + start_pos = -1 + for macro in _CHECK_MACROS: + i = lines[linenum].find(macro) + if i >= 0: + check_macro = macro + + # Find opening parenthesis. Do a regular expression match here + # to make sure that we are matching the expected CHECK macro, as + # opposed to some other macro that happens to contain the CHECK + # substring. + matched = Match(r'^(.*\b' + check_macro + r'\s*)\(', lines[linenum]) + if not matched: + continue + start_pos = len(matched.group(1)) + break + if not check_macro or start_pos < 0: + # Don't waste time here if line doesn't contain 'CHECK' or 'EXPECT' + return + + # Find end of the boolean expression by matching parentheses + (last_line, end_line, end_pos) = CloseExpression( + clean_lines, linenum, start_pos) + if end_pos < 0: + return + if linenum == end_line: + expression = lines[linenum][start_pos + 1:end_pos - 1] + else: + expression = lines[linenum][start_pos + 1:] + for i in xrange(linenum + 1, end_line): + expression += lines[i] + expression += last_line[0:end_pos - 1] + + # Parse expression so that we can take parentheses into account. + # This avoids false positives for inputs like "CHECK((a < 4) == b)", + # which is not replaceable by CHECK_LE. + lhs = '' + rhs = '' + operator = None + while expression: + matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' + r'==|!=|>=|>|<=|<|\()(.*)$', expression) + if matched: + token = matched.group(1) + if token == '(': + # Parenthesized operand + expression = matched.group(2) + (end, _) = FindEndOfExpressionInLine(expression, 0, 1, '(', ')') + if end < 0: + return # Unmatched parenthesis + lhs += '(' + expression[0:end] + expression = expression[end:] + elif token in ('&&', '||'): + # Logical and/or operators. This means the expression + # contains more than one term, for example: + # CHECK(42 < a && a < b); + # + # These are not replaceable with CHECK_LE, so bail out early. + return + elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): + # Non-relational operator + lhs += token + expression = matched.group(2) + else: + # Relational operator + operator = token + rhs = matched.group(2) + break + else: + # Unparenthesized operand. Instead of appending to lhs one character + # at a time, we do another regular expression match to consume several + # characters at once if possible. Trivial benchmark shows that this + # is more efficient when the operands are longer than a single + # character, which is generally the case. + matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) + if not matched: + matched = Match(r'^(\s*\S)(.*)$', expression) + if not matched: + break + lhs += matched.group(1) + expression = matched.group(2) + + # Only apply checks if we got all parts of the boolean expression + if not (lhs and operator and rhs): + return + + # Check that rhs do not contain logical operators. We already know + # that lhs is fine since the loop above parses out && and ||. + if rhs.find('&&') > -1 or rhs.find('||') > -1: + return + + # At least one of the operands must be a constant literal. This is + # to avoid suggesting replacements for unprintable things like + # CHECK(variable != iterator) + # + # The following pattern matches decimal, hex integers, strings, and + # characters (in that order). + lhs = lhs.strip() + rhs = rhs.strip() + match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' + if Match(match_constant, lhs) or Match(match_constant, rhs): + # Note: since we know both lhs and rhs, we can provide a more + # descriptive error message like: + # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) + # Instead of: + # Consider using CHECK_EQ instead of CHECK(a == b) + # + # We are still keeping the less descriptive message because if lhs + # or rhs gets long, the error message might become unreadable. + error(filename, linenum, 'readability/check', 2, + 'Consider using %s instead of %s(a %s b)' % ( + _CHECK_REPLACEMENT[check_macro][operator], + check_macro, operator)) + + +def CheckAltTokens(filename, clean_lines, linenum, error): + """Check alternative keywords being used in boolean expressions. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if Match(r'^\s*#', line): + return + + # Last ditch effort to avoid multi-line comments. This will not help + # if the comment started before the current line or ended after the + # current line, but it catches most of the false positives. At least, + # it provides a way to workaround this warning for people who use + # multi-line comments in preprocessor macros. + # + # TODO(unknown): remove this once cpplint has better support for + # multi-line comments. + if line.find('/*') >= 0 or line.find('*/') >= 0: + return + + for match in _ALT_TOKEN_REPLACEMENT_PATTERN.finditer(line): + error(filename, linenum, 'readability/alt_tokens', 2, + 'Use operator %s instead of %s' % ( + _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) + + +def GetLineWidth(line): + """Determines the width of the line in column positions. + + Args: + line: A string, which may be a Unicode string. + + Returns: + The width of the line in column positions, accounting for Unicode + combining characters and wide characters. + """ + if isinstance(line, unicode): + width = 0 + for uc in unicodedata.normalize('NFC', line): + if unicodedata.east_asian_width(uc) in ('W', 'F'): + width += 2 + elif not unicodedata.combining(uc): + width += 1 + return width + else: + return len(line) + + +def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, + error): + """Checks rules from the 'C++ style rules' section of cppguide.html. + + Most of these rules are hard to test (naming, comment style), but we + do what we can. In particular we check for 2-space indents, line lengths, + tab usage, spaces inside code, etc. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw_lines = clean_lines.lines_without_raw_strings + line = raw_lines[linenum] + + if line.find('\t') != -1: + error(filename, linenum, 'whitespace/tab', 1, + 'Tab found; better to use spaces') + + # One or three blank spaces at the beginning of the line is weird; it's + # hard to reconcile that with 2-space indents. + # NOTE: here are the conditions rob pike used for his tests. Mine aren't + # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces + # if(RLENGTH > 20) complain = 0; + # if(match($0, " +(error|private|public|protected):")) complain = 0; + # if(match(prev, "&& *$")) complain = 0; + # if(match(prev, "\\|\\| *$")) complain = 0; + # if(match(prev, "[\",=><] *$")) complain = 0; + # if(match($0, " <<")) complain = 0; + # if(match(prev, " +for \\(")) complain = 0; + # if(prevodd && match(prevprev, " +for \\(")) complain = 0; + initial_spaces = 0 + cleansed_line = clean_lines.elided[linenum] + while initial_spaces < len(line) and line[initial_spaces] == ' ': + initial_spaces += 1 + if line and line[-1].isspace(): + error(filename, linenum, 'whitespace/end_of_line', 4, + 'Line ends in whitespace. Consider deleting these extra spaces.') + # There are certain situations we allow one space, notably for section labels + elif ((initial_spaces == 1 or initial_spaces == 3) and + not Match(r'\s*\w+\s*:\s*$', cleansed_line)): + error(filename, linenum, 'whitespace/indent', 3, + 'Weird number of spaces at line-start. ' + 'Are you using a 2-space indent?') + + # Check if the line is a header guard. + is_header_guard = False + if file_extension == 'h': + cppvar = GetHeaderGuardCPPVariable(filename) + if (line.startswith('#ifndef %s' % cppvar) or + line.startswith('#define %s' % cppvar) or + line.startswith('#endif // %s' % cppvar)): + is_header_guard = True + # #include lines and header guards can be long, since there's no clean way to + # split them. + # + # URLs can be long too. It's possible to split these, but it makes them + # harder to cut&paste. + # + # The "$Id:...$" comment may also get very long without it being the + # developers fault. + if (not line.startswith('#include') and not is_header_guard and + not Match(r'^\s*//.*http(s?)://\S*$', line) and + not Match(r'^// \$Id:.*#[0-9]+ \$$', line)): + line_width = GetLineWidth(line) + extended_length = int((_line_length * 1.25)) + if line_width > extended_length: + error(filename, linenum, 'whitespace/line_length', 4, + 'Lines should very rarely be longer than %i characters' % + extended_length) + elif line_width > _line_length: + error(filename, linenum, 'whitespace/line_length', 2, + 'Lines should be <= %i characters long' % _line_length) + + if (cleansed_line.count(';') > 1 and + # for loops are allowed two ;'s (and may run over two lines). + cleansed_line.find('for') == -1 and + (GetPreviousNonBlankLine(clean_lines, linenum)[0].find('for') == -1 or + GetPreviousNonBlankLine(clean_lines, linenum)[0].find(';') != -1) and + # It's ok to have many commands in a switch case that fits in 1 line + not ((cleansed_line.find('case ') != -1 or + cleansed_line.find('default:') != -1) and + cleansed_line.find('break;') != -1)): + error(filename, linenum, 'whitespace/newline', 0, + 'More than one command on the same line') + + # Some more style checks + CheckBraces(filename, clean_lines, linenum, error) + CheckEmptyBlockBody(filename, clean_lines, linenum, error) + CheckAccess(filename, clean_lines, linenum, nesting_state, error) + CheckSpacing(filename, clean_lines, linenum, nesting_state, error) + CheckCheck(filename, clean_lines, linenum, error) + CheckAltTokens(filename, clean_lines, linenum, error) + classinfo = nesting_state.InnermostClass() + if classinfo: + CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) + + +_RE_PATTERN_INCLUDE_NEW_STYLE = re.compile(r'#include +"[^/]+\.h"') +_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$') +# Matches the first component of a filename delimited by -s and _s. That is: +# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo-bar_baz.cc').group(0) == 'foo' +# _RE_FIRST_COMPONENT.match('foo_bar-baz.cc').group(0) == 'foo' +_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+') + + +def _DropCommonSuffixes(filename): + """Drops common suffixes like _test.cc or -inl.h from filename. + + For example: + >>> _DropCommonSuffixes('foo/foo-inl.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/bar/foo.cc') + 'foo/bar/foo' + >>> _DropCommonSuffixes('foo/foo_internal.h') + 'foo/foo' + >>> _DropCommonSuffixes('foo/foo_unusualinternal.h') + 'foo/foo_unusualinternal' + + Args: + filename: The input filename. + + Returns: + The filename with the common suffix removed. + """ + for suffix in ('test.cc', 'regtest.cc', 'unittest.cc', + 'inl.h', 'impl.h', 'internal.h'): + if (filename.endswith(suffix) and len(filename) > len(suffix) and + filename[-len(suffix) - 1] in ('-', '_')): + return filename[:-len(suffix) - 1] + return os.path.splitext(filename)[0] + + +def _IsTestFilename(filename): + """Determines if the given filename has a suffix that identifies it as a test. + + Args: + filename: The input filename. + + Returns: + True if 'filename' looks like a test, False otherwise. + """ + if (filename.endswith('_test.cc') or + filename.endswith('_unittest.cc') or + filename.endswith('_regtest.cc')): + return True + else: + return False + + +def _ClassifyInclude(fileinfo, include, is_system): + """Figures out what kind of header 'include' is. + + Args: + fileinfo: The current file cpplint is running over. A FileInfo instance. + include: The path to a #included file. + is_system: True if the #include used <> rather than "". + + Returns: + One of the _XXX_HEADER constants. + + For example: + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'stdio.h', True) + _C_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'string', True) + _CPP_SYS_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/foo.h', False) + _LIKELY_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo_unknown_extension.cc'), + ... 'bar/foo_other_ext.h', False) + _POSSIBLE_MY_HEADER + >>> _ClassifyInclude(FileInfo('foo/foo.cc'), 'foo/bar.h', False) + _OTHER_HEADER + """ + # This is a list of all standard c++ header files, except + # those already checked for above. + is_cpp_h = include in _CPP_HEADERS + + if is_system: + if is_cpp_h: + return _CPP_SYS_HEADER + else: + return _C_SYS_HEADER + + # If the target file and the include we're checking share a + # basename when we drop common extensions, and the include + # lives in . , then it's likely to be owned by the target file. + target_dir, target_base = ( + os.path.split(_DropCommonSuffixes(fileinfo.RepositoryName()))) + include_dir, include_base = os.path.split(_DropCommonSuffixes(include)) + if target_base == include_base and ( + include_dir == target_dir or + include_dir == os.path.normpath(target_dir + '/../public')): + return _LIKELY_MY_HEADER + + # If the target and include share some initial basename + # component, it's possible the target is implementing the + # include, so it's allowed to be first, but we'll never + # complain if it's not there. + target_first_component = _RE_FIRST_COMPONENT.match(target_base) + include_first_component = _RE_FIRST_COMPONENT.match(include_base) + if (target_first_component and include_first_component and + target_first_component.group(0) == + include_first_component.group(0)): + return _POSSIBLE_MY_HEADER + + return _OTHER_HEADER + + + +def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): + """Check rules that are applicable to #include lines. + + Strings on #include lines are NOT removed from elided line, to make + certain tasks easier. However, to prevent false positives, checks + applicable to #include lines in CheckLanguage must be put here. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + include_state: An _IncludeState instance in which the headers are inserted. + error: The function to call with any errors found. + """ + fileinfo = FileInfo(filename) + + line = clean_lines.lines[linenum] + + # "include" should use the new style "foo/bar.h" instead of just "bar.h" + if _RE_PATTERN_INCLUDE_NEW_STYLE.search(line): + error(filename, linenum, 'build/include', 4, + 'Include the directory when naming .h files') + + # we shouldn't include a file more than once. actually, there are a + # handful of instances where doing so is okay, but in general it's + # not. + match = _RE_PATTERN_INCLUDE.search(line) + if match: + include = match.group(2) + is_system = (match.group(1) == '<') + if include in include_state: + error(filename, linenum, 'build/include', 4, + '"%s" already included at %s:%s' % + (include, filename, include_state[include])) + else: + include_state[include] = linenum + + # We want to ensure that headers appear in the right order: + # 1) for foo.cc, foo.h (preferred location) + # 2) c system files + # 3) cpp system files + # 4) for foo.cc, foo.h (deprecated location) + # 5) other google headers + # + # We classify each include statement as one of those 5 types + # using a number of techniques. The include_state object keeps + # track of the highest type seen, and complains if we see a + # lower type after that. + error_message = include_state.CheckNextIncludeOrder( + _ClassifyInclude(fileinfo, include, is_system)) + if error_message: + error(filename, linenum, 'build/include_order', 4, + '%s. Should be: %s.h, c system, c++ system, other.' % + (error_message, fileinfo.BaseName())) + canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) + if not include_state.IsInAlphabeticalOrder( + clean_lines, linenum, canonical_include): + error(filename, linenum, 'build/include_alpha', 4, + 'Include "%s" not in alphabetical order' % include) + include_state.SetLastHeader(canonical_include) + + # Look for any of the stream classes that are part of standard C++. + match = _RE_PATTERN_INCLUDE.match(line) + if match: + include = match.group(2) + if Match(r'(f|ind|io|i|o|parse|pf|stdio|str|)?stream$', include): + # Many unit tests use cout, so we exempt them. + if not _IsTestFilename(filename): + error(filename, linenum, 'readability/streams', 3, + 'Streams are highly discouraged.') + + +def _GetTextInside(text, start_pattern): + r"""Retrieves all the text between matching open and close parentheses. + + Given a string of lines and a regular expression string, retrieve all the text + following the expression and between opening punctuation symbols like + (, [, or {, and the matching close-punctuation symbol. This properly nested + occurrences of the punctuations, so for the text like + printf(a(), b(c())); + a call to _GetTextInside(text, r'printf\(') will return 'a(), b(c())'. + start_pattern must match string having an open punctuation symbol at the end. + + Args: + text: The lines to extract text. Its comments and strings must be elided. + It can be single line and can span multiple lines. + start_pattern: The regexp string indicating where to start extracting + the text. + Returns: + The extracted text. + None if either the opening string or ending punctuation could not be found. + """ + # TODO(sugawarayu): Audit cpplint.py to see what places could be profitably + # rewritten to use _GetTextInside (and use inferior regexp matching today). + + # Give opening punctuations to get the matching close-punctuations. + matching_punctuation = {'(': ')', '{': '}', '[': ']'} + closing_punctuation = set(matching_punctuation.itervalues()) + + # Find the position to start extracting text. + match = re.search(start_pattern, text, re.M) + if not match: # start_pattern not found in text. + return None + start_position = match.end(0) + + assert start_position > 0, ( + 'start_pattern must ends with an opening punctuation.') + assert text[start_position - 1] in matching_punctuation, ( + 'start_pattern must ends with an opening punctuation.') + # Stack of closing punctuations we expect to have in text after position. + punctuation_stack = [matching_punctuation[text[start_position - 1]]] + position = start_position + while punctuation_stack and position < len(text): + if text[position] == punctuation_stack[-1]: + punctuation_stack.pop() + elif text[position] in closing_punctuation: + # A closing punctuation without matching opening punctuations. + return None + elif text[position] in matching_punctuation: + punctuation_stack.append(matching_punctuation[text[position]]) + position += 1 + if punctuation_stack: + # Opening punctuations left without matching close-punctuations. + return None + # punctuations match. + return text[start_position:position - 1] + + +# Patterns for matching call-by-reference parameters. +# +# Supports nested templates up to 2 levels deep using this messy pattern: +# < (?: < (?: < [^<>]* +# > +# | [^<>] )* +# > +# | [^<>] )* +# > +_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* +_RE_PATTERN_TYPE = ( + r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' + r'(?:\w|' + r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' + r'::)+') +# A call-by-reference parameter ends with '& identifier'. +_RE_PATTERN_REF_PARAM = re.compile( + r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' + r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') +# A call-by-const-reference parameter either ends with 'const& identifier' +# or looks like 'const type& identifier' when 'type' is atomic. +_RE_PATTERN_CONST_REF_PARAM = ( + r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + + r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') + + +def CheckLanguage(filename, clean_lines, linenum, file_extension, + include_state, nesting_state, error): + """Checks rules from the 'C++ language rules' section of cppguide.html. + + Some of these rules are hard to test (function overloading, using + uint32 inappropriately), but we do the best we can. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + file_extension: The extension (without the dot) of the filename. + include_state: An _IncludeState instance in which the headers are inserted. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # If the line is empty or consists of entirely a comment, no need to + # check it. + line = clean_lines.elided[linenum] + if not line: + return + + match = _RE_PATTERN_INCLUDE.search(line) + if match: + CheckIncludeLine(filename, clean_lines, linenum, include_state, error) + return + + # Reset include state across preprocessor directives. This is meant + # to silence warnings for conditional includes. + if Match(r'^\s*#\s*(?:ifdef|elif|else|endif)\b', line): + include_state.ResetSection() + + # Make Windows paths like Unix. + fullname = os.path.abspath(filename).replace('\\', '/') + + # TODO(unknown): figure out if they're using default arguments in fn proto. + + # Check to see if they're using an conversion function cast. + # I just try to capture the most common basic types, though there are more. + # Parameterless conversion functions, such as bool(), are allowed as they are + # probably a member operator declaration or default constructor. + match = Search( + r'(\bnew\s+)?\b' # Grab 'new' operator, if it's there + r'(int|float|double|bool|char|int32|uint32|int64|uint64)' + r'(\([^)].*)', line) + if match: + matched_new = match.group(1) + matched_type = match.group(2) + matched_funcptr = match.group(3) + + # gMock methods are defined using some variant of MOCK_METHODx(name, type) + # where type may be float(), int(string), etc. Without context they are + # virtually indistinguishable from int(x) casts. Likewise, gMock's + # MockCallback takes a template parameter of the form return_type(arg_type), + # which looks much like the cast we're trying to detect. + # + # std::function<> wrapper has a similar problem. + # + # Return types for function pointers also look like casts if they + # don't have an extra space. + if (matched_new is None and # If new operator, then this isn't a cast + not (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or + Search(r'\bMockCallback<.*>', line) or + Search(r'\bstd::function<.*>', line)) and + not (matched_funcptr and + Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', + matched_funcptr))): + # Try a bit harder to catch gmock lines: the only place where + # something looks like an old-style cast is where we declare the + # return type of the mocked method, and the only time when we + # are missing context is if MOCK_METHOD was split across + # multiple lines. The missing MOCK_METHOD is usually one or two + # lines back, so scan back one or two lines. + # + # It's not possible for gmock macros to appear in the first 2 + # lines, since the class head + section name takes up 2 lines. + if (linenum < 2 or + not (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', + clean_lines.elided[linenum - 1]) or + Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', + clean_lines.elided[linenum - 2]))): + error(filename, linenum, 'readability/casting', 4, + 'Using deprecated casting style. ' + 'Use static_cast<%s>(...) instead' % + matched_type) + + CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'static_cast', + r'\((int|float|double|bool|char|u?int(16|32|64))\)', error) + + # This doesn't catch all cases. Consider (const char * const)"hello". + # + # (char *) "foo" should always be a const_cast (reinterpret_cast won't + # compile). + if CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'const_cast', r'\((char\s?\*+\s?)\)\s*"', error): + pass + else: + # Check pointer casts for other than string constants + CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], + 'reinterpret_cast', r'\((\w+\s?\*+\s?)\)', error) + + # In addition, we look for people taking the address of a cast. This + # is dangerous -- casts can assign to temporaries, so the pointer doesn't + # point where you think. + match = Search( + r'(?:&\(([^)]+)\)[\w(])|' + r'(?:&(static|dynamic|down|reinterpret)_cast\b)', line) + if match and match.group(1) != '*': + error(filename, linenum, 'runtime/casting', 4, + ('Are you taking an address of a cast? ' + 'This is dangerous: could be a temp var. ' + 'Take the address before doing the cast, rather than after')) + + # Create an extended_line, which is the concatenation of the current and + # next lines, for more effective checking of code that may span more than one + # line. + if linenum + 1 < clean_lines.NumLines(): + extended_line = line + clean_lines.elided[linenum + 1] + else: + extended_line = line + + # Check for people declaring static/global STL strings at the top level. + # This is dangerous because the C++ language does not guarantee that + # globals with constructors are initialized before the first access. + match = Match( + r'((?:|static +)(?:|const +))string +([a-zA-Z0-9_:]+)\b(.*)', + line) + # Make sure it's not a function. + # Function template specialization looks like: "string foo(...". + # Class template definitions look like: "string Foo::Method(...". + # + # Also ignore things that look like operators. These are matched separately + # because operator names cross non-word boundaries. If we change the pattern + # above, we would decrease the accuracy of matching identifiers. + if (match and + not Search(r'\boperator\W', line) and + not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)?\s*\(([^"]|$)', match.group(3))): + error(filename, linenum, 'runtime/string', 4, + 'For a static/global string constant, use a C style string instead: ' + '"%schar %s[]".' % + (match.group(1), match.group(2))) + + if Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line): + error(filename, linenum, 'runtime/init', 4, + 'You seem to be initializing a member variable with itself.') + + if file_extension == 'h': + # TODO(unknown): check that 1-arg constructors are explicit. + # How to tell it's a constructor? + # (handled in CheckForNonStandardConstructs for now) + # TODO(unknown): check that classes have DISALLOW_EVIL_CONSTRUCTORS + # (level 1 error) + pass + + # Check if people are using the verboten C basic types. The only exception + # we regularly allow is "unsigned short port" for port. + if Search(r'\bshort port\b', line): + if not Search(r'\bunsigned short port\b', line): + error(filename, linenum, 'runtime/int', 4, + 'Use "unsigned short" for ports, not "short"') + else: + match = Search(r'\b(short|long(?! +double)|long long)\b', line) + if match: + error(filename, linenum, 'runtime/int', 4, + 'Use int16/int64/etc, rather than the C type %s' % match.group(1)) + + # When snprintf is used, the second argument shouldn't be a literal. + match = Search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line) + if match and match.group(2) != '0': + # If 2nd arg is zero, snprintf is used to calculate size. + error(filename, linenum, 'runtime/printf', 3, + 'If you can, use sizeof(%s) instead of %s as the 2nd arg ' + 'to snprintf.' % (match.group(1), match.group(2))) + + # Check if some verboten C functions are being used. + if Search(r'\bsprintf\b', line): + error(filename, linenum, 'runtime/printf', 5, + 'Never use sprintf. Use snprintf instead.') + match = Search(r'\b(strcpy|strcat)\b', line) + if match: + error(filename, linenum, 'runtime/printf', 4, + 'Almost always, snprintf is better than %s' % match.group(1)) + + # Check if some verboten operator overloading is going on + # TODO(unknown): catch out-of-line unary operator&: + # class X {}; + # int operator&(const X& x) { return 42; } // unary operator& + # The trick is it's hard to tell apart from binary operator&: + # class Y { int operator&(const Y& x) { return 23; } }; // binary operator& + if Search(r'\boperator\s*&\s*\(\s*\)', line): + error(filename, linenum, 'runtime/operator', 4, + 'Unary operator& is dangerous. Do not use it.') + + # Check for suspicious usage of "if" like + # } if (a == b) { + if Search(r'\}\s*if\s*\(', line): + error(filename, linenum, 'readability/braces', 4, + 'Did you mean "else if"? If not, start a new line for "if".') + + # Check for potential format string bugs like printf(foo). + # We constrain the pattern not to pick things like DocidForPrintf(foo). + # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str()) + # TODO(sugawarayu): Catch the following case. Need to change the calling + # convention of the whole function to process multiple line to handle it. + # printf( + # boy_this_is_a_really_long_variable_that_cannot_fit_on_the_prev_line); + printf_args = _GetTextInside(line, r'(?i)\b(string)?printf\s*\(') + if printf_args: + match = Match(r'([\w.\->()]+)$', printf_args) + if match and match.group(1) != '__VA_ARGS__': + function_name = re.search(r'\b((?:string)?printf)\s*\(', + line, re.I).group(1) + error(filename, linenum, 'runtime/printf', 4, + 'Potential format string bug. Do %s("%%s", %s) instead.' + % (function_name, match.group(1))) + + # Check for potential memset bugs like memset(buf, sizeof(buf), 0). + match = Search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line) + if match and not Match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", match.group(2)): + error(filename, linenum, 'runtime/memset', 4, + 'Did you mean "memset(%s, 0, %s)"?' + % (match.group(1), match.group(2))) + + if Search(r'\busing namespace\b', line): + error(filename, linenum, 'build/namespaces', 5, + 'Do not use namespace using-directives. ' + 'Use using-declarations instead.') + + # Detect variable-length arrays. + match = Match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line) + if (match and match.group(2) != 'return' and match.group(2) != 'delete' and + match.group(3).find(']') == -1): + # Split the size using space and arithmetic operators as delimiters. + # If any of the resulting tokens are not compile time constants then + # report the error. + tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', match.group(3)) + is_const = True + skip_next = False + for tok in tokens: + if skip_next: + skip_next = False + continue + + if Search(r'sizeof\(.+\)', tok): continue + if Search(r'arraysize\(\w+\)', tok): continue + + tok = tok.lstrip('(') + tok = tok.rstrip(')') + if not tok: continue + if Match(r'\d+', tok): continue + if Match(r'0[xX][0-9a-fA-F]+', tok): continue + if Match(r'k[A-Z0-9]\w*', tok): continue + if Match(r'(.+::)?k[A-Z0-9]\w*', tok): continue + if Match(r'(.+::)?[A-Z][A-Z0-9_]*', tok): continue + # A catch all for tricky sizeof cases, including 'sizeof expression', + # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)' + # requires skipping the next token because we split on ' ' and '*'. + if tok.startswith('sizeof'): + skip_next = True + continue + is_const = False + break + if not is_const: + error(filename, linenum, 'runtime/arrays', 1, + 'Do not use variable-length arrays. Use an appropriately named ' + "('k' followed by CamelCase) compile-time constant for the size.") + + # If DISALLOW_EVIL_CONSTRUCTORS, DISALLOW_COPY_AND_ASSIGN, or + # DISALLOW_IMPLICIT_CONSTRUCTORS is present, then it should be the last thing + # in the class declaration. + match = Match( + (r'\s*' + r'(DISALLOW_(EVIL_CONSTRUCTORS|COPY_AND_ASSIGN|IMPLICIT_CONSTRUCTORS))' + r'\(.*\);$'), + line) + if match and linenum + 1 < clean_lines.NumLines(): + next_line = clean_lines.elided[linenum + 1] + # We allow some, but not all, declarations of variables to be present + # in the statement that defines the class. The [\w\*,\s]* fragment of + # the regular expression below allows users to declare instances of + # the class or pointers to instances, but not less common types such + # as function pointers or arrays. It's a tradeoff between allowing + # reasonable code and avoiding trying to parse more C++ using regexps. + if not Search(r'^\s*}[\w\*,\s]*;', next_line): + error(filename, linenum, 'readability/constructors', 3, + match.group(1) + ' should be the last thing in the class') + + # Check for use of unnamed namespaces in header files. Registration + # macros are typically OK, so we allow use of "namespace {" on lines + # that end with backslashes. + if (file_extension == 'h' + and Search(r'\bnamespace\s*{', line) + and line[-1] != '\\'): + error(filename, linenum, 'build/namespaces', 4, + 'Do not use unnamed namespaces in header files. See ' + 'http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces' + ' for more information.') + +def CheckForNonConstReference(filename, clean_lines, linenum, + nesting_state, error): + """Check for non-const references. + + Separate from CheckLanguage since it scans backwards from current + line, instead of scanning forward. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # Do nothing if there is no '&' on current line. + line = clean_lines.elided[linenum] + if '&' not in line: + return + + # Long type names may be broken across multiple lines, usually in one + # of these forms: + # LongType + # ::LongTypeContinued &identifier + # LongType:: + # LongTypeContinued &identifier + # LongType< + # ...>::LongTypeContinued &identifier + # + # If we detected a type split across two lines, join the previous + # line to current line so that we can match const references + # accordingly. + # + # Note that this only scans back one line, since scanning back + # arbitrary number of lines would be expensive. If you have a type + # that spans more than 2 lines, please use a typedef. + if linenum > 1: + previous = None + if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): + # previous_line\n + ::current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', + clean_lines.elided[linenum - 1]) + elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): + # previous_line::\n + current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', + clean_lines.elided[linenum - 1]) + if previous: + line = previous.group(1) + line.lstrip() + else: + # Check for templated parameter that is split across multiple lines + endpos = line.rfind('>') + if endpos > -1: + (_, startline, startpos) = ReverseCloseExpression( + clean_lines, linenum, endpos) + if startpos > -1 and startline < linenum: + # Found the matching < on an earlier line, collect all + # pieces up to current line. + line = '' + for i in xrange(startline, linenum + 1): + line += clean_lines.elided[i].strip() + + # Check for non-const references in function parameters. A single '&' may + # found in the following places: + # inside expression: binary & for bitwise AND + # inside expression: unary & for taking the address of something + # inside declarators: reference parameter + # We will exclude the first two cases by checking that we are not inside a + # function body, including one that was just introduced by a trailing '{'. + # TODO(unknwon): Doesn't account for preprocessor directives. + # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. + check_params = False + if not nesting_state.stack: + check_params = True # top level + elif (isinstance(nesting_state.stack[-1], _ClassInfo) or + isinstance(nesting_state.stack[-1], _NamespaceInfo)): + check_params = True # within class or namespace + elif Match(r'.*{\s*$', line): + if (len(nesting_state.stack) == 1 or + isinstance(nesting_state.stack[-2], _ClassInfo) or + isinstance(nesting_state.stack[-2], _NamespaceInfo)): + check_params = True # just opened global/class/namespace block + # We allow non-const references in a few standard places, like functions + # called "swap()" or iostream operators like "<<" or ">>". Do not check + # those function parameters. + # + # We also accept & in static_assert, which looks like a function but + # it's actually a declaration expression. + whitelisted_functions = (r'(?:[sS]wap(?:<\w:+>)?|' + r'operator\s*[<>][<>]|' + r'static_assert|COMPILE_ASSERT' + r')\s*\(') + if Search(whitelisted_functions, line): + check_params = False + elif not Search(r'\S+\([^)]*$', line): + # Don't see a whitelisted function on this line. Actually we + # didn't see any function name on this line, so this is likely a + # multi-line parameter list. Try a bit harder to catch this case. + for i in xrange(2): + if (linenum > i and + Search(whitelisted_functions, clean_lines.elided[linenum - i - 1])): + check_params = False + break + + if check_params: + decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body + for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): + if not Match(_RE_PATTERN_CONST_REF_PARAM, parameter): + error(filename, linenum, 'runtime/references', 2, + 'Is this a non-const reference? ' + 'If so, make const or use a pointer: ' + + ReplaceAll(' *<', '<', parameter)) + + +def CheckCStyleCast(filename, linenum, line, raw_line, cast_type, pattern, + error): + """Checks for a C-style cast by looking for the pattern. + + Args: + filename: The name of the current file. + linenum: The number of the line to check. + line: The line of code to check. + raw_line: The raw line of code to check, with comments. + cast_type: The string for the C++ cast to recommend. This is either + reinterpret_cast, static_cast, or const_cast, depending. + pattern: The regular expression used to find C-style casts. + error: The function to call with any errors found. + + Returns: + True if an error was emitted. + False otherwise. + """ + match = Search(pattern, line) + if not match: + return False + + # Exclude lines with sizeof, since sizeof looks like a cast. + sizeof_match = Match(r'.*sizeof\s*$', line[0:match.start(1) - 1]) + if sizeof_match: + return False + + # operator++(int) and operator--(int) + if (line[0:match.start(1) - 1].endswith(' operator++') or + line[0:match.start(1) - 1].endswith(' operator--')): + return False + + # A single unnamed argument for a function tends to look like old + # style cast. If we see those, don't issue warnings for deprecated + # casts, instead issue warnings for unnamed arguments where + # appropriate. + # + # These are things that we want warnings for, since the style guide + # explicitly require all parameters to be named: + # Function(int); + # Function(int) { + # ConstMember(int) const; + # ConstMember(int) const { + # ExceptionMember(int) throw (...); + # ExceptionMember(int) throw (...) { + # PureVirtual(int) = 0; + # + # These are functions of some sort, where the compiler would be fine + # if they had named parameters, but people often omit those + # identifiers to reduce clutter: + # (FunctionPointer)(int); + # (FunctionPointer)(int) = value; + # Function((function_pointer_arg)(int)) + # ; + # <(FunctionPointerTemplateArgument)(int)>; + remainder = line[match.end(0):] + if Match(r'^\s*(?:;|const\b|throw\b|=|>|\{|\))', remainder): + # Looks like an unnamed parameter. + + # Don't warn on any kind of template arguments. + if Match(r'^\s*>', remainder): + return False + + # Don't warn on assignments to function pointers, but keep warnings for + # unnamed parameters to pure virtual functions. Note that this pattern + # will also pass on assignments of "0" to function pointers, but the + # preferred values for those would be "nullptr" or "NULL". + matched_zero = Match(r'^\s=\s*(\S+)\s*;', remainder) + if matched_zero and matched_zero.group(1) != '0': + return False + + # Don't warn on function pointer declarations. For this we need + # to check what came before the "(type)" string. + if Match(r'.*\)\s*$', line[0:match.start(0)]): + return False + + # Don't warn if the parameter is named with block comments, e.g.: + # Function(int /*unused_param*/); + if '/*' in raw_line: + return False + + # Passed all filters, issue warning here. + error(filename, linenum, 'readability/function', 3, + 'All parameters should be named in a function') + return True + + # At this point, all that should be left is actual casts. + error(filename, linenum, 'readability/casting', 4, + 'Using C-style cast. Use %s<%s>(...) instead' % + (cast_type, match.group(1))) + + return True + + +_HEADERS_CONTAINING_TEMPLATES = ( + ('', ('deque',)), + ('', ('unary_function', 'binary_function', + 'plus', 'minus', 'multiplies', 'divides', 'modulus', + 'negate', + 'equal_to', 'not_equal_to', 'greater', 'less', + 'greater_equal', 'less_equal', + 'logical_and', 'logical_or', 'logical_not', + 'unary_negate', 'not1', 'binary_negate', 'not2', + 'bind1st', 'bind2nd', + 'pointer_to_unary_function', + 'pointer_to_binary_function', + 'ptr_fun', + 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t', + 'mem_fun_ref_t', + 'const_mem_fun_t', 'const_mem_fun1_t', + 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t', + 'mem_fun_ref', + )), + ('', ('numeric_limits',)), + ('', ('list',)), + ('', ('map', 'multimap',)), + ('', ('allocator',)), + ('', ('queue', 'priority_queue',)), + ('', ('set', 'multiset',)), + ('', ('stack',)), + ('', ('char_traits', 'basic_string',)), + ('', ('pair',)), + ('', ('vector',)), + + # gcc extensions. + # Note: std::hash is their hash, ::hash is our hash + ('', ('hash_map', 'hash_multimap',)), + ('', ('hash_set', 'hash_multiset',)), + ('', ('slist',)), + ) + +_RE_PATTERN_STRING = re.compile(r'\bstring\b') + +_re_pattern_algorithm_header = [] +for _template in ('copy', 'max', 'min', 'min_element', 'sort', 'swap', + 'transform'): + # Match max(..., ...), max(..., ...), but not foo->max, foo.max or + # type::max(). + _re_pattern_algorithm_header.append( + (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), + _template, + '')) + +_re_pattern_templates = [] +for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: + for _template in _templates: + _re_pattern_templates.append( + (re.compile(r'(\<|\b)' + _template + r'\s*\<'), + _template + '<>', + _header)) + + +def FilesBelongToSameModule(filename_cc, filename_h): + """Check if these two filenames belong to the same module. + + The concept of a 'module' here is a as follows: + foo.h, foo-inl.h, foo.cc, foo_test.cc and foo_unittest.cc belong to the + same 'module' if they are in the same directory. + some/path/public/xyzzy and some/path/internal/xyzzy are also considered + to belong to the same module here. + + If the filename_cc contains a longer path than the filename_h, for example, + '/absolute/path/to/base/sysinfo.cc', and this file would include + 'base/sysinfo.h', this function also produces the prefix needed to open the + header. This is used by the caller of this function to more robustly open the + header file. We don't have access to the real include paths in this context, + so we need this guesswork here. + + Known bugs: tools/base/bar.cc and base/bar.h belong to the same module + according to this implementation. Because of this, this function gives + some false positives. This should be sufficiently rare in practice. + + Args: + filename_cc: is the path for the .cc file + filename_h: is the path for the header path + + Returns: + Tuple with a bool and a string: + bool: True if filename_cc and filename_h belong to the same module. + string: the additional prefix needed to open the header file. + """ + + if not filename_cc.endswith('.cc'): + return (False, '') + filename_cc = filename_cc[:-len('.cc')] + if filename_cc.endswith('_unittest'): + filename_cc = filename_cc[:-len('_unittest')] + elif filename_cc.endswith('_test'): + filename_cc = filename_cc[:-len('_test')] + filename_cc = filename_cc.replace('/public/', '/') + filename_cc = filename_cc.replace('/internal/', '/') + + if not filename_h.endswith('.h'): + return (False, '') + filename_h = filename_h[:-len('.h')] + if filename_h.endswith('-inl'): + filename_h = filename_h[:-len('-inl')] + filename_h = filename_h.replace('/public/', '/') + filename_h = filename_h.replace('/internal/', '/') + + files_belong_to_same_module = filename_cc.endswith(filename_h) + common_path = '' + if files_belong_to_same_module: + common_path = filename_cc[:-len(filename_h)] + return files_belong_to_same_module, common_path + + +def UpdateIncludeState(filename, include_state, io=codecs): + """Fill up the include_state with new includes found from the file. + + Args: + filename: the name of the header to read. + include_state: an _IncludeState instance in which the headers are inserted. + io: The io factory to use to read the file. Provided for testability. + + Returns: + True if a header was succesfully added. False otherwise. + """ + headerfile = None + try: + headerfile = io.open(filename, 'r', 'utf8', 'replace') + except IOError: + return False + linenum = 0 + for line in headerfile: + linenum += 1 + clean_line = CleanseComments(line) + match = _RE_PATTERN_INCLUDE.search(clean_line) + if match: + include = match.group(2) + # The value formatting is cute, but not really used right now. + # What matters here is that the key is in include_state. + include_state.setdefault(include, '%s:%d' % (filename, linenum)) + return True + + +def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, + io=codecs): + """Reports for missing stl includes. + + This function will output warnings to make sure you are including the headers + necessary for the stl containers and functions that you use. We only give one + reason to include a header. For example, if you use both equal_to<> and + less<> in a .h file, only one (the latter in the file) of these will be + reported as a reason to include the . + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + include_state: An _IncludeState instance. + error: The function to call with any errors found. + io: The IO factory to use to read the header file. Provided for unittest + injection. + """ + required = {} # A map of header name to linenumber and the template entity. + # Example of required: { '': (1219, 'less<>') } + + for linenum in xrange(clean_lines.NumLines()): + line = clean_lines.elided[linenum] + if not line or line[0] == '#': + continue + + # String is special -- it is a non-templatized type in STL. + matched = _RE_PATTERN_STRING.search(line) + if matched: + # Don't warn about strings in non-STL namespaces: + # (We check only the first match per line; good enough.) + prefix = line[:matched.start()] + if prefix.endswith('std::') or not prefix.endswith('::'): + required[''] = (linenum, 'string') + + for pattern, template, header in _re_pattern_algorithm_header: + if pattern.search(line): + required[header] = (linenum, template) + + # The following function is just a speed up, no semantics are changed. + if not '<' in line: # Reduces the cpu time usage by skipping lines. + continue + + for pattern, template, header in _re_pattern_templates: + if pattern.search(line): + required[header] = (linenum, template) + + # The policy is that if you #include something in foo.h you don't need to + # include it again in foo.cc. Here, we will look at possible includes. + # Let's copy the include_state so it is only messed up within this function. + include_state = include_state.copy() + + # Did we find the header for this file (if any) and succesfully load it? + header_found = False + + # Use the absolute path so that matching works properly. + abs_filename = FileInfo(filename).FullName() + + # For Emacs's flymake. + # If cpplint is invoked from Emacs's flymake, a temporary file is generated + # by flymake and that file name might end with '_flymake.cc'. In that case, + # restore original file name here so that the corresponding header file can be + # found. + # e.g. If the file name is 'foo_flymake.cc', we should search for 'foo.h' + # instead of 'foo_flymake.h' + abs_filename = re.sub(r'_flymake\.cc$', '.cc', abs_filename) + + # include_state is modified during iteration, so we iterate over a copy of + # the keys. + header_keys = include_state.keys() + for header in header_keys: + (same_module, common_path) = FilesBelongToSameModule(abs_filename, header) + fullpath = common_path + header + if same_module and UpdateIncludeState(fullpath, include_state, io): + header_found = True + + # If we can't find the header file for a .cc, assume it's because we don't + # know where to look. In that case we'll give up as we're not sure they + # didn't include it in the .h file. + # TODO(unknown): Do a better job of finding .h files so we are confident that + # not having the .h file means there isn't one. + if filename.endswith('.cc') and not header_found: + return + + # All the lines have been processed, report the errors found. + for required_header_unstripped in required: + template = required[required_header_unstripped][1] + if required_header_unstripped.strip('<>"') not in include_state: + error(filename, required[required_header_unstripped][0], + 'build/include_what_you_use', 4, + 'Add #include ' + required_header_unstripped + ' for ' + template) + + +_RE_PATTERN_EXPLICIT_MAKEPAIR = re.compile(r'\bmake_pair\s*<') + + +def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): + """Check that make_pair's template arguments are deduced. + + G++ 4.6 in C++0x mode fails badly if make_pair's template arguments are + specified explicitly, and such use isn't intended in any case. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) + if match: + error(filename, linenum, 'build/explicit_make_pair', + 4, # 4 = high confidence + 'For C++11-compatibility, omit template arguments from make_pair' + ' OR use pair directly OR if appropriate, construct a pair directly') + + +def ProcessLine(filename, file_extension, clean_lines, line, + include_state, function_state, nesting_state, error, + extra_check_functions=[]): + """Processes a single line in the file. + + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + clean_lines: An array of strings, each representing a line of the file, + with comments stripped. + line: Number of line being processed. + include_state: An _IncludeState instance in which the headers are inserted. + function_state: A _FunctionState instance which counts function lines, etc. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + raw_lines = clean_lines.raw_lines + ParseNolintSuppressions(filename, raw_lines[line], line, error) + nesting_state.Update(filename, clean_lines, line, error) + if nesting_state.stack and nesting_state.stack[-1].inline_asm != _NO_ASM: + return + CheckForFunctionLengths(filename, clean_lines, line, function_state, error) + CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) + CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) + CheckLanguage(filename, clean_lines, line, file_extension, include_state, + nesting_state, error) + CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) + CheckForNonStandardConstructs(filename, clean_lines, line, + nesting_state, error) + CheckVlogArguments(filename, clean_lines, line, error) + CheckPosixThreading(filename, clean_lines, line, error) + CheckInvalidIncrement(filename, clean_lines, line, error) + CheckMakePairUsesDeduction(filename, clean_lines, line, error) + for check_fn in extra_check_functions: + check_fn(filename, clean_lines, line, error) + +def ProcessFileData(filename, file_extension, lines, error, + extra_check_functions=[]): + """Performs lint checks and reports any errors to the given error function. + + Args: + filename: Filename of the file that is being processed. + file_extension: The extension (dot not included) of the file. + lines: An array of strings, each representing a line of the file, with the + last element being empty if the file is terminated with a newline. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + lines = (['// marker so line numbers and indices both start at 1'] + lines + + ['// marker so line numbers end in a known way']) + + include_state = _IncludeState() + function_state = _FunctionState() + nesting_state = _NestingState() + + ResetNolintSuppressions() + + CheckForCopyright(filename, lines, error) + + if file_extension == 'h': + CheckForHeaderGuard(filename, lines, error) + + RemoveMultiLineComments(filename, lines, error) + clean_lines = CleansedLines(lines) + for line in xrange(clean_lines.NumLines()): + ProcessLine(filename, file_extension, clean_lines, line, + include_state, function_state, nesting_state, error, + extra_check_functions) + nesting_state.CheckCompletedBlocks(filename, error) + + CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) + + # We check here rather than inside ProcessLine so that we see raw + # lines rather than "cleaned" lines. + CheckForBadCharacters(filename, lines, error) + + CheckForNewlineAtEOF(filename, lines, error) + +def ProcessFile(filename, vlevel, extra_check_functions=[]): + """Does google-lint on a single file. + + Args: + filename: The name of the file to parse. + + vlevel: The level of errors to report. Every error of confidence + >= verbose_level will be reported. 0 is a good default. + + extra_check_functions: An array of additional check functions that will be + run on each source line. Each function takes 4 + arguments: filename, clean_lines, line, error + """ + + _SetVerboseLevel(vlevel) + + try: + # Support the UNIX convention of using "-" for stdin. Note that + # we are not opening the file with universal newline support + # (which codecs doesn't support anyway), so the resulting lines do + # contain trailing '\r' characters if we are reading a file that + # has CRLF endings. + # If after the split a trailing '\r' is present, it is removed + # below. If it is not expected to be present (i.e. os.linesep != + # '\r\n' as in Windows), a warning is issued below if this file + # is processed. + + if filename == '-': + lines = codecs.StreamReaderWriter(sys.stdin, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace').read().split('\n') + else: + lines = codecs.open(filename, 'r', 'utf8', 'replace').read().split('\n') + + carriage_return_found = False + # Remove trailing '\r'. + for linenum in range(len(lines)): + if lines[linenum].endswith('\r'): + lines[linenum] = lines[linenum].rstrip('\r') + carriage_return_found = True + + except IOError: + sys.stderr.write( + "Skipping input '%s': Can't open for reading\n" % filename) + return + + # Note, if no dot is found, this will give the entire filename as the ext. + file_extension = filename[filename.rfind('.') + 1:] + + # When reading from stdin, the extension is unknown, so no cpplint tests + # should rely on the extension. + if filename != '-' and file_extension not in _valid_extensions: + sys.stderr.write('Ignoring %s; not a valid file name ' + '(%s)\n' % (filename, ', '.join(_valid_extensions))) + else: + ProcessFileData(filename, file_extension, lines, Error, + extra_check_functions) + if carriage_return_found and os.linesep != '\r\n': + # Use 0 for linenum since outputting only one error for potentially + # several lines. + Error(filename, 0, 'whitespace/newline', 1, + 'One or more unexpected \\r (^M) found;' + 'better to use only a \\n') + + sys.stderr.write('Done processing %s\n' % filename) + + +def PrintUsage(message): + """Prints a brief usage string and exits, optionally with an error message. + + Args: + message: The optional error message. + """ + sys.stderr.write(_USAGE) + if message: + sys.exit('\nFATAL ERROR: ' + message) + else: + sys.exit(1) + + +def PrintCategories(): + """Prints a list of all the error-categories used by error messages. + + These are the categories used to filter messages via --filter. + """ + sys.stderr.write(''.join(' %s\n' % cat for cat in _ERROR_CATEGORIES)) + sys.exit(0) + + +def ParseArguments(args): + """Parses the command line arguments. + + This may set the output format and verbosity level as side-effects. + + Args: + args: The command line arguments: + + Returns: + The list of filenames to lint. + """ + try: + (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', + 'counting=', + 'filter=', + 'root=', + 'linelength=', + 'extensions=']) + except getopt.GetoptError: + PrintUsage('Invalid arguments.') + + verbosity = _VerboseLevel() + output_format = _OutputFormat() + filters = '' + counting_style = '' + + for (opt, val) in opts: + if opt == '--help': + PrintUsage(None) + elif opt == '--output': + if val not in ('emacs', 'vs7', 'eclipse'): + PrintUsage('The only allowed output formats are emacs, vs7 and eclipse.') + output_format = val + elif opt == '--verbose': + verbosity = int(val) + elif opt == '--filter': + filters = val + if not filters: + PrintCategories() + elif opt == '--counting': + if val not in ('total', 'toplevel', 'detailed'): + PrintUsage('Valid counting options are total, toplevel, and detailed') + counting_style = val + elif opt == '--root': + global _root + _root = val + elif opt == '--linelength': + global _line_length + try: + _line_length = int(val) + except ValueError: + PrintUsage('Line length must be digits.') + elif opt == '--extensions': + global _valid_extensions + try: + _valid_extensions = set(val.split(',')) + except ValueError: + PrintUsage('Extensions must be comma seperated list.') + + if not filenames: + PrintUsage('No files were specified.') + + _SetOutputFormat(output_format) + _SetVerboseLevel(verbosity) + _SetFilters(filters) + _SetCountingStyle(counting_style) + + return filenames + + +def main(): + filenames = ParseArguments(sys.argv[1:]) + + # Change stderr to write with replacement characters so we don't die + # if we try to print something containing non-ASCII characters. + sys.stderr = codecs.StreamReaderWriter(sys.stderr, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace') + + _cpplint_state.ResetErrorCounts() + for filename in filenames: + ProcessFile(filename, _cpplint_state.verbose_level) + _cpplint_state.PrintErrorCounts() + + sys.exit(_cpplint_state.error_count > 0) + + +if __name__ == '__main__': + main() From 8699d122d9ac7b1d87d171be19165b1e5bb3d34c Mon Sep 17 00:00:00 2001 From: Kai Li Date: Wed, 26 Feb 2014 11:14:51 +0800 Subject: [PATCH 015/113] Reverse the order of hdf5_hl hdf5 as LIBRARIES in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 455f94bec36..303eb2a5690 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ LIBRARIES := cudart cublas curand \ glog protobuf leveldb \ snappy \ boost_system \ - hdf5 hdf5_hl \ + hdf5_hl hdf5 \ opencv_core opencv_highgui opencv_imgproc PYTHON_LIBRARIES := boost_python python2.7 WARNINGS := -Wall From dd7854c52f4ded7f8c7f7f2debf7186e7102a14f Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 12:00:41 -0800 Subject: [PATCH 016/113] suppress linter errors due to not including the directory when naming .h files --- scripts/cpplint.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cpplint.py b/scripts/cpplint.py index 76d07352783..52eb22308d2 100755 --- a/scripts/cpplint.py +++ b/scripts/cpplint.py @@ -148,6 +148,7 @@ 'build/header_guard', 'build/include', 'build/include_alpha', + 'build/include_dir', 'build/include_order', 'build/include_what_you_use', 'build/namespaces', @@ -207,7 +208,7 @@ # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). # All entries here should start with a '-' or '+', as in the --filter= flag. -_DEFAULT_FILTERS = ['-build/include_alpha'] +_DEFAULT_FILTERS = ['-build/include_alpha', '-build/include_dir'] # We used to check for high-bit characters, but after much discussion we # decided those were OK, as long as they were in UTF-8 and didn't represent @@ -3585,7 +3586,7 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): # "include" should use the new style "foo/bar.h" instead of just "bar.h" if _RE_PATTERN_INCLUDE_NEW_STYLE.search(line): - error(filename, linenum, 'build/include', 4, + error(filename, linenum, 'build/include_dir', 4, 'Include the directory when naming .h files') # we shouldn't include a file more than once. actually, there are a From 4b8fe9bf581c09a883b2273db812c09dc4a823a2 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 12:13:31 -0800 Subject: [PATCH 017/113] fix matcaffe and pycaffe linter errors --- matlab/caffe/matcaffe.cpp | 39 +++++++++++++++------------ python/caffe/pycaffe.cpp | 56 ++++++++++++++++++--------------------- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/matlab/caffe/matcaffe.cpp b/matlab/caffe/matcaffe.cpp index d137b31e812..d3bcba9346f 100644 --- a/matlab/caffe/matcaffe.cpp +++ b/matlab/caffe/matcaffe.cpp @@ -4,12 +4,15 @@ // caffe::Caffe functions so that one could easily call it from matlab. // Note that for matlab, we will simply use float as the data type. +#include +#include + #include "mex.h" #include "caffe/caffe.hpp" #define MEX_ARGS int nlhs, mxArray **plhs, int nrhs, const mxArray **prhs -using namespace caffe; +namespace caffe { // The pointer to the internal caffe::Net instance static shared_ptr > net_; @@ -21,8 +24,8 @@ static shared_ptr > net_; // matlab uses RGB color channel order // images need to have the data mean subtracted // -// Data coming in from matlab needs to be in the order -// [batch_images, channels, height, width] +// Data coming in from matlab needs to be in the order +// [batch_images, channels, height, width] // where width is the fastest dimension. // Here is the rough matlab for putting image data into the correct // format: @@ -38,14 +41,14 @@ static shared_ptr > net_; // If you have multiple images, cat them with cat(4, ...) // // The actual forward function. It takes in a cell array of 4-D arrays as -// input and outputs a cell array. +// input and outputs a cell array. static mxArray* do_forward(const mxArray* const bottom) { vector*>& input_blobs = net_->input_blobs(); - CHECK_EQ(static_cast(mxGetDimensions(bottom)[0]), + CHECK_EQ(static_cast(mxGetDimensions(bottom)[0]), input_blobs.size()); for (unsigned int i = 0; i < input_blobs.size(); ++i) { const mxArray* const elem = mxGetCell(bottom, i); - const float* const data_ptr = + const float* const data_ptr = reinterpret_cast(mxGetPr(elem)); switch (Caffe::mode()) { case Caffe::CPU: @@ -63,7 +66,7 @@ static mxArray* do_forward(const mxArray* const bottom) { const vector*>& output_blobs = net_->ForwardPrefilled(); mxArray* mx_out = mxCreateCellMatrix(output_blobs.size(), 1); for (unsigned int i = 0; i < output_blobs.size(); ++i) { - mxArray* mx_blob = mxCreateNumericMatrix(output_blobs[i]->count(), + mxArray* mx_blob = mxCreateNumericMatrix(output_blobs[i]->count(), 1, mxSINGLE_CLASS, mxREAL); mxSetCell(mx_out, i, mx_blob); float* data_ptr = reinterpret_cast(mxGetPr(mx_blob)); @@ -85,30 +88,30 @@ static mxArray* do_forward(const mxArray* const bottom) { } // The caffe::Caffe utility functions. -static void set_mode_cpu(MEX_ARGS) { - Caffe::set_mode(Caffe::CPU); +static void set_mode_cpu(MEX_ARGS) { + Caffe::set_mode(Caffe::CPU); } -static void set_mode_gpu(MEX_ARGS) { - Caffe::set_mode(Caffe::GPU); +static void set_mode_gpu(MEX_ARGS) { + Caffe::set_mode(Caffe::GPU); } -static void set_phase_train(MEX_ARGS) { - Caffe::set_phase(Caffe::TRAIN); +static void set_phase_train(MEX_ARGS) { + Caffe::set_phase(Caffe::TRAIN); } -static void set_phase_test(MEX_ARGS) { - Caffe::set_phase(Caffe::TEST); +static void set_phase_test(MEX_ARGS) { + Caffe::set_phase(Caffe::TEST); } -static void set_device(MEX_ARGS) { +static void set_device(MEX_ARGS) { if (nrhs != 1) { LOG(ERROR) << "Only given " << nrhs << " arguments"; mexErrMsgTxt("Wrong number of arguments"); } int device_id = static_cast(mxGetScalar(prhs[0])); - Caffe::SetDevice(device_id); + Caffe::SetDevice(device_id); } static void init(MEX_ARGS) { @@ -186,3 +189,5 @@ void mexFunction(MEX_ARGS) { mxFree(cmd); } } + +} // namespace caffe diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index 7e17d564938..6c87d0f9be8 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -5,9 +5,12 @@ #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include -#include +#include +#include + +#include "boost/python.hpp" +#include "boost/python/suite/indexing/vector_indexing_suite.hpp" +#include "numpy/arrayobject.h" #include "caffe/caffe.hpp" // Temporary solution for numpy < 1.7 versions: old macro, no promises. @@ -17,8 +20,6 @@ #define PyArray_SetBaseObject(arr, x) (PyArray_BASE(arr) = (x)) #endif - -using namespace caffe; using boost::python::extract; using boost::python::len; using boost::python::list; @@ -26,16 +27,16 @@ using boost::python::object; using boost::python::handle; using boost::python::vector_indexing_suite; +namespace caffe { // wrap shared_ptr > in a class that we construct in C++ and pass // to Python class CaffeBlob { public: - CaffeBlob(const shared_ptr > &blob, const string& name) : blob_(blob), name_(name) {} - CaffeBlob(const shared_ptr > &blob) + explicit CaffeBlob(const shared_ptr > &blob) : blob_(blob) {} CaffeBlob() @@ -48,8 +49,7 @@ class CaffeBlob { int width() const { return blob_->width(); } int count() const { return blob_->count(); } - bool operator == (const CaffeBlob &other) - { + bool operator == (const CaffeBlob &other) { return this->blob_ == other.blob_; } @@ -64,14 +64,13 @@ class CaffeBlob { // is not freed while still being used in Python class CaffeBlobWrap : public CaffeBlob { public: - CaffeBlobWrap(PyObject *p, shared_ptr > &blob) + CaffeBlobWrap(PyObject *p, const shared_ptr > &blob) : CaffeBlob(blob), self_(p) {} CaffeBlobWrap(PyObject *p, const CaffeBlob &blob) : CaffeBlob(blob), self_(p) {} - object get_data() - { + object get_data() { npy_intp dims[] = {num(), channels(), height(), width()}; PyObject *obj = PyArray_SimpleNewFromData(4, dims, NPY_FLOAT32, @@ -83,8 +82,7 @@ class CaffeBlobWrap : public CaffeBlob { return object(h); } - object get_diff() - { + object get_diff() { npy_intp dims[] = {num(), channels(), height(), width()}; PyObject *obj = PyArray_SimpleNewFromData(4, dims, NPY_FLOAT32, @@ -103,8 +101,7 @@ class CaffeBlobWrap : public CaffeBlob { // A simple wrapper over CaffeNet that runs the forward process. -struct CaffeNet -{ +struct CaffeNet { CaffeNet(string param_file, string pretrained_param_file) { net_.reset(new Net(param_file)); net_->CopyTrainedLayersFrom(pretrained_param_file); @@ -126,7 +123,8 @@ struct CaffeNet // The actual forward function. It takes in a python list of numpy arrays as // input and a python list of numpy arrays as output. The input and output - // should all have correct shapes, are single-precisionabcdnt- and c contiguous. + // should all have correct shapes, are single-precisionabcdnt- and + // c contiguous. void Forward(list bottom, list top) { vector*>& input_blobs = net_->input_blobs(); CHECK_EQ(len(bottom), input_blobs.size()); @@ -149,9 +147,9 @@ struct CaffeNet LOG(FATAL) << "Unknown Caffe mode."; } // switch (Caffe::mode()) } - //LOG(INFO) << "Start"; + // LOG(INFO) << "Start"; const vector*>& output_blobs = net_->ForwardPrefilled(); - //LOG(INFO) << "End"; + // LOG(INFO) << "End"; for (int i = 0; i < output_blobs.size(); ++i) { object elem = top[i]; PyArrayObject* arr = reinterpret_cast(elem.ptr()); @@ -194,9 +192,9 @@ struct CaffeNet LOG(FATAL) << "Unknown Caffe mode."; } // switch (Caffe::mode()) } - //LOG(INFO) << "Start"; + // LOG(INFO) << "Start"; net_->Backward(); - //LOG(INFO) << "End"; + // LOG(INFO) << "End"; for (int i = 0; i < input_blobs.size(); ++i) { object elem = bottom_diff[i]; PyArrayObject* arr = reinterpret_cast(elem.ptr()); @@ -236,7 +234,8 @@ struct CaffeNet int ix = 0; for (int i = 0; i < net_->layers().size(); ++i) { for (int j = 0; j < net_->layers()[i]->blobs().size(); ++j) { - result.push_back(CaffeBlob(net_->params()[ix], net_->layer_names()[i])); + result.push_back( + CaffeBlob(net_->params()[ix], net_->layer_names()[i])); ix++; } } @@ -250,9 +249,7 @@ struct CaffeNet // The boost python module definition. -BOOST_PYTHON_MODULE(pycaffe) -{ - +BOOST_PYTHON_MODULE(pycaffe) { boost::python::class_( "CaffeNet", boost::python::init()) .def("Forward", &CaffeNet::Forward) @@ -263,8 +260,7 @@ BOOST_PYTHON_MODULE(pycaffe) .def("set_phase_test", &CaffeNet::set_phase_test) .def("set_device", &CaffeNet::set_device) .def("blobs", &CaffeNet::blobs) - .def("params", &CaffeNet::params) - ; + .def("params", &CaffeNet::params); boost::python::class_( "CaffeBlob", boost::python::no_init) @@ -275,12 +271,12 @@ BOOST_PYTHON_MODULE(pycaffe) .add_property("width", &CaffeBlob::width) .add_property("count", &CaffeBlob::count) .add_property("data", &CaffeBlobWrap::get_data) - .add_property("diff", &CaffeBlobWrap::get_diff) - ; + .add_property("diff", &CaffeBlobWrap::get_diff); boost::python::class_ >("BlobVec") .def(vector_indexing_suite, true>()); import_array(); - } + +} // namespace caffe From 466ec38da1e07c1db45041da1ac3c56b6e4bc579 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 12:47:25 -0800 Subject: [PATCH 018/113] add hpp to valid cpplint extensions --- scripts/cpplint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cpplint.py b/scripts/cpplint.py index 52eb22308d2..696a506dfb1 100755 --- a/scripts/cpplint.py +++ b/scripts/cpplint.py @@ -450,7 +450,7 @@ # The allowed extensions for file names # This is set by --extensions flag. -_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) +_valid_extensions = set(['cc', 'h', 'cpp', 'hpp', 'cu', 'cuh']) def ParseNolintSuppressions(filename, raw_line, linenum, error): """Updates the global list of error-suppressions. From 488a4bd4a7032e7ff2779c3511e3083c1271b297 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 12:49:57 -0800 Subject: [PATCH 019/113] exclude proto generated files from lint --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index acbb697d491..886e4217ed8 100644 --- a/Makefile +++ b/Makefile @@ -32,6 +32,10 @@ TOOL_SRCS := $(shell find tools -name "*.cpp") EXAMPLE_SRCS := $(shell find examples -name "*.cpp") # PROTO_SRCS are the protocol buffer definitions PROTO_SRCS := $(wildcard src/$(PROJECT)/proto/*.proto) +# NONGEN_CXX_SRCS includes all source/header files except those generated by +# proto. +NONGEN_CXX_SRCS := $(shell find src/$(PROJECT) include/$(PROJECT) \ + -regex ".*\.\(cpp\|hpp\|cu\|cuh\)") # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) PY$(PROJECT)_SRC := python/$(PROJECT)/py$(PROJECT).cpp PY$(PROJECT)_SO := python/$(PROJECT)/py$(PROJECT).so @@ -111,9 +115,7 @@ linecount: clean cloc --read-lang-def=$(PROJECT).cloc src/$(PROJECT)/ lint: - ./scripts/cpplint.py $(CXX_SRCS) $(HXX_SRCS) $(CU_SRCS) \ - $(TEST_SRCS) $(TEST_HDRS) $(EXAMPLE_SRCS) \ - $(PY$(PROJECT)_SRC) $(MAT$(PROJECT)_SRC) + ./scripts/cpplint.py $(NONGEN_CXX_SRCS) test: init $(TEST_BINS) From b065ae215a95cf9ec87dc51007b738977cd799bd Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 13:39:20 -0800 Subject: [PATCH 020/113] add NOLINT_NEXTLINE to suppress linter errors on nextline --- scripts/cpplint.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/cpplint.py b/scripts/cpplint.py index 696a506dfb1..c5b14bd8cfb 100755 --- a/scripts/cpplint.py +++ b/scripts/cpplint.py @@ -433,8 +433,8 @@ _regexp_compile_cache = {} -# Finds occurrences of NOLINT or NOLINT(...). -_RE_SUPPRESSION = re.compile(r'\bNOLINT\b(\([^)]*\))?') +# Finds occurrences of NOLINT[_NEXTLINE] or NOLINT[_NEXTLINE](...). +_RE_SUPPRESSION = re.compile(r'\bNOLINT(_NEXTLINE)?\b(\([^)]*\))?') # {str, set(int)}: a map from error categories to sets of linenumbers # on which those errors are expected and should be suppressed. @@ -468,7 +468,9 @@ def ParseNolintSuppressions(filename, raw_line, linenum, error): # FIXME(adonovan): "NOLINT(" is misparsed as NOLINT(*). matched = _RE_SUPPRESSION.search(raw_line) if matched: - category = matched.group(1) + if matched.group(1) == '_NEXTLINE': + linenum += 1 + category = matched.group(2) if category in (None, '(*)'): # => "suppress all" _error_suppressions.setdefault(None, set()).add(linenum) else: From 22fa0a2945e58d3f748071034b54ec8610fc265a Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 15:21:23 -0800 Subject: [PATCH 021/113] fix most linter errors --- include/caffe/filler.hpp | 2 +- include/caffe/layer.hpp | 8 +-- include/caffe/net.hpp | 4 +- include/caffe/solver.hpp | 3 +- include/caffe/util/im2col.hpp | 16 ++--- include/caffe/util/insert_splits.hpp | 2 + src/caffe/common.cpp | 5 +- src/caffe/layers/bnll_layer.cu | 6 +- src/caffe/layers/conv_layer.cpp | 2 +- src/caffe/layers/data_layer.cpp | 6 +- src/caffe/layers/dropout_layer.cu | 13 ++-- src/caffe/layers/flatten_layer.cpp | 2 +- src/caffe/layers/im2col_layer.cpp | 13 ++-- src/caffe/layers/inner_product_layer.cpp | 2 +- src/caffe/layers/loss_layer.cu | 15 +++-- src/caffe/layers/lrn_layer.cpp | 2 +- src/caffe/layers/lrn_layer.cu | 5 ++ src/caffe/layers/neuron_layer.cpp | 2 +- src/caffe/layers/pooling_layer.cpp | 2 +- src/caffe/layers/pooling_layer.cu | 17 +++++- src/caffe/layers/relu_layer.cu | 9 ++- src/caffe/layers/sigmoid_layer.cu | 11 +++- src/caffe/layers/softmax_layer.cu | 11 +++- src/caffe/layers/softmax_loss_layer.cu | 10 ++-- src/caffe/layers/split_layer.cpp | 2 +- src/caffe/layers/tanh_layer.cu | 12 +++- src/caffe/solver.cpp | 5 +- src/caffe/test/test_blob.cpp | 6 +- src/caffe/test/test_caffe_main.hpp | 6 +- src/caffe/test/test_common.cpp | 10 ++-- src/caffe/test/test_convolution_layer.cpp | 21 ++++--- src/caffe/test/test_data_layer.cpp | 15 ++--- src/caffe/test/test_euclidean_loss_layer.cpp | 5 +- src/caffe/test/test_filler.cpp | 12 ++-- src/caffe/test/test_flatten_layer.cpp | 13 ++-- src/caffe/test/test_im2col_layer.cpp | 13 ++-- src/caffe/test/test_innerproduct_layer.cpp | 56 +++++++++--------- src/caffe/test/test_lrn_layer.cpp | 30 ++++++---- .../test_multinomial_logistic_loss_layer.cpp | 6 +- src/caffe/test/test_neuron_layer.cpp | 34 ++++++----- src/caffe/test/test_platform.cpp | 48 +++++++++------ src/caffe/test/test_pooling_layer.cpp | 21 ++++--- src/caffe/test/test_protobuf.cpp | 4 +- src/caffe/test/test_softmax_layer.cpp | 10 ++-- .../test/test_softmax_with_loss_layer.cpp | 6 +- src/caffe/test/test_split_layer.cpp | 11 ++-- ...pooing.cpp => test_stochastic_pooling.cpp} | 18 ++++-- src/caffe/test/test_syncedmem.cpp | 23 ++++---- src/caffe/test/test_tanh_layer.cpp | 35 ++++++----- src/caffe/test/test_util_blas.cpp | 33 ++++++----- src/caffe/util/im2col.cpp | 47 +++++++-------- src/caffe/util/im2col.cu | 59 +++++++++++-------- src/caffe/util/io.cpp | 7 +-- src/caffe/util/math_functions.cu | 2 + 54 files changed, 435 insertions(+), 303 deletions(-) rename src/caffe/test/{test_stochastic_pooing.cpp => test_stochastic_pooling.cpp} (95%) diff --git a/include/caffe/filler.hpp b/include/caffe/filler.hpp index effe62ff2c5..5b934a331e3 100644 --- a/include/caffe/filler.hpp +++ b/include/caffe/filler.hpp @@ -42,7 +42,7 @@ class ConstantFiller : public Filler { for (int i = 0; i < count; ++i) { data[i] = value; } - }; + } }; template diff --git a/include/caffe/layer.hpp b/include/caffe/layer.hpp index adc63657369..a0cb487e50d 100644 --- a/include/caffe/layer.hpp +++ b/include/caffe/layer.hpp @@ -67,7 +67,7 @@ class Layer { vector*>* top) { // LOG(WARNING) << "Using CPU code as backup."; Forward_cpu(bottom, top); - }; + } // Backward functions: the backward function will compute the gradients for // any parameters and also for the bottom blobs if propagate_down is true. @@ -80,7 +80,7 @@ class Layer { vector*>* bottom) { // LOG(WARNING) << "Using CPU code as backup."; return Backward_cpu(top, propagate_down, bottom); - }; + } DISABLE_COPY_AND_ASSIGN(Layer); }; // class Layer @@ -101,7 +101,7 @@ inline void Layer::Forward(const vector*>& bottom, default: LOG(FATAL) << "Unknown caffe mode."; } -}; +} template inline Dtype Layer::Backward(const vector*>& top, @@ -115,7 +115,7 @@ inline Dtype Layer::Backward(const vector*>& top, default: LOG(FATAL) << "Unknown caffe mode."; } -}; +} template void Layer::ToProto(LayerParameter* param, bool write_diff) { diff --git a/include/caffe/net.hpp b/include/caffe/net.hpp index 684d6c5a018..b5a57b3c5a4 100644 --- a/include/caffe/net.hpp +++ b/include/caffe/net.hpp @@ -22,8 +22,8 @@ namespace caffe { template class Net { public: - Net(const NetParameter& param); - Net(const string& param_file); + explicit Net(const NetParameter& param); + explicit Net(const string& param_file); virtual ~Net() {} // Initialize a network with the network parameter. diff --git a/include/caffe/solver.hpp b/include/caffe/solver.hpp index 25ba3b68927..a5dafe61ae4 100644 --- a/include/caffe/solver.hpp +++ b/include/caffe/solver.hpp @@ -3,6 +3,7 @@ #ifndef CAFFE_OPTIMIZATION_SOLVER_HPP_ #define CAFFE_OPTIMIZATION_SOLVER_HPP_ +#include #include namespace caffe { @@ -66,6 +67,6 @@ class SGDSolver : public Solver { }; -} // namspace caffe +} // namespace caffe #endif // CAFFE_OPTIMIZATION_SOLVER_HPP_ diff --git a/include/caffe/util/im2col.hpp b/include/caffe/util/im2col.hpp index 521efd31593..17da49cddcf 100644 --- a/include/caffe/util/im2col.hpp +++ b/include/caffe/util/im2col.hpp @@ -7,23 +7,23 @@ namespace caffe { template void im2col_cpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_col); template void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - Dtype* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, Dtype* data_im); template void im2col_gpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_col); template void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - Dtype* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, Dtype* data_im); } // namespace caffe diff --git a/include/caffe/util/insert_splits.hpp b/include/caffe/util/insert_splits.hpp index d0df85650c9..37972b34829 100644 --- a/include/caffe/util/insert_splits.hpp +++ b/include/caffe/util/insert_splits.hpp @@ -3,6 +3,8 @@ #ifndef _CAFFE_UTIL_INSERT_SPLITS_HPP_ #define _CAFFE_UTIL_INSERT_SPLITS_HPP_ +#include + #include "caffe/proto/caffe.pb.h" using std::pair; diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index 7498579440b..110967426fa 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -36,7 +36,8 @@ Caffe::Caffe() } // Try to create a vsl stream. This should almost always work, but we will // check it anyway. - if (vslNewStream(&vsl_stream_, VSL_BRNG_MT19937, cluster_seedgen()) != VSL_STATUS_OK) { + if (vslNewStream(&vsl_stream_, VSL_BRNG_MT19937, + cluster_seedgen()) != VSL_STATUS_OK) { LOG(ERROR) << "Cannot create vsl stream. VSL random number generator " << "won't be available."; } @@ -48,7 +49,7 @@ Caffe::~Caffe() { CURAND_CHECK(curandDestroyGenerator(curand_generator_)); } if (vsl_stream_) VSL_CHECK(vslDeleteStream(&vsl_stream_)); -}; +} void Caffe::set_random_seed(const unsigned int seed) { // Curand seed diff --git a/src/caffe/layers/bnll_layer.cu b/src/caffe/layers/bnll_layer.cu index 2c06a63da5d..c1795bcf9aa 100644 --- a/src/caffe/layers/bnll_layer.cu +++ b/src/caffe/layers/bnll_layer.cu @@ -1,8 +1,10 @@ // Copyright 2013 Yangqing Jia +#include +#include + #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" -#include using std::max; @@ -57,6 +59,7 @@ void BNLLLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) BNLLForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; @@ -81,6 +84,7 @@ Dtype BNLLLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) BNLLBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 69a860bf285..1549039310e 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -73,7 +73,7 @@ void ConvolutionLayer::SetUp(const vector*>& bottom, bias_multiplier_data[i] = 1.; } } -}; +} template diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index ffb7fd0a9e2..7950313d4cb 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -50,12 +50,15 @@ void* DataLayerPrefetch(void* layer_pointer) { int h_off, w_off; // We only do random crop when we do training. if (Caffe::phase() == Caffe::TRAIN) { + // NOLINT_NEXTLINE(runtime/threadsafe_fn) h_off = rand() % (height - cropsize); + // NOLINT_NEXTLINE(runtime/threadsafe_fn) w_off = rand() % (width - cropsize); } else { h_off = (height - cropsize) / 2; w_off = (width - cropsize) / 2; } + // NOLINT_NEXTLINE(runtime/threadsafe_fn) if (mirror && rand() % 2) { // Copy mirrored version for (int c = 0; c < channels; ++c) { @@ -111,7 +114,7 @@ void* DataLayerPrefetch(void* layer_pointer) { } } - return (void*)NULL; + return reinterpret_cast(NULL); } template @@ -140,6 +143,7 @@ void DataLayer::SetUp(const vector*>& bottom, iter_->SeekToFirst(); // Check if we would need to randomly skip a few data points if (this->layer_param_.rand_skip()) { + // NOLINT_NEXTLINE(runtime/threadsafe_fn) unsigned int skip = rand() % this->layer_param_.rand_skip(); LOG(INFO) << "Skipping first " << skip << " data points."; while (skip-- > 0) { diff --git a/src/caffe/layers/dropout_layer.cu b/src/caffe/layers/dropout_layer.cu index df94f2deb24..0e15b6fada6 100644 --- a/src/caffe/layers/dropout_layer.cu +++ b/src/caffe/layers/dropout_layer.cu @@ -2,6 +2,7 @@ #include #include +#include #include "caffe/common.hpp" #include "caffe/layer.hpp" @@ -23,14 +24,14 @@ void DropoutLayer::SetUp(const vector*>& bottom, DCHECK(threshold_ < 1.); scale_ = 1. / (1. - threshold_); uint_thres_ = (unsigned int)(UINT_MAX * threshold_); -}; +} template void DropoutLayer::Forward_cpu(const vector*>& bottom, vector*>* top) { const Dtype* bottom_data = bottom[0]->cpu_data(); Dtype* top_data = (*top)[0]->mutable_cpu_data(); - int* mask = (int*)rand_vec_->mutable_cpu_data(); + int* mask = reinterpret_cast(rand_vec_->mutable_cpu_data()); const int count = bottom[0]->count(); if (Caffe::phase() == Caffe::TRAIN) { // Create random numbers @@ -52,7 +53,7 @@ Dtype DropoutLayer::Backward_cpu(const vector*>& top, if (propagate_down) { const Dtype* top_diff = top[0]->cpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int* mask = (int*)(rand_vec_->cpu_data()); + const int* mask = reinterpret_cast(rand_vec_->cpu_data()); const int count = (*bottom)[0]->count(); for (int i = 0; i < count; ++i) { bottom_diff[i] = top_diff[i] * mask[i] * scale_; @@ -81,9 +82,10 @@ void DropoutLayer::Forward_gpu(const vector*>& bottom, CURAND_CHECK(curandGenerate(Caffe::curand_generator(), (unsigned int*)(rand_vec_->mutable_gpu_data()), count)); // set thresholds + // NOLINT_NEXTLINE(whitespace/operators) DropoutForward<<>>( - count, bottom_data, (unsigned int*)rand_vec_->gpu_data(), uint_thres_, scale_, - top_data); + count, bottom_data, (unsigned int*)rand_vec_->gpu_data(), uint_thres_, + scale_, top_data); CUDA_POST_KERNEL_CHECK; } else { CUDA_CHECK(cudaMemcpy(top_data, bottom_data, @@ -111,6 +113,7 @@ Dtype DropoutLayer::Backward_gpu(const vector*>& top, Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const unsigned int* mask = (unsigned int*)rand_vec_->gpu_data(); const int count = (*bottom)[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) DropoutBackward<<>>( count, top_diff, mask, uint_thres_, scale_, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/flatten_layer.cpp b/src/caffe/layers/flatten_layer.cpp index a202f727d7f..bedf2963100 100644 --- a/src/caffe/layers/flatten_layer.cpp +++ b/src/caffe/layers/flatten_layer.cpp @@ -19,7 +19,7 @@ void FlattenLayer::SetUp(const vector*>& bottom, count_ = bottom[0]->num() * channels_out; CHECK_EQ(count_, bottom[0]->count()); CHECK_EQ(count_, (*top)[0]->count()); -}; +} template void FlattenLayer::Forward_cpu(const vector*>& bottom, diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index 5f9986a2f86..a94209b33fa 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -21,8 +21,9 @@ void Im2colLayer::SetUp(const vector*>& bottom, HEIGHT_ = bottom[0]->height(); WIDTH_ = bottom[0]->width(); (*top)[0]->Reshape(bottom[0]->num(), CHANNELS_ * KSIZE_ * KSIZE_, - (HEIGHT_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1, (WIDTH_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1); -}; + (HEIGHT_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1, + (WIDTH_ + 2 * PAD_ - KSIZE_) / STRIDE_ + 1); +} template void Im2colLayer::Forward_cpu(const vector*>& bottom, @@ -31,7 +32,7 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, Dtype* top_data = (*top)[0]->mutable_cpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { im2col_cpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -42,7 +43,7 @@ void Im2colLayer::Forward_gpu(const vector*>& bottom, Dtype* top_data = (*top)[0]->mutable_gpu_data(); for (int n = 0; n < bottom[0]->num(); ++n) { im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); } } @@ -53,7 +54,7 @@ Dtype Im2colLayer::Backward_cpu(const vector*>& top, Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { col2im_cpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); } @@ -66,7 +67,7 @@ Dtype Im2colLayer::Backward_gpu(const vector*>& top, Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); for (int n = 0; n < top[0]->num(); ++n) { col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); } return Dtype(0.); } diff --git a/src/caffe/layers/inner_product_layer.cpp b/src/caffe/layers/inner_product_layer.cpp index 18f1df0dc1f..d770e23a589 100644 --- a/src/caffe/layers/inner_product_layer.cpp +++ b/src/caffe/layers/inner_product_layer.cpp @@ -59,7 +59,7 @@ void InnerProductLayer::SetUp(const vector*>& bottom, bias_multiplier_data[i] = 1.; } } -}; +} template void InnerProductLayer::Forward_cpu(const vector*>& bottom, diff --git a/src/caffe/layers/loss_layer.cu b/src/caffe/layers/loss_layer.cu index ac05ba41b84..745bfa4b8bc 100644 --- a/src/caffe/layers/loss_layer.cu +++ b/src/caffe/layers/loss_layer.cu @@ -1,7 +1,9 @@ // Copyright 2013 Yangqing Jia + #include #include #include +#include #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" @@ -24,12 +26,12 @@ void MultinomialLogisticLossLayer::SetUp( CHECK_EQ(bottom[1]->channels(), 1); CHECK_EQ(bottom[1]->height(), 1); CHECK_EQ(bottom[1]->width(), 1); -}; +} template -Dtype MultinomialLogisticLossLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, +Dtype MultinomialLogisticLossLayer::Backward_cpu( + const vector*>& top, const bool propagate_down, vector*>* bottom) { const Dtype* bottom_data = (*bottom)[0]->cpu_data(); const Dtype* bottom_label = (*bottom)[1]->cpu_data(); @@ -66,7 +68,7 @@ void InfogainLossLayer::SetUp( CHECK_EQ(infogain_.num(), 1); CHECK_EQ(infogain_.channels(), 1); CHECK_EQ(infogain_.height(), infogain_.width()); -}; +} template @@ -154,10 +156,11 @@ void AccuracyLayer::Forward_cpu(const vector*>& bottom, max_id = j; } } - if (max_id == (int)bottom_label[i]) { + if (max_id == static_cast(bottom_label[i])) { ++accuracy; } - Dtype prob = max(bottom_data[i * dim + (int)bottom_label[i]], kLOG_THRESHOLD); + Dtype prob = max(bottom_data[i * dim + static_cast(bottom_label[i])], + kLOG_THRESHOLD); logprob -= log(prob); } // LOG(INFO) << "Accuracy: " << accuracy; diff --git a/src/caffe/layers/lrn_layer.cpp b/src/caffe/layers/lrn_layer.cpp index 337b77b76c8..36dbe41ea8c 100644 --- a/src/caffe/layers/lrn_layer.cpp +++ b/src/caffe/layers/lrn_layer.cpp @@ -25,7 +25,7 @@ void LRNLayer::SetUp(const vector*>& bottom, pre_pad_ = (size_ - 1) / 2; alpha_ = this->layer_param_.alpha(); beta_ = this->layer_param_.beta(); -}; +} template void LRNLayer::Forward_cpu(const vector*>& bottom, diff --git a/src/caffe/layers/lrn_layer.cu b/src/caffe/layers/lrn_layer.cu index 2afbf38359d..9c82b35d6b7 100644 --- a/src/caffe/layers/lrn_layer.cu +++ b/src/caffe/layers/lrn_layer.cu @@ -1,5 +1,7 @@ // Copyright 2013 Yangqing Jia +#include + #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" #include "caffe/util/math_functions.hpp" @@ -74,11 +76,13 @@ void LRNLayer::Forward_gpu(const vector*>& bottom, // We will launch one kernel for each pixel location, and have the kernel // go through all the channels. int n_threads = num_ * height_ * width_; + // NOLINT_NEXTLINE(whitespace/operators) LRNFillScale<<>>( n_threads, bottom_data, num_, channels_, height_, width_, size_, alpha_ / size_, scale_data); CUDA_POST_KERNEL_CHECK; n_threads = bottom[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) LRNComputeOutput<<>>( n_threads, bottom_data, scale_data, -beta_, top_data); CUDA_POST_KERNEL_CHECK; @@ -151,6 +155,7 @@ template Dtype LRNLayer::Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { int n_threads = num_ * height_ * width_; + // NOLINT_NEXTLINE(whitespace/operators) LRNComputeDiff<<>>( n_threads, (*bottom)[0]->gpu_data(), top[0]->gpu_data(), scale_.gpu_data(), top[0]->gpu_diff(), num_, channels_, height_, width_, diff --git a/src/caffe/layers/neuron_layer.cpp b/src/caffe/layers/neuron_layer.cpp index dd09dca3505..5def7559e16 100644 --- a/src/caffe/layers/neuron_layer.cpp +++ b/src/caffe/layers/neuron_layer.cpp @@ -18,7 +18,7 @@ void NeuronLayer::SetUp(const vector*>& bottom, (*top)[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), bottom[0]->height(), bottom[0]->width()); } -}; +} INSTANTIATE_CLASS(NeuronLayer); diff --git a/src/caffe/layers/pooling_layer.cpp b/src/caffe/layers/pooling_layer.cpp index 6141642155d..ce30e842c58 100644 --- a/src/caffe/layers/pooling_layer.cpp +++ b/src/caffe/layers/pooling_layer.cpp @@ -34,7 +34,7 @@ void PoolingLayer::SetUp(const vector*>& bottom, rand_idx_.Reshape(bottom[0]->num(), CHANNELS_, POOLED_HEIGHT_, POOLED_WIDTH_); } -}; +} // TODO(Yangqing): Is there a faster way to do pooling in the channel-first // case? diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index 4fd326cbfb4..75078b3db5f 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -2,6 +2,8 @@ #include #include +#include + #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" #include "caffe/util/math_functions.hpp" @@ -144,12 +146,14 @@ void PoolingLayer::Forward_gpu(const vector*>& bottom, int count = (*top)[0]->count(); switch (this->layer_param_.pool()) { case LayerParameter_PoolMethod_MAX: + // NOLINT_NEXTLINE(whitespace/operators) MaxPoolForward<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, top_data); break; case LayerParameter_PoolMethod_AVE: + // NOLINT_NEXTLINE(whitespace/operators) AvePoolForward<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, @@ -160,12 +164,16 @@ void PoolingLayer::Forward_gpu(const vector*>& bottom, // We need to create the random index as well. CURAND_CHECK(curandGenerateUniform(Caffe::curand_generator(), rand_idx_.mutable_gpu_data(), count)); - StoPoolForwardTrain<<>>( + // NOLINT_NEXTLINE(whitespace/operators) + StoPoolForwardTrain<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, rand_idx_.mutable_gpu_data(), top_data); } else { - StoPoolForwardTest<<>>( + // NOLINT_NEXTLINE(whitespace/operators) + StoPoolForwardTest<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, top_data); @@ -267,7 +275,7 @@ __global__ void StoPoolBackward(const int nthreads, for (int ph = phstart; ph < phend; ++ph) { for (int pw = pwstart; pw < pwend; ++pw) { gradient += top_diff[ph * pooled_width + pw] * - (index == int(rand_idx[ph * pooled_width + pw])); + (index == static_cast(rand_idx[ph * pooled_width + pw])); } } bottom_diff[index] = gradient; @@ -286,18 +294,21 @@ Dtype PoolingLayer::Backward_gpu(const vector*>& top, int count = (*bottom)[0]->count(); switch (this->layer_param_.pool()) { case LayerParameter_PoolMethod_MAX: + // NOLINT_NEXTLINE(whitespace/operators) MaxPoolBackward<<>>( count, (*bottom)[0]->gpu_data(), top[0]->gpu_data(), top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, bottom_diff); break; case LayerParameter_PoolMethod_AVE: + // NOLINT_NEXTLINE(whitespace/operators) AvePoolBackward<<>>( count, top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, bottom_diff); break; case LayerParameter_PoolMethod_STOCHASTIC: + // NOLINT_NEXTLINE(whitespace/operators) StoPoolBackward<<>>( count, rand_idx_.gpu_data(), top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, diff --git a/src/caffe/layers/relu_layer.cu b/src/caffe/layers/relu_layer.cu index b0fc46efbca..c56d22a52b3 100644 --- a/src/caffe/layers/relu_layer.cu +++ b/src/caffe/layers/relu_layer.cu @@ -1,8 +1,10 @@ // Copyright 2013 Yangqing Jia +#include +#include + #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" -#include using std::max; @@ -49,11 +51,13 @@ void ReLULayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) ReLUForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; // << " count: " << count << " bottom_data: " - // << (unsigned long)bottom_data << " top_data: " << (unsigned long)top_data + // << (unsigned long)bottom_data + // << " top_data: " << (unsigned long)top_data // << " blocks: " << CAFFE_GET_BLOCKS(count) // << " threads: " << CAFFE_CUDA_NUM_THREADS; } @@ -76,6 +80,7 @@ Dtype ReLULayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) ReLUBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index f112a529801..1680aa6bdd6 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -1,9 +1,11 @@ // Copyright 2014 Tobias Domhan -#include "caffe/layer.hpp" -#include "caffe/vision_layers.hpp" #include #include +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" using std::max; @@ -63,11 +65,13 @@ void SigmoidLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) SigmoidForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; // << " count: " << count << " bottom_data: " - // << (unsigned long)bottom_data << " top_data: " << (unsigned long)top_data + // << (unsigned long)bottom_data + // << " top_data: " << (unsigned long)top_data // << " blocks: " << CAFFE_GET_BLOCKS(count) // << " threads: " << CAFFE_CUDA_NUM_THREADS; } @@ -91,6 +95,7 @@ Dtype SigmoidLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) SigmoidBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/softmax_layer.cu b/src/caffe/layers/softmax_layer.cu index a7659697a06..f7adab3b319 100644 --- a/src/caffe/layers/softmax_layer.cu +++ b/src/caffe/layers/softmax_layer.cu @@ -3,7 +3,8 @@ #include #include #include -#include + +#include "thrust/device_vector.h" #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" @@ -27,7 +28,7 @@ void SoftmaxLayer::SetUp(const vector*>& bottom, multiplier_data[i] = 1.; } scale_.Reshape(bottom[0]->num(), 1, 1, 1); -}; +} template void SoftmaxLayer::Forward_cpu(const vector*>& bottom, @@ -104,19 +105,23 @@ void SoftmaxLayer::Forward_gpu(const vector*>& bottom, // we need to subtract the max to avoid numerical issues, compute the exp, // and then normalize. // Compute max + // NOLINT_NEXTLINE(whitespace/operators) kernel_get_max<<>>( num, dim, bottom_data, scale_data); // subtraction caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., scale_data, sum_multiplier_.gpu_data(), 1., top_data); // Perform exponentiation + // NOLINT_NEXTLINE(whitespace/operators) kernel_exp<<>>( num * dim, top_data, top_data); // sum after exp caffe_gpu_gemv(CblasNoTrans, num, dim, 1., top_data, sum_multiplier_.gpu_data(), 0., scale_data); // Do division - kernel_softmax_div<<>>( + // NOLINT_NEXTLINE(whitespace/operators) + kernel_softmax_div<<>>( num, dim, scale_data, top_data); } diff --git a/src/caffe/layers/softmax_loss_layer.cu b/src/caffe/layers/softmax_loss_layer.cu index 9bb2313abe1..3e2658692b3 100644 --- a/src/caffe/layers/softmax_loss_layer.cu +++ b/src/caffe/layers/softmax_loss_layer.cu @@ -21,19 +21,19 @@ void SoftmaxWithLossLayer::SetUp(const vector*>& bottom, softmax_bottom_vec_.push_back(bottom[0]); softmax_top_vec_.push_back(&prob_); softmax_layer_->SetUp(softmax_bottom_vec_, &softmax_top_vec_); -}; +} template -void SoftmaxWithLossLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { +void SoftmaxWithLossLayer::Forward_cpu( + const vector*>& bottom, vector*>* top) { // The forward pass computes the softmax prob values. softmax_bottom_vec_[0] = bottom[0]; softmax_layer_->Forward(softmax_bottom_vec_, &softmax_top_vec_); } template -void SoftmaxWithLossLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { +void SoftmaxWithLossLayer::Forward_gpu( + const vector*>& bottom, vector*>* top) { // The forward pass computes the softmax prob values. softmax_bottom_vec_[0] = bottom[0]; softmax_layer_->Forward(softmax_bottom_vec_, &softmax_top_vec_); diff --git a/src/caffe/layers/split_layer.cpp b/src/caffe/layers/split_layer.cpp index 5accdd08e32..56e956100ff 100644 --- a/src/caffe/layers/split_layer.cpp +++ b/src/caffe/layers/split_layer.cpp @@ -25,7 +25,7 @@ void SplitLayer::SetUp(const vector*>& bottom, bottom[0]->height(), bottom[0]->width()); CHECK_EQ(count_, (*top)[i]->count()); } -}; +} template void SplitLayer::Forward_cpu(const vector*>& bottom, diff --git a/src/caffe/layers/tanh_layer.cu b/src/caffe/layers/tanh_layer.cu index 22e0831afb7..28145771508 100644 --- a/src/caffe/layers/tanh_layer.cu +++ b/src/caffe/layers/tanh_layer.cu @@ -1,9 +1,12 @@ // Copyright 2014 Aravindh Mahendran -// TanH neuron activation function layer. Adapted from ReLU layer code written by Yangqing Jia +// TanH neuron activation function layer. +// Adapted from ReLU layer code written by Yangqing Jia + +#include +#include #include "caffe/layer.hpp" #include "caffe/vision_layers.hpp" -#include namespace caffe { @@ -55,11 +58,13 @@ void TanHLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) TanHForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; // << " count: " << count << " bottom_data: " - // << (unsigned long)bottom_data << " top_data: " << (unsigned long)top_data + // << (unsigned long)bottom_data + // << " top_data: " << (unsigned long)top_data // << " blocks: " << CAFFE_GET_BLOCKS(count) // << " threads: " << CAFFE_CUDA_NUM_THREADS; } @@ -84,6 +89,7 @@ Dtype TanHLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); + // NOLINT_NEXTLINE(whitespace/operators) TanHBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/solver.cpp b/src/caffe/solver.cpp index 340bbe1dc04..eb024856841 100644 --- a/src/caffe/solver.cpp +++ b/src/caffe/solver.cpp @@ -123,8 +123,9 @@ void Solver::Snapshot() { // For intermediate results, we will also dump the gradient values. net_->ToProto(&net_param, param_.snapshot_diff()); string filename(param_.snapshot_prefix()); - char iter_str_buffer[20]; - sprintf(iter_str_buffer, "_iter_%d", iter_); + const int kBufferSize = 20; + char iter_str_buffer[kBufferSize]; + snprintf(iter_str_buffer, kBufferSize, "_iter_%d", iter_); filename += iter_str_buffer; LOG(INFO) << "Snapshotting to " << filename; WriteProtoToBinaryFile(net_param, filename.c_str()); diff --git a/src/caffe/test/test_blob.cpp b/src/caffe/test/test_blob.cpp index 7c3084e88d2..7ce1a38480b 100644 --- a/src/caffe/test/test_blob.cpp +++ b/src/caffe/test/test_blob.cpp @@ -1,8 +1,8 @@ // Copyright 2013 Yangqing Jia #include -#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/common.hpp" #include "caffe/blob.hpp" @@ -17,7 +17,7 @@ class BlobSimpleTest : public ::testing::Test { protected: BlobSimpleTest() : blob_(new Blob()), - blob_preshaped_(new Blob(2, 3, 4, 5)) {}; + blob_preshaped_(new Blob(2, 3, 4, 5)) {} virtual ~BlobSimpleTest() { delete blob_; delete blob_preshaped_; } Blob* const blob_; Blob* const blob_preshaped_; @@ -57,4 +57,4 @@ TYPED_TEST(BlobSimpleTest, TestReshape) { EXPECT_EQ(this->blob_->count(), 120); } -} +} // namespace caffe diff --git a/src/caffe/test/test_caffe_main.hpp b/src/caffe/test/test_caffe_main.hpp index a8c16573c79..01cb0c815eb 100644 --- a/src/caffe/test/test_caffe_main.hpp +++ b/src/caffe/test/test_caffe_main.hpp @@ -11,8 +11,9 @@ #include #include -#include +using std::cout; +using std::endl; namespace caffe { @@ -20,8 +21,7 @@ cudaDeviceProp CAFFE_TEST_CUDA_PROP; } // namespace caffe -using namespace caffe; -using namespace std; +using caffe::CAFFE_TEST_CUDA_PROP; int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/src/caffe/test/test_common.cpp b/src/caffe/test/test_common.cpp index 3afd6d09af5..8b521cc7ea3 100644 --- a/src/caffe/test/test_common.cpp +++ b/src/caffe/test/test_common.cpp @@ -1,8 +1,8 @@ // Copyright 2013 Yangqing Jia #include -#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/common.hpp" #include "caffe/syncedmem.hpp" @@ -40,10 +40,10 @@ TEST_F(CommonTest, TestRandSeedCPU) { SyncedMemory data_b(10 * sizeof(int)); Caffe::set_random_seed(1701); viRngBernoulli(VSL_RNG_METHOD_BERNOULLI_ICDF, Caffe::vsl_stream(), - 10, (int*)data_a.mutable_cpu_data(), 0.5); + 10, reinterpret_cast(data_a.mutable_cpu_data()), 0.5); Caffe::set_random_seed(1701); viRngBernoulli(VSL_RNG_METHOD_BERNOULLI_ICDF, Caffe::vsl_stream(), - 10, (int*)data_b.mutable_cpu_data(), 0.5); + 10, reinterpret_cast(data_b.mutable_cpu_data()), 0.5); for (int i = 0; i < 10; ++i) { EXPECT_EQ(((const int*)(data_a.cpu_data()))[i], ((const int*)(data_b.cpu_data()))[i]); @@ -56,10 +56,10 @@ TEST_F(CommonTest, TestRandSeedGPU) { SyncedMemory data_b(10 * sizeof(unsigned int)); Caffe::set_random_seed(1701); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), - (unsigned int*)data_a.mutable_gpu_data(), 10)); + reinterpret_cast(data_a.mutable_gpu_data()), 10)); Caffe::set_random_seed(1701); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), - (unsigned int*)data_b.mutable_gpu_data(), 10)); + reinterpret_cast(data_b.mutable_gpu_data()), 10)); for (int i = 0; i < 10; ++i) { EXPECT_EQ(((const unsigned int*)(data_a.cpu_data()))[i], ((const unsigned int*)(data_b.cpu_data()))[i]); diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index ebd3cf45810..9f47e6d42fe 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -21,7 +22,7 @@ class ConvolutionLayerTest : public ::testing::Test { protected: ConvolutionLayerTest() : blob_bottom_(new Blob()), - blob_top_(new Blob()) {}; + blob_top_(new Blob()) {} virtual void SetUp() { blob_bottom_->Reshape(2, 3, 6, 5); // fill the values @@ -31,7 +32,7 @@ class ConvolutionLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~ConvolutionLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; @@ -174,7 +175,8 @@ TYPED_TEST(ConvolutionLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(ConvolutionLayerTest, TestCPUGradientGroup) { @@ -188,7 +190,8 @@ TYPED_TEST(ConvolutionLayerTest, TestCPUGradientGroup) { Caffe::set_mode(Caffe::CPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(ConvolutionLayerTest, TestGPUGradient) { @@ -201,7 +204,8 @@ TYPED_TEST(ConvolutionLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(ConvolutionLayerTest, TestGPUGradientGroup) { @@ -215,7 +219,8 @@ TYPED_TEST(ConvolutionLayerTest, TestGPUGradientGroup) { Caffe::set_mode(Caffe::GPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_data_layer.cpp b/src/caffe/test/test_data_layer.cpp index 719c50eb058..35c34395ee7 100644 --- a/src/caffe/test/test_data_layer.cpp +++ b/src/caffe/test/test_data_layer.cpp @@ -1,10 +1,10 @@ // Copyright 2013 Yangqing Jia -#include -#include - #include +#include +#include "cuda_runtime.h" +#include "leveldb/db.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -14,6 +14,7 @@ #include "caffe/test/test_caffe_main.hpp" using std::string; +using std::stringstream; namespace caffe { @@ -25,12 +26,12 @@ class DataLayerTest : public ::testing::Test { DataLayerTest() : blob_top_data_(new Blob()), blob_top_label_(new Blob()), - filename(NULL) {}; + filename(NULL) {} virtual void SetUp() { blob_top_vec_.push_back(blob_top_data_); blob_top_vec_.push_back(blob_top_label_); // Create the leveldb - filename = tmpnam(NULL); // get temp name + filename = tmpnam(NULL); // get temp name LOG(INFO) << "Using temporary leveldb " << filename; leveldb::DB* db; leveldb::Options options; @@ -53,7 +54,7 @@ class DataLayerTest : public ::testing::Test { db->Put(leveldb::WriteOptions(), ss.str(), datum.SerializeAsString()); } delete db; - }; + } virtual ~DataLayerTest() { delete blob_top_data_; delete blob_top_label_; } @@ -112,4 +113,4 @@ TYPED_TEST(DataLayerTest, TestRead) { } } -} +} // namespace caffe diff --git a/src/caffe/test/test_euclidean_loss_layer.cpp b/src/caffe/test/test_euclidean_loss_layer.cpp index 82ea682fcc0..121929f8f7b 100644 --- a/src/caffe/test/test_euclidean_loss_layer.cpp +++ b/src/caffe/test/test_euclidean_loss_layer.cpp @@ -3,8 +3,9 @@ #include #include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -55,4 +56,4 @@ TYPED_TEST(EuclideanLossLayerTest, TestGradientCPU) { this->blob_top_vec_, 0, -1, -1); } -} +} // namespace caffe diff --git a/src/caffe/test/test_filler.cpp b/src/caffe/test/test_filler.cpp index 7738ce4570a..c4388c2752f 100644 --- a/src/caffe/test/test_filler.cpp +++ b/src/caffe/test/test_filler.cpp @@ -1,8 +1,8 @@ // Copyright 2013 Yangqing Jia #include -#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/filler.hpp" @@ -21,7 +21,7 @@ class ConstantFillerTest : public ::testing::Test { filler_param_.set_value(10.); filler_.reset(new ConstantFiller(filler_param_)); filler_->Fill(blob_); - }; + } virtual ~ConstantFillerTest() { delete blob_; } Blob* const blob_; FillerParameter filler_param_; @@ -50,7 +50,7 @@ class UniformFillerTest : public ::testing::Test { filler_param_.set_max(2.); filler_.reset(new UniformFiller(filler_param_)); filler_->Fill(blob_); - }; + } virtual ~UniformFillerTest() { delete blob_; } Blob* const blob_; FillerParameter filler_param_; @@ -77,7 +77,7 @@ class PositiveUnitballFillerTest : public ::testing::Test { filler_param_() { filler_.reset(new PositiveUnitballFiller(filler_param_)); filler_->Fill(blob_); - }; + } virtual ~PositiveUnitballFillerTest() { delete blob_; } Blob* const blob_; FillerParameter filler_param_; @@ -116,7 +116,7 @@ class GaussianFillerTest : public ::testing::Test { filler_param_.set_std(0.1); filler_.reset(new GaussianFiller(filler_param_)); filler_->Fill(blob_); - }; + } virtual ~GaussianFillerTest() { delete blob_; } Blob* const blob_; FillerParameter filler_param_; @@ -146,4 +146,4 @@ TYPED_TEST(GaussianFillerTest, TestFill) { EXPECT_LE(var, target_var * 5.); } -} +} // namespace caffe diff --git a/src/caffe/test/test_flatten_layer.cpp b/src/caffe/test/test_flatten_layer.cpp index 805fd72eb5b..03dff36d5a5 100644 --- a/src/caffe/test/test_flatten_layer.cpp +++ b/src/caffe/test/test_flatten_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -28,7 +29,7 @@ class FlattenLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~FlattenLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -80,7 +81,8 @@ TYPED_TEST(FlattenLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); FlattenLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(FlattenLayerTest, TestGPUGradient) { @@ -88,8 +90,9 @@ TYPED_TEST(FlattenLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); FlattenLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index dc6445d6106..842d3a74c1e 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -28,7 +29,7 @@ class Im2colLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~Im2colLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -88,7 +89,8 @@ TYPED_TEST(Im2colLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(Im2colLayerTest, TestGPUGradient) { @@ -98,8 +100,9 @@ TYPED_TEST(Im2colLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_innerproduct_layer.cpp b/src/caffe/test/test_innerproduct_layer.cpp index 0e2b612f722..acb4c767223 100644 --- a/src/caffe/test/test_innerproduct_layer.cpp +++ b/src/caffe/test/test_innerproduct_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -28,7 +29,7 @@ class InnerProductLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~InnerProductLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -43,7 +44,7 @@ TYPED_TEST(InnerProductLayerTest, TestSetUp) { LayerParameter layer_param; layer_param.set_num_output(10); shared_ptr > layer( - new InnerProductLayer(layer_param)); + new InnerProductLayer(layer_param)); layer->SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); EXPECT_EQ(this->blob_top_->num(), 2); EXPECT_EQ(this->blob_top_->height(), 1); @@ -60,37 +61,37 @@ TYPED_TEST(InnerProductLayerTest, TestCPU) { layer_param.mutable_bias_filler()->set_min(1); layer_param.mutable_bias_filler()->set_max(2); shared_ptr > layer( - new InnerProductLayer(layer_param)); + new InnerProductLayer(layer_param)); layer->SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); layer->Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); const TypeParam* data = this->blob_top_->cpu_data(); const int count = this->blob_top_->count(); for (int i = 0; i < count; ++i) { - EXPECT_GE(data[i], 1.); + EXPECT_GE(data[i], 1.); } } TYPED_TEST(InnerProductLayerTest, TestGPU) { - if (sizeof(TypeParam) == 4 || CAFFE_TEST_CUDA_PROP.major >= 2) { - LayerParameter layer_param; - Caffe::set_mode(Caffe::GPU); - layer_param.set_num_output(10); - layer_param.mutable_weight_filler()->set_type("uniform"); - layer_param.mutable_bias_filler()->set_type("uniform"); - layer_param.mutable_bias_filler()->set_min(1); - layer_param.mutable_bias_filler()->set_max(2); - shared_ptr > layer( - new InnerProductLayer(layer_param)); - layer->SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); - layer->Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); - const TypeParam* data = this->blob_top_->cpu_data(); - const int count = this->blob_top_->count(); - for (int i = 0; i < count; ++i) { - EXPECT_GE(data[i], 1.); - } - } else { - LOG(ERROR) << "Skipping test due to old architecture."; - } + if (sizeof(TypeParam) == 4 || CAFFE_TEST_CUDA_PROP.major >= 2) { + LayerParameter layer_param; + Caffe::set_mode(Caffe::GPU); + layer_param.set_num_output(10); + layer_param.mutable_weight_filler()->set_type("uniform"); + layer_param.mutable_bias_filler()->set_type("uniform"); + layer_param.mutable_bias_filler()->set_min(1); + layer_param.mutable_bias_filler()->set_max(2); + shared_ptr > layer( + new InnerProductLayer(layer_param)); + layer->SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); + layer->Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); + const TypeParam* data = this->blob_top_->cpu_data(); + const int count = this->blob_top_->count(); + for (int i = 0; i < count; ++i) { + EXPECT_GE(data[i], 1.); + } + } else { + LOG(ERROR) << "Skipping test due to old architecture."; + } } TYPED_TEST(InnerProductLayerTest, TestCPUGradient) { @@ -103,7 +104,8 @@ TYPED_TEST(InnerProductLayerTest, TestCPUGradient) { layer_param.mutable_bias_filler()->set_max(2); InnerProductLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(InnerProductLayerTest, TestGPUGradient) { @@ -121,4 +123,4 @@ TYPED_TEST(InnerProductLayerTest, TestGPUGradient) { } } -} +} // namespace caffe diff --git a/src/caffe/test/test_lrn_layer.cpp b/src/caffe/test/test_lrn_layer.cpp index 757bac33073..6c778df9fdd 100644 --- a/src/caffe/test/test_lrn_layer.cpp +++ b/src/caffe/test/test_lrn_layer.cpp @@ -2,9 +2,9 @@ #include #include -#include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -26,7 +26,7 @@ class LRNLayerTest : public ::testing::Test { protected: LRNLayerTest() : blob_bottom_(new Blob()), - blob_top_(new Blob()) {}; + blob_top_(new Blob()) {} virtual void SetUp() { Caffe::set_random_seed(1701); blob_bottom_->Reshape(2, 7, 3, 3); @@ -36,7 +36,7 @@ class LRNLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~LRNLayerTest() { delete blob_bottom_; delete blob_top_; } void ReferenceLRNForward(const Blob& blob_bottom, const LayerParameter& layer_param, Blob* blob_top); @@ -135,10 +135,12 @@ TYPED_TEST(LRNLayerTest, TestCPUGradient) { this->blob_top_->mutable_cpu_diff()[i] = 1.; } layer.Backward(this->blob_top_vec_, true, &(this->blob_bottom_vec_)); - //for (int i = 0; i < this->blob_bottom_->count(); ++i) { - // std::cout << "CPU diff " << this->blob_bottom_->cpu_diff()[i] << std::endl; - //} - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + // for (int i = 0; i < this->blob_bottom_->count(); ++i) { + // std::cout << "CPU diff " << this->blob_bottom_->cpu_diff()[i] + // << std::endl; + // } + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(LRNLayerTest, TestGPUGradient) { @@ -152,10 +154,12 @@ TYPED_TEST(LRNLayerTest, TestGPUGradient) { this->blob_top_->mutable_cpu_diff()[i] = 1.; } layer.Backward(this->blob_top_vec_, true, &(this->blob_bottom_vec_)); - //for (int i = 0; i < this->blob_bottom_->count(); ++i) { - // std::cout << "GPU diff " << this->blob_bottom_->cpu_diff()[i] << std::endl; - //} - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + // for (int i = 0; i < this->blob_bottom_->count(); ++i) { + // std::cout << "GPU diff " << this->blob_bottom_->cpu_diff()[i] + // << std::endl; + // } + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp index 5595c84fea3..835d1b2035d 100644 --- a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp +++ b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -3,8 +3,9 @@ #include #include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -30,6 +31,7 @@ class MultinomialLogisticLossLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_data_); blob_bottom_vec_.push_back(blob_bottom_data_); for (int i = 0; i < blob_bottom_label_->count(); ++i) { + // NOLINT_NEXTLINE(runtime/threadsafe_fn) blob_bottom_label_->mutable_cpu_data()[i] = rand() % 5; } blob_bottom_vec_.push_back(blob_bottom_label_); @@ -58,4 +60,4 @@ TYPED_TEST(MultinomialLogisticLossLayerTest, TestGradientCPU) { this->blob_top_vec_, 0, -1, -1); } -} +} // namespace caffe diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index 8674519fa4d..9a7ff5c8619 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -28,7 +29,7 @@ class NeuronLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~NeuronLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -60,7 +61,8 @@ TYPED_TEST(NeuronLayerTest, TestReLUGradientCPU) { Caffe::set_mode(Caffe::CPU); ReLULayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -85,7 +87,8 @@ TYPED_TEST(NeuronLayerTest, TestReLUGradientGPU) { Caffe::set_mode(Caffe::GPU); ReLULayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -100,7 +103,7 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidCPU) { const TypeParam* top_data = this->blob_top_->cpu_data(); for (int i = 0; i < this->blob_bottom_->count(); ++i) { EXPECT_FLOAT_EQ(top_data[i], 1. / (1 + exp(-bottom_data[i]))); - //check that we squashed the value between 0 and 1 + // check that we squashed the value between 0 and 1 EXPECT_GE(top_data[i], 0.); EXPECT_LE(top_data[i], 1.); } @@ -112,7 +115,8 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidGradientCPU) { Caffe::set_mode(Caffe::CPU); SigmoidLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(NeuronLayerTest, TestSigmoidGPU) { @@ -126,7 +130,7 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidGPU) { const TypeParam* top_data = this->blob_top_->cpu_data(); for (int i = 0; i < this->blob_bottom_->count(); ++i) { EXPECT_FLOAT_EQ(top_data[i], 1. / (1 + exp(-bottom_data[i]))); - //check that we squashed the value between 0 and 1 + // check that we squashed the value between 0 and 1 EXPECT_GE(top_data[i], 0.); EXPECT_LE(top_data[i], 1.); } @@ -138,7 +142,8 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidGradientGPU) { Caffe::set_mode(Caffe::GPU); SigmoidLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -167,7 +172,8 @@ TYPED_TEST(NeuronLayerTest, TestDropoutGradientCPU) { Caffe::set_mode(Caffe::CPU); DropoutLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -264,7 +270,8 @@ TYPED_TEST(NeuronLayerTest, TestBNLLGradientCPU) { Caffe::set_mode(Caffe::CPU); BNLLLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -289,10 +296,9 @@ TYPED_TEST(NeuronLayerTest, TestBNLLGradientGPU) { Caffe::set_mode(Caffe::GPU); BNLLLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } - - -} +} // namespace caffe diff --git a/src/caffe/test/test_platform.cpp b/src/caffe/test/test_platform.cpp index ea3cee2f69f..bd2dcd3363a 100644 --- a/src/caffe/test/test_platform.cpp +++ b/src/caffe/test/test_platform.cpp @@ -2,11 +2,10 @@ #include #include -#include -#include -#include -#include +#include "cuda_runtime.h" +#include "glog/logging.h" +#include "gtest/gtest.h" #include "caffe/test/test_caffe_main.hpp" namespace caffe { @@ -19,22 +18,35 @@ TEST_F(PlatformTest, TestInitialization) { printf("Major revision number: %d\n", CAFFE_TEST_CUDA_PROP.major); printf("Minor revision number: %d\n", CAFFE_TEST_CUDA_PROP.minor); printf("Name: %s\n", CAFFE_TEST_CUDA_PROP.name); - printf("Total global memory: %lu\n", CAFFE_TEST_CUDA_PROP.totalGlobalMem); - printf("Total shared memory per block: %lu\n", CAFFE_TEST_CUDA_PROP.sharedMemPerBlock); - printf("Total registers per block: %d\n", CAFFE_TEST_CUDA_PROP.regsPerBlock); - printf("Warp size: %d\n", CAFFE_TEST_CUDA_PROP.warpSize); - printf("Maximum memory pitch: %lu\n", CAFFE_TEST_CUDA_PROP.memPitch); - printf("Maximum threads per block: %d\n", CAFFE_TEST_CUDA_PROP.maxThreadsPerBlock); + printf("Total global memory: %lu\n", + CAFFE_TEST_CUDA_PROP.totalGlobalMem); + printf("Total shared memory per block: %lu\n", + CAFFE_TEST_CUDA_PROP.sharedMemPerBlock); + printf("Total registers per block: %d\n", + CAFFE_TEST_CUDA_PROP.regsPerBlock); + printf("Warp size: %d\n", + CAFFE_TEST_CUDA_PROP.warpSize); + printf("Maximum memory pitch: %lu\n", + CAFFE_TEST_CUDA_PROP.memPitch); + printf("Maximum threads per block: %d\n", + CAFFE_TEST_CUDA_PROP.maxThreadsPerBlock); for (int i = 0; i < 3; ++i) - printf("Maximum dimension %d of block: %d\n", i, CAFFE_TEST_CUDA_PROP.maxThreadsDim[i]); + printf("Maximum dimension %d of block: %d\n", i, + CAFFE_TEST_CUDA_PROP.maxThreadsDim[i]); for (int i = 0; i < 3; ++i) - printf("Maximum dimension %d of grid: %d\n", i, CAFFE_TEST_CUDA_PROP.maxGridSize[i]); - printf("Clock rate: %d\n", CAFFE_TEST_CUDA_PROP.clockRate); - printf("Total constant memory: %lu\n", CAFFE_TEST_CUDA_PROP.totalConstMem); - printf("Texture alignment: %lu\n", CAFFE_TEST_CUDA_PROP.textureAlignment); - printf("Concurrent copy and execution: %s\n", (CAFFE_TEST_CUDA_PROP.deviceOverlap ? "Yes" : "No")); - printf("Number of multiprocessors: %d\n", CAFFE_TEST_CUDA_PROP.multiProcessorCount); - printf("Kernel execution timeout: %s\n", (CAFFE_TEST_CUDA_PROP.kernelExecTimeoutEnabled ? "Yes" : "No")); + printf("Maximum dimension %d of grid: %d\n", i, + CAFFE_TEST_CUDA_PROP.maxGridSize[i]); + printf("Clock rate: %d\n", CAFFE_TEST_CUDA_PROP.clockRate); + printf("Total constant memory: %lu\n", + CAFFE_TEST_CUDA_PROP.totalConstMem); + printf("Texture alignment: %lu\n", + CAFFE_TEST_CUDA_PROP.textureAlignment); + printf("Concurrent copy and execution: %s\n", + (CAFFE_TEST_CUDA_PROP.deviceOverlap ? "Yes" : "No")); + printf("Number of multiprocessors: %d\n", + CAFFE_TEST_CUDA_PROP.multiProcessorCount); + printf("Kernel execution timeout: %s\n", + (CAFFE_TEST_CUDA_PROP.kernelExecTimeoutEnabled ? "Yes" : "No")); EXPECT_TRUE(true); } diff --git a/src/caffe/test/test_pooling_layer.cpp b/src/caffe/test/test_pooling_layer.cpp index 67cae13100c..c08a7c08c37 100644 --- a/src/caffe/test/test_pooling_layer.cpp +++ b/src/caffe/test/test_pooling_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -21,7 +22,7 @@ class PoolingLayerTest : public ::testing::Test { protected: PoolingLayerTest() : blob_bottom_(new Blob()), - blob_top_(new Blob()) {}; + blob_top_(new Blob()) {} virtual void SetUp() { Caffe::set_random_seed(1701); blob_bottom_->Reshape(2, 3, 6, 5); @@ -31,7 +32,7 @@ class PoolingLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~PoolingLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -89,7 +90,8 @@ TYPED_TEST(PoolingLayerTest, TestCPUGradientMax) { Caffe::set_mode(Caffe::CPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-4, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(PoolingLayerTest, TestGPUGradientMax) { @@ -100,7 +102,8 @@ TYPED_TEST(PoolingLayerTest, TestGPUGradientMax) { Caffe::set_mode(Caffe::GPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-4, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -112,7 +115,8 @@ TYPED_TEST(PoolingLayerTest, TestCPUGradientAve) { Caffe::set_mode(Caffe::CPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } @@ -124,8 +128,9 @@ TYPED_TEST(PoolingLayerTest, TestGPUGradientAve) { Caffe::set_mode(Caffe::GPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_protobuf.cpp b/src/caffe/test/test_protobuf.cpp index 11cdcf69048..d8d511dd3bb 100644 --- a/src/caffe/test/test_protobuf.cpp +++ b/src/caffe/test/test_protobuf.cpp @@ -4,7 +4,7 @@ // format. Nothing special here and no actual code is being tested. #include -#include +#include "google/protobuf/text_format.h" #include "gtest/gtest.h" #include "caffe/test/test_caffe_main.hpp" #include "caffe/proto/caffe.pb.h" @@ -26,4 +26,4 @@ TEST_F(ProtoTest, TestSerialization) { EXPECT_TRUE(true); } -} +} // namespace caffe diff --git a/src/caffe/test/test_softmax_layer.cpp b/src/caffe/test/test_softmax_layer.cpp index fc1c1b70163..d27f40cfd10 100644 --- a/src/caffe/test/test_softmax_layer.cpp +++ b/src/caffe/test/test_softmax_layer.cpp @@ -2,8 +2,9 @@ #include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -29,7 +30,7 @@ class SoftmaxLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~SoftmaxLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -77,7 +78,8 @@ TYPED_TEST(SoftmaxLayerTest, TestGradientCPU) { Caffe::set_mode(Caffe::CPU); SoftmaxLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_softmax_with_loss_layer.cpp b/src/caffe/test/test_softmax_with_loss_layer.cpp index 328f64b976b..bf96d99c01d 100644 --- a/src/caffe/test/test_softmax_with_loss_layer.cpp +++ b/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -3,8 +3,9 @@ #include #include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -31,6 +32,7 @@ class SoftmaxWithLossLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_data_); blob_bottom_vec_.push_back(blob_bottom_data_); for (int i = 0; i < blob_bottom_label_->count(); ++i) { + // NOLINT_NEXTLINE(runtime/threadsafe_fn) blob_bottom_label_->mutable_cpu_data()[i] = rand() % 5; } blob_bottom_vec_.push_back(blob_bottom_label_); @@ -69,4 +71,4 @@ TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientGPU) { this->blob_top_vec_, 0, -1, -1); } -} +} // namespace caffe diff --git a/src/caffe/test/test_split_layer.cpp b/src/caffe/test/test_split_layer.cpp index 3311c9ac76c..8c1780c376c 100644 --- a/src/caffe/test/test_split_layer.cpp +++ b/src/caffe/test/test_split_layer.cpp @@ -1,9 +1,11 @@ // Copyright 2014 Jeff Donahue #include -#include -#include +#include +#include +#include "cuda_runtime.h" +#include "google/protobuf/text_format.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -32,7 +34,7 @@ class SplitLayerTest : public ::testing::Test { blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_a_); blob_top_vec_.push_back(blob_top_b_); - }; + } virtual ~SplitLayerTest() { delete blob_bottom_; delete blob_top_a_; @@ -156,7 +158,6 @@ TYPED_TEST(SplitLayerTest, TestGPUGradientInPlace) { template class SplitLayerInsertionTest : public ::testing::Test { protected: - SplitLayerInsertionTest() { }; void RunInsertionTest( const string& input_param_string, const string& output_param_string) { // Test that insert_splits called on the proto specified by @@ -1125,4 +1126,4 @@ TYPED_TEST(SplitLayerInsertionTest, TestWithInPlace) { this->RunInsertionTest(input_proto, expected_output_proto); } -} +} // namespace caffe diff --git a/src/caffe/test/test_stochastic_pooing.cpp b/src/caffe/test/test_stochastic_pooling.cpp similarity index 95% rename from src/caffe/test/test_stochastic_pooing.cpp rename to src/caffe/test/test_stochastic_pooling.cpp index e2b60eeec34..7829b943f9a 100644 --- a/src/caffe/test/test_stochastic_pooing.cpp +++ b/src/caffe/test/test_stochastic_pooling.cpp @@ -1,8 +1,10 @@ // Copyright 2013 Yangqing Jia +#include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -12,6 +14,8 @@ #include "caffe/test/test_caffe_main.hpp" +using std::min; + namespace caffe { extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; @@ -21,7 +25,7 @@ class StochasticPoolingLayerTest : public ::testing::Test { protected: StochasticPoolingLayerTest() : blob_bottom_(new Blob()), - blob_top_(new Blob()) {}; + blob_top_(new Blob()) {} virtual void SetUp() { Caffe::set_random_seed(1701); blob_bottom_->Reshape(2, 3, 6, 5); @@ -33,7 +37,7 @@ class StochasticPoolingLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~StochasticPoolingLayerTest() { delete blob_bottom_; delete blob_top_; @@ -89,7 +93,8 @@ TYPED_TEST(StochasticPoolingLayerTest, TestStochasticGPU) { bool has_equal = false; for (int h = hstart; h < hend; ++h) { for (int w = wstart; w < wend; ++w) { - has_equal |= (pooled == bottom_data[this->blob_bottom_->offset(n, c, h, w)]); + has_equal |= (pooled == bottom_data[this->blob_bottom_-> + offset(n, c, h, w)]); } } EXPECT_TRUE(has_equal); @@ -130,7 +135,8 @@ TYPED_TEST(StochasticPoolingLayerTest, TestStochasticGPUTestPhase) { bool smaller_than_max = false; for (int h = hstart; h < hend; ++h) { for (int w = wstart; w < wend; ++w) { - smaller_than_max |= (pooled <= bottom_data[this->blob_bottom_->offset(n, c, h, w)]); + smaller_than_max |= (pooled <= bottom_data[this->blob_bottom_-> + offset(n, c, h, w)]); } } EXPECT_TRUE(smaller_than_max); @@ -159,4 +165,4 @@ TYPED_TEST(StochasticPoolingLayerTest, TestGradientGPU) { -} +} // namespace caffe diff --git a/src/caffe/test/test_syncedmem.cpp b/src/caffe/test/test_syncedmem.cpp index b8347107b73..161ca458ab9 100644 --- a/src/caffe/test/test_syncedmem.cpp +++ b/src/caffe/test/test_syncedmem.cpp @@ -1,8 +1,9 @@ // Copyright 2013 Yangqing Jia #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/common.hpp" #include "caffe/syncedmem.hpp" @@ -36,29 +37,31 @@ TEST_F(SyncedMemoryTest, TestCPUWrite) { EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); memset(cpu_data, 1, mem.size()); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)cpu_data)[i], 1); + EXPECT_EQ((reinterpret_cast(cpu_data))[i], 1); } const void* gpu_data = mem.gpu_data(); EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); // check if values are the same char* recovered_value = new char[10]; - cudaMemcpy((void*)recovered_value, gpu_data, 10, cudaMemcpyDeviceToHost); + cudaMemcpy(reinterpret_cast(recovered_value), gpu_data, 10, + cudaMemcpyDeviceToHost); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)recovered_value)[i], 1); + EXPECT_EQ((reinterpret_cast(recovered_value))[i], 1); } // do another round cpu_data = mem.mutable_cpu_data(); EXPECT_EQ(mem.head(), SyncedMemory::HEAD_AT_CPU); memset(cpu_data, 2, mem.size()); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)cpu_data)[i], 2); + EXPECT_EQ((reinterpret_cast(cpu_data))[i], 2); } gpu_data = mem.gpu_data(); EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); // check if values are the same - cudaMemcpy((void*)recovered_value, gpu_data, 10, cudaMemcpyDeviceToHost); + cudaMemcpy(reinterpret_cast(recovered_value), gpu_data, 10, + cudaMemcpyDeviceToHost); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)recovered_value)[i], 2); + EXPECT_EQ((reinterpret_cast(recovered_value))[i], 2); } delete[] recovered_value; } @@ -70,7 +73,7 @@ TEST_F(SyncedMemoryTest, TestGPUWrite) { CUDA_CHECK(cudaMemset(gpu_data, 1, mem.size())); const void* cpu_data = mem.cpu_data(); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)cpu_data)[i], 1); + EXPECT_EQ((reinterpret_cast(cpu_data))[i], 1); } EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); @@ -79,9 +82,9 @@ TEST_F(SyncedMemoryTest, TestGPUWrite) { CUDA_CHECK(cudaMemset(gpu_data, 2, mem.size())); cpu_data = mem.cpu_data(); for (int i = 0; i < mem.size(); ++i) { - EXPECT_EQ(((char*)cpu_data)[i], 2); + EXPECT_EQ((reinterpret_cast(cpu_data))[i], 2); } EXPECT_EQ(mem.head(), SyncedMemory::SYNCED); } -} +} // namespace caffe diff --git a/src/caffe/test/test_tanh_layer.cpp b/src/caffe/test/test_tanh_layer.cpp index a4226a28b22..9c80ac24cde 100644 --- a/src/caffe/test/test_tanh_layer.cpp +++ b/src/caffe/test/test_tanh_layer.cpp @@ -1,10 +1,11 @@ // Copyright 2014 Aravindh Mahendran -// Adapted from other test files +// Adapted from other test files #include #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -30,7 +31,7 @@ class TanHLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_); blob_bottom_vec_.push_back(blob_bottom_); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~TanHLayerTest() { delete blob_bottom_; delete blob_top_; } Blob* const blob_bottom_; Blob* const blob_top_; @@ -52,10 +53,12 @@ TYPED_TEST(TanHLayerTest, TestForwardCPU) { for (int j = 0; j < this->blob_bottom_->channels(); ++j) { for (int k = 0; k < this->blob_bottom_->height(); ++k) { for (int l = 0; l < this->blob_bottom_->width(); ++l) { - EXPECT_GE(this->blob_top_->data_at(i,j,k,l) + 1e-4, - (exp(2*this->blob_bottom_->data_at(i,j,k,l))-1)/(exp(2*this->blob_bottom_->data_at(i,j,k,l))+1)); - EXPECT_LE(this->blob_top_->data_at(i,j,k,l) - 1e-4, - (exp(2*this->blob_bottom_->data_at(i,j,k,l))-1)/(exp(2*this->blob_bottom_->data_at(i,j,k,l))+1)); + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); } } } @@ -67,7 +70,8 @@ TYPED_TEST(TanHLayerTest, TestGradientCPU) { Caffe::set_mode(Caffe::CPU); TanHLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } TYPED_TEST(TanHLayerTest, TestForwardGPU) { @@ -81,10 +85,12 @@ TYPED_TEST(TanHLayerTest, TestForwardGPU) { for (int j = 0; j < this->blob_bottom_->channels(); ++j) { for (int k = 0; k < this->blob_bottom_->height(); ++k) { for (int l = 0; l < this->blob_bottom_->width(); ++l) { - EXPECT_GE(this->blob_top_->data_at(i,j,k,l) + 1e-4, - (exp(2*this->blob_bottom_->data_at(i,j,k,l))-1)/(exp(2*this->blob_bottom_->data_at(i,j,k,l))+1)); - EXPECT_LE(this->blob_top_->data_at(i,j,k,l) - 1e-4, - (exp(2*this->blob_bottom_->data_at(i,j,k,l))-1)/(exp(2*this->blob_bottom_->data_at(i,j,k,l))+1)); + EXPECT_GE(this->blob_top_->data_at(i, j, k, l) + 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); + EXPECT_LE(this->blob_top_->data_at(i, j, k, l) - 1e-4, + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) - 1) / + (exp(2*this->blob_bottom_->data_at(i, j, k, l)) + 1)); } } } @@ -96,7 +102,8 @@ TYPED_TEST(TanHLayerTest, TestGradientGPU) { Caffe::set_mode(Caffe::GPU); TanHLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, + this->blob_top_vec_); } -} +} // namespace caffe diff --git a/src/caffe/test/test_util_blas.cpp b/src/caffe/test/test_util_blas.cpp index 3fed148c0b4..3f3ff8b3a69 100644 --- a/src/caffe/test/test_util_blas.cpp +++ b/src/caffe/test/test_util_blas.cpp @@ -1,9 +1,10 @@ // Copyright 2013 Yangqing Jia #include -#include -#include -#include + +#include "cuda_runtime.h" +#include "mkl.h" +#include "cublas_v2.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" @@ -23,18 +24,18 @@ class GemmTest : public ::testing::Test {}; TYPED_TEST_CASE(GemmTest, Dtypes); TYPED_TEST(GemmTest, TestGemm) { - Blob A(1,1,2,3); - Blob B(1,1,3,4); - Blob C(1,1,2,4); + Blob A(1, 1, 2, 3); + Blob B(1, 1, 3, 4); + Blob C(1, 1, 2, 4); TypeParam data[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; TypeParam A_reshape_data[6] = {1, 4, 2, 5, 3, 6}; - TypeParam B_reshape_data[12] = {1,5,9,2,6,10,3,7,11,4,8,12}; - TypeParam result[8] = {38,44,50,56,83,98,113,128}; + TypeParam B_reshape_data[12] = {1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12}; + TypeParam result[8] = {38, 44, 50, 56, 83, 98, 113, 128}; memcpy(A.mutable_cpu_data(), data, 6 * sizeof(TypeParam)); memcpy(B.mutable_cpu_data(), data, 12 * sizeof(TypeParam)); if (sizeof(TypeParam) == 4 || CAFFE_TEST_CUDA_PROP.major >= 2) { - //[1,2,3; 4 5 6] * [1,2,3,4; 5,6,7,8; 9,10,11,12]; + // [1, 2, 3; 4 5 6] * [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12]; caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, 2, 4, 3, 1., A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); for (int i = 0; i < 8; ++i) { @@ -47,7 +48,7 @@ TYPED_TEST(GemmTest, TestGemm) { } // Test when we have a transposed A - A.Reshape(1,1,3,2); + A.Reshape(1, 1, 3, 2); memcpy(A.mutable_cpu_data(), A_reshape_data, 6 * sizeof(TypeParam)); caffe_cpu_gemm(CblasTrans, CblasNoTrans, 2, 4, 3, 1., A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); @@ -61,7 +62,7 @@ TYPED_TEST(GemmTest, TestGemm) { } // Test when we have a transposed A and a transposed B too - B.Reshape(1,1,4,3); + B.Reshape(1, 1, 4, 3); memcpy(B.mutable_cpu_data(), B_reshape_data, 12 * sizeof(TypeParam)); caffe_cpu_gemm(CblasTrans, CblasTrans, 2, 4, 3, 1., A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); @@ -75,7 +76,7 @@ TYPED_TEST(GemmTest, TestGemm) { } // Test when we have a transposed B - A.Reshape(1,1,2,3); + A.Reshape(1, 1, 2, 3); memcpy(A.mutable_cpu_data(), data, 6 * sizeof(TypeParam)); caffe_cpu_gemm(CblasNoTrans, CblasTrans, 2, 4, 3, 1., A.cpu_data(), B.cpu_data(), 0., C.mutable_cpu_data()); @@ -94,9 +95,9 @@ TYPED_TEST(GemmTest, TestGemm) { TYPED_TEST(GemmTest, TestGemv) { - Blob A(1,1,2,3); - Blob x(1,1,1,3); - Blob y(1,1,1,2); + Blob A(1, 1, 2, 3); + Blob x(1, 1, 1, 3); + Blob y(1, 1, 1, 2); TypeParam data[6] = {1, 2, 3, 4, 5, 6}; TypeParam result_2[2] = {14, 32}; TypeParam result_3[3] = {9, 12, 15}; @@ -132,4 +133,4 @@ TYPED_TEST(GemmTest, TestGemv) { } } -} +} // namespace caffe diff --git a/src/caffe/util/im2col.cpp b/src/caffe/util/im2col.cpp index b32f6eeecc8..4ed3af8a062 100644 --- a/src/caffe/util/im2col.cpp +++ b/src/caffe/util/im2col.cpp @@ -10,8 +10,8 @@ namespace caffe { template void im2col_cpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_col) { + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_col) { int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; int channels_col = channels * ksize * ksize; @@ -21,13 +21,13 @@ void im2col_cpu(const Dtype* data_im, const int channels, int c_im = c / ksize / ksize; for (int h = 0; h < height_col; ++h) { for (int w = 0; w < width_col; ++w) { - int h_pad = h * stride - pad + h_offset; - int w_pad = w * stride - pad + w_offset; - if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) - data_col[(c * height_col + h) * width_col + w] = - data_im[(c_im * height + h_pad) * width + w_pad]; - else - data_col[(c * height_col + h) * width_col + w] = 0; + int h_pad = h * stride - pad + h_offset; + int w_pad = w * stride - pad + w_offset; + if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) + data_col[(c * height_col + h) * width_col + w] = + data_im[(c_im * height + h_pad) * width + w_pad]; + else + data_col[(c * height_col + h) * width_col + w] = 0; } } } @@ -35,16 +35,16 @@ void im2col_cpu(const Dtype* data_im, const int channels, // Explicit instantiation template void im2col_cpu(const float* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - float* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, float* data_col); template void im2col_cpu(const double* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - double* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, double* data_col); template void col2im_cpu(const Dtype* data_col, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_im) { + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_im) { memset(data_im, 0, sizeof(Dtype) * height * width * channels); int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; @@ -55,10 +55,11 @@ void col2im_cpu(const Dtype* data_col, const int channels, int c_im = c / ksize / ksize; for (int h = 0; h < height_col; ++h) { for (int w = 0; w < width_col; ++w) { - int h_pad = h * stride - pad + h_offset; - int w_pad = w * stride - pad + w_offset; - if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) - data_im[(c_im * height + h_pad) * width + w_pad] += data_col[(c * height_col + h) * width_col + w]; + int h_pad = h * stride - pad + h_offset; + int w_pad = w * stride - pad + w_offset; + if (h_pad >= 0 && h_pad < height && w_pad >= 0 && w_pad < width) + data_im[(c_im * height + h_pad) * width + w_pad] += + data_col[(c * height_col + h) * width_col + w]; } } } @@ -66,10 +67,10 @@ void col2im_cpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_cpu(const float* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - float* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, float* data_im); template void col2im_cpu(const double* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - double* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, double* data_im); } // namespace caffe diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index 7f1376d6b16..c3c8736420c 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -1,5 +1,6 @@ // Copyright 2013 Yangqing Jia +#include #include #include #include @@ -11,8 +12,9 @@ namespace caffe { template __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, - const int height, const int width, const int ksize, const int pad, - const int stride, const int height_col, const int width_col, Dtype* data_col) { + const int height, const int width, const int ksize, const int pad, + const int stride, const int height_col, const int width_col, + Dtype* data_col) { int index = threadIdx.x + blockIdx.x * blockDim.x; if (index < n) { int w_out = index % width_col; @@ -26,10 +28,11 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, data_im += (channel_in * height + h_in) * width + w_in; for (int i = 0; i < ksize; ++i) { for (int j = 0; j < ksize; ++j) { - int h = h_in + i; - int w = w_in + j; - *data_col = (h >= 0 && w >= 0 && h < width && w < height) ? data_im[i * width + j] : 0; - data_col += height_col * width_col; + int h = h_in + i; + int w = w_in + j; + *data_col = (h >= 0 && w >= 0 && h < width && w < height) ? + data_im[i * width + j] : 0; + data_col += height_col * width_col; } } } @@ -37,32 +40,35 @@ __global__ void im2col_gpu_kernel(const int n, const Dtype* data_im, template void im2col_gpu(const Dtype* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_col) { + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_col) { // We are going to launch channels * height_col * width_col kernels, each // kernel responsible for copying a single-channel grid. int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; int num_kernels = channels * height_col * width_col; - im2col_gpu_kernel<<>>( - num_kernels, data_im, height, width, ksize, pad, stride, height_col, width_col, - data_col); + // NOLINT_NEXTLINE(whitespace/operators) + im2col_gpu_kernel<<>>( + num_kernels, data_im, height, width, ksize, pad, stride, height_col, + width_col, data_col); CUDA_POST_KERNEL_CHECK; } // Explicit instantiation template void im2col_gpu(const float* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - float* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, float* data_col); template void im2col_gpu(const double* data_im, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - double* data_col); + const int height, const int width, const int ksize, const int pad, + const int stride, double* data_col); template __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, - const int height, const int width, const int channels, const int ksize, const int pad, - const int stride, const int height_col, const int width_col, Dtype* data_im) { + const int height, const int width, const int channels, const int ksize, + const int pad, const int stride, const int height_col, const int width_col, + Dtype* data_im) { int index = threadIdx.x + blockIdx.x * blockDim.x; if (index < n) { Dtype val = 0; @@ -98,15 +104,18 @@ __global__ void col2im_gpu_kernel(const int n, const Dtype* data_col, template void col2im_gpu(const Dtype* data_col, const int channels, - const int height, const int width, const int ksize, const int pad, const int stride, - Dtype* data_im) { - //CUDA_CHECK(cudaMemset(data_im, 0, sizeof(Dtype) * height * width * channels)); + const int height, const int width, const int ksize, const int pad, + const int stride, Dtype* data_im) { + // CUDA_CHECK(cudaMemset(data_im, 0, + // sizeof(Dtype) * height * width * channels)); int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; int num_kernels = channels * height * width; // To avoid involving atomic operations, we will launch one kernel per // bottom dimension, and then in the kernel add up the top dimensions. - col2im_gpu_kernel<<>>( + // NOLINT_NEXTLINE(whitespace/operators) + col2im_gpu_kernel<<>>( num_kernels, data_col, height, width, channels, ksize, pad, stride, height_col, width_col, data_im); CUDA_POST_KERNEL_CHECK; @@ -115,11 +124,11 @@ void col2im_gpu(const Dtype* data_col, const int channels, // Explicit instantiation template void col2im_gpu(const float* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - float* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, float* data_im); template void col2im_gpu(const double* data_col, const int channels, - const int height, const int width, const int psize, const int pad, const int stride, - double* data_im); + const int height, const int width, const int psize, const int pad, + const int stride, double* data_im); } // namespace caffe diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 2ed8127d27b..190b0d3cca9 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -12,7 +12,6 @@ #include #include -#include #include #include "caffe/common.hpp" @@ -81,9 +80,6 @@ bool ReadImageToDatum(const string& filename, const int label, if (!cv_img.data) { LOG(ERROR) << "Could not open or find file " << filename; return false; - } - if (height > 0 && width > 0) { - } datum->set_channels(3); datum->set_height(cv_img.rows); @@ -95,7 +91,8 @@ bool ReadImageToDatum(const string& filename, const int label, for (int c = 0; c < 3; ++c) { for (int h = 0; h < cv_img.rows; ++h) { for (int w = 0; w < cv_img.cols; ++w) { - datum_string->push_back(static_cast(cv_img.at(h, w)[c])); + datum_string->push_back( + static_cast(cv_img.at(h, w)[c])); } } } diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index e9305810e81..d063504c996 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -21,6 +21,7 @@ __global__ void mul_kernel(const int n, const Dtype* a, template <> void caffe_gpu_mul(const int N, const float* a, const float* b, float* y) { + // NOLINT_NEXTLINE(whitespace/operators) mul_kernel<<>>( N, a, b, y); } @@ -28,6 +29,7 @@ void caffe_gpu_mul(const int N, const float* a, template <> void caffe_gpu_mul(const int N, const double* a, const double* b, double* y) { + // NOLINT_NEXTLINE(whitespace/operators) mul_kernel<<>>( N, a, b, y); } From e4ff9d08aa7697ed42024686f6c4ce4fe589b9bd Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 15:58:20 -0800 Subject: [PATCH 022/113] make test_gradient_check_util methods use pointers for non-const inputs (also change EXPECT_LT and EXPECT_GT pair to EXPECT_NEAR) --- src/caffe/test/test_convolution_layer.cpp | 16 ++-- src/caffe/test/test_euclidean_loss_layer.cpp | 4 +- src/caffe/test/test_flatten_layer.cpp | 8 +- src/caffe/test/test_gradient_check_util.hpp | 79 +++++++++---------- src/caffe/test/test_im2col_layer.cpp | 8 +- src/caffe/test/test_innerproduct_layer.cpp | 7 +- src/caffe/test/test_lrn_layer.cpp | 8 +- .../test_multinomial_logistic_loss_layer.cpp | 4 +- src/caffe/test/test_neuron_layer.cpp | 31 ++++---- src/caffe/test/test_pooling_layer.cpp | 16 ++-- src/caffe/test/test_softmax_layer.cpp | 4 +- .../test/test_softmax_with_loss_layer.cpp | 8 +- src/caffe/test/test_split_layer.cpp | 16 ++-- src/caffe/test/test_stochastic_pooling.cpp | 3 +- src/caffe/test/test_tanh_layer.cpp | 8 +- 15 files changed, 110 insertions(+), 110 deletions(-) diff --git a/src/caffe/test/test_convolution_layer.cpp b/src/caffe/test/test_convolution_layer.cpp index 9f47e6d42fe..e1a36183b49 100644 --- a/src/caffe/test/test_convolution_layer.cpp +++ b/src/caffe/test/test_convolution_layer.cpp @@ -175,8 +175,8 @@ TYPED_TEST(ConvolutionLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(ConvolutionLayerTest, TestCPUGradientGroup) { @@ -190,8 +190,8 @@ TYPED_TEST(ConvolutionLayerTest, TestCPUGradientGroup) { Caffe::set_mode(Caffe::CPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(ConvolutionLayerTest, TestGPUGradient) { @@ -204,8 +204,8 @@ TYPED_TEST(ConvolutionLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(ConvolutionLayerTest, TestGPUGradientGroup) { @@ -219,8 +219,8 @@ TYPED_TEST(ConvolutionLayerTest, TestGPUGradientGroup) { Caffe::set_mode(Caffe::GPU); ConvolutionLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } } // namespace caffe diff --git a/src/caffe/test/test_euclidean_loss_layer.cpp b/src/caffe/test/test_euclidean_loss_layer.cpp index 121929f8f7b..d408860c3ab 100644 --- a/src/caffe/test/test_euclidean_loss_layer.cpp +++ b/src/caffe/test/test_euclidean_loss_layer.cpp @@ -52,8 +52,8 @@ TYPED_TEST(EuclideanLossLayerTest, TestGradientCPU) { EuclideanLossLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); GradientChecker checker(1e-2, 1e-2, 1701); - checker.CheckGradientSingle(layer, this->blob_bottom_vec_, - this->blob_top_vec_, 0, -1, -1); + checker.CheckGradientSingle(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_), 0, -1, -1); } } // namespace caffe diff --git a/src/caffe/test/test_flatten_layer.cpp b/src/caffe/test/test_flatten_layer.cpp index 03dff36d5a5..41c0453696c 100644 --- a/src/caffe/test/test_flatten_layer.cpp +++ b/src/caffe/test/test_flatten_layer.cpp @@ -81,8 +81,8 @@ TYPED_TEST(FlattenLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); FlattenLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(FlattenLayerTest, TestGPUGradient) { @@ -90,8 +90,8 @@ TYPED_TEST(FlattenLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); FlattenLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_gradient_check_util.hpp b/src/caffe/test/test_gradient_check_util.hpp index d7360085d40..895e9965a9a 100644 --- a/src/caffe/test/test_gradient_check_util.hpp +++ b/src/caffe/test/test_gradient_check_util.hpp @@ -31,27 +31,28 @@ class GradientChecker { // layers. // Note that after the gradient check, we do not guarantee that the data // stored in the layer parameters and the blobs are unchanged. - void CheckGradient(Layer& layer, vector*>& bottom, - vector*>& top, int check_bottom = -1) { - layer.SetUp(bottom, &top); + void CheckGradient(Layer* layer, vector*>* bottom, + vector*>* top, int check_bottom = -1) { + layer->SetUp(*bottom, top); CheckGradientSingle(layer, bottom, top, check_bottom, -1, -1); } - void CheckGradientExhaustive(Layer& layer, - vector*>& bottom, vector*>& top, + void CheckGradientExhaustive(Layer* layer, + vector*>* bottom, vector*>* top, int check_bottom = -1); - void CheckGradientSingle(Layer& layer, vector*>& bottom, - vector*>& top, int check_bottom, int top_id, + void CheckGradientSingle(Layer* layer, vector*>* bottom, + vector*>* top, int check_bottom, int top_id, int top_data_id); // Checks the gradient of a network. This network should not have any data // layers or loss layers, since the function does not explicitly deal with // such cases yet. All input blobs and parameter blobs are going to be // checked, layer-by-layer to avoid numerical problems to accumulate. - void CheckGradientNet(Net& net, vector*>& input); + void CheckGradientNet(const Net& net, + const vector*>& input); protected: - Dtype GetObjAndGradient(vector*>& top, int top_id = -1, + Dtype GetObjAndGradient(vector*>* top, int top_id = -1, int top_data_id = -1); Dtype stepsize_; Dtype threshold_; @@ -65,21 +66,21 @@ class GradientChecker { template -void GradientChecker::CheckGradientSingle(Layer& layer, - vector*>& bottom, vector*>& top, +void GradientChecker::CheckGradientSingle(Layer* layer, + vector*>* bottom, vector*>* top, int check_bottom, int top_id, int top_data_id) { // First, figure out what blobs we need to check against. vector*> blobs_to_check; - for (int i = 0; i < layer.blobs().size(); ++i) { - blobs_to_check.push_back(layer.blobs()[i].get()); + for (int i = 0; i < layer->blobs().size(); ++i) { + blobs_to_check.push_back(layer->blobs()[i].get()); } if (check_bottom < 0) { - for (int i = 0; i < bottom.size(); ++i) { - blobs_to_check.push_back(bottom[i]); + for (int i = 0; i < bottom->size(); ++i) { + blobs_to_check.push_back((*bottom)[i]); } } else { - CHECK(check_bottom < bottom.size()); - blobs_to_check.push_back(bottom[check_bottom]); + CHECK(check_bottom < bottom->size()); + blobs_to_check.push_back((*bottom)[check_bottom]); } // go through the bottom and parameter blobs // LOG(ERROR) << "Checking " << blobs_to_check.size() << " blobs."; @@ -91,23 +92,23 @@ void GradientChecker::CheckGradientSingle(Layer& layer, for (int feat_id = 0; feat_id < current_blob->count(); ++feat_id) { // First, obtain the original data Caffe::set_random_seed(seed_); - layer.Forward(bottom, &top); + layer->Forward(*bottom, top); Dtype computed_objective = GetObjAndGradient(top, top_id, top_data_id); // Get any additional loss from the layer - computed_objective += layer.Backward(top, true, &bottom); + computed_objective += layer->Backward(*top, true, bottom); Dtype computed_gradient = current_blob->cpu_diff()[feat_id]; // compute score by adding stepsize current_blob->mutable_cpu_data()[feat_id] += stepsize_; Caffe::set_random_seed(seed_); - layer.Forward(bottom, &top); + layer->Forward(*bottom, top); Dtype positive_objective = GetObjAndGradient(top, top_id, top_data_id); - positive_objective += layer.Backward(top, true, &bottom); + positive_objective += layer->Backward(*top, true, bottom); // compute score by subtracting stepsize current_blob->mutable_cpu_data()[feat_id] -= stepsize_ * 2; Caffe::set_random_seed(seed_); - layer.Forward(bottom, &top); + layer->Forward(*bottom, top); Dtype negative_objective = GetObjAndGradient(top, top_id, top_data_id); - negative_objective += layer.Backward(top, true, &bottom); + negative_objective += layer->Backward(*top, true, bottom); // Recover stepsize current_blob->mutable_cpu_data()[feat_id] += stepsize_; Dtype estimated_gradient = (positive_objective - negative_objective) / @@ -120,10 +121,7 @@ void GradientChecker::CheckGradientSingle(Layer& layer, // the scale factor by 1. Dtype scale = max( max(fabs(computed_gradient), fabs(estimated_gradient)), 1.); - EXPECT_GT(computed_gradient, estimated_gradient - threshold_ * scale) - << "debug: (top_id, top_data_id, blob_id, feat_id)=" - << top_id << "," << top_data_id << "," << blobid << "," << feat_id; - EXPECT_LT(computed_gradient, estimated_gradient + threshold_ * scale) + EXPECT_NEAR(computed_gradient, estimated_gradient, threshold_ * scale) << "debug: (top_id, top_data_id, blob_id, feat_id)=" << top_id << "," << top_data_id << "," << blobid << "," << feat_id; } @@ -135,14 +133,13 @@ void GradientChecker::CheckGradientSingle(Layer& layer, } template -void GradientChecker::CheckGradientExhaustive(Layer& layer, - vector*>& bottom, vector*>& top, - int check_bottom) { - layer.SetUp(bottom, &top); +void GradientChecker::CheckGradientExhaustive(Layer* layer, + vector*>* bottom, vector*>* top, int check_bottom) { + layer->SetUp(*bottom, top); // LOG(ERROR) << "Exhaustive Mode."; - for (int i = 0; i < top.size(); ++i) { + for (int i = 0; i < top->size(); ++i) { // LOG(ERROR) << "Exhaustive: blob " << i << " size " << top[i]->count(); - for (int j = 0; j < top[i]->count(); ++j) { + for (int j = 0; j < (*top)[i]->count(); ++j) { // LOG(ERROR) << "Exhaustive: blob " << i << " data " << j; CheckGradientSingle(layer, bottom, top, check_bottom, i, j); } @@ -151,7 +148,7 @@ void GradientChecker::CheckGradientExhaustive(Layer& layer, template void GradientChecker::CheckGradientNet( - Net& net, vector*>& input) { + const Net& net, const vector*>& input) { const vector > >& layers = net.layers(); vector*> >& bottom_vecs = net.bottom_vecs(); vector*> >& top_vecs = net.top_vecs(); @@ -163,13 +160,13 @@ void GradientChecker::CheckGradientNet( } template -Dtype GradientChecker::GetObjAndGradient(vector*>& top, +Dtype GradientChecker::GetObjAndGradient(vector*>* top, int top_id, int top_data_id) { Dtype loss = 0; if (top_id < 0) { // the loss will be half of the sum of squares of all outputs - for (int i = 0; i < top.size(); ++i) { - Blob* top_blob = top[i]; + for (int i = 0; i < top->size(); ++i) { + Blob* top_blob = (*top)[i]; const Dtype* top_blob_data = top_blob->cpu_data(); Dtype* top_blob_diff = top_blob->mutable_cpu_diff(); int count = top_blob->count(); @@ -182,13 +179,13 @@ Dtype GradientChecker::GetObjAndGradient(vector*>& top, loss /= 2.; } else { // the loss will be the top_data_id-th element in the top_id-th blob. - for (int i = 0; i < top.size(); ++i) { - Blob* top_blob = top[i]; + for (int i = 0; i < top->size(); ++i) { + Blob* top_blob = (*top)[i]; Dtype* top_blob_diff = top_blob->mutable_cpu_diff(); memset(top_blob_diff, 0, sizeof(Dtype) * top_blob->count()); } - loss = top[top_id]->cpu_data()[top_data_id]; - top[top_id]->mutable_cpu_diff()[top_data_id] = 1.; + loss = (*top)[top_id]->cpu_data()[top_data_id]; + (*top)[top_id]->mutable_cpu_diff()[top_data_id] = 1.; } return loss; } diff --git a/src/caffe/test/test_im2col_layer.cpp b/src/caffe/test/test_im2col_layer.cpp index 842d3a74c1e..ac2f8fe25e2 100644 --- a/src/caffe/test/test_im2col_layer.cpp +++ b/src/caffe/test/test_im2col_layer.cpp @@ -89,8 +89,8 @@ TYPED_TEST(Im2colLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(Im2colLayerTest, TestGPUGradient) { @@ -100,8 +100,8 @@ TYPED_TEST(Im2colLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); Im2colLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_innerproduct_layer.cpp b/src/caffe/test/test_innerproduct_layer.cpp index acb4c767223..eac33b9c9cb 100644 --- a/src/caffe/test/test_innerproduct_layer.cpp +++ b/src/caffe/test/test_innerproduct_layer.cpp @@ -104,8 +104,8 @@ TYPED_TEST(InnerProductLayerTest, TestCPUGradient) { layer_param.mutable_bias_filler()->set_max(2); InnerProductLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(InnerProductLayerTest, TestGPUGradient) { @@ -117,7 +117,8 @@ TYPED_TEST(InnerProductLayerTest, TestGPUGradient) { layer_param.mutable_bias_filler()->set_type("gaussian"); InnerProductLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradient(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradient(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } else { LOG(ERROR) << "Skipping test due to old architecture."; } diff --git a/src/caffe/test/test_lrn_layer.cpp b/src/caffe/test/test_lrn_layer.cpp index 6c778df9fdd..cbdb7d1468f 100644 --- a/src/caffe/test/test_lrn_layer.cpp +++ b/src/caffe/test/test_lrn_layer.cpp @@ -139,8 +139,8 @@ TYPED_TEST(LRNLayerTest, TestCPUGradient) { // std::cout << "CPU diff " << this->blob_bottom_->cpu_diff()[i] // << std::endl; // } - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(LRNLayerTest, TestGPUGradient) { @@ -158,8 +158,8 @@ TYPED_TEST(LRNLayerTest, TestGPUGradient) { // std::cout << "GPU diff " << this->blob_bottom_->cpu_diff()[i] // << std::endl; // } - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } } // namespace caffe diff --git a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp index 835d1b2035d..85285d0086e 100644 --- a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp +++ b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -56,8 +56,8 @@ TYPED_TEST(MultinomialLogisticLossLayerTest, TestGradientCPU) { MultinomialLogisticLossLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); GradientChecker checker(1e-2, 1e-2, 1701, 0, 0.05); - checker.CheckGradientSingle(layer, this->blob_bottom_vec_, - this->blob_top_vec_, 0, -1, -1); + checker.CheckGradientSingle(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_), 0, -1, -1); } } // namespace caffe diff --git a/src/caffe/test/test_neuron_layer.cpp b/src/caffe/test/test_neuron_layer.cpp index 9a7ff5c8619..b23670297ab 100644 --- a/src/caffe/test/test_neuron_layer.cpp +++ b/src/caffe/test/test_neuron_layer.cpp @@ -61,8 +61,8 @@ TYPED_TEST(NeuronLayerTest, TestReLUGradientCPU) { Caffe::set_mode(Caffe::CPU); ReLULayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -87,8 +87,8 @@ TYPED_TEST(NeuronLayerTest, TestReLUGradientGPU) { Caffe::set_mode(Caffe::GPU); ReLULayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -115,8 +115,8 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidGradientCPU) { Caffe::set_mode(Caffe::CPU); SigmoidLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(NeuronLayerTest, TestSigmoidGPU) { @@ -142,8 +142,8 @@ TYPED_TEST(NeuronLayerTest, TestSigmoidGradientGPU) { Caffe::set_mode(Caffe::GPU); SigmoidLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3, 1701, 0., 0.01); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -172,8 +172,8 @@ TYPED_TEST(NeuronLayerTest, TestDropoutGradientCPU) { Caffe::set_mode(Caffe::CPU); DropoutLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -223,7 +223,8 @@ TYPED_TEST(NeuronLayerTest, TestDropoutGradientGPU) { GradientChecker checker(1e-2, 1e-3); // it is too expensive to call curand multiple times, so we don't do an // exhaustive gradient check. - checker.CheckGradient(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradient(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } else { LOG(ERROR) << "Skipping test to spare my laptop."; } @@ -270,8 +271,8 @@ TYPED_TEST(NeuronLayerTest, TestBNLLGradientCPU) { Caffe::set_mode(Caffe::CPU); BNLLLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -296,8 +297,8 @@ TYPED_TEST(NeuronLayerTest, TestBNLLGradientGPU) { Caffe::set_mode(Caffe::GPU); BNLLLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_pooling_layer.cpp b/src/caffe/test/test_pooling_layer.cpp index c08a7c08c37..ae2e51ed993 100644 --- a/src/caffe/test/test_pooling_layer.cpp +++ b/src/caffe/test/test_pooling_layer.cpp @@ -90,8 +90,8 @@ TYPED_TEST(PoolingLayerTest, TestCPUGradientMax) { Caffe::set_mode(Caffe::CPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-4, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(PoolingLayerTest, TestGPUGradientMax) { @@ -102,8 +102,8 @@ TYPED_TEST(PoolingLayerTest, TestGPUGradientMax) { Caffe::set_mode(Caffe::GPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-4, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -115,8 +115,8 @@ TYPED_TEST(PoolingLayerTest, TestCPUGradientAve) { Caffe::set_mode(Caffe::CPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } @@ -128,8 +128,8 @@ TYPED_TEST(PoolingLayerTest, TestGPUGradientAve) { Caffe::set_mode(Caffe::GPU); PoolingLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_softmax_layer.cpp b/src/caffe/test/test_softmax_layer.cpp index d27f40cfd10..1d4260a5620 100644 --- a/src/caffe/test/test_softmax_layer.cpp +++ b/src/caffe/test/test_softmax_layer.cpp @@ -78,8 +78,8 @@ TYPED_TEST(SoftmaxLayerTest, TestGradientCPU) { Caffe::set_mode(Caffe::CPU); SoftmaxLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } } // namespace caffe diff --git a/src/caffe/test/test_softmax_with_loss_layer.cpp b/src/caffe/test/test_softmax_with_loss_layer.cpp index bf96d99c01d..c8c417a387b 100644 --- a/src/caffe/test/test_softmax_with_loss_layer.cpp +++ b/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -57,8 +57,8 @@ TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientCPU) { SoftmaxWithLossLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); GradientChecker checker(1e-2, 1e-2, 1701); - checker.CheckGradientSingle(layer, this->blob_bottom_vec_, - this->blob_top_vec_, 0, -1, -1); + checker.CheckGradientSingle(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_), 0, -1, -1); } TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientGPU) { @@ -67,8 +67,8 @@ TYPED_TEST(SoftmaxWithLossLayerTest, TestGradientGPU) { SoftmaxWithLossLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); GradientChecker checker(1e-2, 1e-2, 1701); - checker.CheckGradientSingle(layer, this->blob_bottom_vec_, - this->blob_top_vec_, 0, -1, -1); + checker.CheckGradientSingle(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_), 0, -1, -1); } } // namespace caffe diff --git a/src/caffe/test/test_split_layer.cpp b/src/caffe/test/test_split_layer.cpp index 8c1780c376c..afec9c9dc4a 100644 --- a/src/caffe/test/test_split_layer.cpp +++ b/src/caffe/test/test_split_layer.cpp @@ -121,8 +121,8 @@ TYPED_TEST(SplitLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); SplitLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(SplitLayerTest, TestGPUGradient) { @@ -130,8 +130,8 @@ TYPED_TEST(SplitLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); SplitLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(SplitLayerTest, TestCPUGradientInPlace) { @@ -140,8 +140,8 @@ TYPED_TEST(SplitLayerTest, TestCPUGradientInPlace) { SplitLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); this->blob_top_vec_[0] = this->blob_bottom_vec_[0]; - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(SplitLayerTest, TestGPUGradientInPlace) { @@ -150,8 +150,8 @@ TYPED_TEST(SplitLayerTest, TestGPUGradientInPlace) { SplitLayer layer(layer_param); GradientChecker checker(1e-2, 1e-2); this->blob_top_vec_[0] = this->blob_bottom_vec_[0]; - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_stochastic_pooling.cpp b/src/caffe/test/test_stochastic_pooling.cpp index 7829b943f9a..d60d04e8df7 100644 --- a/src/caffe/test/test_stochastic_pooling.cpp +++ b/src/caffe/test/test_stochastic_pooling.cpp @@ -160,7 +160,8 @@ TYPED_TEST(StochasticPoolingLayerTest, TestGradientGPU) { GradientChecker checker(1e-2, 1e-3); // it is too expensive to call curand multiple times, so we don't do an // exhaustive gradient check. - checker.CheckGradient(layer, this->blob_bottom_vec_, this->blob_top_vec_); + checker.CheckGradient(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } diff --git a/src/caffe/test/test_tanh_layer.cpp b/src/caffe/test/test_tanh_layer.cpp index 9c80ac24cde..6248e508fad 100644 --- a/src/caffe/test/test_tanh_layer.cpp +++ b/src/caffe/test/test_tanh_layer.cpp @@ -70,8 +70,8 @@ TYPED_TEST(TanHLayerTest, TestGradientCPU) { Caffe::set_mode(Caffe::CPU); TanHLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } TYPED_TEST(TanHLayerTest, TestForwardGPU) { @@ -102,8 +102,8 @@ TYPED_TEST(TanHLayerTest, TestGradientGPU) { Caffe::set_mode(Caffe::GPU); TanHLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - checker.CheckGradientExhaustive(layer, this->blob_bottom_vec_, - this->blob_top_vec_); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); } } // namespace caffe From e811565cf9eeea3023d0d2b78a04d6ddb5bb2e49 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 16:01:05 -0800 Subject: [PATCH 023/113] allow TODO without username --- scripts/cpplint.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/cpplint.py b/scripts/cpplint.py index c5b14bd8cfb..4143c4bd072 100755 --- a/scripts/cpplint.py +++ b/scripts/cpplint.py @@ -208,7 +208,11 @@ # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). # All entries here should start with a '-' or '+', as in the --filter= flag. -_DEFAULT_FILTERS = ['-build/include_alpha', '-build/include_dir'] +_DEFAULT_FILTERS = [ + '-build/include_alpha', + '-build/include_dir', + '-readability/todo', + ] # We used to check for high-bit characters, but after much discussion we # decided those were OK, as long as they were in UTF-8 and didn't represent From 5b21f0d9e9c02ff1bc7b457b5ae5848115c3cdcc Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 16:03:46 -0800 Subject: [PATCH 024/113] handle linter stream errors --- src/caffe/util/io.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 190b0d3cca9..d6151d5c1a1 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -12,7 +12,7 @@ #include #include -#include +#include // NOLINT(readability/streams) #include "caffe/common.hpp" #include "caffe/util/io.hpp" From 5abaf5ea3036a3f3d1f5f4a71bdfd6968c0a8134 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 16:12:47 -0800 Subject: [PATCH 025/113] long -> int64_t; all linter errors fixed. woohoo! --- src/caffe/common.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index 110967426fa..f47173afcae 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -10,8 +10,8 @@ namespace caffe { shared_ptr Caffe::singleton_; -long cluster_seedgen(void) { - long s, seed, pid; +int64_t cluster_seedgen(void) { + int64_t s, seed, pid; pid = getpid(); s = time(NULL); seed = abs(((s * 181) * ((pid - 83) * 359)) % 104729); From c66937cafb140c07b214344707e909bb300d63f5 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 17:35:38 -0800 Subject: [PATCH 026/113] fix post-rebase linter errors --- include/caffe/util/io.hpp | 9 ++++----- include/caffe/vision_layers.hpp | 9 ++++----- src/caffe/layers/conv_layer.cpp | 8 ++++---- src/caffe/layers/hdf5_data_layer.cpp | 6 +++--- src/caffe/test/test_hdf5data_layer.cpp | 13 +++++++------ src/caffe/util/insert_splits.cpp | 1 + 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index b2d489ce720..27d856527bb 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -3,16 +3,15 @@ #ifndef CAFFE_UTIL_IO_H_ #define CAFFE_UTIL_IO_H_ -#include +#include -#include +#include "google/protobuf/message.h" #include "hdf5.h" #include "hdf5_hl.h" +#include "caffe/proto/caffe.pb.h" -#include - +#include "boost/scoped_ptr.hpp" #include "caffe/blob.hpp" -#include "caffe/proto/caffe.pb.h" using std::string; using ::google::protobuf::Message; diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index b6f607a1d9f..fc2b17c2e17 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -3,14 +3,13 @@ #ifndef CAFFE_VISION_LAYERS_HPP_ #define CAFFE_VISION_LAYERS_HPP_ -#include -#include -#include +#include +#include "leveldb/db.h" +#include "pthread.h" +#include "boost/scoped_ptr.hpp" #include "hdf5.h" -#include - #include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 1549039310e..21256f90eb6 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -185,8 +185,8 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - col2im_cpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + col2im_cpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, + bottom_diff + (*bottom)[0]->offset(n)); } } return Dtype(0.); @@ -243,8 +243,8 @@ Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, (Dtype)0., col_diff + col_offset * g); } // col2im back to the data - col2im_gpu(col_diff, CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + col2im_gpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, + bottom_diff + (*bottom)[0]->offset(n)); } } return Dtype(0.); diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 0f8f68e9d6d..11b7d29f175 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -1,9 +1,9 @@ +// Copyright Sergey Karayev 2014 /* TODO: - only load parts of the file, in accordance with a prototxt param "max_mem" */ -#include #include #include #include @@ -55,11 +55,11 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, current_row = 0; } - memcpy( &(*top)[0]->mutable_cpu_data()[i * data_dims[1]], + memcpy(&(*top)[0]->mutable_cpu_data()[i * data_dims[1]], &(data.get()[current_row * data_dims[1]]), sizeof(Dtype) * data_dims[1]); - memcpy( &(*top)[1]->mutable_cpu_data()[i * label_dims[1]], + memcpy(&(*top)[1]->mutable_cpu_data()[i * label_dims[1]], &(label.get()[current_row * label_dims[1]]), sizeof(Dtype) * label_dims[1]); } diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index ed7daeaa371..9717ca8eafd 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -1,9 +1,10 @@ // Copyright 2013 Yangqing Jia -#include -#include - #include +#include + +#include "cuda_runtime.h" +#include "leveldb/db.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" @@ -25,7 +26,7 @@ class HDF5DataLayerTest : public ::testing::Test { HDF5DataLayerTest() : blob_top_data_(new Blob()), blob_top_label_(new Blob()), - filename(NULL) {}; + filename(NULL) {} virtual void SetUp() { blob_top_vec_.push_back(blob_top_data_); blob_top_vec_.push_back(blob_top_label_); @@ -35,7 +36,7 @@ class HDF5DataLayerTest : public ::testing::Test { // TODO: how to best deal with the relativeness of the path? filename = "src/caffe/test/test_data/sample_data.h5"; LOG(INFO) << "Using sample HDF5 data file " << filename; - }; + } virtual ~HDF5DataLayerTest() { delete blob_top_data_; @@ -127,4 +128,4 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { } } -} // namespace caffe +} // namespace caffe diff --git a/src/caffe/util/insert_splits.cpp b/src/caffe/util/insert_splits.cpp index 6db6458c4af..d208bcd27e4 100644 --- a/src/caffe/util/insert_splits.cpp +++ b/src/caffe/util/insert_splits.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "caffe/common.hpp" #include "caffe/util/insert_splits.hpp" From 598edbf16919e2e126999a57e897aaba6ce8d971 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 17:47:01 -0800 Subject: [PATCH 027/113] fix compiler warning for test_hdf5data_layer --- src/caffe/test/test_hdf5data_layer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 9717ca8eafd..ee2b315a0ff 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -34,16 +34,17 @@ class HDF5DataLayerTest : public ::testing::Test { // TODO: generate sample HDF5 file on the fly. // For now, use example HDF5 file. // TODO: how to best deal with the relativeness of the path? - filename = "src/caffe/test/test_data/sample_data.h5"; + filename = new string("src/caffe/test/test_data/sample_data.h5"); LOG(INFO) << "Using sample HDF5 data file " << filename; } virtual ~HDF5DataLayerTest() { delete blob_top_data_; delete blob_top_label_; + delete filename; } - char* filename; + string* filename; Blob* const blob_top_data_; Blob* const blob_top_label_; vector*> blob_bottom_vec_; @@ -60,7 +61,7 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { LayerParameter param; int batchsize = 5; param.set_batchsize(batchsize); - param.set_source(this->filename); + param.set_source(*(this->filename)); int num_rows = 10; int num_cols = 8; HDF5DataLayer layer(param); From a51e35bd6c4ff4cb15472d7d74a6914627f8baa5 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 18:58:49 -0800 Subject: [PATCH 028/113] add examples, python, matlab to NONGEN_CXX_SRCS so they are linted as well --- Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 886e4217ed8..3d01e89c892 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,12 @@ EXAMPLE_SRCS := $(shell find examples -name "*.cpp") PROTO_SRCS := $(wildcard src/$(PROJECT)/proto/*.proto) # NONGEN_CXX_SRCS includes all source/header files except those generated by # proto. -NONGEN_CXX_SRCS := $(shell find src/$(PROJECT) include/$(PROJECT) \ +NONGEN_CXX_SRCS := $(shell find \ + src/$(PROJECT) \ + examples \ + include/$(PROJECT) \ + python/$(PROJECT) \ + matlab/$(PROJECT) \ -regex ".*\.\(cpp\|hpp\|cu\|cuh\)") # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) PY$(PROJECT)_SRC := python/$(PROJECT)/py$(PROJECT).cpp From 8c58e415b40e16e5f13b23cf2790cc63ca59ca12 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 20:39:01 -0800 Subject: [PATCH 029/113] fix linter errors in examples --- examples/cifar/convert_cifar_data.cpp | 47 +++++++++++++-------------- examples/lenet/convert_mnist_data.cpp | 28 ++++++++-------- tools/compute_image_mean.cpp | 3 +- tools/convert_imageset.cpp | 23 +++++++------ tools/device_query.cpp | 2 +- tools/dump_network.cpp | 20 +++++++----- tools/finetune_net.cpp | 4 +-- tools/net_speed_benchmark.cpp | 37 +++++++++++++-------- tools/test_net.cpp | 6 ++-- tools/train_net.cpp | 2 +- 10 files changed, 96 insertions(+), 76 deletions(-) diff --git a/examples/cifar/convert_cifar_data.cpp b/examples/cifar/convert_cifar_data.cpp index 083ea9e4dc1..648dd37b792 100644 --- a/examples/cifar/convert_cifar_data.cpp +++ b/examples/cifar/convert_cifar_data.cpp @@ -12,25 +12,23 @@ #include #include -#include -#include +#include // NOLINT(readability/streams) #include #include "caffe/proto/caffe.pb.h" using std::string; +const int kCIFARSize = 32; +const int kCIFARImageNBytes = 3072; +const int kCIFARBatchSize = 10000; +const int kCIFARTrainBatches = 5; -const int kCIFAR_SIZE=32; -const int kCIFAR_IMAGE_NBYTES=3072; -const int kCIFAR_BATCHSIZE=10000; -const int kCIFAR_TRAIN_BATCHES=5; - -void read_image(std::ifstream& file, int* label, char* buffer) { +void read_image(std::ifstream* file, int* label, char* buffer) { char label_char; - file.read(&label_char, 1); + file->read(&label_char, 1); *label = label_char; - file.read(buffer, kCIFAR_IMAGE_NBYTES); + file->read(buffer, kCIFARImageNBytes); return; } @@ -41,12 +39,12 @@ void convert_dataset(const string& input_folder, const string& output_folder) { options.error_if_exists = true; // Data buffer int label; - char str_buffer[kCIFAR_IMAGE_NBYTES]; + char str_buffer[kCIFARImageNBytes]; string value; caffe::Datum datum; datum.set_channels(3); - datum.set_height(kCIFAR_SIZE); - datum.set_width(kCIFAR_SIZE); + datum.set_height(kCIFARSize); + datum.set_width(kCIFARSize); LOG(INFO) << "Writing Training data"; leveldb::DB* train_db; @@ -54,19 +52,20 @@ void convert_dataset(const string& input_folder, const string& output_folder) { status = leveldb::DB::Open(options, output_folder + "/cifar-train-leveldb", &train_db); CHECK(status.ok()) << "Failed to open leveldb."; - for (int fileid = 0; fileid < kCIFAR_TRAIN_BATCHES; ++fileid) { + for (int fileid = 0; fileid < kCIFARTrainBatches; ++fileid) { // Open files LOG(INFO) << "Training Batch " << fileid + 1; - sprintf(str_buffer, "/data_batch_%d.bin", fileid + 1); + snprintf(str_buffer, kCIFARImageNBytes, "/data_batch_%d.bin", fileid + 1); std::ifstream data_file((input_folder + str_buffer).c_str(), std::ios::in | std::ios::binary); CHECK(data_file) << "Unable to open train file #" << fileid + 1; - for (int itemid = 0; itemid < kCIFAR_BATCHSIZE; ++itemid) { - read_image(data_file, &label, str_buffer); + for (int itemid = 0; itemid < kCIFARBatchSize; ++itemid) { + read_image(&data_file, &label, str_buffer); datum.set_label(label); - datum.set_data(str_buffer, kCIFAR_IMAGE_NBYTES); + datum.set_data(str_buffer, kCIFARImageNBytes); datum.SerializeToString(&value); - sprintf(str_buffer, "%05d", fileid * kCIFAR_BATCHSIZE + itemid); + snprintf(str_buffer, kCIFARImageNBytes, "%05d", + fileid * kCIFARBatchSize + itemid); train_db->Put(leveldb::WriteOptions(), string(str_buffer), value); } } @@ -79,12 +78,12 @@ void convert_dataset(const string& input_folder, const string& output_folder) { std::ifstream data_file((input_folder + "/test_batch.bin").c_str(), std::ios::in | std::ios::binary); CHECK(data_file) << "Unable to open test file."; - for (int itemid = 0; itemid < kCIFAR_BATCHSIZE; ++itemid) { - read_image(data_file, &label, str_buffer); + for (int itemid = 0; itemid < kCIFARBatchSize; ++itemid) { + read_image(&data_file, &label, str_buffer); datum.set_label(label); - datum.set_data(str_buffer, kCIFAR_IMAGE_NBYTES); + datum.set_data(str_buffer, kCIFARImageNBytes); datum.SerializeToString(&value); - sprintf(str_buffer, "%05d", itemid); + snprintf(str_buffer, kCIFARImageNBytes, "%05d", itemid); test_db->Put(leveldb::WriteOptions(), string(str_buffer), value); } @@ -92,7 +91,7 @@ void convert_dataset(const string& input_folder, const string& output_folder) { delete test_db; } -int main (int argc, char** argv) { +int main(int argc, char** argv) { if (argc != 3) { printf("This script converts the CIFAR dataset to the leveldb format used\n" "by caffe to perform classification.\n" diff --git a/examples/lenet/convert_mnist_data.cpp b/examples/lenet/convert_mnist_data.cpp index 32d9b9d9100..1bf1d663918 100644 --- a/examples/lenet/convert_mnist_data.cpp +++ b/examples/lenet/convert_mnist_data.cpp @@ -12,14 +12,13 @@ #include #include -#include -#include +#include // NOLINT(readability/streams) +#include #include "caffe/proto/caffe.pb.h" -uint32_t swap_endian( uint32_t val ) -{ - val = ((val << 8) & 0xFF00FF00 ) | ((val >> 8) & 0xFF00FF ); +uint32_t swap_endian(uint32_t val) { + val = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0xFF00FF); return (val << 16) | (val >> 16); } @@ -37,20 +36,20 @@ void convert_dataset(const char* image_filename, const char* label_filename, uint32_t rows; uint32_t cols; - image_file.read((char*)(&magic), 4); + image_file.read(reinterpret_cast(&magic), 4); magic = swap_endian(magic); CHECK_EQ(magic, 2051) << "Incorrect image file magic."; - label_file.read((char*)(&magic), 4); + label_file.read(reinterpret_cast(&magic), 4); magic = swap_endian(magic); CHECK_EQ(magic, 2049) << "Incorrect label file magic."; - image_file.read((char*)(&num_items), 4); + image_file.read(reinterpret_cast(&num_items), 4); num_items = swap_endian(num_items); - label_file.read((char*)(&num_labels), 4); + label_file.read(reinterpret_cast(&num_labels), 4); num_labels = swap_endian(num_labels); CHECK_EQ(num_items, num_labels); - image_file.read((char*)(&rows), 4); + image_file.read(reinterpret_cast(&rows), 4); rows = swap_endian(rows); - image_file.read((char*)(&cols), 4); + image_file.read(reinterpret_cast(&cols), 4); cols = swap_endian(cols); // Open leveldb @@ -65,7 +64,8 @@ void convert_dataset(const char* image_filename, const char* label_filename, char label; char* pixels = new char[rows * cols]; - char key[10]; + const int kMaxKeyLength = 10; + char key[kMaxKeyLength]; std::string value; caffe::Datum datum; @@ -80,7 +80,7 @@ void convert_dataset(const char* image_filename, const char* label_filename, datum.set_data(pixels, rows*cols); datum.set_label(label); datum.SerializeToString(&value); - sprintf(key, "%08d", itemid); + snprintf(key, kMaxKeyLength, "%08d", itemid); db->Put(leveldb::WriteOptions(), std::string(key), value); } @@ -88,7 +88,7 @@ void convert_dataset(const char* image_filename, const char* label_filename, delete pixels; } -int main (int argc, char** argv) { +int main(int argc, char** argv) { if (argc != 4) { printf("This script converts the MNIST dataset to the leveldb format used\n" "by caffe to perform classification.\n" diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index 3c243d67724..65ff538fbac 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -48,7 +48,8 @@ int main(int argc, char** argv) { // just a dummy operation datum.ParseFromString(it->value().ToString()); const string& data = datum.data(); - CHECK_EQ(data.size(), data_size) << "Incorrect data field size " << data.size(); + CHECK_EQ(data.size(), data_size) << "Incorrect data field size " + << data.size(); for (int i = 0; i < data.size(); ++i) { sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); } diff --git a/tools/convert_imageset.cpp b/tools/convert_imageset.cpp index e73971614e8..50b53e6d98e 100644 --- a/tools/convert_imageset.cpp +++ b/tools/convert_imageset.cpp @@ -16,14 +16,15 @@ #include #include +#include // NOLINT(readability/streams) #include -#include -#include +#include +#include #include "caffe/proto/caffe.pb.h" #include "caffe/util/io.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) using std::pair; using std::string; @@ -66,25 +67,27 @@ int main(int argc, char** argv) { string root_folder(argv[1]); Datum datum; int count = 0; - const int maxKeyLength = 256; - char key_cstr[maxKeyLength]; + const int kMaxKeyLength = 256; + char key_cstr[kMaxKeyLength]; leveldb::WriteBatch* batch = new leveldb::WriteBatch(); int data_size; bool data_size_initialized = false; for (int line_id = 0; line_id < lines.size(); ++line_id) { - if (!ReadImageToDatum(root_folder + lines[line_id].first, lines[line_id].second, - &datum)) { + if (!ReadImageToDatum(root_folder + lines[line_id].first, + lines[line_id].second, &datum)) { continue; - }; + } if (!data_size_initialized) { data_size = datum.channels() * datum.height() * datum.width(); data_size_initialized = true; } else { const string& data = datum.data(); - CHECK_EQ(data.size(), data_size) << "Incorrect data field size " << data.size(); + CHECK_EQ(data.size(), data_size) << "Incorrect data field size " + << data.size(); } // sequential - snprintf(key_cstr, maxKeyLength, "%08d_%s", line_id, lines[line_id].first.c_str()); + snprintf(key_cstr, kMaxKeyLength, "%08d_%s", line_id, + lines[line_id].first.c_str()); string value; // get the value datum.SerializeToString(&value); diff --git a/tools/device_query.cpp b/tools/device_query.cpp index 88bf5aaafb9..920e81b185a 100644 --- a/tools/device_query.cpp +++ b/tools/device_query.cpp @@ -5,7 +5,7 @@ #include "caffe/net.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { if (argc > 2) { diff --git a/tools/dump_network.cpp b/tools/dump_network.cpp index 0d6e2d0a73a..48804f29928 100644 --- a/tools/dump_network.cpp +++ b/tools/dump_network.cpp @@ -4,16 +4,18 @@ // all the intermediate blobs produced by the net to individual binary // files stored in protobuffer binary formats. // Usage: -// dump_network input_net_param trained_net_param input_blob output_prefix 0/1 +// dump_network input_net_param trained_net_param \ +// input_blob output_prefix 0/1 // if input_net_param is 'none', we will directly load the network from // trained_net_param. If the last argv is 1, we will do a forward-backward pass // before dumping everyting, and also dump the who network. -#include -#include -#include +#include +#include -#include +#include "cuda_runtime.h" +#include "fcntl.h" +#include "google/protobuf/text_format.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -23,7 +25,7 @@ #include "caffe/util/io.hpp" #include "caffe/solver.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { cudaSetDevice(1); @@ -63,7 +65,8 @@ int main(int argc, char** argv) { // Dump the network NetParameter output_net_param; caffe_net->ToProto(&output_net_param, true); - WriteProtoToBinaryFile(output_net_param, output_prefix + output_net_param.name()); + WriteProtoToBinaryFile(output_net_param, + output_prefix + output_net_param.name()); } // Now, let's dump all the layers @@ -74,7 +77,8 @@ int main(int argc, char** argv) { LOG(ERROR) << "Dumping " << blob_names[blobid]; BlobProto output_blob_proto; blobs[blobid]->ToProto(&output_blob_proto); - WriteProtoToBinaryFile(output_blob_proto, output_prefix + blob_names[blobid]); + WriteProtoToBinaryFile(output_blob_proto, + output_prefix + blob_names[blobid]); } return 0; diff --git a/tools/finetune_net.cpp b/tools/finetune_net.cpp index 559715d6707..2aad7385bff 100644 --- a/tools/finetune_net.cpp +++ b/tools/finetune_net.cpp @@ -6,11 +6,11 @@ #include -#include +#include #include "caffe/caffe.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { ::google::InitGoogleLogging(argv[0]); diff --git a/tools/net_speed_benchmark.cpp b/tools/net_speed_benchmark.cpp index dd6f3ed2c00..9976744d35e 100644 --- a/tools/net_speed_benchmark.cpp +++ b/tools/net_speed_benchmark.cpp @@ -1,11 +1,12 @@ // Copyright 2013 Yangqing Jia -#include -#include -#include - -#include #include +#include +#include + +#include "cuda_runtime.h" +#include "fcntl.h" +#include "google/protobuf/text_format.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -15,14 +16,16 @@ #include "caffe/util/io.hpp" #include "caffe/solver.hpp" -using namespace caffe; +using boost::shared_ptr; -int main(int argc, char** argv) { +using namespace caffe; // NOLINT(build/namespaces) +int main(int argc, char** argv) { int total_iter = 50; if (argc < 2) { - LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50] [CPU/GPU] [Device_id=0]"; + LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50] [CPU/GPU] " + << "[Device_id=0]"; return 0; } @@ -72,9 +75,12 @@ int main(int argc, char** argv) { layers[i]->Forward(bottom_vecs[i], &top_vecs[i]); } LOG(ERROR) << layername << "\tforward: " - << float(clock() - start) / CLOCKS_PER_SEC << " seconds."; + << static_cast(clock() - start) / CLOCKS_PER_SEC + << " seconds."; } - LOG(ERROR) << "Forward pass: " << float(clock() - forward_start) / CLOCKS_PER_SEC << " seconds."; + LOG(ERROR) << "Forward pass: " + << static_cast(clock() - forward_start) / CLOCKS_PER_SEC + << " seconds."; clock_t backward_start = clock(); for (int i = layers.size() - 1; i >= 0; --i) { const string& layername = layers[i]->layer_param().name(); @@ -83,10 +89,15 @@ int main(int argc, char** argv) { layers[i]->Backward(top_vecs[i], true, &bottom_vecs[i]); } LOG(ERROR) << layername << "\tbackward: " - << float(clock() - start) / CLOCKS_PER_SEC << " seconds."; + << static_cast(clock() - start) / CLOCKS_PER_SEC + << " seconds."; } - LOG(ERROR) << "Backward pass: " << float(clock() - backward_start) / CLOCKS_PER_SEC << " seconds."; - LOG(ERROR) << "Total Time: " << float(clock() - forward_start) / CLOCKS_PER_SEC << " seconds."; + LOG(ERROR) << "Backward pass: " + << static_cast(clock() - backward_start) / CLOCKS_PER_SEC + << " seconds."; + LOG(ERROR) << "Total Time: " + << static_cast(clock() - forward_start) / CLOCKS_PER_SEC + << " seconds."; LOG(ERROR) << "*** Benchmark ends ***"; return 0; } diff --git a/tools/test_net.cpp b/tools/test_net.cpp index 5b8305af8b8..c4c992aa776 100644 --- a/tools/test_net.cpp +++ b/tools/test_net.cpp @@ -10,14 +10,16 @@ #include #include +#include #include "caffe/caffe.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { if (argc < 4) { - LOG(ERROR) << "test_net net_proto pretrained_net_proto iterations [CPU/GPU]"; + LOG(ERROR) << "test_net net_proto pretrained_net_proto iterations " + << "[CPU/GPU]"; return 0; } diff --git a/tools/train_net.cpp b/tools/train_net.cpp index ce62616b118..3bd4f8783ac 100644 --- a/tools/train_net.cpp +++ b/tools/train_net.cpp @@ -11,7 +11,7 @@ #include "caffe/caffe.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { ::google::InitGoogleLogging(argv[0]); From 41246fce426dd0af98db8069e8c4a2d940ba11d4 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 21:20:16 -0800 Subject: [PATCH 030/113] add new tools dir to linted dir list --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3d01e89c892..df96fc2dda1 100644 --- a/Makefile +++ b/Makefile @@ -36,10 +36,11 @@ PROTO_SRCS := $(wildcard src/$(PROJECT)/proto/*.proto) # proto. NONGEN_CXX_SRCS := $(shell find \ src/$(PROJECT) \ - examples \ include/$(PROJECT) \ python/$(PROJECT) \ matlab/$(PROJECT) \ + examples \ + tools \ -regex ".*\.\(cpp\|hpp\|cu\|cuh\)") # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) PY$(PROJECT)_SRC := python/$(PROJECT)/py$(PROJECT).cpp From 218ca1522debd359892d0e0053d08db36da3a48b Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Tue, 25 Feb 2014 21:56:49 -0800 Subject: [PATCH 031/113] cpplint.py -> cpp_lint.py and NOLINT_NEXTLINE -> NOLINT_NEXT_LINE --- Makefile | 2 +- scripts/{cpplint.py => cpp_lint.py} | 6 +++--- src/caffe/layers/bnll_layer.cu | 4 ++-- src/caffe/layers/data_layer.cpp | 8 ++++---- src/caffe/layers/dropout_layer.cu | 4 ++-- src/caffe/layers/lrn_layer.cu | 6 +++--- src/caffe/layers/pooling_layer.cu | 14 +++++++------- src/caffe/layers/relu_layer.cu | 4 ++-- src/caffe/layers/sigmoid_layer.cu | 4 ++-- src/caffe/layers/softmax_layer.cu | 6 +++--- src/caffe/layers/tanh_layer.cu | 4 ++-- .../test/test_multinomial_logistic_loss_layer.cpp | 2 +- src/caffe/test/test_softmax_with_loss_layer.cpp | 2 +- src/caffe/util/im2col.cu | 4 ++-- src/caffe/util/math_functions.cu | 4 ++-- 15 files changed, 37 insertions(+), 37 deletions(-) rename scripts/{cpplint.py => cpp_lint.py} (99%) diff --git a/Makefile b/Makefile index df96fc2dda1..e6098caf510 100644 --- a/Makefile +++ b/Makefile @@ -121,7 +121,7 @@ linecount: clean cloc --read-lang-def=$(PROJECT).cloc src/$(PROJECT)/ lint: - ./scripts/cpplint.py $(NONGEN_CXX_SRCS) + ./scripts/cpp_lint.py $(NONGEN_CXX_SRCS) test: init $(TEST_BINS) diff --git a/scripts/cpplint.py b/scripts/cpp_lint.py similarity index 99% rename from scripts/cpplint.py rename to scripts/cpp_lint.py index 4143c4bd072..11bfefa8208 100755 --- a/scripts/cpplint.py +++ b/scripts/cpp_lint.py @@ -437,8 +437,8 @@ _regexp_compile_cache = {} -# Finds occurrences of NOLINT[_NEXTLINE] or NOLINT[_NEXTLINE](...). -_RE_SUPPRESSION = re.compile(r'\bNOLINT(_NEXTLINE)?\b(\([^)]*\))?') +# Finds occurrences of NOLINT[_NEXT_LINE] or NOLINT[_NEXT_LINE](...). +_RE_SUPPRESSION = re.compile(r'\bNOLINT(_NEXT_LINE)?\b(\([^)]*\))?') # {str, set(int)}: a map from error categories to sets of linenumbers # on which those errors are expected and should be suppressed. @@ -472,7 +472,7 @@ def ParseNolintSuppressions(filename, raw_line, linenum, error): # FIXME(adonovan): "NOLINT(" is misparsed as NOLINT(*). matched = _RE_SUPPRESSION.search(raw_line) if matched: - if matched.group(1) == '_NEXTLINE': + if matched.group(1) == '_NEXT_LINE': linenum += 1 category = matched.group(2) if category in (None, '(*)'): # => "suppress all" diff --git a/src/caffe/layers/bnll_layer.cu b/src/caffe/layers/bnll_layer.cu index c1795bcf9aa..f61cffa9739 100644 --- a/src/caffe/layers/bnll_layer.cu +++ b/src/caffe/layers/bnll_layer.cu @@ -59,7 +59,7 @@ void BNLLLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) BNLLForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; @@ -84,7 +84,7 @@ Dtype BNLLLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) BNLLBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index 7950313d4cb..f973a565539 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -50,15 +50,15 @@ void* DataLayerPrefetch(void* layer_pointer) { int h_off, w_off; // We only do random crop when we do training. if (Caffe::phase() == Caffe::TRAIN) { - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) h_off = rand() % (height - cropsize); - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) w_off = rand() % (width - cropsize); } else { h_off = (height - cropsize) / 2; w_off = (width - cropsize) / 2; } - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) if (mirror && rand() % 2) { // Copy mirrored version for (int c = 0; c < channels; ++c) { @@ -143,7 +143,7 @@ void DataLayer::SetUp(const vector*>& bottom, iter_->SeekToFirst(); // Check if we would need to randomly skip a few data points if (this->layer_param_.rand_skip()) { - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) unsigned int skip = rand() % this->layer_param_.rand_skip(); LOG(INFO) << "Skipping first " << skip << " data points."; while (skip-- > 0) { diff --git a/src/caffe/layers/dropout_layer.cu b/src/caffe/layers/dropout_layer.cu index 0e15b6fada6..efba295225d 100644 --- a/src/caffe/layers/dropout_layer.cu +++ b/src/caffe/layers/dropout_layer.cu @@ -82,7 +82,7 @@ void DropoutLayer::Forward_gpu(const vector*>& bottom, CURAND_CHECK(curandGenerate(Caffe::curand_generator(), (unsigned int*)(rand_vec_->mutable_gpu_data()), count)); // set thresholds - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) DropoutForward<<>>( count, bottom_data, (unsigned int*)rand_vec_->gpu_data(), uint_thres_, scale_, top_data); @@ -113,7 +113,7 @@ Dtype DropoutLayer::Backward_gpu(const vector*>& top, Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const unsigned int* mask = (unsigned int*)rand_vec_->gpu_data(); const int count = (*bottom)[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) DropoutBackward<<>>( count, top_diff, mask, uint_thres_, scale_, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/lrn_layer.cu b/src/caffe/layers/lrn_layer.cu index 9c82b35d6b7..67c1039976e 100644 --- a/src/caffe/layers/lrn_layer.cu +++ b/src/caffe/layers/lrn_layer.cu @@ -76,13 +76,13 @@ void LRNLayer::Forward_gpu(const vector*>& bottom, // We will launch one kernel for each pixel location, and have the kernel // go through all the channels. int n_threads = num_ * height_ * width_; - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) LRNFillScale<<>>( n_threads, bottom_data, num_, channels_, height_, width_, size_, alpha_ / size_, scale_data); CUDA_POST_KERNEL_CHECK; n_threads = bottom[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) LRNComputeOutput<<>>( n_threads, bottom_data, scale_data, -beta_, top_data); CUDA_POST_KERNEL_CHECK; @@ -155,7 +155,7 @@ template Dtype LRNLayer::Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { int n_threads = num_ * height_ * width_; - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) LRNComputeDiff<<>>( n_threads, (*bottom)[0]->gpu_data(), top[0]->gpu_data(), scale_.gpu_data(), top[0]->gpu_diff(), num_, channels_, height_, width_, diff --git a/src/caffe/layers/pooling_layer.cu b/src/caffe/layers/pooling_layer.cu index 75078b3db5f..1c8952f48de 100644 --- a/src/caffe/layers/pooling_layer.cu +++ b/src/caffe/layers/pooling_layer.cu @@ -146,14 +146,14 @@ void PoolingLayer::Forward_gpu(const vector*>& bottom, int count = (*top)[0]->count(); switch (this->layer_param_.pool()) { case LayerParameter_PoolMethod_MAX: - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) MaxPoolForward<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, top_data); break; case LayerParameter_PoolMethod_AVE: - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) AvePoolForward<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, @@ -164,14 +164,14 @@ void PoolingLayer::Forward_gpu(const vector*>& bottom, // We need to create the random index as well. CURAND_CHECK(curandGenerateUniform(Caffe::curand_generator(), rand_idx_.mutable_gpu_data(), count)); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) StoPoolForwardTrain<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, rand_idx_.mutable_gpu_data(), top_data); } else { - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) StoPoolForwardTest<<>>( count, bottom_data, bottom[0]->num(), CHANNELS_, @@ -294,21 +294,21 @@ Dtype PoolingLayer::Backward_gpu(const vector*>& top, int count = (*bottom)[0]->count(); switch (this->layer_param_.pool()) { case LayerParameter_PoolMethod_MAX: - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) MaxPoolBackward<<>>( count, (*bottom)[0]->gpu_data(), top[0]->gpu_data(), top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, bottom_diff); break; case LayerParameter_PoolMethod_AVE: - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) AvePoolBackward<<>>( count, top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, POOLED_WIDTH_, KSIZE_, STRIDE_, bottom_diff); break; case LayerParameter_PoolMethod_STOCHASTIC: - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) StoPoolBackward<<>>( count, rand_idx_.gpu_data(), top_diff, top[0]->num(), CHANNELS_, HEIGHT_, WIDTH_, POOLED_HEIGHT_, diff --git a/src/caffe/layers/relu_layer.cu b/src/caffe/layers/relu_layer.cu index c56d22a52b3..ed1aab40aed 100644 --- a/src/caffe/layers/relu_layer.cu +++ b/src/caffe/layers/relu_layer.cu @@ -51,7 +51,7 @@ void ReLULayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) ReLUForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; @@ -80,7 +80,7 @@ Dtype ReLULayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) ReLUBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index 1680aa6bdd6..e50260d7d93 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -65,7 +65,7 @@ void SigmoidLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) SigmoidForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; @@ -95,7 +95,7 @@ Dtype SigmoidLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) SigmoidBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/layers/softmax_layer.cu b/src/caffe/layers/softmax_layer.cu index f7adab3b319..af73260ec86 100644 --- a/src/caffe/layers/softmax_layer.cu +++ b/src/caffe/layers/softmax_layer.cu @@ -105,21 +105,21 @@ void SoftmaxLayer::Forward_gpu(const vector*>& bottom, // we need to subtract the max to avoid numerical issues, compute the exp, // and then normalize. // Compute max - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) kernel_get_max<<>>( num, dim, bottom_data, scale_data); // subtraction caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., scale_data, sum_multiplier_.gpu_data(), 1., top_data); // Perform exponentiation - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) kernel_exp<<>>( num * dim, top_data, top_data); // sum after exp caffe_gpu_gemv(CblasNoTrans, num, dim, 1., top_data, sum_multiplier_.gpu_data(), 0., scale_data); // Do division - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) kernel_softmax_div<<>>( num, dim, scale_data, top_data); diff --git a/src/caffe/layers/tanh_layer.cu b/src/caffe/layers/tanh_layer.cu index 28145771508..a309a605314 100644 --- a/src/caffe/layers/tanh_layer.cu +++ b/src/caffe/layers/tanh_layer.cu @@ -58,7 +58,7 @@ void TanHLayer::Forward_gpu(const vector*>& bottom, const Dtype* bottom_data = bottom[0]->gpu_data(); Dtype* top_data = (*top)[0]->mutable_gpu_data(); const int count = bottom[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) TanHForward<<>>( count, bottom_data, top_data); CUDA_POST_KERNEL_CHECK; @@ -89,7 +89,7 @@ Dtype TanHLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); const int count = (*bottom)[0]->count(); - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) TanHBackward<<>>( count, top_diff, bottom_data, bottom_diff); CUDA_POST_KERNEL_CHECK; diff --git a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp index 85285d0086e..5169b708520 100644 --- a/src/caffe/test/test_multinomial_logistic_loss_layer.cpp +++ b/src/caffe/test/test_multinomial_logistic_loss_layer.cpp @@ -31,7 +31,7 @@ class MultinomialLogisticLossLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_data_); blob_bottom_vec_.push_back(blob_bottom_data_); for (int i = 0; i < blob_bottom_label_->count(); ++i) { - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) blob_bottom_label_->mutable_cpu_data()[i] = rand() % 5; } blob_bottom_vec_.push_back(blob_bottom_label_); diff --git a/src/caffe/test/test_softmax_with_loss_layer.cpp b/src/caffe/test/test_softmax_with_loss_layer.cpp index c8c417a387b..77668e54b79 100644 --- a/src/caffe/test/test_softmax_with_loss_layer.cpp +++ b/src/caffe/test/test_softmax_with_loss_layer.cpp @@ -32,7 +32,7 @@ class SoftmaxWithLossLayerTest : public ::testing::Test { filler.Fill(this->blob_bottom_data_); blob_bottom_vec_.push_back(blob_bottom_data_); for (int i = 0; i < blob_bottom_label_->count(); ++i) { - // NOLINT_NEXTLINE(runtime/threadsafe_fn) + // NOLINT_NEXT_LINE(runtime/threadsafe_fn) blob_bottom_label_->mutable_cpu_data()[i] = rand() % 5; } blob_bottom_vec_.push_back(blob_bottom_label_); diff --git a/src/caffe/util/im2col.cu b/src/caffe/util/im2col.cu index c3c8736420c..3156fa3c77a 100644 --- a/src/caffe/util/im2col.cu +++ b/src/caffe/util/im2col.cu @@ -47,7 +47,7 @@ void im2col_gpu(const Dtype* data_im, const int channels, int height_col = (height + 2 * pad - ksize) / stride + 1; int width_col = (width + 2 * pad - ksize) / stride + 1; int num_kernels = channels * height_col * width_col; - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) im2col_gpu_kernel<<>>( num_kernels, data_im, height, width, ksize, pad, stride, height_col, @@ -113,7 +113,7 @@ void col2im_gpu(const Dtype* data_col, const int channels, int num_kernels = channels * height * width; // To avoid involving atomic operations, we will launch one kernel per // bottom dimension, and then in the kernel add up the top dimensions. - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) col2im_gpu_kernel<<>>( num_kernels, data_col, height, width, channels, ksize, pad, stride, diff --git a/src/caffe/util/math_functions.cu b/src/caffe/util/math_functions.cu index d063504c996..b29a58abe7f 100644 --- a/src/caffe/util/math_functions.cu +++ b/src/caffe/util/math_functions.cu @@ -21,7 +21,7 @@ __global__ void mul_kernel(const int n, const Dtype* a, template <> void caffe_gpu_mul(const int N, const float* a, const float* b, float* y) { - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) mul_kernel<<>>( N, a, b, y); } @@ -29,7 +29,7 @@ void caffe_gpu_mul(const int N, const float* a, template <> void caffe_gpu_mul(const int N, const double* a, const double* b, double* y) { - // NOLINT_NEXTLINE(whitespace/operators) + // NOLINT_NEXT_LINE(whitespace/operators) mul_kernel<<>>( N, a, b, y); } From 5fdf55c437f7f94948af7d361a80e5b3d6d22e63 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 26 Feb 2014 00:41:19 -0800 Subject: [PATCH 032/113] make lint will not rerun if successful and no source files have been changed; saves output to build/cpp_lint.log (or build/cpp_lint.error_log on failure) --- Makefile | 20 +++++++++++++++----- scripts/cpp_lint.py | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index e6098caf510..0d22f54ce4d 100644 --- a/Makefile +++ b/Makefile @@ -32,8 +32,8 @@ TOOL_SRCS := $(shell find tools -name "*.cpp") EXAMPLE_SRCS := $(shell find examples -name "*.cpp") # PROTO_SRCS are the protocol buffer definitions PROTO_SRCS := $(wildcard src/$(PROJECT)/proto/*.proto) -# NONGEN_CXX_SRCS includes all source/header files except those generated by -# proto. +# NONGEN_CXX_SRCS includes all source/header files except those generated +# automatically (e.g., by proto). NONGEN_CXX_SRCS := $(shell find \ src/$(PROJECT) \ include/$(PROJECT) \ @@ -42,6 +42,8 @@ NONGEN_CXX_SRCS := $(shell find \ examples \ tools \ -regex ".*\.\(cpp\|hpp\|cu\|cuh\)") +LINT_REPORT := $(BUILD_DIR)/cpp_lint.log +FAILED_LINT_REPORT := $(BUILD_DIR)/cpp_lint.error_log # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) PY$(PROJECT)_SRC := python/$(PROJECT)/py$(PROJECT).cpp PY$(PROJECT)_SO := python/$(PROJECT)/py$(PROJECT).so @@ -105,7 +107,7 @@ PYTHON_LDFLAGS := $(LDFLAGS) $(foreach library,$(PYTHON_LIBRARIES),-l$(library)) ############################## # Define build targets ############################## -.PHONY: all init test clean linecount tools examples py mat distribute py$(PROJECT) mat$(PROJECT) proto +.PHONY: all init test clean linecount lint tools examples py mat distribute py$(PROJECT) mat$(PROJECT) proto all: init $(NAME) $(STATIC_NAME) tools examples @echo $(CXX_OBJS) @@ -120,8 +122,16 @@ init: linecount: clean cloc --read-lang-def=$(PROJECT).cloc src/$(PROJECT)/ -lint: - ./scripts/cpp_lint.py $(NONGEN_CXX_SRCS) +lint: $(LINT_REPORT) + +$(LINT_REPORT): $(NONGEN_CXX_SRCS) + @ mkdir -p $(BUILD_DIR) + @ (python ./scripts/cpp_lint.py $(NONGEN_CXX_SRCS) > $(LINT_REPORT) 2>&1 \ + && (rm -f $(FAILED_LINT_REPORT); echo "No linter errors!")) || ( \ + mv $(LINT_REPORT) $(FAILED_LINT_REPORT); \ + grep -v "^Done processing " $(FAILED_LINT_REPORT); \ + echo "Found 1 or more linter errors; see log at $(FAILED_LINT_REPORT)"; \ + exit 1) test: init $(TEST_BINS) diff --git a/scripts/cpp_lint.py b/scripts/cpp_lint.py index 11bfefa8208..f7898d8f764 100755 --- a/scripts/cpp_lint.py +++ b/scripts/cpp_lint.py @@ -54,7 +54,7 @@ _USAGE = """ -Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] +Syntax: cpp_lint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] [--counting=total|toplevel|detailed] [--root=subdir] [--linelength=digits] [file] ... From 52a539dcd10de805def24ba2ace904089a9f1cd0 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Wed, 26 Feb 2014 08:49:27 -0800 Subject: [PATCH 033/113] fix python/matlab wrapper bugs introduced by lint; change linter->lint in Makefile --- Makefile | 4 ++-- matlab/caffe/matcaffe.cpp | 4 +--- python/caffe/pycaffe.cpp | 5 ++--- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 0d22f54ce4d..f8adaad0b13 100644 --- a/Makefile +++ b/Makefile @@ -127,10 +127,10 @@ lint: $(LINT_REPORT) $(LINT_REPORT): $(NONGEN_CXX_SRCS) @ mkdir -p $(BUILD_DIR) @ (python ./scripts/cpp_lint.py $(NONGEN_CXX_SRCS) > $(LINT_REPORT) 2>&1 \ - && (rm -f $(FAILED_LINT_REPORT); echo "No linter errors!")) || ( \ + && (rm -f $(FAILED_LINT_REPORT); echo "No lint errors!")) || ( \ mv $(LINT_REPORT) $(FAILED_LINT_REPORT); \ grep -v "^Done processing " $(FAILED_LINT_REPORT); \ - echo "Found 1 or more linter errors; see log at $(FAILED_LINT_REPORT)"; \ + echo "Found 1 or more lint errors; see log at $(FAILED_LINT_REPORT)"; \ exit 1) test: init $(TEST_BINS) diff --git a/matlab/caffe/matcaffe.cpp b/matlab/caffe/matcaffe.cpp index d3bcba9346f..ddbacca1579 100644 --- a/matlab/caffe/matcaffe.cpp +++ b/matlab/caffe/matcaffe.cpp @@ -12,7 +12,7 @@ #define MEX_ARGS int nlhs, mxArray **plhs, int nrhs, const mxArray **prhs -namespace caffe { +using namespace caffe; // NOLINT(build/namespaces) // The pointer to the internal caffe::Net instance static shared_ptr > net_; @@ -189,5 +189,3 @@ void mexFunction(MEX_ARGS) { mxFree(cmd); } } - -} // namespace caffe diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index 6c87d0f9be8..4d28ca64c66 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -20,6 +20,8 @@ #define PyArray_SetBaseObject(arr, x) (PyArray_BASE(arr) = (x)) #endif + +using namespace caffe; // NOLINT(build/namespaces) using boost::python::extract; using boost::python::len; using boost::python::list; @@ -27,7 +29,6 @@ using boost::python::object; using boost::python::handle; using boost::python::vector_indexing_suite; -namespace caffe { // wrap shared_ptr > in a class that we construct in C++ and pass // to Python @@ -278,5 +279,3 @@ BOOST_PYTHON_MODULE(pycaffe) { import_array(); } - -} // namespace caffe From b17ac6620b4e6ae33d4d889b6cdbde1c447bb944 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Wed, 26 Feb 2014 18:45:45 -0800 Subject: [PATCH 034/113] Splitting source files between CUDA and CPU code. --- src/caffe/layers/bnll_layer.cpp | 48 ++++++++ src/caffe/layers/bnll_layer.cu | 31 ------ src/caffe/layers/conv_layer.cpp | 88 --------------- src/caffe/layers/conv_layer.cu | 104 ++++++++++++++++++ src/caffe/layers/data_layer.cpp | 23 ---- src/caffe/layers/data_layer.cu | 44 ++++++++ src/caffe/layers/dropout_layer.cpp | 63 +++++++++++ src/caffe/layers/dropout_layer.cu | 48 -------- src/caffe/layers/flatten_layer.cpp | 18 --- src/caffe/layers/flatten_layer.cu | 30 +++++ src/caffe/layers/hdf5_data_layer.cpp | 28 ----- src/caffe/layers/hdf5_data_layer.cu | 53 +++++++++ src/caffe/layers/im2col_layer.cpp | 24 ---- src/caffe/layers/im2col_layer.cu | 38 +++++++ src/caffe/layers/inner_product_layer.cpp | 40 ------- src/caffe/layers/inner_product_layer.cu | 59 ++++++++++ .../layers/{loss_layer.cu => loss_layer.cpp} | 6 +- src/caffe/layers/relu_layer.cpp | 42 +++++++ src/caffe/layers/relu_layer.cu | 27 ----- src/caffe/layers/sigmoid_layer.cpp | 46 ++++++++ src/caffe/layers/sigmoid_layer.cu | 35 ------ src/caffe/layers/softmax_layer.cpp | 86 +++++++++++++++ src/caffe/layers/softmax_layer.cu | 71 ------------ src/caffe/layers/softmax_loss_layer.cpp | 59 ++++++++++ src/caffe/layers/softmax_loss_layer.cu | 40 ------- src/caffe/layers/split_layer.cpp | 34 ------ src/caffe/layers/split_layer.cu | 48 ++++++++ src/caffe/layers/tanh_layer.cpp | 48 ++++++++ src/caffe/layers/tanh_layer.cu | 33 ------ 29 files changed, 771 insertions(+), 543 deletions(-) create mode 100644 src/caffe/layers/bnll_layer.cpp create mode 100644 src/caffe/layers/conv_layer.cu create mode 100644 src/caffe/layers/data_layer.cu create mode 100644 src/caffe/layers/dropout_layer.cpp create mode 100644 src/caffe/layers/flatten_layer.cu create mode 100644 src/caffe/layers/hdf5_data_layer.cu create mode 100644 src/caffe/layers/im2col_layer.cu create mode 100644 src/caffe/layers/inner_product_layer.cu rename src/caffe/layers/{loss_layer.cu => loss_layer.cpp} (96%) create mode 100644 src/caffe/layers/relu_layer.cpp create mode 100644 src/caffe/layers/sigmoid_layer.cpp create mode 100644 src/caffe/layers/softmax_layer.cpp create mode 100644 src/caffe/layers/softmax_loss_layer.cpp create mode 100644 src/caffe/layers/split_layer.cu create mode 100644 src/caffe/layers/tanh_layer.cpp diff --git a/src/caffe/layers/bnll_layer.cpp b/src/caffe/layers/bnll_layer.cpp new file mode 100644 index 00000000000..ab0e0f09db9 --- /dev/null +++ b/src/caffe/layers/bnll_layer.cpp @@ -0,0 +1,48 @@ +// Copyright 2013 Yangqing Jia + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include + +using std::min; + +namespace caffe { + +const float kBNLL_THRESHOLD = 50.; + +template +void BNLLLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = bottom_data[i] > 0 ? + bottom_data[i] + log(1. + exp(-bottom_data[i])) : + log(1. + exp(bottom_data[i])); + } +} + +template +Dtype BNLLLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + if (propagate_down) { + const Dtype* bottom_data = (*bottom)[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const int count = (*bottom)[0]->count(); + Dtype expval; + for (int i = 0; i < count; ++i) { + expval = exp(min(bottom_data[i], Dtype(kBNLL_THRESHOLD))); + bottom_diff[i] = top_diff[i] * expval / (expval + 1.); + } + } + return Dtype(0); +} + + +INSTANTIATE_CLASS(BNLLLayer); + + +} // namespace caffe diff --git a/src/caffe/layers/bnll_layer.cu b/src/caffe/layers/bnll_layer.cu index f61cffa9739..1edec33a32f 100644 --- a/src/caffe/layers/bnll_layer.cu +++ b/src/caffe/layers/bnll_layer.cu @@ -12,37 +12,6 @@ namespace caffe { const float kBNLL_THRESHOLD = 50.; -template -void BNLLLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - const int count = bottom[0]->count(); - for (int i = 0; i < count; ++i) { - top_data[i] = bottom_data[i] > 0 ? - bottom_data[i] + log(1. + exp(-bottom_data[i])) : - log(1. + exp(bottom_data[i])); - } -} - -template -Dtype BNLLLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - if (propagate_down) { - const Dtype* bottom_data = (*bottom)[0]->cpu_data(); - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int count = (*bottom)[0]->count(); - Dtype expval; - for (int i = 0; i < count; ++i) { - expval = exp(min(bottom_data[i], Dtype(kBNLL_THRESHOLD))); - bottom_diff[i] = top_diff[i] * expval / (expval + 1.); - } - } - return Dtype(0); -} - template __global__ void BNLLForward(const int n, const Dtype* in, Dtype* out) { int index = threadIdx.x + blockIdx.x * blockDim.x; diff --git a/src/caffe/layers/conv_layer.cpp b/src/caffe/layers/conv_layer.cpp index 21256f90eb6..64a652a8e1d 100644 --- a/src/caffe/layers/conv_layer.cpp +++ b/src/caffe/layers/conv_layer.cpp @@ -106,36 +106,6 @@ void ConvolutionLayer::Forward_cpu(const vector*>& bottom, } } -template -void ConvolutionLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - Dtype* col_data = col_buffer_.mutable_gpu_data(); - const Dtype* weight = this->blobs_[0]->gpu_data(); - int weight_offset = M_ * K_; - int col_offset = K_ * N_; - int top_offset = M_ * N_; - for (int n = 0; n < NUM_; ++n) { - // First, im2col - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - // Second, innerproduct with groups - for (int g = 0; g < GROUP_; ++g) { - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, - (Dtype)1., weight + weight_offset * g, col_data + col_offset * g, - (Dtype)0., top_data + (*top)[0]->offset(n) + top_offset * g); - } - // third, add bias - if (biasterm_) { - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, NUM_OUTPUT_, - N_, 1, (Dtype)1., this->blobs_[1]->gpu_data(), - reinterpret_cast(bias_multiplier_->gpu_data()), - (Dtype)1., top_data + (*top)[0]->offset(n)); - } - } -} - template Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { @@ -192,64 +162,6 @@ Dtype ConvolutionLayer::Backward_cpu(const vector*>& top, return Dtype(0.); } -template -Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - const Dtype* weight = this->blobs_[0]->gpu_data(); - Dtype* weight_diff = this->blobs_[0]->mutable_gpu_diff(); - const Dtype* bottom_data = (*bottom)[0]->gpu_data(); - Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); - Dtype* col_data = col_buffer_.mutable_gpu_data(); - Dtype* col_diff = col_buffer_.mutable_gpu_diff(); - // bias gradient if necessary - Dtype* bias_diff = NULL; - - if (biasterm_) { - bias_diff = this->blobs_[1]->mutable_gpu_diff(); - CUDA_CHECK(cudaMemset(bias_diff, 0, - sizeof(Dtype) * this->blobs_[1]->count())); - for (int n = 0; n < NUM_; ++n) { - caffe_gpu_gemv(CblasNoTrans, NUM_OUTPUT_, N_, - 1., top_diff + top[0]->offset(n), - reinterpret_cast(bias_multiplier_->gpu_data()), - 1., bias_diff); - } - } - - int weight_offset = M_ * K_; - int col_offset = K_ * N_; - int top_offset = M_ * N_; - CUDA_CHECK(cudaMemset(weight_diff, 0, - sizeof(Dtype) * this->blobs_[0]->count())); - for (int n = 0; n < NUM_; ++n) { - // since we saved memory in the forward pass by not storing all col data, - // we will need to recompute them. - im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); - // gradient w.r.t. weight. Note that we will accumulate diffs. - for (int g = 0; g < GROUP_; ++g) { - caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, - (Dtype)1., top_diff + top[0]->offset(n) + top_offset * g, - col_data + col_offset * g, (Dtype)1., - weight_diff + weight_offset * g); - } - // gradient w.r.t. bottom data, if necessary - if (propagate_down) { - for (int g = 0; g < GROUP_; ++g) { - caffe_gpu_gemm(CblasTrans, CblasNoTrans, K_, N_, M_, - (Dtype)1., weight + weight_offset * g, - top_diff + top[0]->offset(n) + top_offset * g, - (Dtype)0., col_diff + col_offset * g); - } - // col2im back to the data - col2im_gpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, - bottom_diff + (*bottom)[0]->offset(n)); - } - } - return Dtype(0.); -} - INSTANTIATE_CLASS(ConvolutionLayer); } // namespace caffe diff --git a/src/caffe/layers/conv_layer.cu b/src/caffe/layers/conv_layer.cu new file mode 100644 index 00000000000..a7f56faa97b --- /dev/null +++ b/src/caffe/layers/conv_layer.cu @@ -0,0 +1,104 @@ +// Copyright 2013 Yangqing Jia + +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/filler.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ConvolutionLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + Dtype* col_data = col_buffer_.mutable_gpu_data(); + const Dtype* weight = this->blobs_[0]->gpu_data(); + int weight_offset = M_ * K_; + int col_offset = K_ * N_; + int top_offset = M_ * N_; + for (int n = 0; n < NUM_; ++n) { + // First, im2col + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + // Second, innerproduct with groups + for (int g = 0; g < GROUP_; ++g) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, K_, + (Dtype)1., weight + weight_offset * g, col_data + col_offset * g, + (Dtype)0., top_data + (*top)[0]->offset(n) + top_offset * g); + } + // third, add bias + if (biasterm_) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, NUM_OUTPUT_, + N_, 1, (Dtype)1., this->blobs_[1]->gpu_data(), + reinterpret_cast(bias_multiplier_->gpu_data()), + (Dtype)1., top_data + (*top)[0]->offset(n)); + } + } +} + +template +Dtype ConvolutionLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* weight = this->blobs_[0]->gpu_data(); + Dtype* weight_diff = this->blobs_[0]->mutable_gpu_diff(); + const Dtype* bottom_data = (*bottom)[0]->gpu_data(); + Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); + Dtype* col_data = col_buffer_.mutable_gpu_data(); + Dtype* col_diff = col_buffer_.mutable_gpu_diff(); + // bias gradient if necessary + Dtype* bias_diff = NULL; + + if (biasterm_) { + bias_diff = this->blobs_[1]->mutable_gpu_diff(); + CUDA_CHECK(cudaMemset(bias_diff, 0, + sizeof(Dtype) * this->blobs_[1]->count())); + for (int n = 0; n < NUM_; ++n) { + caffe_gpu_gemv(CblasNoTrans, NUM_OUTPUT_, N_, + 1., top_diff + top[0]->offset(n), + reinterpret_cast(bias_multiplier_->gpu_data()), + 1., bias_diff); + } + } + + int weight_offset = M_ * K_; + int col_offset = K_ * N_; + int top_offset = M_ * N_; + CUDA_CHECK(cudaMemset(weight_diff, 0, + sizeof(Dtype) * this->blobs_[0]->count())); + for (int n = 0; n < NUM_; ++n) { + // since we saved memory in the forward pass by not storing all col data, + // we will need to recompute them. + im2col_gpu(bottom_data + (*bottom)[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, col_data); + // gradient w.r.t. weight. Note that we will accumulate diffs. + for (int g = 0; g < GROUP_; ++g) { + caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, K_, N_, + (Dtype)1., top_diff + top[0]->offset(n) + top_offset * g, + col_data + col_offset * g, (Dtype)1., + weight_diff + weight_offset * g); + } + // gradient w.r.t. bottom data, if necessary + if (propagate_down) { + for (int g = 0; g < GROUP_; ++g) { + caffe_gpu_gemm(CblasTrans, CblasNoTrans, K_, N_, M_, + (Dtype)1., weight + weight_offset * g, + top_diff + top[0]->offset(n) + top_offset * g, + (Dtype)0., col_diff + col_offset * g); + } + // col2im back to the data + col2im_gpu(col_diff, CHANNELS_, HEIGHT_, WIDTH_, KSIZE_, PAD_, STRIDE_, + bottom_diff + (*bottom)[0]->offset(n)); + } + } + return Dtype(0.); +} + + +INSTANTIATE_CLASS(ConvolutionLayer); + +} // namespace caffe diff --git a/src/caffe/layers/data_layer.cpp b/src/caffe/layers/data_layer.cpp index f973a565539..cc03cdbf0b7 100644 --- a/src/caffe/layers/data_layer.cpp +++ b/src/caffe/layers/data_layer.cpp @@ -227,23 +227,6 @@ void DataLayer::Forward_cpu(const vector*>& bottom, reinterpret_cast(this))) << "Pthread execution failed."; } -template -void DataLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - // First, join the thread - CHECK(!pthread_join(thread_, NULL)) << "Pthread joining failed."; - // Copy the data - CUDA_CHECK(cudaMemcpy((*top)[0]->mutable_gpu_data(), - prefetch_data_->cpu_data(), sizeof(Dtype) * prefetch_data_->count(), - cudaMemcpyHostToDevice)); - CUDA_CHECK(cudaMemcpy((*top)[1]->mutable_gpu_data(), - prefetch_label_->cpu_data(), sizeof(Dtype) * prefetch_label_->count(), - cudaMemcpyHostToDevice)); - // Start a new prefetch thread - CHECK(!pthread_create(&thread_, NULL, DataLayerPrefetch, - reinterpret_cast(this))) << "Pthread execution failed."; -} - // The backward operations are dummy - they do not carry any computation. template Dtype DataLayer::Backward_cpu(const vector*>& top, @@ -251,12 +234,6 @@ Dtype DataLayer::Backward_cpu(const vector*>& top, return Dtype(0.); } -template -Dtype DataLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - return Dtype(0.); -} - INSTANTIATE_CLASS(DataLayer); } // namespace caffe diff --git a/src/caffe/layers/data_layer.cu b/src/caffe/layers/data_layer.cu new file mode 100644 index 00000000000..946f30f3b7f --- /dev/null +++ b/src/caffe/layers/data_layer.cu @@ -0,0 +1,44 @@ +// Copyright 2013 Yangqing Jia + +#include +#include +#include + +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/util/io.hpp" +#include "caffe/vision_layers.hpp" + +using std::string; + +namespace caffe { + +template +void DataLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + // First, join the thread + CHECK(!pthread_join(thread_, NULL)) << "Pthread joining failed."; + // Copy the data + CUDA_CHECK(cudaMemcpy((*top)[0]->mutable_gpu_data(), + prefetch_data_->cpu_data(), sizeof(Dtype) * prefetch_data_->count(), + cudaMemcpyHostToDevice)); + CUDA_CHECK(cudaMemcpy((*top)[1]->mutable_gpu_data(), + prefetch_label_->cpu_data(), sizeof(Dtype) * prefetch_label_->count(), + cudaMemcpyHostToDevice)); + // Start a new prefetch thread + CHECK(!pthread_create(&thread_, NULL, DataLayerPrefetch, + reinterpret_cast(this))) << "Pthread execution failed."; +} + +// The backward operations are dummy - they do not carry any computation. +template +Dtype DataLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + return Dtype(0.); +} + +INSTANTIATE_CLASS(DataLayer); + +} // namespace caffe diff --git a/src/caffe/layers/dropout_layer.cpp b/src/caffe/layers/dropout_layer.cpp new file mode 100644 index 00000000000..4e1fbfae602 --- /dev/null +++ b/src/caffe/layers/dropout_layer.cpp @@ -0,0 +1,63 @@ +// Copyright 2013 Yangqing Jia + +#include "caffe/common.hpp" +#include "caffe/layer.hpp" +#include "caffe/syncedmem.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void DropoutLayer::SetUp(const vector*>& bottom, + vector*>* top) { + NeuronLayer::SetUp(bottom, top); + // Set up the cache for random number generation + rand_vec_.reset(new SyncedMemory(bottom[0]->count() * sizeof(int))); + threshold_ = this->layer_param_.dropout_ratio(); + DCHECK(threshold_ > 0.); + DCHECK(threshold_ < 1.); + scale_ = 1. / (1. - threshold_); + uint_thres_ = (unsigned int)(UINT_MAX * threshold_); +} + +template +void DropoutLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + int* mask = reinterpret_cast(rand_vec_->mutable_cpu_data()); + const int count = bottom[0]->count(); + if (Caffe::phase() == Caffe::TRAIN) { + // Create random numbers + viRngBernoulli(VSL_RNG_METHOD_BERNOULLI_ICDF, Caffe::vsl_stream(), + count, mask, 1. - threshold_); + for (int i = 0; i < count; ++i) { + top_data[i] = bottom_data[i] * mask[i] * scale_; + } + } else { + memcpy(top_data, bottom_data, bottom[0]->count() * sizeof(Dtype)); + } +} + +template +Dtype DropoutLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + CHECK(Caffe::phase() == Caffe::TRAIN); + if (propagate_down) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const int* mask = reinterpret_cast(rand_vec_->cpu_data()); + const int count = (*bottom)[0]->count(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * mask[i] * scale_; + } + } + return Dtype(0); +} + + +INSTANTIATE_CLASS(DropoutLayer); + + +} // namespace caffe diff --git a/src/caffe/layers/dropout_layer.cu b/src/caffe/layers/dropout_layer.cu index efba295225d..2b6a68b7279 100644 --- a/src/caffe/layers/dropout_layer.cu +++ b/src/caffe/layers/dropout_layer.cu @@ -13,54 +13,6 @@ using std::max; namespace caffe { -template -void DropoutLayer::SetUp(const vector*>& bottom, - vector*>* top) { - NeuronLayer::SetUp(bottom, top); - // Set up the cache for random number generation - rand_vec_.reset(new SyncedMemory(bottom[0]->count() * sizeof(int))); - threshold_ = this->layer_param_.dropout_ratio(); - DCHECK(threshold_ > 0.); - DCHECK(threshold_ < 1.); - scale_ = 1. / (1. - threshold_); - uint_thres_ = (unsigned int)(UINT_MAX * threshold_); -} - -template -void DropoutLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - int* mask = reinterpret_cast(rand_vec_->mutable_cpu_data()); - const int count = bottom[0]->count(); - if (Caffe::phase() == Caffe::TRAIN) { - // Create random numbers - viRngBernoulli(VSL_RNG_METHOD_BERNOULLI_ICDF, Caffe::vsl_stream(), - count, mask, 1. - threshold_); - for (int i = 0; i < count; ++i) { - top_data[i] = bottom_data[i] * mask[i] * scale_; - } - } else { - memcpy(top_data, bottom_data, bottom[0]->count() * sizeof(Dtype)); - } -} - -template -Dtype DropoutLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - CHECK(Caffe::phase() == Caffe::TRAIN); - if (propagate_down) { - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int* mask = reinterpret_cast(rand_vec_->cpu_data()); - const int count = (*bottom)[0]->count(); - for (int i = 0; i < count; ++i) { - bottom_diff[i] = top_diff[i] * mask[i] * scale_; - } - } - return Dtype(0); -} template __global__ void DropoutForward(const int n, const Dtype* in, diff --git a/src/caffe/layers/flatten_layer.cpp b/src/caffe/layers/flatten_layer.cpp index bedf2963100..9e17a8200c1 100644 --- a/src/caffe/layers/flatten_layer.cpp +++ b/src/caffe/layers/flatten_layer.cpp @@ -29,14 +29,6 @@ void FlattenLayer::Forward_cpu(const vector*>& bottom, caffe_copy(count_, bottom_data, top_data); } -template -void FlattenLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - caffe_gpu_copy(count_, bottom_data, top_data); -} - template Dtype FlattenLayer::Backward_cpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { @@ -46,16 +38,6 @@ Dtype FlattenLayer::Backward_cpu(const vector*>& top, return Dtype(0.); } - -template -Dtype FlattenLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); - caffe_gpu_copy(count_, top_diff, bottom_diff); - return Dtype(0.); -} - INSTANTIATE_CLASS(FlattenLayer); } // namespace caffe diff --git a/src/caffe/layers/flatten_layer.cu b/src/caffe/layers/flatten_layer.cu new file mode 100644 index 00000000000..571e22e2417 --- /dev/null +++ b/src/caffe/layers/flatten_layer.cu @@ -0,0 +1,30 @@ +// Copyright 2013 Yangqing Jia + +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void FlattenLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + caffe_gpu_copy(count_, bottom_data, top_data); +} + +template +Dtype FlattenLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); + caffe_gpu_copy(count_, top_diff, bottom_diff); + return Dtype(0.); +} + +INSTANTIATE_CLASS(FlattenLayer); + +} // namespace caffe diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 11b7d29f175..c31213e052a 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -65,28 +65,6 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, } } -template -void HDF5DataLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const int batchsize = this->layer_param_.batchsize(); - for (int i = 0; i < batchsize; ++i, ++current_row) { - if (current_row == data_dims[0]) { - current_row = 0; - } - - CUDA_CHECK(cudaMemcpy( - &(*top)[0]->mutable_gpu_data()[i * data_dims[1]], - &(data.get()[current_row * data_dims[1]]), - sizeof(Dtype) * data_dims[1], - cudaMemcpyHostToDevice)); - - CUDA_CHECK(cudaMemcpy( - &(*top)[1]->mutable_gpu_data()[i * label_dims[1]], - &(label.get()[current_row * label_dims[1]]), - sizeof(Dtype) * label_dims[1], - cudaMemcpyHostToDevice)); - } -} // The backward operations are dummy - they do not carry any computation. template @@ -95,12 +73,6 @@ Dtype HDF5DataLayer::Backward_cpu(const vector*>& top, return Dtype(0.); } -template -Dtype HDF5DataLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - return Dtype(0.); -} - INSTANTIATE_CLASS(HDF5DataLayer); } // namespace caffe diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu new file mode 100644 index 00000000000..1ecf149b990 --- /dev/null +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -0,0 +1,53 @@ +// Copyright Sergey Karayev 2014 +/* +TODO: +- only load parts of the file, in accordance with a prototxt param "max_mem" +*/ + +#include +#include +#include + +#include "hdf5.h" +#include "hdf5_hl.h" + +#include "caffe/layer.hpp" +#include "caffe/util/io.hpp" +#include "caffe/vision_layers.hpp" + +using std::string; + +namespace caffe { + +template +void HDF5DataLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const int batchsize = this->layer_param_.batchsize(); + for (int i = 0; i < batchsize; ++i, ++current_row) { + if (current_row == data_dims[0]) { + current_row = 0; + } + + CUDA_CHECK(cudaMemcpy( + &(*top)[0]->mutable_gpu_data()[i * data_dims[1]], + &(data.get()[current_row * data_dims[1]]), + sizeof(Dtype) * data_dims[1], + cudaMemcpyHostToDevice)); + + CUDA_CHECK(cudaMemcpy( + &(*top)[1]->mutable_gpu_data()[i * label_dims[1]], + &(label.get()[current_row * label_dims[1]]), + sizeof(Dtype) * label_dims[1], + cudaMemcpyHostToDevice)); + } +} + +template +Dtype HDF5DataLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + return Dtype(0.); +} + +INSTANTIATE_CLASS(HDF5DataLayer); + +} // namespace caffe diff --git a/src/caffe/layers/im2col_layer.cpp b/src/caffe/layers/im2col_layer.cpp index a94209b33fa..e711713b895 100644 --- a/src/caffe/layers/im2col_layer.cpp +++ b/src/caffe/layers/im2col_layer.cpp @@ -36,17 +36,6 @@ void Im2colLayer::Forward_cpu(const vector*>& bottom, } } -template -void Im2colLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - for (int n = 0; n < bottom[0]->num(); ++n) { - im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); - } -} - template Dtype Im2colLayer::Backward_cpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { @@ -59,19 +48,6 @@ Dtype Im2colLayer::Backward_cpu(const vector*>& top, return Dtype(0.); } - -template -Dtype Im2colLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); - for (int n = 0; n < top[0]->num(); ++n) { - col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, - WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); - } - return Dtype(0.); -} - INSTANTIATE_CLASS(Im2colLayer); } // namespace caffe diff --git a/src/caffe/layers/im2col_layer.cu b/src/caffe/layers/im2col_layer.cu new file mode 100644 index 00000000000..2d949b12296 --- /dev/null +++ b/src/caffe/layers/im2col_layer.cu @@ -0,0 +1,38 @@ +// Copyright 2013 Yangqing Jia + +#include + +#include "caffe/layer.hpp" +#include "caffe/util/im2col.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/common.hpp" + +namespace caffe { + +template +void Im2colLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + for (int n = 0; n < bottom[0]->num(); ++n) { + im2col_gpu(bottom_data + bottom[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, top_data + (*top)[0]->offset(n)); + } +} + +template +Dtype Im2colLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); + for (int n = 0; n < top[0]->num(); ++n) { + col2im_gpu(top_diff + top[0]->offset(n), CHANNELS_, HEIGHT_, + WIDTH_, KSIZE_, PAD_, STRIDE_, bottom_diff + (*bottom)[0]->offset(n)); + } + return Dtype(0.); +} + + +INSTANTIATE_CLASS(Im2colLayer); + +} // namespace caffe diff --git a/src/caffe/layers/inner_product_layer.cpp b/src/caffe/layers/inner_product_layer.cpp index d770e23a589..6987a787ed3 100644 --- a/src/caffe/layers/inner_product_layer.cpp +++ b/src/caffe/layers/inner_product_layer.cpp @@ -2,7 +2,6 @@ #include -#include #include @@ -100,45 +99,6 @@ Dtype InnerProductLayer::Backward_cpu(const vector*>& top, return Dtype(0); } -template -void InnerProductLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - const Dtype* weight = this->blobs_[0]->gpu_data(); - caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, N_, K_, (Dtype)1., - bottom_data, weight, (Dtype)0., top_data); - if (biasterm_) { - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., - reinterpret_cast(bias_multiplier_->gpu_data()), - this->blobs_[1]->gpu_data(), (Dtype)1., top_data); - } -} - -template -Dtype InnerProductLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - const Dtype* bottom_data = (*bottom)[0]->gpu_data(); - // Gradient with respect to weight - caffe_gpu_gemm(CblasTrans, CblasNoTrans, N_, K_, M_, (Dtype)1., - top_diff, bottom_data, (Dtype)0., this->blobs_[0]->mutable_gpu_diff()); - if (biasterm_) { - // Gradient with respect to bias - caffe_gpu_gemv(CblasTrans, M_, N_, (Dtype)1., top_diff, - reinterpret_cast(bias_multiplier_->gpu_data()), - (Dtype)0., this->blobs_[1]->mutable_gpu_diff()); - } - if (propagate_down) { - // Gradient with respect to bottom data - caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, K_, N_, (Dtype)1., - top_diff, this->blobs_[0]->gpu_data(), (Dtype)0., - (*bottom)[0]->mutable_gpu_diff()); - } - return Dtype(0); -} - INSTANTIATE_CLASS(InnerProductLayer); } // namespace caffe diff --git a/src/caffe/layers/inner_product_layer.cu b/src/caffe/layers/inner_product_layer.cu new file mode 100644 index 00000000000..c7c3e2a99fd --- /dev/null +++ b/src/caffe/layers/inner_product_layer.cu @@ -0,0 +1,59 @@ +// Copyright 2013 Yangqing Jia + + +#include +#include + +#include + +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void InnerProductLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + const Dtype* weight = this->blobs_[0]->gpu_data(); + caffe_gpu_gemm(CblasNoTrans, CblasTrans, M_, N_, K_, (Dtype)1., + bottom_data, weight, (Dtype)0., top_data); + if (biasterm_) { + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, N_, 1, (Dtype)1., + reinterpret_cast(bias_multiplier_->gpu_data()), + this->blobs_[1]->gpu_data(), (Dtype)1., top_data); + } +} + +template +Dtype InnerProductLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + const Dtype* bottom_data = (*bottom)[0]->gpu_data(); + // Gradient with respect to weight + caffe_gpu_gemm(CblasTrans, CblasNoTrans, N_, K_, M_, (Dtype)1., + top_diff, bottom_data, (Dtype)0., this->blobs_[0]->mutable_gpu_diff()); + if (biasterm_) { + // Gradient with respect to bias + caffe_gpu_gemv(CblasTrans, M_, N_, (Dtype)1., top_diff, + reinterpret_cast(bias_multiplier_->gpu_data()), + (Dtype)0., this->blobs_[1]->mutable_gpu_diff()); + } + if (propagate_down) { + // Gradient with respect to bottom data + caffe_gpu_gemm(CblasNoTrans, CblasNoTrans, M_, K_, N_, (Dtype)1., + top_diff, this->blobs_[0]->gpu_data(), (Dtype)0., + (*bottom)[0]->mutable_gpu_diff()); + } + return Dtype(0); +} + +INSTANTIATE_CLASS(InnerProductLayer); + +} // namespace caffe diff --git a/src/caffe/layers/loss_layer.cu b/src/caffe/layers/loss_layer.cpp similarity index 96% rename from src/caffe/layers/loss_layer.cu rename to src/caffe/layers/loss_layer.cpp index 745bfa4b8bc..1c4303d9bd4 100644 --- a/src/caffe/layers/loss_layer.cu +++ b/src/caffe/layers/loss_layer.cpp @@ -42,7 +42,7 @@ Dtype MultinomialLogisticLossLayer::Backward_cpu( Dtype loss = 0; for (int i = 0; i < num; ++i) { int label = static_cast(bottom_label[i]); - Dtype prob = max(bottom_data[i * dim + label], kLOG_THRESHOLD); + Dtype prob = max(bottom_data[i * dim + label], Dtype(kLOG_THRESHOLD)); loss -= log(prob); bottom_diff[i * dim + label] = - 1. / prob / num; } @@ -86,7 +86,7 @@ Dtype InfogainLossLayer::Backward_cpu(const vector*>& top, for (int i = 0; i < num; ++i) { int label = static_cast(bottom_label[i]); for (int j = 0; j < dim; ++j) { - Dtype prob = max(bottom_data[i * dim + j], kLOG_THRESHOLD); + Dtype prob = max(bottom_data[i * dim + j], Dtype(kLOG_THRESHOLD)); loss -= infogain_mat[label * dim + j] * log(prob); bottom_diff[i * dim + j] = - infogain_mat[label * dim + j] / prob / num; } @@ -160,7 +160,7 @@ void AccuracyLayer::Forward_cpu(const vector*>& bottom, ++accuracy; } Dtype prob = max(bottom_data[i * dim + static_cast(bottom_label[i])], - kLOG_THRESHOLD); + Dtype(kLOG_THRESHOLD)); logprob -= log(prob); } // LOG(INFO) << "Accuracy: " << accuracy; diff --git a/src/caffe/layers/relu_layer.cpp b/src/caffe/layers/relu_layer.cpp new file mode 100644 index 00000000000..478ed31a0e3 --- /dev/null +++ b/src/caffe/layers/relu_layer.cpp @@ -0,0 +1,42 @@ +// Copyright 2013 Yangqing Jia + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include + +using std::max; + +namespace caffe { + +template +void ReLULayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = max(bottom_data[i], Dtype(0)); + } +} + +template +Dtype ReLULayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + if (propagate_down) { + const Dtype* bottom_data = (*bottom)[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const int count = (*bottom)[0]->count(); + for (int i = 0; i < count; ++i) { + bottom_diff[i] = top_diff[i] * (bottom_data[i] > 0); + } + } + return Dtype(0); +} + + +INSTANTIATE_CLASS(ReLULayer); + + +} // namespace caffe diff --git a/src/caffe/layers/relu_layer.cu b/src/caffe/layers/relu_layer.cu index ed1aab40aed..e2e58d96e2d 100644 --- a/src/caffe/layers/relu_layer.cu +++ b/src/caffe/layers/relu_layer.cu @@ -10,33 +10,6 @@ using std::max; namespace caffe { -template -void ReLULayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - const int count = bottom[0]->count(); - for (int i = 0; i < count; ++i) { - top_data[i] = max(bottom_data[i], Dtype(0)); - } -} - -template -Dtype ReLULayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - if (propagate_down) { - const Dtype* bottom_data = (*bottom)[0]->cpu_data(); - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int count = (*bottom)[0]->count(); - for (int i = 0; i < count; ++i) { - bottom_diff[i] = top_diff[i] * (bottom_data[i] > 0); - } - } - return Dtype(0); -} - template __global__ void ReLUForward(const int n, const Dtype* in, Dtype* out) { int index = threadIdx.x + blockIdx.x * blockDim.x; diff --git a/src/caffe/layers/sigmoid_layer.cpp b/src/caffe/layers/sigmoid_layer.cpp new file mode 100644 index 00000000000..112771f0279 --- /dev/null +++ b/src/caffe/layers/sigmoid_layer.cpp @@ -0,0 +1,46 @@ +// Copyright 2014 Tobias Domhan + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include +#include + +namespace caffe { + +template +inline Dtype sigmoid(Dtype x) { + return 1. / (1. + exp(-x)); +} + +template +void SigmoidLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + top_data[i] = sigmoid(bottom_data[i]); + } +} + +template +Dtype SigmoidLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + if (propagate_down) { + const Dtype* bottom_data = (*bottom)[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const int count = (*bottom)[0]->count(); + for (int i = 0; i < count; ++i) { + Dtype sigmoid_x = sigmoid(bottom_data[i]); + bottom_diff[i] = top_diff[i] * sigmoid_x * (1. - sigmoid_x); + } + } + return Dtype(0); +} + +INSTANTIATE_CLASS(SigmoidLayer); + + +} // namespace caffe diff --git a/src/caffe/layers/sigmoid_layer.cu b/src/caffe/layers/sigmoid_layer.cu index e50260d7d93..785d1441d1a 100644 --- a/src/caffe/layers/sigmoid_layer.cu +++ b/src/caffe/layers/sigmoid_layer.cu @@ -11,46 +11,11 @@ using std::max; namespace caffe { -template -inline Dtype sigmoid(Dtype x) { - return 1. / (1. + exp(-x)); -} - -template -void SigmoidLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - const int count = bottom[0]->count(); - for (int i = 0; i < count; ++i) { - top_data[i] = sigmoid(bottom_data[i]); - } -} - -template -Dtype SigmoidLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - if (propagate_down) { - const Dtype* bottom_data = (*bottom)[0]->cpu_data(); - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int count = (*bottom)[0]->count(); - for (int i = 0; i < count; ++i) { - Dtype sigmoid_x = sigmoid(bottom_data[i]); - bottom_diff[i] = top_diff[i] * sigmoid_x * (1. - sigmoid_x); - } - } - return Dtype(0); -} - - template __device__ inline Dtype sigmoid_gpu(Dtype x) { return 1. / (1. + exp(-x)); } - template __global__ void SigmoidForward(const int n, const Dtype* in, Dtype* out) { int index = threadIdx.x + blockIdx.x * blockDim.x; diff --git a/src/caffe/layers/softmax_layer.cpp b/src/caffe/layers/softmax_layer.cpp new file mode 100644 index 00000000000..172094dffe3 --- /dev/null +++ b/src/caffe/layers/softmax_layer.cpp @@ -0,0 +1,86 @@ +// Copyright 2013 Yangqing Jia + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +using std::max; + +namespace caffe { + +template +void SoftmaxLayer::SetUp(const vector*>& bottom, + vector*>* top) { + CHECK_EQ(bottom.size(), 1) << "Softmax Layer takes a single blob as input."; + CHECK_EQ(top->size(), 1) << "Softmax Layer takes a single blob as output."; + (*top)[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + sum_multiplier_.Reshape(1, bottom[0]->channels(), + bottom[0]->height(), bottom[0]->width()); + Dtype* multiplier_data = sum_multiplier_.mutable_cpu_data(); + for (int i = 0; i < sum_multiplier_.count(); ++i) { + multiplier_data[i] = 1.; + } + scale_.Reshape(bottom[0]->num(), 1, 1, 1); +} + +template +void SoftmaxLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + Dtype* scale_data = scale_.mutable_cpu_data(); + int num = bottom[0]->num(); + int dim = bottom[0]->count() / bottom[0]->num(); + memcpy(top_data, bottom_data, sizeof(Dtype) * bottom[0]->count()); + // we need to subtract the max to avoid numerical issues, compute the exp, + // and then normalize. + for (int i = 0; i < num; ++i) { + scale_data[i] = bottom_data[i*dim]; + for (int j = 0; j < dim; ++j) { + scale_data[i] = max(scale_data[i], bottom_data[i * dim + j]); + } + } + // subtraction + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + scale_data, sum_multiplier_.cpu_data(), 1., top_data); + // Perform exponentiation + caffe_exp(num * dim, top_data, top_data); + // sum after exp + caffe_cpu_gemv(CblasNoTrans, num, dim, 1., top_data, + sum_multiplier_.cpu_data(), 0., scale_data); + // Do division + for (int i = 0; i < num; ++i) { + caffe_scal(dim, Dtype(1.) / scale_data[i], top_data + i * dim); + } +} + +template +Dtype SoftmaxLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + const Dtype* top_data = top[0]->cpu_data(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + Dtype* scale_data = scale_.mutable_cpu_data(); + int num = top[0]->num(); + int dim = top[0]->count() / top[0]->num(); + memcpy(bottom_diff, top_diff, sizeof(Dtype) * top[0]->count()); + // Compute inner1d(top_diff, top_data) and subtract them from the bottom diff + for (int i = 0; i < num; ++i) { + scale_data[i] = caffe_cpu_dot(dim, top_diff + i * dim, + top_data + i * dim); + } + // subtraction + caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., + scale_data, sum_multiplier_.cpu_data(), 1., bottom_diff); + // elementwise multiplication + caffe_mul(top[0]->count(), bottom_diff, top_data, bottom_diff); + return Dtype(0); +} + + +INSTANTIATE_CLASS(SoftmaxLayer); + + +} // namespace caffe diff --git a/src/caffe/layers/softmax_layer.cu b/src/caffe/layers/softmax_layer.cu index af73260ec86..fe2a89e56df 100644 --- a/src/caffe/layers/softmax_layer.cu +++ b/src/caffe/layers/softmax_layer.cu @@ -14,53 +14,6 @@ using std::max; namespace caffe { -template -void SoftmaxLayer::SetUp(const vector*>& bottom, - vector*>* top) { - CHECK_EQ(bottom.size(), 1) << "Softmax Layer takes a single blob as input."; - CHECK_EQ(top->size(), 1) << "Softmax Layer takes a single blob as output."; - (*top)[0]->Reshape(bottom[0]->num(), bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - sum_multiplier_.Reshape(1, bottom[0]->channels(), - bottom[0]->height(), bottom[0]->width()); - Dtype* multiplier_data = sum_multiplier_.mutable_cpu_data(); - for (int i = 0; i < sum_multiplier_.count(); ++i) { - multiplier_data[i] = 1.; - } - scale_.Reshape(bottom[0]->num(), 1, 1, 1); -} - -template -void SoftmaxLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - Dtype* scale_data = scale_.mutable_cpu_data(); - int num = bottom[0]->num(); - int dim = bottom[0]->count() / bottom[0]->num(); - memcpy(top_data, bottom_data, sizeof(Dtype) * bottom[0]->count()); - // we need to subtract the max to avoid numerical issues, compute the exp, - // and then normalize. - for (int i = 0; i < num; ++i) { - scale_data[i] = bottom_data[i*dim]; - for (int j = 0; j < dim; ++j) { - scale_data[i] = max(scale_data[i], bottom_data[i * dim + j]); - } - } - // subtraction - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - scale_data, sum_multiplier_.cpu_data(), 1., top_data); - // Perform exponentiation - caffe_exp(num * dim, top_data, top_data); - // sum after exp - caffe_cpu_gemv(CblasNoTrans, num, dim, 1., top_data, - sum_multiplier_.cpu_data(), 0., scale_data); - // Do division - for (int i = 0; i < num; ++i) { - caffe_scal(dim, Dtype(1.) / scale_data[i], top_data + i * dim); - } -} - template __global__ void kernel_get_max(const int num, const int dim, const Dtype* data, Dtype* out) { @@ -125,30 +78,6 @@ void SoftmaxLayer::Forward_gpu(const vector*>& bottom, num, dim, scale_data, top_data); } -template -Dtype SoftmaxLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - const Dtype* top_diff = top[0]->cpu_diff(); - const Dtype* top_data = top[0]->cpu_data(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - Dtype* scale_data = scale_.mutable_cpu_data(); - int num = top[0]->num(); - int dim = top[0]->count() / top[0]->num(); - memcpy(bottom_diff, top_diff, sizeof(Dtype) * top[0]->count()); - // Compute inner1d(top_diff, top_data) and subtract them from the bottom diff - for (int i = 0; i < num; ++i) { - scale_data[i] = caffe_cpu_dot(dim, top_diff + i * dim, - top_data + i * dim); - } - // subtraction - caffe_cpu_gemm(CblasNoTrans, CblasNoTrans, num, dim, 1, -1., - scale_data, sum_multiplier_.cpu_data(), 1., bottom_diff); - // elementwise multiplication - caffe_mul(top[0]->count(), bottom_diff, top_data, bottom_diff); - return Dtype(0); -} - // TODO(Yangqing): implement the GPU version of softmax. template Dtype SoftmaxLayer::Backward_gpu(const vector*>& top, diff --git a/src/caffe/layers/softmax_loss_layer.cpp b/src/caffe/layers/softmax_loss_layer.cpp new file mode 100644 index 00000000000..2ec7308017a --- /dev/null +++ b/src/caffe/layers/softmax_loss_layer.cpp @@ -0,0 +1,59 @@ +// Copyright 2013 Yangqing Jia + +#include +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +using std::max; + +namespace caffe { + +template +void SoftmaxWithLossLayer::SetUp(const vector*>& bottom, + vector*>* top) { + CHECK_EQ(bottom.size(), 2) << "SoftmaxLoss Layer takes two blobs as input."; + CHECK_EQ(top->size(), 0) << "SoftmaxLoss Layer takes no blob as output."; + softmax_bottom_vec_.clear(); + softmax_bottom_vec_.push_back(bottom[0]); + softmax_top_vec_.push_back(&prob_); + softmax_layer_->SetUp(softmax_bottom_vec_, &softmax_top_vec_); +} + +template +void SoftmaxWithLossLayer::Forward_cpu( + const vector*>& bottom, vector*>* top) { + // The forward pass computes the softmax prob values. + softmax_bottom_vec_[0] = bottom[0]; + softmax_layer_->Forward(softmax_bottom_vec_, &softmax_top_vec_); +} + +template +Dtype SoftmaxWithLossLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + // First, compute the diff + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const Dtype* prob_data = prob_.cpu_data(); + memcpy(bottom_diff, prob_data, sizeof(Dtype) * prob_.count()); + const Dtype* label = (*bottom)[1]->cpu_data(); + int num = prob_.num(); + int dim = prob_.count() / num; + Dtype loss = 0; + for (int i = 0; i < num; ++i) { + bottom_diff[i * dim + static_cast(label[i])] -= 1; + loss += -log(max(prob_data[i * dim + static_cast(label[i])], Dtype(FLT_MIN))); + } + // Scale down gradient + caffe_scal(prob_.count(), Dtype(1) / num, bottom_diff); + return loss / num; +} + + +INSTANTIATE_CLASS(SoftmaxWithLossLayer); + + +} // namespace caffe diff --git a/src/caffe/layers/softmax_loss_layer.cu b/src/caffe/layers/softmax_loss_layer.cu index 3e2658692b3..100393caa3d 100644 --- a/src/caffe/layers/softmax_loss_layer.cu +++ b/src/caffe/layers/softmax_loss_layer.cu @@ -12,25 +12,6 @@ using std::max; namespace caffe { -template -void SoftmaxWithLossLayer::SetUp(const vector*>& bottom, - vector*>* top) { - CHECK_EQ(bottom.size(), 2) << "SoftmaxLoss Layer takes two blobs as input."; - CHECK_EQ(top->size(), 0) << "SoftmaxLoss Layer takes no blob as output."; - softmax_bottom_vec_.clear(); - softmax_bottom_vec_.push_back(bottom[0]); - softmax_top_vec_.push_back(&prob_); - softmax_layer_->SetUp(softmax_bottom_vec_, &softmax_top_vec_); -} - -template -void SoftmaxWithLossLayer::Forward_cpu( - const vector*>& bottom, vector*>* top) { - // The forward pass computes the softmax prob values. - softmax_bottom_vec_[0] = bottom[0]; - softmax_layer_->Forward(softmax_bottom_vec_, &softmax_top_vec_); -} - template void SoftmaxWithLossLayer::Forward_gpu( const vector*>& bottom, vector*>* top) { @@ -39,27 +20,6 @@ void SoftmaxWithLossLayer::Forward_gpu( softmax_layer_->Forward(softmax_bottom_vec_, &softmax_top_vec_); } -template -Dtype SoftmaxWithLossLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - // First, compute the diff - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const Dtype* prob_data = prob_.cpu_data(); - memcpy(bottom_diff, prob_data, sizeof(Dtype) * prob_.count()); - const Dtype* label = (*bottom)[1]->cpu_data(); - int num = prob_.num(); - int dim = prob_.count() / num; - Dtype loss = 0; - for (int i = 0; i < num; ++i) { - bottom_diff[i * dim + static_cast(label[i])] -= 1; - loss += -log(max(prob_data[i * dim + static_cast(label[i])], FLT_MIN)); - } - // Scale down gradient - caffe_scal(prob_.count(), Dtype(1) / num, bottom_diff); - return loss / num; -} - template Dtype SoftmaxWithLossLayer::Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { diff --git a/src/caffe/layers/split_layer.cpp b/src/caffe/layers/split_layer.cpp index 56e956100ff..f9fc461a11f 100644 --- a/src/caffe/layers/split_layer.cpp +++ b/src/caffe/layers/split_layer.cpp @@ -40,19 +40,6 @@ void SplitLayer::Forward_cpu(const vector*>& bottom, } } -template -void SplitLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->gpu_data(); - for (int i = 0; i < top->size(); ++i) { - if (i == 0 && (*top)[i] == bottom[0]) { - continue; - } - Dtype* top_data = (*top)[i]->mutable_gpu_data(); - caffe_gpu_copy(count_, bottom_data, top_data); - } -} - template Dtype SplitLayer::Backward_cpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { @@ -75,27 +62,6 @@ Dtype SplitLayer::Backward_cpu(const vector*>& top, } -template -Dtype SplitLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - if (propagate_down) { - const Dtype* top_diff = top[0]->gpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); - // Initialize by copying first top blob diff to our diff, unless we're - // doing in-place computation for the first blob, in which case the diff is - // already initialized. - if (top[0] != (*bottom)[0]) { - caffe_gpu_copy(count_, top_diff, bottom_diff); - } - // Add remaining top blob diffs. - for (int i = 1; i < top.size(); ++i) { - top_diff = top[i]->gpu_diff(); - caffe_gpu_axpy(count_, Dtype(1.), top_diff, bottom_diff); - } - } - return Dtype(0.); -} - INSTANTIATE_CLASS(SplitLayer); } // namespace caffe diff --git a/src/caffe/layers/split_layer.cu b/src/caffe/layers/split_layer.cu new file mode 100644 index 00000000000..5f25a460a6a --- /dev/null +++ b/src/caffe/layers/split_layer.cu @@ -0,0 +1,48 @@ +// Copyright 2014 Jeff Donahue + +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void SplitLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + for (int i = 0; i < top->size(); ++i) { + if (i == 0 && (*top)[i] == bottom[0]) { + continue; + } + Dtype* top_data = (*top)[i]->mutable_gpu_data(); + caffe_gpu_copy(count_, bottom_data, top_data); + } +} + +template +Dtype SplitLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + if (propagate_down) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); + // Initialize by copying first top blob diff to our diff, unless we're + // doing in-place computation for the first blob, in which case the diff is + // already initialized. + if (top[0] != (*bottom)[0]) { + caffe_gpu_copy(count_, top_diff, bottom_diff); + } + // Add remaining top blob diffs. + for (int i = 1; i < top.size(); ++i) { + top_diff = top[i]->gpu_diff(); + caffe_gpu_axpy(count_, Dtype(1.), top_diff, bottom_diff); + } + } + return Dtype(0.); +} + + +INSTANTIATE_CLASS(SplitLayer); + +} // namespace caffe diff --git a/src/caffe/layers/tanh_layer.cpp b/src/caffe/layers/tanh_layer.cpp new file mode 100644 index 00000000000..d6f99560082 --- /dev/null +++ b/src/caffe/layers/tanh_layer.cpp @@ -0,0 +1,48 @@ +// Copyright 2014 Aravindh Mahendran +// TanH neuron activation function layer. +// Adapted from ReLU layer code written by Yangqing Jia + +#include +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void TanHLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->cpu_data(); + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + Dtype exp2x; + const int count = bottom[0]->count(); + for (int i = 0; i < count; ++i) { + exp2x = exp(2*bottom_data[i]); + top_data[i] = (exp2x - Dtype(1))/(exp2x + Dtype(1)); + } +} + +template +Dtype TanHLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + if (propagate_down) { + const Dtype* bottom_data = (*bottom)[0]->cpu_data(); + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + const int count = (*bottom)[0]->count(); + Dtype exp2x; + Dtype tanhx; + for (int i = 0; i < count; ++i) { + exp2x = exp(2*bottom_data[i]); + tanhx = (exp2x - Dtype(1))/(exp2x + Dtype(1)); + bottom_diff[i] = top_diff[i] * (1 - tanhx*tanhx); + } + } + return Dtype(0); +} + +INSTANTIATE_CLASS(TanHLayer); + +} // namespace caffe diff --git a/src/caffe/layers/tanh_layer.cu b/src/caffe/layers/tanh_layer.cu index a309a605314..743e314708e 100644 --- a/src/caffe/layers/tanh_layer.cu +++ b/src/caffe/layers/tanh_layer.cu @@ -10,39 +10,6 @@ namespace caffe { -template -void TanHLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { - const Dtype* bottom_data = bottom[0]->cpu_data(); - Dtype* top_data = (*top)[0]->mutable_cpu_data(); - Dtype exp2x; - const int count = bottom[0]->count(); - for (int i = 0; i < count; ++i) { - exp2x = exp(2*bottom_data[i]); - top_data[i] = (exp2x - Dtype(1))/(exp2x + Dtype(1)); - } -} - -template -Dtype TanHLayer::Backward_cpu(const vector*>& top, - const bool propagate_down, - vector*>* bottom) { - if (propagate_down) { - const Dtype* bottom_data = (*bottom)[0]->cpu_data(); - const Dtype* top_diff = top[0]->cpu_diff(); - Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); - const int count = (*bottom)[0]->count(); - Dtype exp2x; - Dtype tanhx; - for (int i = 0; i < count; ++i) { - exp2x = exp(2*bottom_data[i]); - tanhx = (exp2x - Dtype(1))/(exp2x + Dtype(1)); - bottom_diff[i] = top_diff[i] * (1 - tanhx*tanhx); - } - } - return Dtype(0); -} - template __global__ void TanHForward(const int n, const Dtype* in, Dtype* out) { int index = threadIdx.x + blockIdx.x * blockDim.x; From 5fe44c81488521557c5f7019fe107b45a317b1a0 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Thu, 27 Feb 2014 00:33:48 -0800 Subject: [PATCH 035/113] fix 'make lint' in OSX: seems that NONGEN_CXX_SRCS wasn't getting populated in OSX due to some disagreement in the regex formatting in find...give up on that and use an ugly but reliable chain of -name ... -or -name ... --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f8adaad0b13..54437f1e914 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,7 @@ NONGEN_CXX_SRCS := $(shell find \ matlab/$(PROJECT) \ examples \ tools \ - -regex ".*\.\(cpp\|hpp\|cu\|cuh\)") + -name "*.cpp" -or -name "*.hpp" -or -name "*.cu" -or -name "*.cuh") LINT_REPORT := $(BUILD_DIR)/cpp_lint.log FAILED_LINT_REPORT := $(BUILD_DIR)/cpp_lint.error_log # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) From fffae6cd690ad4c2151e16ea0b268a6a1d1f81e0 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 27 Feb 2014 15:53:32 -0800 Subject: [PATCH 036/113] fix include order for pycaffe on osx, override lint --- python/caffe/pycaffe.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index 4d28ca64c66..c32194ef998 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -5,12 +5,13 @@ #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#include -#include - #include "boost/python.hpp" #include "boost/python/suite/indexing/vector_indexing_suite.hpp" #include "numpy/arrayobject.h" + +#include // NOLINT(build/include_order) +#include // NOLINT(build/include_order) + #include "caffe/caffe.hpp" // Temporary solution for numpy < 1.7 versions: old macro, no promises. From 2b125e358a1fb14869f41f0b30662d38f6ce16ff Mon Sep 17 00:00:00 2001 From: Sergio Guadarrama Date: Mon, 17 Feb 2014 13:43:05 -0800 Subject: [PATCH 037/113] Code for concat_layer for concat along num and channels dimensions --- src/caffe/layers/concat_layer.cpp | 159 ++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 src/caffe/layers/concat_layer.cpp diff --git a/src/caffe/layers/concat_layer.cpp b/src/caffe/layers/concat_layer.cpp new file mode 100644 index 00000000000..5a9d44486c7 --- /dev/null +++ b/src/caffe/layers/concat_layer.cpp @@ -0,0 +1,159 @@ +// Copyright 2014 Sergio Guadarrama + +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ConcatLayer::SetUp(const vector*>& bottom, + vector*>* top) { + CHECK_GT(bottom.size(), 1) << "Concat Layer takes at least two blobs as input."; + CHECK_EQ(top->size(), 1) << "Concat Layer takes a single blob as output."; + concat_dim_ = this->layer_param_.concat_dim(); + CHECK_GE(concat_dim_,0) << "concat_dim should be >= 0"; + CHECK_LE(concat_dim_,1) << + "For now concat_dim <=1, it can only concat num and channels"; + // Intialize with the first blob + COUNT_ = bottom[0]->count(); + NUM_ = bottom[0]->num(); + CHANNELS_ = bottom[0]->channels(); + HEIGHT_ = bottom[0]->height(); + WIDTH_ = bottom[0]->width(); + for (int i=1; icount(); + if (concat_dim_==0) { + NUM_ += bottom[i]->num(); + } else if (concat_dim_ == 1){ + CHANNELS_ += bottom[i]->channels(); + } else if (concat_dim_ == 2) { + HEIGHT_ += bottom[i]->height(); + } else if (concat_dim_ == 3) { + WIDTH_ += bottom[i]->width(); + } + } + (*top)[0]->Reshape(NUM_, CHANNELS_, HEIGHT_, WIDTH_); + CHECK_EQ(COUNT_, (*top)[0]->count()); +}; + +template +void ConcatLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + if (concat_dim_==0) { + int offset_num = 0; + for (i=0; icpu_data(); + caffe_copy(bottom[i]->count(), bottom_data, top_data[(*top)[0]->offset(offset_num)); + offset_num += bottom[i]->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (i=0; icpu_data(); + int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); + for (n=0; noffset(n), + top_data[(*top)[0]->offset(n,offset_channel)]); + } + offset_channel += bottom[i]->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + } +} + +template +void ConcatLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + if (concat_dim_==0) { + int offset_num = 0; + for (i=0; igpu_data(); + caffe_gpu_copy(bottom[i]->count(), bottom_data, top_data[(*top)[0]->offset(offset_num)); + offset_num += bottom[i]->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (i=0; igpu_data(); + int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); + for (n=0; noffset(n), + top_data[(*top)[0]->offset(n,offset_channel)]); + } + offset_channel += bottom[i]->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + } +} + +template +Dtype ConcatLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + if (concat_dim_==0) { + int offset_num = 0; + for (i=0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_cpu_diff(); + caffe_copy(blob->count(), top_diff[top[0]->offset(offset_num)],bottom_diff); + offset_num += blob->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (i=0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_cpu_diff(); + int num_elem = blob->channels()*blob->height()*blob->width(); + for (n=0; noffset(n,offset_channel)], + bottom_diff[blob->offset(n)]); + } + offset_channel += blob->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + } + return Dtype(0.); +} + + +template +Dtype ConcatLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + if (concat_dim_==0) { + int offset_num = 0; + for (i=0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_gpu_diff(); + caffe_gpu_copy(blob->count(), top_diff[top[0]->offset(offset_num)],bottom_diff); + offset_num += blob->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (i=0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_gpu_diff(); + int num_elem = blob->channels()*blob->height()*blob->width(); + for (n=0; noffset(n,offset_channel)], + bottom_diff[blob->offset(n)]); + } + offset_channel += blob->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + } + return Dtype(0.); +} + +INSTANTIATE_CLASS(ConcatLayer); + +} // namespace caffe From ff2ac0b28ec9d9eecfc2b73da2b5136416d3e06b Mon Sep 17 00:00:00 2001 From: sguada Date: Mon, 17 Feb 2014 17:08:30 -0800 Subject: [PATCH 038/113] Added concat_dim to caffe.proto and ConcatLayer to set of layers --- include/caffe/vision_layers.hpp | 26 ++++++++++++++++++++++++++ src/caffe/layer_factory.cpp | 2 ++ src/caffe/proto/caffe.proto | 5 +++++ 3 files changed, 33 insertions(+) diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index fc2b17c2e17..3b09459bbf1 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -313,6 +313,32 @@ class ConvolutionLayer : public Layer { int N_; }; +template +class ConcatLayer : public Layer { + public: + explicit ConcatLayer(const LayerParameter& param) + : Layer(param) {} + virtual void SetUp(const vector*>& bottom, + vector*>* top); + + protected: + virtual void Forward_cpu(const vector*>& bottom, + vector*>* top); + virtual void Forward_gpu(const vector*>& bottom, + vector*>* top); + virtual Dtype Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + virtual Dtype Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + Blob col_bob_; + + int COUNT_; + int NUM_; + int CHANNELS_; + int HEIGHT_; + int WIDTH_; + int concat_dim_; +}; // This function is used to create a pthread that prefetches the data. template diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index d7798ea9053..1f79a74636b 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -25,6 +25,8 @@ Layer* GetLayer(const LayerParameter& param) { return new BNLLLayer(param); } else if (type == "conv") { return new ConvolutionLayer(param); + } else if (type == "concat") { + return new ConcatLayer(param); } else if (type == "data") { return new DataLayer(param); } else if (type == "hdf5_data") { diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 4da8e8d3522..06a7cd7173e 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -91,6 +91,11 @@ message LayerParameter { // point would be set as rand_skip * rand(0,1). Note that rand_skip should not // be larger than the number of keys in the leveldb. optional uint32 rand_skip = 53 [ default = 0 ]; + + // Concat Layer need to specify the dimension along the concat will happen, + // the other dimensions must be the same for all the bottom blobs + // By default it will concatenate blobs along channels dimension + optional uint32 concat_dim = 65 [ default = 1 ]; } message LayerConnection { From 88bc0c1c582399f3e6820a77c2ceea75d694f6fc Mon Sep 17 00:00:00 2001 From: sguada Date: Mon, 17 Feb 2014 18:16:38 -0800 Subject: [PATCH 039/113] Added Tests for Concat Layer, and passed --- src/caffe/layers/concat_layer.cpp | 67 +++++++------- src/caffe/test/test_concat_layer.cpp | 127 +++++++++++++++++++++++++++ 2 files changed, 161 insertions(+), 33 deletions(-) create mode 100644 src/caffe/test/test_concat_layer.cpp diff --git a/src/caffe/layers/concat_layer.cpp b/src/caffe/layers/concat_layer.cpp index 5a9d44486c7..5c3d3481858 100644 --- a/src/caffe/layers/concat_layer.cpp +++ b/src/caffe/layers/concat_layer.cpp @@ -23,7 +23,7 @@ void ConcatLayer::SetUp(const vector*>& bottom, CHANNELS_ = bottom[0]->channels(); HEIGHT_ = bottom[0]->height(); WIDTH_ = bottom[0]->width(); - for (int i=1; icount(); if (concat_dim_==0) { NUM_ += bottom[i]->num(); @@ -45,24 +45,25 @@ void ConcatLayer::Forward_cpu(const vector*>& bottom, Dtype* top_data = (*top)[0]->mutable_cpu_data(); if (concat_dim_==0) { int offset_num = 0; - for (i=0; icpu_data(); - caffe_copy(bottom[i]->count(), bottom_data, top_data[(*top)[0]->offset(offset_num)); + for (int i=0; icpu_data(); + int num_elem = bottom[i]->count(); + caffe_copy(num_elem, bottom_data, top_data+(*top)[0]->offset(offset_num)); offset_num += bottom[i]->num(); } } else if (concat_dim_ == 1) { int offset_channel = 0; - for (i=0; icpu_data(); + for (int i=0; icpu_data(); int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); - for (n=0; noffset(n), - top_data[(*top)[0]->offset(n,offset_channel)]); + for (int n=0; noffset(n), + top_data+(*top)[0]->offset(n,offset_channel)); } offset_channel += bottom[i]->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; } } @@ -72,24 +73,24 @@ void ConcatLayer::Forward_gpu(const vector*>& bottom, Dtype* top_data = (*top)[0]->mutable_gpu_data(); if (concat_dim_==0) { int offset_num = 0; - for (i=0; igpu_data(); - caffe_gpu_copy(bottom[i]->count(), bottom_data, top_data[(*top)[0]->offset(offset_num)); + for (int i=0; igpu_data(); + caffe_gpu_copy(bottom[i]->count(), bottom_data, top_data+(*top)[0]->offset(offset_num)); offset_num += bottom[i]->num(); } } else if (concat_dim_ == 1) { int offset_channel = 0; - for (i=0; igpu_data(); + for (int i=0; igpu_data(); int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); - for (n=0; noffset(n), - top_data[(*top)[0]->offset(n,offset_channel)]); + for (int n=0; noffset(n), + top_data+(*top)[0]->offset(n,offset_channel)); } offset_channel += bottom[i]->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; } } @@ -99,26 +100,26 @@ Dtype ConcatLayer::Backward_cpu(const vector*>& top, const Dtype* top_diff = top[0]->cpu_diff(); if (concat_dim_==0) { int offset_num = 0; - for (i=0; i < bottom->size(); ++i) { + for (int i=0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_cpu_diff(); - caffe_copy(blob->count(), top_diff[top[0]->offset(offset_num)],bottom_diff); + caffe_copy(blob->count(), top_diff+top[0]->offset(offset_num),bottom_diff); offset_num += blob->num(); } } else if (concat_dim_ == 1) { int offset_channel = 0; - for (i=0; i < bottom->size(); ++i) { + for (int i=0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_cpu_diff(); int num_elem = blob->channels()*blob->height()*blob->width(); - for (n=0; noffset(n,offset_channel)], - bottom_diff[blob->offset(n)]); + for (int n=0; noffset(n,offset_channel), + bottom_diff+blob->offset(n)); } offset_channel += blob->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; } return Dtype(0.); } @@ -130,26 +131,26 @@ Dtype ConcatLayer::Backward_gpu(const vector*>& top, const Dtype* top_diff = top[0]->gpu_diff(); if (concat_dim_==0) { int offset_num = 0; - for (i=0; i < bottom->size(); ++i) { + for (int i=0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_gpu_diff(); - caffe_gpu_copy(blob->count(), top_diff[top[0]->offset(offset_num)],bottom_diff); + caffe_gpu_copy(blob->count(), top_diff+top[0]->offset(offset_num),bottom_diff); offset_num += blob->num(); } } else if (concat_dim_ == 1) { int offset_channel = 0; - for (i=0; i < bottom->size(); ++i) { + for (int i=0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_gpu_diff(); int num_elem = blob->channels()*blob->height()*blob->width(); - for (n=0; noffset(n,offset_channel)], - bottom_diff[blob->offset(n)]); + for (int n=0; noffset(n,offset_channel), + bottom_diff+blob->offset(n)); } offset_channel += blob->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim << " not implemented yet"; + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; } return Dtype(0.); } diff --git a/src/caffe/test/test_concat_layer.cpp b/src/caffe/test/test_concat_layer.cpp new file mode 100644 index 00000000000..472c9366468 --- /dev/null +++ b/src/caffe/test/test_concat_layer.cpp @@ -0,0 +1,127 @@ +// Copyright 2014 Sergio Guadarrama + +#include +#include + +#include "gtest/gtest.h" +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +template +class ConcatLayerTest : public ::testing::Test { + protected: + ConcatLayerTest() + : blob_bottom_0(new Blob(2, 3, 6, 5)), + blob_bottom_1(new Blob(2, 5, 6, 5)), + blob_bottom_2(new Blob(5, 3, 6, 5)), + blob_top_(new Blob()) {}; + virtual void SetUp() { + // fill the values + FillerParameter filler_param; + filler_param.set_value(1.); + ConstantFiller filler(filler_param); + filler.Fill(this->blob_bottom_0); + filler_param.set_value(2.); + filler.Fill(this->blob_bottom_1); + filler_param.set_value(3.); + filler.Fill(this->blob_bottom_2); + blob_bottom_vec_0.push_back(blob_bottom_0); + blob_bottom_vec_0.push_back(blob_bottom_1); + blob_bottom_vec_1.push_back(blob_bottom_0); + blob_bottom_vec_1.push_back(blob_bottom_2); + blob_top_vec_.push_back(blob_top_); + }; + + virtual ~ConcatLayerTest() { + delete blob_bottom_0; delete blob_bottom_1; delete blob_bottom_2; delete blob_top_; + } + + Blob* const blob_bottom_0; + Blob* const blob_bottom_1; + Blob* const blob_bottom_2; + Blob* const blob_top_; + vector*> blob_bottom_vec_0,blob_bottom_vec_1; + vector*> blob_top_vec_; +}; + +typedef ::testing::Types Dtypes; +TYPED_TEST_CASE(ConcatLayerTest, Dtypes); + +TYPED_TEST(ConcatLayerTest, TestSetupNum) { + LayerParameter layer_param; + layer_param.set_concat_dim(0); + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_1, &(this->blob_top_vec_)); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0->num()+this->blob_bottom_2->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_0->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0->width()); +} + +TYPED_TEST(ConcatLayerTest, TestSetupChannels) { + LayerParameter layer_param; + ConcatLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_0, &(this->blob_top_vec_)); + EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0->num()); + EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_0->channels()+this->blob_bottom_1->channels()); + EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0->height()); + EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0->width()); +} + + +TYPED_TEST(ConcatLayerTest, TestCPUNum) { + LayerParameter layer_param; + ConcatLayer layer(layer_param); + Caffe::set_mode(Caffe::CPU); + layer.SetUp(this->blob_bottom_vec_0, &(this->blob_top_vec_)); + layer.Forward(this->blob_bottom_vec_0, &(this->blob_top_vec_)); + for (int n = 0; n < this->blob_top_->num(); ++n) { + for (int c = 0; c < this->blob_bottom_0->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), this->blob_bottom_vec_0[0]->data_at(n, c, h, w)); + } + } + } + for (int c = 0; c < this->blob_bottom_1->channels(); ++c) { + for (int h = 0; h < this->blob_top_->height(); ++h) { + for (int w = 0; w < this->blob_top_->width(); ++w) { + EXPECT_EQ(this->blob_top_->data_at(n, c+3, h, w), this->blob_bottom_vec_0[1]->data_at(n, c, h, w)); + } + } + } + } +} + + +TYPED_TEST(ConcatLayerTest, TestCPUGradient) { + LayerParameter layer_param; + Caffe::set_mode(Caffe::CPU); + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + // it is too expensive to call curand multiple times, so we don't do an + // exhaustive gradient check. + checker.CheckGradient(layer, this->blob_bottom_vec_0, this->blob_top_vec_); +} + +TYPED_TEST(ConcatLayerTest, TestGPUGradient) { + LayerParameter layer_param; + Caffe::set_mode(Caffe::GPU); + ConcatLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + // it is too expensive to call curand multiple times, so we don't do an + // exhaustive gradient check. + checker.CheckGradient(layer, this->blob_bottom_vec_0, this->blob_top_vec_); +} + + +} From eb56c5b65257d0020d559be3688508064a9d018b Mon Sep 17 00:00:00 2001 From: sguada Date: Wed, 26 Feb 2014 22:33:57 -0800 Subject: [PATCH 040/113] Fixed test to pass and don't exhaustive search since it takes too long --- src/caffe/test/test_concat_layer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/caffe/test/test_concat_layer.cpp b/src/caffe/test/test_concat_layer.cpp index 472c9366468..aeee81dd0a4 100644 --- a/src/caffe/test/test_concat_layer.cpp +++ b/src/caffe/test/test_concat_layer.cpp @@ -110,7 +110,8 @@ TYPED_TEST(ConcatLayerTest, TestCPUGradient) { GradientChecker checker(1e-2, 1e-3); // it is too expensive to call curand multiple times, so we don't do an // exhaustive gradient check. - checker.CheckGradient(layer, this->blob_bottom_vec_0, this->blob_top_vec_); + checker.CheckGradient(&layer, &(this->blob_bottom_vec_0), + &(this->blob_top_vec_)); } TYPED_TEST(ConcatLayerTest, TestGPUGradient) { @@ -120,7 +121,8 @@ TYPED_TEST(ConcatLayerTest, TestGPUGradient) { GradientChecker checker(1e-2, 1e-3); // it is too expensive to call curand multiple times, so we don't do an // exhaustive gradient check. - checker.CheckGradient(layer, this->blob_bottom_vec_0, this->blob_top_vec_); + checker.CheckGradient(&layer, &(this->blob_bottom_vec_0), + &(this->blob_top_vec_)); } From 93afc1585c147257bec1a46eb32cbafc85d2c58f Mon Sep 17 00:00:00 2001 From: Sergio Guadarrama Date: Thu, 27 Feb 2014 19:11:52 -0800 Subject: [PATCH 041/113] Splited concat_layer into .cpp and .cu, cleaned lint errors --- src/caffe/layers/concat_layer.cpp | 138 +++++++++------------------ src/caffe/layers/concat_layer.cu | 75 +++++++++++++++ src/caffe/test/test_concat_layer.cpp | 31 +++--- 3 files changed, 134 insertions(+), 110 deletions(-) create mode 100644 src/caffe/layers/concat_layer.cu diff --git a/src/caffe/layers/concat_layer.cpp b/src/caffe/layers/concat_layer.cpp index 5c3d3481858..dc949c14010 100644 --- a/src/caffe/layers/concat_layer.cpp +++ b/src/caffe/layers/concat_layer.cpp @@ -11,147 +11,95 @@ namespace caffe { template void ConcatLayer::SetUp(const vector*>& bottom, vector*>* top) { - CHECK_GT(bottom.size(), 1) << "Concat Layer takes at least two blobs as input."; - CHECK_EQ(top->size(), 1) << "Concat Layer takes a single blob as output."; + CHECK_GT(bottom.size(), 1) << + "Concat Layer takes at least two blobs as input."; + CHECK_EQ(top->size(), 1) << + "Concat Layer takes a single blob as output."; concat_dim_ = this->layer_param_.concat_dim(); - CHECK_GE(concat_dim_,0) << "concat_dim should be >= 0"; - CHECK_LE(concat_dim_,1) << + CHECK_GE(concat_dim_, 0) << "concat_dim should be >= 0"; + CHECK_LE(concat_dim_, 1) << "For now concat_dim <=1, it can only concat num and channels"; // Intialize with the first blob COUNT_ = bottom[0]->count(); NUM_ = bottom[0]->num(); CHANNELS_ = bottom[0]->channels(); HEIGHT_ = bottom[0]->height(); - WIDTH_ = bottom[0]->width(); - for (int i=1; iwidth(); + for (int i = 1; i < bottom.size(); ++i) { COUNT_ += bottom[i]->count(); - if (concat_dim_==0) { - NUM_ += bottom[i]->num(); - } else if (concat_dim_ == 1){ + if (concat_dim_== 0) { + NUM_ += bottom[i]->num(); + } else if (concat_dim_ == 1) { CHANNELS_ += bottom[i]->channels(); } else if (concat_dim_ == 2) { HEIGHT_ += bottom[i]->height(); } else if (concat_dim_ == 3) { - WIDTH_ += bottom[i]->width(); + WIDTH_ += bottom[i]->width(); } } - (*top)[0]->Reshape(NUM_, CHANNELS_, HEIGHT_, WIDTH_); + (*top)[0]->Reshape(NUM_, CHANNELS_, HEIGHT_, WIDTH_); CHECK_EQ(COUNT_, (*top)[0]->count()); -}; +} template void ConcatLayer::Forward_cpu(const vector*>& bottom, - vector*>* top) { + vector*>* top) { Dtype* top_data = (*top)[0]->mutable_cpu_data(); - if (concat_dim_==0) { - int offset_num = 0; - for (int i=0; icpu_data(); int num_elem = bottom[i]->count(); caffe_copy(num_elem, bottom_data, top_data+(*top)[0]->offset(offset_num)); offset_num += bottom[i]->num(); } } else if (concat_dim_ == 1) { - int offset_channel = 0; - for (int i=0; icpu_data(); - int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); - for (int n=0; nchannels()*bottom[i]->height()*bottom[i]->width(); + for (int n = 0; n < NUM_; ++n) { caffe_copy(num_elem, bottom_data+bottom[i]->offset(n), - top_data+(*top)[0]->offset(n,offset_channel)); - } + top_data+(*top)[0]->offset(n, offset_channel)); + } offset_channel += bottom[i]->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; - } -} - -template -void ConcatLayer::Forward_gpu(const vector*>& bottom, - vector*>* top) { - Dtype* top_data = (*top)[0]->mutable_gpu_data(); - if (concat_dim_==0) { - int offset_num = 0; - for (int i=0; igpu_data(); - caffe_gpu_copy(bottom[i]->count(), bottom_data, top_data+(*top)[0]->offset(offset_num)); - offset_num += bottom[i]->num(); - } - } else if (concat_dim_ == 1) { - int offset_channel = 0; - for (int i=0; igpu_data(); - int num_elem = bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); - for (int n=0; noffset(n), - top_data+(*top)[0]->offset(n,offset_channel)); - } - offset_channel += bottom[i]->channels(); - } - } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; - } + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << + " not implemented yet"; + } } template Dtype ConcatLayer::Backward_cpu(const vector*>& top, const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->cpu_diff(); - if (concat_dim_==0) { - int offset_num = 0; - for (int i=0; i < bottom->size(); ++i) { + const Dtype* top_diff = top[0]->cpu_diff(); + if (concat_dim_ == 0) { + int offset_num = 0; + for (int i = 0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_cpu_diff(); - caffe_copy(blob->count(), top_diff+top[0]->offset(offset_num),bottom_diff); + caffe_copy(blob->count(), + top_diff+top[0]->offset(offset_num), bottom_diff); offset_num += blob->num(); } } else if (concat_dim_ == 1) { - int offset_channel = 0; - for (int i=0; i < bottom->size(); ++i) { + int offset_channel = 0; + for (int i = 0; i < bottom->size(); ++i) { Blob* blob = (*bottom)[i]; Dtype* bottom_diff = blob->mutable_cpu_diff(); int num_elem = blob->channels()*blob->height()*blob->width(); - for (int n=0; noffset(n,offset_channel), - bottom_diff+blob->offset(n)); - } + for (int n = 0; n < NUM_; ++n) { + caffe_copy(num_elem, top_diff+top[0]->offset(n, offset_channel), + bottom_diff+blob->offset(n)); + } offset_channel += blob->channels(); } } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; - } - return Dtype(0.); -} - - -template -Dtype ConcatLayer::Backward_gpu(const vector*>& top, - const bool propagate_down, vector*>* bottom) { - const Dtype* top_diff = top[0]->gpu_diff(); - if (concat_dim_==0) { - int offset_num = 0; - for (int i=0; i < bottom->size(); ++i) { - Blob* blob = (*bottom)[i]; - Dtype* bottom_diff = blob->mutable_gpu_diff(); - caffe_gpu_copy(blob->count(), top_diff+top[0]->offset(offset_num),bottom_diff); - offset_num += blob->num(); - } - } else if (concat_dim_ == 1) { - int offset_channel = 0; - for (int i=0; i < bottom->size(); ++i) { - Blob* blob = (*bottom)[i]; - Dtype* bottom_diff = blob->mutable_gpu_diff(); - int num_elem = blob->channels()*blob->height()*blob->width(); - for (int n=0; noffset(n,offset_channel), - bottom_diff+blob->offset(n)); - } - offset_channel += blob->channels(); - } - } else { - LOG(FATAL) << "concat_dim along dim" << concat_dim_ << " not implemented yet"; - } + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << + " not implemented yet"; + } return Dtype(0.); } diff --git a/src/caffe/layers/concat_layer.cu b/src/caffe/layers/concat_layer.cu new file mode 100644 index 00000000000..616a5e61683 --- /dev/null +++ b/src/caffe/layers/concat_layer.cu @@ -0,0 +1,75 @@ +// Copyright 2014 Sergio Guadarrama + +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/util/math_functions.hpp" + +namespace caffe { + +template +void ConcatLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + if (concat_dim_ == 0) { + int offset_num = 0; + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + caffe_gpu_copy(bottom[i]->count(), bottom_data, + top_data+(*top)[0]->offset(offset_num)); + offset_num += bottom[i]->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (int i = 0; i < bottom.size(); ++i) { + const Dtype* bottom_data = bottom[i]->gpu_data(); + int num_elem = + bottom[i]->channels()*bottom[i]->height()*bottom[i]->width(); + for (int n = 0; n < NUM_; ++n) { + caffe_gpu_copy(num_elem, bottom_data+bottom[i]->offset(n), + top_data+(*top)[0]->offset(n, offset_channel)); + } + offset_channel += bottom[i]->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << + " not implemented yet"; + } +} + +template +Dtype ConcatLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->gpu_diff(); + if (concat_dim_ == 0) { + int offset_num = 0; + for (int i = 0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_gpu_diff(); + caffe_gpu_copy(blob->count(), + top_diff+top[0]->offset(offset_num), bottom_diff); + offset_num += blob->num(); + } + } else if (concat_dim_ == 1) { + int offset_channel = 0; + for (int i = 0; i < bottom->size(); ++i) { + Blob* blob = (*bottom)[i]; + Dtype* bottom_diff = blob->mutable_gpu_diff(); + int num_elem = blob->channels()*blob->height()*blob->width(); + for (int n = 0; n < NUM_; ++n) { + caffe_gpu_copy(num_elem, top_diff+top[0]->offset(n, offset_channel), + bottom_diff+blob->offset(n)); + } + offset_channel += blob->channels(); + } + } else { + LOG(FATAL) << "concat_dim along dim" << concat_dim_ << + " not implemented yet"; + } + return Dtype(0.); +} + +INSTANTIATE_CLASS(ConcatLayer); + +} // namespace caffe diff --git a/src/caffe/test/test_concat_layer.cpp b/src/caffe/test/test_concat_layer.cpp index aeee81dd0a4..3515ef96592 100644 --- a/src/caffe/test/test_concat_layer.cpp +++ b/src/caffe/test/test_concat_layer.cpp @@ -1,8 +1,9 @@ // Copyright 2014 Sergio Guadarrama #include -#include +#include +#include "cuda_runtime.h" #include "gtest/gtest.h" #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -23,7 +24,7 @@ class ConcatLayerTest : public ::testing::Test { : blob_bottom_0(new Blob(2, 3, 6, 5)), blob_bottom_1(new Blob(2, 5, 6, 5)), blob_bottom_2(new Blob(5, 3, 6, 5)), - blob_top_(new Blob()) {}; + blob_top_(new Blob()) {} virtual void SetUp() { // fill the values FillerParameter filler_param; @@ -39,17 +40,18 @@ class ConcatLayerTest : public ::testing::Test { blob_bottom_vec_1.push_back(blob_bottom_0); blob_bottom_vec_1.push_back(blob_bottom_2); blob_top_vec_.push_back(blob_top_); - }; + } virtual ~ConcatLayerTest() { - delete blob_bottom_0; delete blob_bottom_1; delete blob_bottom_2; delete blob_top_; + delete blob_bottom_0; delete blob_bottom_1; + delete blob_bottom_2; delete blob_top_; } Blob* const blob_bottom_0; Blob* const blob_bottom_1; Blob* const blob_bottom_2; Blob* const blob_top_; - vector*> blob_bottom_vec_0,blob_bottom_vec_1; + vector*> blob_bottom_vec_0, blob_bottom_vec_1; vector*> blob_top_vec_; }; @@ -61,7 +63,8 @@ TYPED_TEST(ConcatLayerTest, TestSetupNum) { layer_param.set_concat_dim(0); ConcatLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_1, &(this->blob_top_vec_)); - EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0->num()+this->blob_bottom_2->num()); + EXPECT_EQ(this->blob_top_->num(), + this->blob_bottom_0->num() + this->blob_bottom_2->num()); EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_0->channels()); EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0->height()); EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0->width()); @@ -72,7 +75,8 @@ TYPED_TEST(ConcatLayerTest, TestSetupChannels) { ConcatLayer layer(layer_param); layer.SetUp(this->blob_bottom_vec_0, &(this->blob_top_vec_)); EXPECT_EQ(this->blob_top_->num(), this->blob_bottom_0->num()); - EXPECT_EQ(this->blob_top_->channels(), this->blob_bottom_0->channels()+this->blob_bottom_1->channels()); + EXPECT_EQ(this->blob_top_->channels(), + this->blob_bottom_0->channels()+this->blob_bottom_1->channels()); EXPECT_EQ(this->blob_top_->height(), this->blob_bottom_0->height()); EXPECT_EQ(this->blob_top_->width(), this->blob_bottom_0->width()); } @@ -88,14 +92,16 @@ TYPED_TEST(ConcatLayerTest, TestCPUNum) { for (int c = 0; c < this->blob_bottom_0->channels(); ++c) { for (int h = 0; h < this->blob_top_->height(); ++h) { for (int w = 0; w < this->blob_top_->width(); ++w) { - EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), this->blob_bottom_vec_0[0]->data_at(n, c, h, w)); + EXPECT_EQ(this->blob_top_->data_at(n, c, h, w), + this->blob_bottom_vec_0[0]->data_at(n, c, h, w)); } } } for (int c = 0; c < this->blob_bottom_1->channels(); ++c) { for (int h = 0; h < this->blob_top_->height(); ++h) { for (int w = 0; w < this->blob_top_->width(); ++w) { - EXPECT_EQ(this->blob_top_->data_at(n, c+3, h, w), this->blob_bottom_vec_0[1]->data_at(n, c, h, w)); + EXPECT_EQ(this->blob_top_->data_at(n, c+3, h, w), + this->blob_bottom_vec_0[1]->data_at(n, c, h, w)); } } } @@ -108,8 +114,6 @@ TYPED_TEST(ConcatLayerTest, TestCPUGradient) { Caffe::set_mode(Caffe::CPU); ConcatLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - // it is too expensive to call curand multiple times, so we don't do an - // exhaustive gradient check. checker.CheckGradient(&layer, &(this->blob_bottom_vec_0), &(this->blob_top_vec_)); } @@ -119,11 +123,8 @@ TYPED_TEST(ConcatLayerTest, TestGPUGradient) { Caffe::set_mode(Caffe::GPU); ConcatLayer layer(layer_param); GradientChecker checker(1e-2, 1e-3); - // it is too expensive to call curand multiple times, so we don't do an - // exhaustive gradient check. checker.CheckGradient(&layer, &(this->blob_bottom_vec_0), &(this->blob_top_vec_)); } - -} +} // namespace caffe From d31a36d6a56670bdc45699d530be2b944daaac8d Mon Sep 17 00:00:00 2001 From: chyojn Date: Fri, 28 Feb 2014 14:46:13 +0800 Subject: [PATCH 042/113] use absolute path in script --- tools/extra/parselog.sh | 7 +++++-- tools/extra/plot_training_log.py.example | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/extra/parselog.sh b/tools/extra/parselog.sh index 8b7ce473d3a..39927a64fcc 100755 --- a/tools/extra/parselog.sh +++ b/tools/extra/parselog.sh @@ -3,6 +3,9 @@ # It creates two files one caffe.log.test that contains the loss and test accuracy of the test and # another one caffe.log.loss that contains the loss computed during the training +#get the dirname of the script +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + if [ "$#" -lt 1 ] then echo "Usage parselog.sh /path/to/your.log" @@ -18,7 +21,7 @@ grep 'Test score #1' aux.txt | awk '{print $8}' > aux2.txt # For extraction of time since this line constains the start time grep '] Solving ' $1 > aux3.txt grep 'Testing net' $1 >> aux3.txt -./extract_seconds.py aux3.txt aux4.txt +$DIR/extract_seconds.py aux3.txt aux4.txt # Generating echo '# Iters Seconds TestAccuracy TestLoss'> $LOG.test @@ -33,7 +36,7 @@ grep ', loss = ' $1 | awk '{print $9}' > aux1.txt grep ', lr = ' $1 | awk '{print $9}' > aux2.txt # Extracting elpased seconds -./extract_seconds.py aux.txt aux3.txt +$DIR/extract_seconds.py aux.txt aux3.txt # Generating echo '# Iters Seconds TrainingLoss LearningRate'> $LOG.train diff --git a/tools/extra/plot_training_log.py.example b/tools/extra/plot_training_log.py.example index b40cbc77067..a68ab2f6c32 100755 --- a/tools/extra/plot_training_log.py.example +++ b/tools/extra/plot_training_log.py.example @@ -1,4 +1,5 @@ #!/usr/bin/env python +import inspect import os import random import sys @@ -9,7 +10,8 @@ import matplotlib.legend as lgd import matplotlib.markers as mks def get_log_parsing_script(): - return './parselog.sh' + dirname = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + return dirname + '/parselog.sh' def get_log_file_suffix(): return '.log' @@ -22,7 +24,7 @@ def is_x_axis_field(field): return field in x_axis_fields def create_field_index(): - train_key = 'Training' + train_key = 'Train' test_key = 'Test' field_index = {train_key:{'Iters':0, 'Seconds':1, train_key + ' loss':2, train_key + ' learning rate':3}, @@ -59,7 +61,7 @@ def get_data_file_type(chart_type): return data_file_type def get_data_file(chart_type, path_to_log): - return path_to_log + '.' + get_data_file_type(chart_type).lower() + return os.path.basename(path_to_log) + '.' + get_data_file_type(chart_type).lower() def get_field_descriptions(chart_type): description = get_chart_type_description(chart_type).split( From 77fae0cbdec7bb805e763e88db7cd98de5ca5cef Mon Sep 17 00:00:00 2001 From: chyojn Date: Fri, 28 Feb 2014 17:08:50 +0800 Subject: [PATCH 043/113] add cifar10 80sec and 18pct models, according to convnet --- examples/cifar/cifar10_18pct.prototxt | 209 ++++++++++++++++++ examples/cifar/cifar10_18pct_solver.prototxt | 30 +++ examples/cifar/cifar10_18pct_test.prototxt | 218 +++++++++++++++++++ examples/cifar/cifar10_80sec.prototxt | 207 ++++++++++++++++++ examples/cifar/cifar10_80sec_solver.prototxt | 29 +++ examples/cifar/cifar10_80sec_test.prototxt | 216 ++++++++++++++++++ 6 files changed, 909 insertions(+) create mode 100644 examples/cifar/cifar10_18pct.prototxt create mode 100644 examples/cifar/cifar10_18pct_solver.prototxt create mode 100644 examples/cifar/cifar10_18pct_test.prototxt create mode 100644 examples/cifar/cifar10_80sec.prototxt create mode 100644 examples/cifar/cifar10_80sec_solver.prototxt create mode 100644 examples/cifar/cifar10_80sec_test.prototxt diff --git a/examples/cifar/cifar10_18pct.prototxt b/examples/cifar/cifar10_18pct.prototxt new file mode 100644 index 00000000000..df74dd45b39 --- /dev/null +++ b/examples/cifar/cifar10_18pct.prototxt @@ -0,0 +1,209 @@ +name: "CIFAR10_18pct" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10_db/cifar-train-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "pad1" + type: "padding" + pad: 2 + } + bottom: "data" + top: "pad1" +} +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "pad1" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +layers { + layer { + name: "norm1" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool1" + top: "norm1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "pad2" + type: "padding" + pad: 2 + } + bottom: "norm1" + top: "pad2" +} +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "pad2" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +layers { + layer { + name: "norm2" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool2" + top: "norm2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "pad3" + type: "padding" + pad: 2 + } + bottom: "norm2" + top: "pad3" +} +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + bottom: "pad3" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + weight_decay: 250. + weight_decay: 0. + } + bottom: "pool3" + top: "ip1" +} +#-----------------------output------------------------ +layers { + layer { + name: "loss" + type: "softmax_loss" + } + bottom: "ip1" + bottom: "label" +} diff --git a/examples/cifar/cifar10_18pct_solver.prototxt b/examples/cifar/cifar10_18pct_solver.prototxt new file mode 100644 index 00000000000..d8f9a3988a0 --- /dev/null +++ b/examples/cifar/cifar10_18pct_solver.prototxt @@ -0,0 +1,30 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The training protocol buffer definition +train_net: "cifar10_18pct.prototxt" +# The testing protocol buffer definition +test_net: "cifar10_18pct_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 100000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "cifar10_18pct" +# solver mode: 0 for CPU and 1 for GPU +solver_mode: 1 + +device_id: 0 diff --git a/examples/cifar/cifar10_18pct_test.prototxt b/examples/cifar/cifar10_18pct_test.prototxt new file mode 100644 index 00000000000..c28d4e66fbf --- /dev/null +++ b/examples/cifar/cifar10_18pct_test.prototxt @@ -0,0 +1,218 @@ +name: "CIFAR10_18pct_test" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10_db/cifar-test-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "pad1" + type: "padding" + pad: 2 + } + bottom: "data" + top: "pad1" +} +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "pad1" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +layers { + layer { + name: "norm1" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool1" + top: "norm1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "pad2" + type: "padding" + pad: 2 + } + bottom: "norm1" + top: "pad2" +} +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "pad2" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +layers { + layer { + name: "norm2" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool2" + top: "norm2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "pad3" + type: "padding" + pad: 2 + } + bottom: "norm2" + top: "pad3" +} +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + bottom: "pad3" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + weight_decay: 250. + weight_decay: 0. + } + bottom: "pool3" + top: "ip1" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip1" + top: "prob" +} +layers { + layer { + name: "accuracy" + type: "accuracy" + } + bottom: "prob" + bottom: "label" + top: "accuracy" +} diff --git a/examples/cifar/cifar10_80sec.prototxt b/examples/cifar/cifar10_80sec.prototxt new file mode 100644 index 00000000000..8d24a16d2cb --- /dev/null +++ b/examples/cifar/cifar10_80sec.prototxt @@ -0,0 +1,207 @@ +# test 80sec config +name: "CIFAR10_80sec" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10_db/cifar-train-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "pad1" + type: "padding" + pad: 2 + } + bottom: "data" + top: "pad1" +} +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad1" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "pad2" + type: "padding" + pad: 2 + } + bottom: "pool1" + top: "pad2" +} +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad2" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "pad3" + type: "padding" + pad: 2 + } + bottom: "pool2" + top: "pad3" +} +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad3" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 64 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool3" + top: "ip1" +} +#--------------------------layer 5------------------------ +layers { + layer { + name: "ip2" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "ip1" + top: "ip2" +} +#-----------------------output------------------------ +layers { + layer { + name: "loss" + type: "softmax_loss" + } + bottom: "ip2" + bottom: "label" +} diff --git a/examples/cifar/cifar10_80sec_solver.prototxt b/examples/cifar/cifar10_80sec_solver.prototxt new file mode 100644 index 00000000000..b414bb92355 --- /dev/null +++ b/examples/cifar/cifar10_80sec_solver.prototxt @@ -0,0 +1,29 @@ +# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 + +# The training protocol buffer definition +train_net: "cifar10_80sec.prototxt" +# The testing protocol buffer definition +test_net: "cifar10_80sec_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 100000 +# snapshot intermediate results +snapshot: 4000 +snapshot_prefix: "cifar10_80sec" +# solver mode: 0 for CPU and 1 for GPU +solver_mode: 1 + +device_id: 1 diff --git a/examples/cifar/cifar10_80sec_test.prototxt b/examples/cifar/cifar10_80sec_test.prototxt new file mode 100644 index 00000000000..0aa4b4392f7 --- /dev/null +++ b/examples/cifar/cifar10_80sec_test.prototxt @@ -0,0 +1,216 @@ +# test 80sec config +name: "CIFAR10_80sec_test" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10_db/cifar-test-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "pad1" + type: "padding" + pad: 2 + } + bottom: "data" + top: "pad1" +} +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad1" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "pad2" + type: "padding" + pad: 2 + } + bottom: "pool1" + top: "pad2" +} +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad2" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "pad3" + type: "padding" + pad: 2 + } + bottom: "pool2" + top: "pad3" +} +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pad3" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 64 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool3" + top: "ip1" +} +#--------------------------layer 5------------------------ +layers { + layer { + name: "ip2" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "ip1" + top: "ip2" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip2" + top: "prob" +} +layers { + layer { + name: "accuracy" + type: "accuracy" + } + bottom: "prob" + bottom: "label" + top: "accuracy" +} From f4d65f44686a597ed1f012d58a7c0d5c68d4f115 Mon Sep 17 00:00:00 2001 From: chyojn Date: Sat, 1 Mar 2014 11:21:13 +0800 Subject: [PATCH 044/113] move model's pad layer into conv layer; add script to create db and train net by 80sec and 18pct model --- examples/cifar/cifar10_18pct_solver.prototxt | 16 +++---- .../cifar/cifar10_18pct_solver_lr1.prototxt | 30 +++++++++++++ .../cifar/cifar10_18pct_solver_lr2.prototxt | 30 +++++++++++++ examples/cifar/cifar10_18pct_test.prototxt | 38 ++++------------- ....prototxt => cifar10_18pct_train.prototxt} | 40 ++++-------------- examples/cifar/cifar10_80sec_solver.prototxt | 4 +- .../cifar/cifar10_80sec_solver_lr1.prototxt | 29 +++++++++++++ examples/cifar/cifar10_80sec_test.prototxt | 40 ++++-------------- ....prototxt => cifar10_80sec_train.prototxt} | 42 ++++--------------- examples/cifar/create_cifar10.sh | 19 +++++++++ examples/cifar/train_18pct.sh | 11 +++++ examples/cifar/train_80sec.sh | 8 ++++ 12 files changed, 169 insertions(+), 138 deletions(-) create mode 100644 examples/cifar/cifar10_18pct_solver_lr1.prototxt create mode 100644 examples/cifar/cifar10_18pct_solver_lr2.prototxt rename examples/cifar/{cifar10_18pct.prototxt => cifar10_18pct_train.prototxt} (82%) create mode 100644 examples/cifar/cifar10_80sec_solver_lr1.prototxt rename examples/cifar/{cifar10_80sec.prototxt => cifar10_80sec_train.prototxt} (82%) create mode 100755 examples/cifar/create_cifar10.sh create mode 100755 examples/cifar/train_18pct.sh create mode 100755 examples/cifar/train_80sec.sh diff --git a/examples/cifar/cifar10_18pct_solver.prototxt b/examples/cifar/cifar10_18pct_solver.prototxt index d8f9a3988a0..b068c4ee409 100644 --- a/examples/cifar/cifar10_18pct_solver.prototxt +++ b/examples/cifar/cifar10_18pct_solver.prototxt @@ -2,27 +2,27 @@ # then another factor of 10 after 10 more epochs (5000 iters) # The training protocol buffer definition -train_net: "cifar10_18pct.prototxt" +train_net: "cifar10_18pct_train.prototxt" # The testing protocol buffer definition test_net: "cifar10_18pct_test.prototxt" # test_iter specifies how many forward passes the test should carry out. -# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100 -# Carry out testing every 500 training iterations. -test_interval: 500 +# Carry out testing every 1000 training iterations. +test_interval: 1000 # The base learning rate, momentum and the weight decay of the network. base_lr: 0.001 momentum: 0.9 weight_decay: 0.004 # The learning rate policy lr_policy: "fixed" -# Display every 100 iterations -display: 100 +# Display every 200 iterations +display: 200 # The maximum number of iterations -max_iter: 100000 +max_iter: 60000 # snapshot intermediate results -snapshot: 5000 +snapshot: 10000 snapshot_prefix: "cifar10_18pct" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_18pct_solver_lr1.prototxt b/examples/cifar/cifar10_18pct_solver_lr1.prototxt new file mode 100644 index 00000000000..1cbd4ab721a --- /dev/null +++ b/examples/cifar/cifar10_18pct_solver_lr1.prototxt @@ -0,0 +1,30 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The training protocol buffer definition +train_net: "cifar10_18pct_train.prototxt" +# The testing protocol buffer definition +test_net: "cifar10_18pct_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.0001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 200 iterations +display: 200 +# The maximum number of iterations +max_iter: 65000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "cifar10_18pct" +# solver mode: 0 for CPU and 1 for GPU +solver_mode: 1 + +device_id: 0 diff --git a/examples/cifar/cifar10_18pct_solver_lr2.prototxt b/examples/cifar/cifar10_18pct_solver_lr2.prototxt new file mode 100644 index 00000000000..57305664b8b --- /dev/null +++ b/examples/cifar/cifar10_18pct_solver_lr2.prototxt @@ -0,0 +1,30 @@ +# reduce learning rate after 120 epochs (60000 iters) by factor 0f 10 +# then another factor of 10 after 10 more epochs (5000 iters) + +# The training protocol buffer definition +train_net: "cifar10_18pct_train.prototxt" +# The testing protocol buffer definition +test_net: "cifar10_18pct_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of CIFAR10, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 1000 training iterations. +test_interval: 1000 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.00001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 200 iterations +display: 200 +# The maximum number of iterations +max_iter: 70000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "cifar10_18pct" +# solver mode: 0 for CPU and 1 for GPU +solver_mode: 1 + +device_id: 0 diff --git a/examples/cifar/cifar10_18pct_test.prototxt b/examples/cifar/cifar10_18pct_test.prototxt index c28d4e66fbf..8b6c0ff8dc7 100644 --- a/examples/cifar/cifar10_18pct_test.prototxt +++ b/examples/cifar/cifar10_18pct_test.prototxt @@ -3,7 +3,7 @@ layers { layer { name: "cifar" type: "data" - source: "cifar10_db/cifar-test-leveldb" + source: "cifar10-leveldb/cifar-test-leveldb" meanfile: "mean.binaryproto" batchsize: 100 } @@ -11,21 +11,13 @@ layers { top: "label" } # ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "pad1" - type: "padding" - pad: 2 - } - bottom: "data" - top: "pad1" -} layers { layer { name: "conv1" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -37,7 +29,7 @@ layers { blobs_lr: 1. blobs_lr: 2. } - bottom: "pad1" + bottom: "data" top: "conv1" } layers { @@ -71,21 +63,13 @@ layers { top: "norm1" } # --------------------------- layer 2 ------------------------ -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "norm1" - top: "pad2" -} layers { layer { name: "conv2" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -97,7 +81,7 @@ layers { blobs_lr: 1. blobs_lr: 2. } - bottom: "pad2" + bottom: "norm1" top: "conv2" } layers { @@ -131,21 +115,13 @@ layers { top: "norm2" } #-----------------------layer 3------------------------- -layers { - layer { - name: "pad3" - type: "padding" - pad: 2 - } - bottom: "norm2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 64 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -155,7 +131,7 @@ layers { type: "constant" } } - bottom: "pad3" + bottom: "norm2" top: "conv3" } layers { diff --git a/examples/cifar/cifar10_18pct.prototxt b/examples/cifar/cifar10_18pct_train.prototxt similarity index 82% rename from examples/cifar/cifar10_18pct.prototxt rename to examples/cifar/cifar10_18pct_train.prototxt index df74dd45b39..d185f532c30 100644 --- a/examples/cifar/cifar10_18pct.prototxt +++ b/examples/cifar/cifar10_18pct_train.prototxt @@ -1,9 +1,9 @@ -name: "CIFAR10_18pct" +name: "CIFAR10_18pct_train" layers { layer { name: "cifar" type: "data" - source: "cifar10_db/cifar-train-leveldb" + source: "cifar10-leveldb/cifar-train-leveldb" meanfile: "mean.binaryproto" batchsize: 100 } @@ -11,21 +11,13 @@ layers { top: "label" } # ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "pad1" - type: "padding" - pad: 2 - } - bottom: "data" - top: "pad1" -} layers { layer { name: "conv1" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -37,7 +29,7 @@ layers { blobs_lr: 1. blobs_lr: 2. } - bottom: "pad1" + bottom: "data" top: "conv1" } layers { @@ -71,21 +63,13 @@ layers { top: "norm1" } # --------------------------- layer 2 ------------------------ -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "norm1" - top: "pad2" -} layers { layer { name: "conv2" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -97,7 +81,7 @@ layers { blobs_lr: 1. blobs_lr: 2. } - bottom: "pad2" + bottom: "norm1" top: "conv2" } layers { @@ -131,21 +115,13 @@ layers { top: "norm2" } #-----------------------layer 3------------------------- -layers { - layer { - name: "pad3" - type: "padding" - pad: 2 - } - bottom: "norm2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 64 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -155,7 +131,7 @@ layers { type: "constant" } } - bottom: "pad3" + bottom: "norm2" top: "conv3" } layers { diff --git a/examples/cifar/cifar10_80sec_solver.prototxt b/examples/cifar/cifar10_80sec_solver.prototxt index b414bb92355..1c224c7ff79 100644 --- a/examples/cifar/cifar10_80sec_solver.prototxt +++ b/examples/cifar/cifar10_80sec_solver.prototxt @@ -1,7 +1,7 @@ # reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 # The training protocol buffer definition -train_net: "cifar10_80sec.prototxt" +train_net: "cifar10_80sec_train.prototxt" # The testing protocol buffer definition test_net: "cifar10_80sec_test.prototxt" # test_iter specifies how many forward passes the test should carry out. @@ -19,7 +19,7 @@ lr_policy: "fixed" # Display every 100 iterations display: 100 # The maximum number of iterations -max_iter: 100000 +max_iter: 4000 # snapshot intermediate results snapshot: 4000 snapshot_prefix: "cifar10_80sec" diff --git a/examples/cifar/cifar10_80sec_solver_lr1.prototxt b/examples/cifar/cifar10_80sec_solver_lr1.prototxt new file mode 100644 index 00000000000..b1ec9ae8ad6 --- /dev/null +++ b/examples/cifar/cifar10_80sec_solver_lr1.prototxt @@ -0,0 +1,29 @@ +# reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 + +# The training protocol buffer definition +train_net: "cifar10_80sec_train.prototxt" +# The testing protocol buffer definition +test_net: "cifar10_80sec_test.prototxt" +# test_iter specifies how many forward passes the test should carry out. +# In the case of MNIST, we have test batch size 100 and 100 test iterations, +# covering the full 10,000 testing images. +test_iter: 100 +# Carry out testing every 500 training iterations. +test_interval: 500 +# The base learning rate, momentum and the weight decay of the network. +base_lr: 0.0001 +momentum: 0.9 +weight_decay: 0.004 +# The learning rate policy +lr_policy: "fixed" +# Display every 100 iterations +display: 100 +# The maximum number of iterations +max_iter: 5000 +# snapshot intermediate results +snapshot: 5000 +snapshot_prefix: "cifar10_80sec" +# solver mode: 0 for CPU and 1 for GPU +solver_mode: 1 + +device_id: 1 diff --git a/examples/cifar/cifar10_80sec_test.prototxt b/examples/cifar/cifar10_80sec_test.prototxt index 0aa4b4392f7..71714da3853 100644 --- a/examples/cifar/cifar10_80sec_test.prototxt +++ b/examples/cifar/cifar10_80sec_test.prototxt @@ -1,10 +1,10 @@ -# test 80sec config +# 80sec config name: "CIFAR10_80sec_test" layers { layer { name: "cifar" type: "data" - source: "cifar10_db/cifar-test-leveldb" + source: "cifar10-leveldb/cifar-test-leveldb" meanfile: "mean.binaryproto" batchsize: 100 } @@ -12,21 +12,13 @@ layers { top: "label" } # ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "pad1" - type: "padding" - pad: 2 - } - bottom: "data" - top: "pad1" -} layers { layer { name: "conv1" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -38,7 +30,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad1" + bottom: "data" top: "conv1" } layers { @@ -61,21 +53,13 @@ layers { top: "pool1" } # --------------------------- layer 2 ------------------------ -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "pool1" - top: "pad2" -} layers { layer { name: "conv2" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -87,7 +71,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad2" + bottom: "pool1" top: "conv2" } layers { @@ -110,21 +94,13 @@ layers { top: "pool2" } #-----------------------layer 3------------------------- -layers { - layer { - name: "pad3" - type: "padding" - pad: 2 - } - bottom: "pool2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 64 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -136,7 +112,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad3" + bottom: "pool2" top: "conv3" } layers { diff --git a/examples/cifar/cifar10_80sec.prototxt b/examples/cifar/cifar10_80sec_train.prototxt similarity index 82% rename from examples/cifar/cifar10_80sec.prototxt rename to examples/cifar/cifar10_80sec_train.prototxt index 8d24a16d2cb..624d98800a3 100644 --- a/examples/cifar/cifar10_80sec.prototxt +++ b/examples/cifar/cifar10_80sec_train.prototxt @@ -1,10 +1,10 @@ -# test 80sec config -name: "CIFAR10_80sec" +# 80sec config +name: "CIFAR10_80sec_train" layers { layer { name: "cifar" type: "data" - source: "cifar10_db/cifar-train-leveldb" + source: "cifar10-leveldb/cifar-train-leveldb" meanfile: "mean.binaryproto" batchsize: 100 } @@ -12,21 +12,13 @@ layers { top: "label" } # ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "pad1" - type: "padding" - pad: 2 - } - bottom: "data" - top: "pad1" -} layers { layer { name: "conv1" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -38,7 +30,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad1" + bottom: "data" top: "conv1" } layers { @@ -61,21 +53,13 @@ layers { top: "pool1" } # --------------------------- layer 2 ------------------------ -layers { - layer { - name: "pad2" - type: "padding" - pad: 2 - } - bottom: "pool1" - top: "pad2" -} layers { layer { name: "conv2" type: "conv" num_output: 32 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -87,7 +71,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad2" + bottom: "pool1" top: "conv2" } layers { @@ -110,21 +94,13 @@ layers { top: "pool2" } #-----------------------layer 3------------------------- -layers { - layer { - name: "pad3" - type: "padding" - pad: 2 - } - bottom: "pool2" - top: "pad3" -} layers { layer { name: "conv3" type: "conv" num_output: 64 kernelsize: 5 + pad: 2 stride: 1 weight_filler { type: "gaussian" @@ -136,7 +112,7 @@ layers { blobs_lr: 1.0 blobs_lr: 2.0 } - bottom: "pad3" + bottom: "pool2" top: "conv3" } layers { diff --git a/examples/cifar/create_cifar10.sh b/examples/cifar/create_cifar10.sh new file mode 100755 index 00000000000..2d8428b1262 --- /dev/null +++ b/examples/cifar/create_cifar10.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env sh +# This script converts the cifar data into leveldb format. + +EXAMPLES=../../build/examples/cifar +DATA=../../data/cifar10 +TOOLS=../../build/tools + +echo "Creating leveldb..." + +rm -rf cifar10-leveldb +mkdir cifar10-leveldb + +$EXAMPLES/convert_cifar_data.bin $DATA ./cifar10-leveldb + +echo "Computing image mean..." + +$TOOLS/compute_image_mean.bin ./cifar10-leveldb/cifar-train-leveldb mean.binaryproto + +echo "Done." diff --git a/examples/cifar/train_18pct.sh b/examples/cifar/train_18pct.sh new file mode 100755 index 00000000000..6a562ec2f37 --- /dev/null +++ b/examples/cifar/train_18pct.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +TOOLS=../../build/tools + +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver.prototxt + +#reduce learning rate by factor of 10 +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver_lr1.prototxt cifar10_18pct_iter_60000.solverstate + +#reduce learning rate by factor of 10 +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver_lr2.prototxt cifar10_18pct_iter_65000.solverstate diff --git a/examples/cifar/train_80sec.sh b/examples/cifar/train_80sec.sh new file mode 100755 index 00000000000..a55a870c372 --- /dev/null +++ b/examples/cifar/train_80sec.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +TOOLS=../../build/tools + +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_80sec_solver.prototxt + +#reduce learning rate by fctor of 10 after 8 epochs +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_80sec_solver_lr1.prototxt cifar10_80sec_iter_4000.solverstate From 6b2106765f9c0179378abe62c89de01773cf1738 Mon Sep 17 00:00:00 2001 From: chyojn Date: Sat, 1 Mar 2014 11:40:49 +0800 Subject: [PATCH 045/113] remove specific device id from solver proto --- examples/cifar/cifar10_18pct_solver.prototxt | 2 -- examples/cifar/cifar10_18pct_solver_lr1.prototxt | 2 -- examples/cifar/cifar10_18pct_solver_lr2.prototxt | 2 -- examples/cifar/cifar10_80sec_solver.prototxt | 2 -- examples/cifar/cifar10_80sec_solver_lr1.prototxt | 2 -- 5 files changed, 10 deletions(-) diff --git a/examples/cifar/cifar10_18pct_solver.prototxt b/examples/cifar/cifar10_18pct_solver.prototxt index b068c4ee409..667445ba392 100644 --- a/examples/cifar/cifar10_18pct_solver.prototxt +++ b/examples/cifar/cifar10_18pct_solver.prototxt @@ -26,5 +26,3 @@ snapshot: 10000 snapshot_prefix: "cifar10_18pct" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 - -device_id: 0 diff --git a/examples/cifar/cifar10_18pct_solver_lr1.prototxt b/examples/cifar/cifar10_18pct_solver_lr1.prototxt index 1cbd4ab721a..d9b3c9b1f02 100644 --- a/examples/cifar/cifar10_18pct_solver_lr1.prototxt +++ b/examples/cifar/cifar10_18pct_solver_lr1.prototxt @@ -26,5 +26,3 @@ snapshot: 5000 snapshot_prefix: "cifar10_18pct" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 - -device_id: 0 diff --git a/examples/cifar/cifar10_18pct_solver_lr2.prototxt b/examples/cifar/cifar10_18pct_solver_lr2.prototxt index 57305664b8b..15e9c2beb1a 100644 --- a/examples/cifar/cifar10_18pct_solver_lr2.prototxt +++ b/examples/cifar/cifar10_18pct_solver_lr2.prototxt @@ -26,5 +26,3 @@ snapshot: 5000 snapshot_prefix: "cifar10_18pct" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 - -device_id: 0 diff --git a/examples/cifar/cifar10_80sec_solver.prototxt b/examples/cifar/cifar10_80sec_solver.prototxt index 1c224c7ff79..e8b1d0774cc 100644 --- a/examples/cifar/cifar10_80sec_solver.prototxt +++ b/examples/cifar/cifar10_80sec_solver.prototxt @@ -25,5 +25,3 @@ snapshot: 4000 snapshot_prefix: "cifar10_80sec" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 - -device_id: 1 diff --git a/examples/cifar/cifar10_80sec_solver_lr1.prototxt b/examples/cifar/cifar10_80sec_solver_lr1.prototxt index b1ec9ae8ad6..763b5d34478 100644 --- a/examples/cifar/cifar10_80sec_solver_lr1.prototxt +++ b/examples/cifar/cifar10_80sec_solver_lr1.prototxt @@ -25,5 +25,3 @@ snapshot: 5000 snapshot_prefix: "cifar10_80sec" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 - -device_id: 1 From 8e580fd1e9a09d87754aa15dfd1968fe8df3d7fd Mon Sep 17 00:00:00 2001 From: Kai Li Date: Thu, 20 Feb 2014 18:29:08 +0800 Subject: [PATCH 046/113] Synchronize GPU before CPU timers start and stop in net_speed_benchmark --- tools/net_speed_benchmark.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/net_speed_benchmark.cpp b/tools/net_speed_benchmark.cpp index 9976744d35e..83fba1477e3 100644 --- a/tools/net_speed_benchmark.cpp +++ b/tools/net_speed_benchmark.cpp @@ -67,13 +67,22 @@ int main(int argc, char** argv) { vector*> >& bottom_vecs = caffe_net.bottom_vecs(); vector*> >& top_vecs = caffe_net.top_vecs(); LOG(ERROR) << "*** Benchmark begins ***"; + if (Caffe::mode() == Caffe::GPU) { + cudaDeviceSynchronize(); + } clock_t forward_start = clock(); for (int i = 0; i < layers.size(); ++i) { const string& layername = layers[i]->layer_param().name(); + if (Caffe::mode() == Caffe::GPU) { + cudaDeviceSynchronize(); + } clock_t start = clock(); for (int j = 0; j < total_iter; ++j) { layers[i]->Forward(bottom_vecs[i], &top_vecs[i]); } + if (Caffe::mode() == Caffe::GPU) { + cudaDeviceSynchronize(); + } LOG(ERROR) << layername << "\tforward: " << static_cast(clock() - start) / CLOCKS_PER_SEC << " seconds."; @@ -84,10 +93,16 @@ int main(int argc, char** argv) { clock_t backward_start = clock(); for (int i = layers.size() - 1; i >= 0; --i) { const string& layername = layers[i]->layer_param().name(); + if (Caffe::mode() == Caffe::GPU) { + cudaDeviceSynchronize(); + } clock_t start = clock(); for (int j = 0; j < total_iter; ++j) { layers[i]->Backward(top_vecs[i], true, &bottom_vecs[i]); } + if (Caffe::mode() == Caffe::GPU) { + cudaDeviceSynchronize(); + } LOG(ERROR) << layername << "\tbackward: " << static_cast(clock() - start) / CLOCKS_PER_SEC << " seconds."; From 263ceea2e7fa6614c7bd4b700771e11907925fba Mon Sep 17 00:00:00 2001 From: Kai Li Date: Thu, 20 Feb 2014 19:42:57 +0800 Subject: [PATCH 047/113] Add Timer to wrap CPU clock_t and GPU cudaEvent_t based timing --- include/caffe/util/benchmark.hpp | 27 ++++++++++++++++ src/caffe/util/benchmark.cpp | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 include/caffe/util/benchmark.hpp create mode 100644 src/caffe/util/benchmark.cpp diff --git a/include/caffe/util/benchmark.hpp b/include/caffe/util/benchmark.hpp new file mode 100644 index 00000000000..073b33c56b8 --- /dev/null +++ b/include/caffe/util/benchmark.hpp @@ -0,0 +1,27 @@ +// Copyright 2014 kloud@github + +#ifndef CAFFE_UTIL_BENCHMARK_H_ +#define CAFFE_UTIL_BENCHMARK_H_ + +#include + +namespace caffe { + +class Timer { + public: + Timer(); + virtual ~Timer(); + void Start(); + void Stop(); + float ElapsedSeconds(); + + protected: + cudaEvent_t start_gpu_; + cudaEvent_t stop_gpu_; + clock_t start_cpu_; + clock_t stop_cpu_; +}; + +} // namespace caffe + +#endif // CAFFE_UTIL_BENCHMARK_H_ diff --git a/src/caffe/util/benchmark.cpp b/src/caffe/util/benchmark.cpp new file mode 100644 index 00000000000..19a036d9879 --- /dev/null +++ b/src/caffe/util/benchmark.cpp @@ -0,0 +1,53 @@ +// Copyright 2014 kloud@github + +#include +#include + +#include "caffe/common.hpp" +#include "caffe/util/benchmark.hpp" + +namespace caffe { + +Timer::Timer() { + if (Caffe::mode() == Caffe::GPU) { + cudaEventCreate (&start_gpu_); + cudaEventCreate (&stop_gpu_); + } +} + +Timer::~Timer() { + if (Caffe::mode() == Caffe::GPU) { + cudaEventDestroy (start_gpu_); + cudaEventDestroy (stop_gpu_); + } +} + +void Timer::Start() { + if (Caffe::mode() == Caffe::GPU) { + cudaEventRecord(start_gpu_, 0); + } else { + start_cpu_ = clock(); + } +} + +void Timer::Stop() { + if (Caffe::mode() == Caffe::GPU) { + cudaEventRecord(stop_gpu_, 0); + } else { + stop_cpu_ = clock(); + } +} + +float Timer::ElapsedSeconds() { + float elapsed; + if (Caffe::mode() == Caffe::GPU) { + cudaEventSynchronize(stop_gpu_); + cudaEventElapsedTime(&elapsed, start_gpu_, stop_gpu_); + elapsed /= 1000.; + } else { + elapsed = float(stop_cpu_ - start_cpu_) / CLOCKS_PER_SEC; + } + return elapsed; +} + +} // namespace caffe From cd84539806b501c1f764f7b510a2cb3842a1c849 Mon Sep 17 00:00:00 2001 From: Kai Li Date: Thu, 20 Feb 2014 19:44:41 +0800 Subject: [PATCH 048/113] Replace CPU timer with newly added Timer to benchmark net speed --- tools/net_speed_benchmark.cpp | 72 ++++++++++++++--------------------- 1 file changed, 28 insertions(+), 44 deletions(-) diff --git a/tools/net_speed_benchmark.cpp b/tools/net_speed_benchmark.cpp index 83fba1477e3..a0e589e546a 100644 --- a/tools/net_speed_benchmark.cpp +++ b/tools/net_speed_benchmark.cpp @@ -1,31 +1,29 @@ // Copyright 2013 Yangqing Jia -#include -#include -#include +#include +#include +#include -#include "cuda_runtime.h" -#include "fcntl.h" -#include "google/protobuf/text_format.h" +#include +#include #include "caffe/blob.hpp" #include "caffe/common.hpp" #include "caffe/net.hpp" #include "caffe/filler.hpp" #include "caffe/proto/caffe.pb.h" +#include "caffe/util/benchmark.hpp" #include "caffe/util/io.hpp" #include "caffe/solver.hpp" -using boost::shared_ptr; - -using namespace caffe; // NOLINT(build/namespaces) +using namespace caffe; int main(int argc, char** argv) { + int total_iter = 50; if (argc < 2) { - LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50] [CPU/GPU] " - << "[Device_id=0]"; + LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50] [CPU/GPU] [Device_id=0]"; return 0; } @@ -67,52 +65,38 @@ int main(int argc, char** argv) { vector*> >& bottom_vecs = caffe_net.bottom_vecs(); vector*> >& top_vecs = caffe_net.top_vecs(); LOG(ERROR) << "*** Benchmark begins ***"; - if (Caffe::mode() == Caffe::GPU) { - cudaDeviceSynchronize(); - } - clock_t forward_start = clock(); + Timer total_timer; + total_timer.Start(); + Timer forward_timer; + forward_timer.Start(); + Timer timer; for (int i = 0; i < layers.size(); ++i) { const string& layername = layers[i]->layer_param().name(); - if (Caffe::mode() == Caffe::GPU) { - cudaDeviceSynchronize(); - } - clock_t start = clock(); + timer.Start(); for (int j = 0; j < total_iter; ++j) { layers[i]->Forward(bottom_vecs[i], &top_vecs[i]); } - if (Caffe::mode() == Caffe::GPU) { - cudaDeviceSynchronize(); - } - LOG(ERROR) << layername << "\tforward: " - << static_cast(clock() - start) / CLOCKS_PER_SEC - << " seconds."; + timer.Stop(); + LOG(ERROR) << layername << "\tforward: " << timer.ElapsedSeconds() << " seconds."; } - LOG(ERROR) << "Forward pass: " - << static_cast(clock() - forward_start) / CLOCKS_PER_SEC - << " seconds."; - clock_t backward_start = clock(); + forward_timer.Stop(); + LOG(ERROR) << "Forward pass: " << forward_timer.ElapsedSeconds() << " seconds."; + Timer backward_timer; + backward_timer.Start(); for (int i = layers.size() - 1; i >= 0; --i) { const string& layername = layers[i]->layer_param().name(); - if (Caffe::mode() == Caffe::GPU) { - cudaDeviceSynchronize(); - } - clock_t start = clock(); + timer.Start(); for (int j = 0; j < total_iter; ++j) { layers[i]->Backward(top_vecs[i], true, &bottom_vecs[i]); } - if (Caffe::mode() == Caffe::GPU) { - cudaDeviceSynchronize(); - } + timer.Stop(); LOG(ERROR) << layername << "\tbackward: " - << static_cast(clock() - start) / CLOCKS_PER_SEC - << " seconds."; + << timer.ElapsedSeconds() << " seconds."; } - LOG(ERROR) << "Backward pass: " - << static_cast(clock() - backward_start) / CLOCKS_PER_SEC - << " seconds."; - LOG(ERROR) << "Total Time: " - << static_cast(clock() - forward_start) / CLOCKS_PER_SEC - << " seconds."; + backward_timer.Stop(); + LOG(ERROR) << "Backward pass: " << backward_timer.ElapsedSeconds() << " seconds."; + total_timer.Stop(); + LOG(ERROR) << "Total Time: " << total_timer.ElapsedSeconds() << " seconds."; LOG(ERROR) << "*** Benchmark ends ***"; return 0; } From 342a9111c0acae020f1647e0570b729cb293cacf Mon Sep 17 00:00:00 2001 From: Kai Li Date: Wed, 26 Feb 2014 00:00:59 +0800 Subject: [PATCH 049/113] Add state machine, boost::posix_time based cpu timer & tests for Timer --- include/caffe/util/benchmark.hpp | 18 +++- src/caffe/test/test_benchmark.cpp | 169 ++++++++++++++++++++++++++++++ src/caffe/util/benchmark.cpp | 72 +++++++++---- tools/net_speed_benchmark.cpp | 15 +-- 4 files changed, 238 insertions(+), 36 deletions(-) create mode 100644 src/caffe/test/test_benchmark.cpp diff --git a/include/caffe/util/benchmark.hpp b/include/caffe/util/benchmark.hpp index 073b33c56b8..fd6719a6820 100644 --- a/include/caffe/util/benchmark.hpp +++ b/include/caffe/util/benchmark.hpp @@ -3,6 +3,7 @@ #ifndef CAFFE_UTIL_BENCHMARK_H_ #define CAFFE_UTIL_BENCHMARK_H_ +#include #include namespace caffe { @@ -13,13 +14,24 @@ class Timer { virtual ~Timer(); void Start(); void Stop(); - float ElapsedSeconds(); + float MilliSeconds(); + float Seconds(); + + inline bool initted() { return initted_; } + inline bool running() { return running_; } + inline bool has_run_at_least_once() { return has_run_at_least_once_; } protected: + void Init(); + + bool initted_; + bool running_; + bool has_run_at_least_once_; cudaEvent_t start_gpu_; cudaEvent_t stop_gpu_; - clock_t start_cpu_; - clock_t stop_cpu_; + boost::posix_time::ptime start_cpu_; + boost::posix_time::ptime stop_cpu_; + float elapsed_milliseconds_; }; } // namespace caffe diff --git a/src/caffe/test/test_benchmark.cpp b/src/caffe/test/test_benchmark.cpp new file mode 100644 index 00000000000..9866f7d0f20 --- /dev/null +++ b/src/caffe/test/test_benchmark.cpp @@ -0,0 +1,169 @@ +// Copyright 2014 kloud@github + +#include // for usleep +#include +#include + +#include "caffe/common.hpp" +#include "caffe/util/benchmark.hpp" +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +class BenchmarkTest : public ::testing::Test {}; + +TEST_F(BenchmarkTest, TestTimerConstructorCPU) { + Caffe::set_mode(Caffe::CPU); + Timer timer; + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerConstructorGPU) { + Caffe::set_mode(Caffe::GPU); + Timer timer; + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerStartCPU) { + Caffe::set_mode(Caffe::CPU); + Timer timer; + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerStartGPU) { + Caffe::set_mode(Caffe::GPU); + Timer timer; + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Start(); + EXPECT_TRUE(timer.initted()); + EXPECT_TRUE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerStopCPU) { + Caffe::set_mode(Caffe::CPU); + Timer timer; + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerStopGPU) { + Caffe::set_mode(Caffe::GPU); + Timer timer; + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); + timer.Stop(); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerMilliSecondsCPU) { + Caffe::set_mode(Caffe::CPU); + Timer timer; + CHECK_EQ(timer.MilliSeconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + usleep(300 * 1000); + CHECK_GE(timer.MilliSeconds(), 299); + CHECK_LE(timer.MilliSeconds(), 301); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerMilliSecondsGPU) { + Caffe::set_mode(Caffe::GPU); + Timer timer; + CHECK_EQ(timer.MilliSeconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + usleep(300 * 1000); + CHECK_GE(timer.MilliSeconds(), 299); + CHECK_LE(timer.MilliSeconds(), 301); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerSecondsCPU) { + Caffe::set_mode(Caffe::CPU); + Timer timer; + CHECK_EQ(timer.Seconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + usleep(300 * 1000); + CHECK_GE(timer.Seconds(), 0.299); + CHECK_LE(timer.Seconds(), 0.301); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +TEST_F(BenchmarkTest, TestTimerSecondsGPU) { + Caffe::set_mode(Caffe::GPU); + Timer timer; + CHECK_EQ(timer.Seconds(), 0); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_FALSE(timer.has_run_at_least_once()); + timer.Start(); + usleep(300 * 1000); + CHECK_GE(timer.Seconds(), 0.299); + CHECK_LE(timer.Seconds(), 0.301); + EXPECT_TRUE(timer.initted()); + EXPECT_FALSE(timer.running()); + EXPECT_TRUE(timer.has_run_at_least_once()); +} + +} // namespace caffe diff --git a/src/caffe/util/benchmark.cpp b/src/caffe/util/benchmark.cpp index 19a036d9879..b97a3c3c3e5 100644 --- a/src/caffe/util/benchmark.cpp +++ b/src/caffe/util/benchmark.cpp @@ -1,6 +1,6 @@ // Copyright 2014 kloud@github -#include +#include #include #include "caffe/common.hpp" @@ -8,46 +8,72 @@ namespace caffe { -Timer::Timer() { - if (Caffe::mode() == Caffe::GPU) { - cudaEventCreate (&start_gpu_); - cudaEventCreate (&stop_gpu_); - } +Timer::Timer() + : initted_(false), + running_(false), + has_run_at_least_once_(false) { + Init(); } Timer::~Timer() { if (Caffe::mode() == Caffe::GPU) { - cudaEventDestroy (start_gpu_); - cudaEventDestroy (stop_gpu_); + CUDA_CHECK(cudaEventDestroy(start_gpu_)); + CUDA_CHECK(cudaEventDestroy(stop_gpu_)); } } void Timer::Start() { - if (Caffe::mode() == Caffe::GPU) { - cudaEventRecord(start_gpu_, 0); - } else { - start_cpu_ = clock(); + if (!running()) { + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaEventRecord(start_gpu_, 0)); + } else { + start_cpu_ = boost::posix_time::microsec_clock::local_time(); + } + running_ = true; + has_run_at_least_once_ = true; } } void Timer::Stop() { - if (Caffe::mode() == Caffe::GPU) { - cudaEventRecord(stop_gpu_, 0); - } else { - stop_cpu_ = clock(); + if (running()) { + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaEventRecord(stop_gpu_, 0)); + CUDA_CHECK(cudaEventSynchronize(stop_gpu_)); + } else { + stop_cpu_ = boost::posix_time::microsec_clock::local_time(); + } + running_ = false; } } -float Timer::ElapsedSeconds() { - float elapsed; +float Timer::MilliSeconds() { + if (!has_run_at_least_once()) { + LOG(WARNING) << "Timer has never been run before reading time."; + return 0; + } + if (running()) { + Stop(); + } if (Caffe::mode() == Caffe::GPU) { - cudaEventSynchronize(stop_gpu_); - cudaEventElapsedTime(&elapsed, start_gpu_, stop_gpu_); - elapsed /= 1000.; + CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, stop_gpu_)); } else { - elapsed = float(stop_cpu_ - start_cpu_) / CLOCKS_PER_SEC; + elapsed_milliseconds_ = (stop_cpu_ - start_cpu_).total_milliseconds(); + } + return elapsed_milliseconds_; +} + +float Timer::Seconds() { + return MilliSeconds() / 1000.; +} + +void Timer::Init() { + if (!initted()) { + if (Caffe::mode() == Caffe::GPU) { + CUDA_CHECK(cudaEventCreate(&start_gpu_)); + CUDA_CHECK(cudaEventCreate(&stop_gpu_)); + } + initted_ = true; } - return elapsed; } } // namespace caffe diff --git a/tools/net_speed_benchmark.cpp b/tools/net_speed_benchmark.cpp index a0e589e546a..e7bcd4822f7 100644 --- a/tools/net_speed_benchmark.cpp +++ b/tools/net_speed_benchmark.cpp @@ -76,11 +76,9 @@ int main(int argc, char** argv) { for (int j = 0; j < total_iter; ++j) { layers[i]->Forward(bottom_vecs[i], &top_vecs[i]); } - timer.Stop(); - LOG(ERROR) << layername << "\tforward: " << timer.ElapsedSeconds() << " seconds."; + LOG(ERROR) << layername << "\tforward: " << timer.MilliSeconds() << " milli seconds."; } - forward_timer.Stop(); - LOG(ERROR) << "Forward pass: " << forward_timer.ElapsedSeconds() << " seconds."; + LOG(ERROR) << "Forward pass: " << forward_timer.MilliSeconds() << " milli seconds."; Timer backward_timer; backward_timer.Start(); for (int i = layers.size() - 1; i >= 0; --i) { @@ -89,14 +87,11 @@ int main(int argc, char** argv) { for (int j = 0; j < total_iter; ++j) { layers[i]->Backward(top_vecs[i], true, &bottom_vecs[i]); } - timer.Stop(); LOG(ERROR) << layername << "\tbackward: " - << timer.ElapsedSeconds() << " seconds."; + << timer.MilliSeconds() << " milli seconds."; } - backward_timer.Stop(); - LOG(ERROR) << "Backward pass: " << backward_timer.ElapsedSeconds() << " seconds."; - total_timer.Stop(); - LOG(ERROR) << "Total Time: " << total_timer.ElapsedSeconds() << " seconds."; + LOG(ERROR) << "Backward pass: " << backward_timer.MilliSeconds() << " milli seconds."; + LOG(ERROR) << "Total Time: " << total_timer.MilliSeconds() << " milli seconds."; LOG(ERROR) << "*** Benchmark ends ***"; return 0; } From cc509a913bcc3700b1e6ca9c67ae2708259282f1 Mon Sep 17 00:00:00 2001 From: Kai Li Date: Wed, 26 Feb 2014 21:11:53 +0800 Subject: [PATCH 050/113] Fix the cpplint errors for benchmark Timer --- src/caffe/test/test_benchmark.cpp | 2 +- src/caffe/util/benchmark.cpp | 3 ++- tools/net_speed_benchmark.cpp | 21 +++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/caffe/test/test_benchmark.cpp b/src/caffe/test/test_benchmark.cpp index 9866f7d0f20..e8e3a116e3e 100644 --- a/src/caffe/test/test_benchmark.cpp +++ b/src/caffe/test/test_benchmark.cpp @@ -1,6 +1,6 @@ // Copyright 2014 kloud@github -#include // for usleep +#include // for usleep #include #include diff --git a/src/caffe/util/benchmark.cpp b/src/caffe/util/benchmark.cpp index b97a3c3c3e5..21c38ad36fe 100644 --- a/src/caffe/util/benchmark.cpp +++ b/src/caffe/util/benchmark.cpp @@ -55,7 +55,8 @@ float Timer::MilliSeconds() { Stop(); } if (Caffe::mode() == Caffe::GPU) { - CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, stop_gpu_)); + CUDA_CHECK(cudaEventElapsedTime(&elapsed_milliseconds_, start_gpu_, + stop_gpu_)); } else { elapsed_milliseconds_ = (stop_cpu_ - start_cpu_).total_milliseconds(); } diff --git a/tools/net_speed_benchmark.cpp b/tools/net_speed_benchmark.cpp index e7bcd4822f7..96d40a2eb37 100644 --- a/tools/net_speed_benchmark.cpp +++ b/tools/net_speed_benchmark.cpp @@ -6,6 +6,8 @@ #include #include +#include +#include #include "caffe/blob.hpp" #include "caffe/common.hpp" @@ -16,14 +18,13 @@ #include "caffe/util/io.hpp" #include "caffe/solver.hpp" -using namespace caffe; +using namespace caffe; // NOLINT(build/namespaces) int main(int argc, char** argv) { - int total_iter = 50; - if (argc < 2) { - LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50] [CPU/GPU] [Device_id=0]"; + LOG(ERROR) << "net_speed_benchmark net_proto [iterations=50]" + " [CPU/GPU] [Device_id=0]"; return 0; } @@ -76,9 +77,11 @@ int main(int argc, char** argv) { for (int j = 0; j < total_iter; ++j) { layers[i]->Forward(bottom_vecs[i], &top_vecs[i]); } - LOG(ERROR) << layername << "\tforward: " << timer.MilliSeconds() << " milli seconds."; + LOG(ERROR) << layername << "\tforward: " << timer.MilliSeconds() << + " milli seconds."; } - LOG(ERROR) << "Forward pass: " << forward_timer.MilliSeconds() << " milli seconds."; + LOG(ERROR) << "Forward pass: " << forward_timer.MilliSeconds() << + " milli seconds."; Timer backward_timer; backward_timer.Start(); for (int i = layers.size() - 1; i >= 0; --i) { @@ -90,8 +93,10 @@ int main(int argc, char** argv) { LOG(ERROR) << layername << "\tbackward: " << timer.MilliSeconds() << " milli seconds."; } - LOG(ERROR) << "Backward pass: " << backward_timer.MilliSeconds() << " milli seconds."; - LOG(ERROR) << "Total Time: " << total_timer.MilliSeconds() << " milli seconds."; + LOG(ERROR) << "Backward pass: " << backward_timer.MilliSeconds() << + " milli seconds."; + LOG(ERROR) << "Total Time: " << total_timer.MilliSeconds() << + " milli seconds."; LOG(ERROR) << "*** Benchmark ends ***"; return 0; } From 5b82ac76e361722207e4506f215e446381f36113 Mon Sep 17 00:00:00 2001 From: sguada Date: Thu, 6 Mar 2014 01:17:22 -0800 Subject: [PATCH 051/113] Log memory usage while loading a Net --- src/caffe/net.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index e976dfd5fd0..640ccef1301 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -41,6 +41,7 @@ void Net::Init(const NetParameter& in_param) { int num_layers = param.layers_size(); CHECK_EQ(param.input_size() * 4, param.input_dim_size()) << "Incorrect bottom blob dimension specifications."; + size_t memory_used = 0; // set the input blobs for (int i = 0; i < param.input_size(); ++i) { const string& blob_name = param.input(i); @@ -56,13 +57,16 @@ void Net::Init(const NetParameter& in_param) { net_input_blobs_.push_back(blob_pointer.get()); blob_name_to_idx[blob_name] = i; available_blobs.insert(blob_name); + memory_used += blob_pointer->count(); } + LOG(INFO) << "Floats required " << memory_used; // For each layer, set up their input and output bottom_vecs_.resize(param.layers_size()); top_vecs_.resize(param.layers_size()); bottom_id_vecs_.resize(param.layers_size()); top_id_vecs_.resize(param.layers_size()); for (int i = 0; i < param.layers_size(); ++i) { + bool in_place = false; const LayerConnection& layer_connection = param.layers(i); const LayerParameter& layer_param = layer_connection.layer(); layers_.push_back(shared_ptr >(GetLayer(layer_param))); @@ -92,6 +96,7 @@ void Net::Init(const NetParameter& in_param) { blob_name == layer_connection.bottom(j)) { // In-place computation LOG(INFO) << layer_param.name() << " -> " << blob_name << " (in-place)"; + in_place = true; available_blobs.insert(blob_name); top_vecs_[i].push_back( blobs_[blob_name_to_idx[blob_name]].get()); @@ -117,10 +122,15 @@ void Net::Init(const NetParameter& in_param) { // LOG(INFO) << "Setting up " << layer_names_[i]; layers_[i]->SetUp(bottom_vecs_[i], &top_vecs_[i]); for (int topid = 0; topid < top_vecs_[i].size(); ++topid) { - LOG(INFO) << "Top shape: " << top_vecs_[i][topid]->channels() << " " + LOG(INFO) << "Top shape: " << top_vecs_[i][topid]->num() << " " + << top_vecs_[i][topid]->channels() << " " << top_vecs_[i][topid]->height() << " " - << top_vecs_[i][topid]->width(); + << top_vecs_[i][topid]->width() << " (" + << top_vecs_[i][topid]->count() << ")"; + if (!in_place) + memory_used += top_vecs_[i][topid]->count(); } + LOG(INFO) << "Floats required " << memory_used; int blobs_lr_size = layers_[i]->layer_param().blobs_lr_size(); CHECK(blobs_lr_size == layers_[i]->blobs().size() || blobs_lr_size == 0) << "Incorrect blobs lr size: should be either 0 or the same as " @@ -154,6 +164,7 @@ void Net::Init(const NetParameter& in_param) { } GetLearningRateAndWeightDecay(); LOG(INFO) << "Network initialization done."; + LOG(INFO) << "Floats required " << memory_used; } From 081d889fee93cc48dd0cb43cdbad77d9a9f9d6c3 Mon Sep 17 00:00:00 2001 From: Sergio Guadarrama Date: Thu, 6 Mar 2014 13:32:06 -0800 Subject: [PATCH 052/113] Changed display top shape to include num and count, Memory required by Data --- src/caffe/net.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/caffe/net.cpp b/src/caffe/net.cpp index 640ccef1301..1837b0768ae 100644 --- a/src/caffe/net.cpp +++ b/src/caffe/net.cpp @@ -59,7 +59,7 @@ void Net::Init(const NetParameter& in_param) { available_blobs.insert(blob_name); memory_used += blob_pointer->count(); } - LOG(INFO) << "Floats required " << memory_used; + DLOG(INFO) << "Memory required for Data" << memory_used*sizeof(Dtype); // For each layer, set up their input and output bottom_vecs_.resize(param.layers_size()); top_vecs_.resize(param.layers_size()); @@ -130,7 +130,7 @@ void Net::Init(const NetParameter& in_param) { if (!in_place) memory_used += top_vecs_[i][topid]->count(); } - LOG(INFO) << "Floats required " << memory_used; + DLOG(INFO) << "Memory required for Data " << memory_used*sizeof(Dtype); int blobs_lr_size = layers_[i]->layer_param().blobs_lr_size(); CHECK(blobs_lr_size == layers_[i]->blobs().size() || blobs_lr_size == 0) << "Incorrect blobs lr size: should be either 0 or the same as " @@ -164,7 +164,7 @@ void Net::Init(const NetParameter& in_param) { } GetLearningRateAndWeightDecay(); LOG(INFO) << "Network initialization done."; - LOG(INFO) << "Floats required " << memory_used; + LOG(INFO) << "Memory required for Data " << memory_used*sizeof(Dtype); } From 53db54aa25eaef96200cff8240d19c8bc702b6f8 Mon Sep 17 00:00:00 2001 From: linmin Date: Thu, 20 Feb 2014 13:44:14 +0800 Subject: [PATCH 053/113] compute data mean for float_data --- tools/compute_image_mean.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index 65ff538fbac..771f5dc78f4 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -10,6 +10,7 @@ using caffe::Datum; using caffe::BlobProto; +using std::max; int main(int argc, char** argv) { ::google::InitGoogleLogging(argv[0]); @@ -40,7 +41,8 @@ int main(int argc, char** argv) { sum_blob.set_height(datum.height()); sum_blob.set_width(datum.width()); const int data_size = datum.channels() * datum.height() * datum.width(); - for (int i = 0; i < datum.data().size(); ++i) { + int size_in_datum = std::max(datum.data().size(), datum.float_data_size()); + for (int i = 0; i < size_in_datum; ++i) { sum_blob.add_data(0.); } LOG(INFO) << "Starting Iteration"; @@ -48,10 +50,15 @@ int main(int argc, char** argv) { // just a dummy operation datum.ParseFromString(it->value().ToString()); const string& data = datum.data(); - CHECK_EQ(data.size(), data_size) << "Incorrect data field size " + size_in_datum = std::max(datum.data().size(), datum.float_data_size()); + CHECK_EQ(size_in_datum, data_size) << "Incorrect data field size " << size_in_datum; << data.size(); - for (int i = 0; i < data.size(); ++i) { - sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); + for (int i = 0; i < size_in_datum; ++i) { + if (data.size() != 0) { + sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); + } else { + sum_blob.set_data(i, sum_blob.data(i) + (float)datum.float_data(i)); + } } ++count; if (count % 10000 == 0) { From a2c2f3ce57e818a4db55e98344163410646d9997 Mon Sep 17 00:00:00 2001 From: linmin Date: Fri, 21 Feb 2014 11:25:22 +0800 Subject: [PATCH 054/113] move if outside of forloop --- tools/compute_image_mean.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index 771f5dc78f4..3e6b9114b46 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -52,12 +52,13 @@ int main(int argc, char** argv) { const string& data = datum.data(); size_in_datum = std::max(datum.data().size(), datum.float_data_size()); CHECK_EQ(size_in_datum, data_size) << "Incorrect data field size " << size_in_datum; - << data.size(); - for (int i = 0; i < size_in_datum; ++i) { - if (data.size() != 0) { - sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); - } else { - sum_blob.set_data(i, sum_blob.data(i) + (float)datum.float_data(i)); + if (data.size() != 0) { + for (int i = 0; i < size_in_datum; ++i) { + sum_blob.set_data(i, sum_blob.data(i) + (uint8_t)data[i]); + } + } else { + for (int i = 0; i < size_in_datum; ++i) { + sum_blob.set_data(i, sum_blob.data(i) + (float)datum.float_data(i)); } } ++count; From 9c1ceb6bd54f263d465eea45b733b8b0ebd430c5 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Wed, 19 Feb 2014 23:12:46 -0800 Subject: [PATCH 055/113] pycaffe: expose ForwardPrefilled This allows, for example, a net taking input from a LevelDB to be run through a Python script. --- python/caffe/pycaffe.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index c32194ef998..581c7a7dd37 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -216,6 +216,10 @@ struct CaffeNet { } } + void ForwardPrefilled() { + net_->ForwardPrefilled(); + } + // The caffe::Caffe utility functions. void set_mode_cpu() { Caffe::set_mode(Caffe::CPU); } void set_mode_gpu() { Caffe::set_mode(Caffe::GPU); } @@ -254,15 +258,16 @@ struct CaffeNet { BOOST_PYTHON_MODULE(pycaffe) { boost::python::class_( "CaffeNet", boost::python::init()) - .def("Forward", &CaffeNet::Forward) - .def("Backward", &CaffeNet::Backward) - .def("set_mode_cpu", &CaffeNet::set_mode_cpu) - .def("set_mode_gpu", &CaffeNet::set_mode_gpu) - .def("set_phase_train", &CaffeNet::set_phase_train) - .def("set_phase_test", &CaffeNet::set_phase_test) - .def("set_device", &CaffeNet::set_device) - .def("blobs", &CaffeNet::blobs) - .def("params", &CaffeNet::params); + .def("Forward", &CaffeNet::Forward) + .def("ForwardPrefilled", &CaffeNet::ForwardPrefilled) + .def("Backward", &CaffeNet::Backward) + .def("set_mode_cpu", &CaffeNet::set_mode_cpu) + .def("set_mode_gpu", &CaffeNet::set_mode_gpu) + .def("set_phase_train", &CaffeNet::set_phase_train) + .def("set_phase_test", &CaffeNet::set_phase_test) + .def("set_device", &CaffeNet::set_device) + .def("blobs", &CaffeNet::blobs) + .def("params", &CaffeNet::params); boost::python::class_( "CaffeBlob", boost::python::no_init) From ab3a2ac56aa78cdd358f7444ad7a1a509a41da72 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sat, 1 Mar 2014 01:48:06 -0800 Subject: [PATCH 056/113] pycaffe: blobs and params are properties, not methods --- python/caffe/pycaffe.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/python/caffe/pycaffe.cpp b/python/caffe/pycaffe.cpp index 581c7a7dd37..ae0cdf06101 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/pycaffe.cpp @@ -266,8 +266,9 @@ BOOST_PYTHON_MODULE(pycaffe) { .def("set_phase_train", &CaffeNet::set_phase_train) .def("set_phase_test", &CaffeNet::set_phase_test) .def("set_device", &CaffeNet::set_device) - .def("blobs", &CaffeNet::blobs) - .def("params", &CaffeNet::params); + .add_property("blobs", &CaffeNet::blobs) + .add_property("params", &CaffeNet::params) + ; boost::python::class_( "CaffeBlob", boost::python::no_init) From d8035354455973425312e267da95a7274cc0b403 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 20:00:01 -0700 Subject: [PATCH 057/113] Rename pycaffe.cpp -> _caffe.cpp in preparation for python wrapper This commit should not break any code which does not refer explicitly to caffe.pycaffe. --- Makefile | 4 ++-- python/caffe/__init__.py | 2 +- python/caffe/{pycaffe.cpp => _caffe.cpp} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename python/caffe/{pycaffe.cpp => _caffe.cpp} (99%) diff --git a/Makefile b/Makefile index 54437f1e914..ebd4b76dd08 100644 --- a/Makefile +++ b/Makefile @@ -45,8 +45,8 @@ NONGEN_CXX_SRCS := $(shell find \ LINT_REPORT := $(BUILD_DIR)/cpp_lint.log FAILED_LINT_REPORT := $(BUILD_DIR)/cpp_lint.error_log # PY$(PROJECT)_SRC is the python wrapper for $(PROJECT) -PY$(PROJECT)_SRC := python/$(PROJECT)/py$(PROJECT).cpp -PY$(PROJECT)_SO := python/$(PROJECT)/py$(PROJECT).so +PY$(PROJECT)_SRC := python/$(PROJECT)/_$(PROJECT).cpp +PY$(PROJECT)_SO := python/$(PROJECT)/_$(PROJECT).so # MAT$(PROJECT)_SRC is the matlab wrapper for $(PROJECT) MAT$(PROJECT)_SRC := matlab/$(PROJECT)/mat$(PROJECT).cpp MAT$(PROJECT)_SO := matlab/$(PROJECT)/$(PROJECT) diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index 9dd0ebf1abf..e8a8db7c310 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1 +1 @@ -from .pycaffe import * +from ._caffe import * diff --git a/python/caffe/pycaffe.cpp b/python/caffe/_caffe.cpp similarity index 99% rename from python/caffe/pycaffe.cpp rename to python/caffe/_caffe.cpp index ae0cdf06101..1d7b2af3d35 100644 --- a/python/caffe/pycaffe.cpp +++ b/python/caffe/_caffe.cpp @@ -255,7 +255,7 @@ struct CaffeNet { // The boost python module definition. -BOOST_PYTHON_MODULE(pycaffe) { +BOOST_PYTHON_MODULE(_caffe) { boost::python::class_( "CaffeNet", boost::python::init()) .def("Forward", &CaffeNet::Forward) From 6ceacd2bb1e017ca4e75a5c1f4fc6835cc6ec6e0 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 20:06:18 -0700 Subject: [PATCH 058/113] Add a pass-through Python wrapper of _caffe.CaffeNet This commit restores caffe.pycaffe as Python code that wraps caffe._caffe. It also renames caffe.CaffeNet as the less-redundant caffe.Net. --- python/caffe/__init__.py | 2 +- python/caffe/pycaffe.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 python/caffe/pycaffe.py diff --git a/python/caffe/__init__.py b/python/caffe/__init__.py index e8a8db7c310..b906d3e6ae9 100644 --- a/python/caffe/__init__.py +++ b/python/caffe/__init__.py @@ -1 +1 @@ -from ._caffe import * +from .pycaffe import Net diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py new file mode 100644 index 00000000000..f7a266bc628 --- /dev/null +++ b/python/caffe/pycaffe.py @@ -0,0 +1,4 @@ +from ._caffe import CaffeNet + +class Net(CaffeNet): + pass From 8c46a42061e7bc12456ca7d45c63a6ea139aa0ad Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 20:33:31 -0700 Subject: [PATCH 059/113] Use an OrderedDict for caffe.Net.blobs --- python/caffe/pycaffe.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index f7a266bc628..5d36489e3d9 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -1,4 +1,25 @@ +""" +Wrap the internal caffe C++ module (_caffe.so) with a clean, Pythonic +interface. +""" + from ._caffe import CaffeNet +from collections import OrderedDict class Net(CaffeNet): - pass + """ + The direct Python interface to caffe, exposing Forward and Backward + passes, data, gradients, and layer parameters + """ + def __init__(self, param_file, pretrained_param_file): + super(Net, self).__init__(param_file, pretrained_param_file) + self._blobs = OrderedDict([(bl.name, bl) + for bl in super(Net, self).blobs]) + + @property + def blobs(self): + """ + An OrderedDict (bottom to top, i.e., input to output) of network + blobs indexed by name + """ + return self._blobs From ac1bc6fcdf92bbdd214b9b40740c0a266a14e423 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 20:38:39 -0700 Subject: [PATCH 060/113] Update detector.py to use the new Net/blobs interface --- python/caffe/detection/detector.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/python/caffe/detection/detector.py b/python/caffe/detection/detector.py index 1dcb797c95c..021a8de4188 100644 --- a/python/caffe/detection/detector.py +++ b/python/caffe/detection/detector.py @@ -332,7 +332,7 @@ def config(model_def, pretrained_model, gpu, image_dim, image_mean_file): # Initialize network by loading model definition and weights. t = time.time() print("Loading Caffe model.") - NET = caffe.CaffeNet(model_def, pretrained_model) + NET = caffe.Net(model_def, pretrained_model) NET.set_phase_test() if gpu: NET.set_mode_gpu() @@ -340,7 +340,7 @@ def config(model_def, pretrained_model, gpu, image_dim, image_mean_file): # Configure for input/output data IMAGE_DIM = image_dim - CROPPED_DIM = NET.blobs()[0].width + CROPPED_DIM = NET.blobs.values()[0].width IMAGE_CENTER = int((IMAGE_DIM - CROPPED_DIM) / 2) # Load the data set mean file @@ -349,8 +349,8 @@ def config(model_def, pretrained_model, gpu, image_dim, image_mean_file): CROPPED_IMAGE_MEAN = IMAGE_MEAN[IMAGE_CENTER:IMAGE_CENTER + CROPPED_DIM, IMAGE_CENTER:IMAGE_CENTER + CROPPED_DIM, :] - BATCH_SIZE = NET.blobs()[0].num # network batch size - NUM_OUTPUT = NET.blobs()[-1].channels # number of output classes + BATCH_SIZE = NET.blobs.values()[0].num # network batch size + NUM_OUTPUT = NET.blobs.values()[-1].channels # number of output classes if __name__ == "__main__": From 2f12de35c9e587999570bc241ca00dc38efb021a Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 20:39:31 -0700 Subject: [PATCH 061/113] Update imagenet/wrapper.py to use the new Net interface --- python/caffe/imagenet/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/caffe/imagenet/wrapper.py b/python/caffe/imagenet/wrapper.py index c29f1ab5b8a..4a5b6ed8df4 100644 --- a/python/caffe/imagenet/wrapper.py +++ b/python/caffe/imagenet/wrapper.py @@ -76,7 +76,7 @@ def __init__(self, model_def_file, pretrained_model, center_only=False, num = 1 else: num = 10 - self.caffenet = caffe.CaffeNet(model_def_file, pretrained_model) + self.caffenet = caffe.Net(model_def_file, pretrained_model) self._output_blobs = [np.empty((num, num_output, 1, 1), dtype=np.float32)] self._center_only = center_only From 8bc83b07dbb5548aa73c55a21596ce35f2a9b141 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Thu, 27 Feb 2014 16:08:16 -0800 Subject: [PATCH 062/113] Compile a binary to run all tests at once. --- Makefile | 14 +++++++++---- src/caffe/test/test_caffe_main.cpp | 32 ++++++++++++++++++++++++++++++ src/caffe/test/test_caffe_main.hpp | 28 +------------------------- 3 files changed, 43 insertions(+), 31 deletions(-) create mode 100644 src/caffe/test/test_caffe_main.cpp diff --git a/Makefile b/Makefile index 54437f1e914..6043d2ddc6e 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,9 @@ HXX_SRCS := $(shell find include/$(PROJECT) ! -name "*.hpp") # CU_SRCS are the cuda source files CU_SRCS := $(shell find src/$(PROJECT) -name "*.cu") # TEST_SRCS are the test source files +TEST_MAIN_SRC := src/$(PROJECT)/test/test_caffe_main.cpp TEST_SRCS := $(shell find src/$(PROJECT) -name "test_*.cpp") +TEST_SRCS := $(filter-out $(TEST_MAIN_SRC), $(TEST_SRCS)) GTEST_SRC := src/gtest/gtest-all.cpp # TEST_HDRS are the test header files TEST_HDRS := $(shell find src/$(PROJECT) -name "test_*.hpp") @@ -74,6 +76,7 @@ GTEST_OBJ := $(addprefix $(BUILD_DIR)/, ${GTEST_SRC:.cpp=.o}) TOOL_BINS := ${TOOL_OBJS:.o=.bin} EXAMPLE_BINS := ${EXAMPLE_OBJS:.o=.bin} TEST_BINS := ${TEST_OBJS:.o=.testbin} +TEST_ALL_BIN := $(BUILD_DIR)/src/$(PROJECT)/test/test_all.testbin ############################## # Derive include and lib directories @@ -133,7 +136,7 @@ $(LINT_REPORT): $(NONGEN_CXX_SRCS) echo "Found 1 or more lint errors; see log at $(FAILED_LINT_REPORT)"; \ exit 1) -test: init $(TEST_BINS) +test: init $(TEST_BINS) $(TEST_ALL_BIN) tools: init $(TOOL_BINS) @@ -163,11 +166,14 @@ $(STATIC_NAME): init $(PROTO_OBJS) $(OBJS) ar rcs $(STATIC_NAME) $(PROTO_OBJS) $(OBJS) @echo -runtest: test - for testbin in $(TEST_BINS); do $$testbin $(TEST_GPUID); done +runtest: $(TEST_ALL_BIN) + $(TEST_ALL_BIN) $(TEST_BINS): %.testbin : %.o $(GTEST_OBJ) $(STATIC_NAME) $(TEST_HDRS) - $(CXX) $< $(GTEST_OBJ) $(STATIC_NAME) -o $@ $(CXXFLAGS) $(LDFLAGS) $(WARNINGS) + $(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) $(STATIC_NAME) -o $@ $(CXXFLAGS) $(LDFLAGS) $(WARNINGS) + +$(TEST_ALL_BIN): $(TEST_OBJS) + $(CXX) $(TEST_MAIN_SRC) $(TEST_OBJS) $(GTEST_OBJ) $(STATIC_NAME) -o $(TEST_ALL_BIN) $(CXXFLAGS) $(LDFLAGS) $(WARNINGS) $(TOOL_BINS): %.bin : %.o $(STATIC_NAME) $(CXX) $< $(STATIC_NAME) -o $@ $(CXXFLAGS) $(LDFLAGS) $(WARNINGS) diff --git a/src/caffe/test/test_caffe_main.cpp b/src/caffe/test/test_caffe_main.cpp new file mode 100644 index 00000000000..4674bb4e625 --- /dev/null +++ b/src/caffe/test/test_caffe_main.cpp @@ -0,0 +1,32 @@ +// Copyright 2013 Yangqing Jia + +// The main caffe test code. Your test cpp code should include this hpp +// to allow a main function to be compiled into the binary. + +#include "test_caffe_main.hpp" + +namespace caffe { + cudaDeviceProp CAFFE_TEST_CUDA_PROP; +} + +using caffe::CAFFE_TEST_CUDA_PROP; + +int main(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + ::google::InitGoogleLogging(argv[0]); + // Before starting testing, let's first print out a few cuda defice info. + int device; + cudaGetDeviceCount(&device); + cout << "Cuda number of devices: " << device << endl; + if (argc > 1) { + // Use the given device + device = atoi(argv[1]); + cudaSetDevice(device); + cout << "Setting to use device " << device << endl; + } + cudaGetDevice(&device); + cout << "Current device id: " << device << endl; + cudaGetDeviceProperties(&CAFFE_TEST_CUDA_PROP, device); + // invoke the test. + return RUN_ALL_TESTS(); +} diff --git a/src/caffe/test/test_caffe_main.hpp b/src/caffe/test/test_caffe_main.hpp index 01cb0c815eb..68374ae6a9a 100644 --- a/src/caffe/test/test_caffe_main.hpp +++ b/src/caffe/test/test_caffe_main.hpp @@ -15,32 +15,6 @@ using std::cout; using std::endl; -namespace caffe { - -cudaDeviceProp CAFFE_TEST_CUDA_PROP; - -} // namespace caffe - -using caffe::CAFFE_TEST_CUDA_PROP; - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - ::google::InitGoogleLogging(argv[0]); - // Before starting testing, let's first print out a few cuda defice info. - int device; - cudaGetDeviceCount(&device); - cout << "Cuda number of devices: " << device << endl; - if (argc > 1) { - // Use the given device - device = atoi(argv[1]); - cudaSetDevice(device); - cout << "Setting to use device " << device << endl; - } - cudaGetDevice(&device); - cout << "Current device id: " << device << endl; - cudaGetDeviceProperties(&CAFFE_TEST_CUDA_PROP, device); - // invoke the test. - return RUN_ALL_TESTS(); -} +int main(int argc, char** argv); #endif // CAFFE_TEST_TEST_CAFFE_MAIN_HPP_ From 76e58d5082e7502281ab1b15657e96dbf0519914 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Thu, 13 Mar 2014 14:35:48 -0700 Subject: [PATCH 063/113] More documentation on running tests (including --gtest_filter info). --- docs/development.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/development.md b/docs/development.md index 459e1d652d6..8a166f7c0b3 100644 --- a/docs/development.md +++ b/docs/development.md @@ -36,6 +36,18 @@ We'd appreciate your contribution to the documentation effort! **Testing**: run `make runtest` to check the project tests. New code requires new tests. Pull requests that fail tests will not be accepted. +The `googletest` framework we use provides many additional options, which you can access by running the test binaries directly. One of the more useful options is `--gtest_filter`, which allows you to filter tests by name: + + # run all tests with CPU in the name + build/src/caffe/test/test_all.testbin --gtest_filter='*CPU*' + + # run all tests without GPU in the name (note the leading minus sign) + build/src/caffe/test/test_all.testbin --gtest_filter=-'*GPU*' + +To get a list of all options `googletest` provides, simply pass the `--help` flag: + + build/src/caffe/test/test_all.testbin --help + **Style** - Follow [Google C++ style](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml) and [Google python style](http://google-styleguide.googlecode.com/svn/trunk/pyguide.html) + [PEP 8](http://legacy.python.org/dev/peps/pep-0008/). From 0816a9480351b5def27c28c7de102a18fb71fdb9 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Thu, 13 Mar 2014 20:13:46 -0700 Subject: [PATCH 064/113] fix wrapper example paths --- matlab/caffe/matcaffe_demo.m | 6 +++--- python/caffe/detection/detector.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/matlab/caffe/matcaffe_demo.m b/matlab/caffe/matcaffe_demo.m index 3eb4f107cef..459fef9cff2 100644 --- a/matlab/caffe/matcaffe_demo.m +++ b/matlab/caffe/matcaffe_demo.m @@ -1,6 +1,6 @@ function scores = matcaffe_demo(im, use_gpu) % scores = matcaffe_demo(im, use_gpu) -% +% % Demo of the matlab wrapper using the ILSVRC network. % % input @@ -20,9 +20,9 @@ % scores = matcaffe_demo(im, 1); % [score, class] = max(scores); -model_def_file = '../../examples/imagenet_deploy.prototxt'; +model_def_file = '../../models/imagenet.prototxt'; % NOTE: you'll have to get the pre-trained ILSVRC network -model_file = '../../examples/alexnet_train_iter_470000'; +model_file = '../../models/caffe_reference_imagenet_model'; % init caffe network (spews logging info) caffe('init', model_def_file, model_file); diff --git a/python/caffe/detection/detector.py b/python/caffe/detection/detector.py index 1dcb797c95c..b73283664d7 100644 --- a/python/caffe/detection/detector.py +++ b/python/caffe/detection/detector.py @@ -371,12 +371,12 @@ def config(model_def, pretrained_model, gpu, image_dim, image_mean_file): # Optional arguments. parser.add_argument( "--model_def", - default="examples/imagenet_deploy.prototxt", + default="../../../models/imagenet.prototxt", help="Model definition file." ) parser.add_argument( "--pretrained_model", - default="examples/caffe_reference_imagenet_model", + default="../../../models/caffe_reference_imagenet_model", help="Trained model weights file." ) parser.add_argument( From 4370b3e83e5e923cc68af61ffc820e449917ea64 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Mar 2014 17:03:14 -0700 Subject: [PATCH 065/113] add hdf5 dependency to install guide --- docs/installation.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/installation.md b/docs/installation.md index 73832716817..e115f4853ab 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -31,7 +31,7 @@ The following sections detail prerequisites and installation on Ubuntu. For OS X * Boost * MKL (but see the [boost-eigen branch](https://github.com/BVLC/caffe/tree/boost-eigen) for a boost/Eigen3 port) * OpenCV -* glog, gflags, protobuf, leveldb, snappy +* glog, gflags, protobuf, leveldb, snappy, hdf5 * For the Python wrapper: python, numpy (>= 1.7 preferred), and boost_python * For the Matlab wrapper: Matlab with mex @@ -41,7 +41,7 @@ Caffe also needs Intel MKL as the backend of its matrix computation and vectoriz You will also need other packages, most of which can be installed via apt-get using: - sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev + sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev The only exception being the google logging library, which does not exist in the Ubuntu 12.04 repository. To install it, do: @@ -83,6 +83,7 @@ Install [homebrew](http://brew.sh/) to install most of the prerequisites. Starti brew install --build-from-source boost brew install snappy leveldb protobuf gflags glog brew tap homebrew/science + brew install homebrew/science/hdf5 brew install homebrew/science/opencv Building boost from source is needed to link against your local python. From 91cd44b899f7b7f5156af78891b8300d8e39d0d1 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 21:46:36 -0700 Subject: [PATCH 066/113] Expose layers and remove now-redundant params in Python interface For now, only layer names and blobs are accessible, but more functionality (layer Forward and Backward) could be added later. --- python/caffe/_caffe.cpp | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 1d7b2af3d35..c5e9e84153f 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -101,6 +101,26 @@ class CaffeBlobWrap : public CaffeBlob { }; +class CaffeLayer { + public: + CaffeLayer(const shared_ptr > &layer, const string &name) + : layer_(layer), name_(name) {} + + string name() const { return name_; } + vector blobs() { + return vector(layer_->blobs().begin(), layer_->blobs().end()); + } + + // this is here only to satisfy boost's vector_indexing_suite + bool operator == (const CaffeLayer &other) { + return this->layer_ == other.layer_; + } + + protected: + shared_ptr > layer_; + string name_; +}; + // A simple wrapper over CaffeNet that runs the forward process. struct CaffeNet { @@ -235,15 +255,10 @@ struct CaffeNet { return result; } - vector params() { - vector result; - int ix = 0; + vector layers() { + vector result; for (int i = 0; i < net_->layers().size(); ++i) { - for (int j = 0; j < net_->layers()[i]->blobs().size(); ++j) { - result.push_back( - CaffeBlob(net_->params()[ix], net_->layer_names()[i])); - ix++; - } + result.push_back(CaffeLayer(net_->layers()[i], net_->layer_names()[i])); } return result; } @@ -267,7 +282,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("set_phase_test", &CaffeNet::set_phase_test) .def("set_device", &CaffeNet::set_device) .add_property("blobs", &CaffeNet::blobs) - .add_property("params", &CaffeNet::params) + .add_property("layers", &CaffeNet::layers) ; boost::python::class_( @@ -281,8 +296,16 @@ BOOST_PYTHON_MODULE(_caffe) { .add_property("data", &CaffeBlobWrap::get_data) .add_property("diff", &CaffeBlobWrap::get_diff); + boost::python::class_( + "CaffeLayer", boost::python::no_init) + .add_property("name", &CaffeLayer::name) + .add_property("blobs", &CaffeLayer::blobs); + boost::python::class_ >("BlobVec") .def(vector_indexing_suite, true>()); + boost::python::class_ >("LayerVec") + .def(vector_indexing_suite, true>()); + import_array(); } From 8db1400f0221d86976eaff2b70f6dbe892ce894f Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 21:51:25 -0700 Subject: [PATCH 067/113] Expose caffe.Net.params as an OrderedDict --- python/caffe/pycaffe.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/python/caffe/pycaffe.py b/python/caffe/pycaffe.py index 5d36489e3d9..8fbbcf9aac9 100644 --- a/python/caffe/pycaffe.py +++ b/python/caffe/pycaffe.py @@ -15,6 +15,9 @@ def __init__(self, param_file, pretrained_param_file): super(Net, self).__init__(param_file, pretrained_param_file) self._blobs = OrderedDict([(bl.name, bl) for bl in super(Net, self).blobs]) + self.params = OrderedDict([(lr.name, lr.blobs) + for lr in super(Net, self).layers + if len(lr.blobs) > 0]) @property def blobs(self): From 922c4adfd1b3d09852901e813c5a207cd1bb2a64 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 22:02:08 -0700 Subject: [PATCH 068/113] Add names to the blobs returned by CaffeLayer Even though these are redundant, this keeps the meaning of CaffeBlob.name consistent for now, and will allow CaffeBlob construction to be simplified. --- python/caffe/_caffe.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index c5e9e84153f..c2a2618a04a 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -108,7 +108,11 @@ class CaffeLayer { string name() const { return name_; } vector blobs() { - return vector(layer_->blobs().begin(), layer_->blobs().end()); + vector result; + for (int i = 0; i < layer_->blobs().size(); ++i) { + result.push_back(CaffeBlob(layer_->blobs()[i], name_)); + } + return result; } // this is here only to satisfy boost's vector_indexing_suite From ec424a57e872642ab1509525aeb73a835d6db95a Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 22:04:46 -0700 Subject: [PATCH 069/113] Remove spurious constructors from CaffeBlob and CaffeBlobWrap This prevents accidental construction of partially-specified blobs, which could break the Python layer. --- python/caffe/_caffe.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index c2a2618a04a..70edc8f2c91 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -38,12 +38,6 @@ class CaffeBlob { CaffeBlob(const shared_ptr > &blob, const string& name) : blob_(blob), name_(name) {} - explicit CaffeBlob(const shared_ptr > &blob) - : blob_(blob) {} - - CaffeBlob() - {} - string name() const { return name_; } int num() const { return blob_->num(); } int channels() const { return blob_->channels(); } @@ -66,9 +60,6 @@ class CaffeBlob { // is not freed while still being used in Python class CaffeBlobWrap : public CaffeBlob { public: - CaffeBlobWrap(PyObject *p, const shared_ptr > &blob) - : CaffeBlob(blob), self_(p) {} - CaffeBlobWrap(PyObject *p, const CaffeBlob &blob) : CaffeBlob(blob), self_(p) {} From 97186375f58ac346460dff08f5bd8e315e32ad65 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 10 Mar 2014 22:06:03 -0700 Subject: [PATCH 070/113] Add extra comment on vector_indexing_suite to _caffe.cpp --- python/caffe/_caffe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 70edc8f2c91..5cd316d22d4 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -45,6 +45,7 @@ class CaffeBlob { int width() const { return blob_->width(); } int count() const { return blob_->count(); } + // this is here only to satisfy boost's vector_indexing_suite bool operator == (const CaffeBlob &other) { return this->blob_ == other.blob_; } From b9452c4831d53b3823cb236fff58f59c5bbbb3d7 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Sat, 15 Mar 2014 02:40:16 -0700 Subject: [PATCH 071/113] Fix indentation in C++ Python module --- python/caffe/_caffe.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 5cd316d22d4..f6dd9c517e8 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -233,7 +233,7 @@ struct CaffeNet { } void ForwardPrefilled() { - net_->ForwardPrefilled(); + net_->ForwardPrefilled(); } // The caffe::Caffe utility functions. @@ -244,19 +244,19 @@ struct CaffeNet { void set_device(int device_id) { Caffe::SetDevice(device_id); } vector blobs() { - vector result; - for (int i = 0; i < net_->blobs().size(); ++i) { - result.push_back(CaffeBlob(net_->blobs()[i], net_->blob_names()[i])); - } - return result; + vector result; + for (int i = 0; i < net_->blobs().size(); ++i) { + result.push_back(CaffeBlob(net_->blobs()[i], net_->blob_names()[i])); + } + return result; } vector layers() { - vector result; - for (int i = 0; i < net_->layers().size(); ++i) { - result.push_back(CaffeLayer(net_->layers()[i], net_->layer_names()[i])); - } - return result; + vector result; + for (int i = 0; i < net_->layers().size(); ++i) { + result.push_back(CaffeLayer(net_->layers()[i], net_->layer_names()[i])); + } + return result; } // The pointer to the internal caffe::Net instant. From 585000bbcb3bd189a704d325928554d3811ca84e Mon Sep 17 00:00:00 2001 From: Tobias Domhan Date: Sun, 16 Mar 2014 12:50:30 +0100 Subject: [PATCH 072/113] support for more than 2 dimensions in hdf5 files --- include/caffe/util/io.hpp | 9 ++- include/caffe/vision_layers.hpp | 10 ++-- src/caffe/layers/hdf5_data_layer.cpp | 56 +++++++++++++----- src/caffe/layers/hdf5_data_layer.cu | 21 ++++--- .../test/test_data/generate_sample_data.py | 4 +- src/caffe/test/test_data/sample_data.h5 | Bin 2504 -> 10184 bytes src/caffe/test/test_hdf5data_layer.cpp | 38 ++++++++---- src/caffe/util/io.cpp | 45 ++++++++++---- 8 files changed, 127 insertions(+), 56 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 27d856527bb..269fbd9df0b 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -52,9 +52,14 @@ inline bool ReadImageToDatum(const string& filename, const int label, } template -void load_2d_dataset( +void hd5_load_nd_dataset( hid_t file_id, const char* dataset_name_, - boost::scoped_ptr* array, hsize_t* dims); + int min_dim,//inclusive + int max_dim,//inclusive + //output: + boost::scoped_ptr* array, + std::vector& dims + ); } // namespace caffe diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 3b09459bbf1..5d3da2f0bf2 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -398,11 +398,11 @@ class HDF5DataLayer : public Layer { virtual Dtype Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom); - boost::scoped_ptr data; - boost::scoped_ptr label; - hsize_t data_dims[2]; - hsize_t label_dims[2]; - hsize_t current_row; + boost::scoped_ptr data_; + boost::scoped_ptr label_; + std::vector data_dims_; + std::vector label_dims_; + hsize_t current_row_; }; diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index c31213e052a..d1ca0df80c4 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -32,15 +32,36 @@ void HDF5DataLayer::SetUp(const vector*>& bottom, const char* hdf_filename = this->layer_param_.source().c_str(); LOG(INFO) << "Loading HDF5 file" << hdf_filename; hid_t file_id = H5Fopen(hdf_filename, H5F_ACC_RDONLY, H5P_DEFAULT); - load_2d_dataset(file_id, "data", &data, data_dims); - load_2d_dataset(file_id, "label", &label, label_dims); + if (file_id < 0) { + LOG(ERROR) << "Failed opening HDF5 file" << hdf_filename; + return; + } + const int MAX_DATA_DIM = 4; + const int MAX_LABEL_DIM = 2; + const int MIN_DIM = 2; + hd5_load_nd_dataset(file_id, "data", MIN_DIM, MAX_DATA_DIM, + &data_, data_dims_); + hd5_load_nd_dataset(file_id, "label", MIN_DIM, MAX_LABEL_DIM, + &label_, label_dims_); + + while(data_dims_.size() < MAX_DATA_DIM) { + data_dims_.push_back(1); + } + + //add missing dimensions: + label_dims_.push_back(1); + label_dims_.push_back(1); + herr_t status = H5Fclose(file_id); - assert(data_dims[0] == label_dims[0]); - current_row = 0; + CHECK_EQ(data_dims_[0], label_dims_[0]); + LOG(INFO) << "Successully loaded " << data_dims_[0] << " rows"; + current_row_ = 0; // Reshape blobs. - (*top)[0]->Reshape(this->layer_param_.batchsize(), data_dims[1], 1, 1); - (*top)[1]->Reshape(this->layer_param_.batchsize(), label_dims[1], 1, 1); + (*top)[0]->Reshape(this->layer_param_.batchsize(), + data_dims_[1], data_dims_[2], data_dims_[3]); + (*top)[1]->Reshape(this->layer_param_.batchsize(), + label_dims_[1], label_dims_[2], label_dims_[3]); LOG(INFO) << "output data size: " << (*top)[0]->num() << "," << (*top)[0]->channels() << "," << (*top)[0]->height() << "," << (*top)[0]->width(); @@ -50,18 +71,23 @@ template void HDF5DataLayer::Forward_cpu(const vector*>& bottom, vector*>* top) { const int batchsize = this->layer_param_.batchsize(); - for (int i = 0; i < batchsize; ++i, ++current_row) { - if (current_row == data_dims[0]) { - current_row = 0; + const int data_count = (*top)[0]->count() / (*top)[0]->num(); + const int label_data_count = (*top)[1]->count() / (*top)[1]->num(); + + //TODO: consolidate into a single memcpy call + + for (int i = 0; i < batchsize; ++i, ++current_row_) { + if (current_row_ == data_dims_[0]) { + current_row_ = 0; } - memcpy(&(*top)[0]->mutable_cpu_data()[i * data_dims[1]], - &(data.get()[current_row * data_dims[1]]), - sizeof(Dtype) * data_dims[1]); + memcpy(&(*top)[0]->mutable_cpu_data()[i * data_count], + &(data_.get()[current_row_ * data_count]), + sizeof(Dtype) * data_count); - memcpy(&(*top)[1]->mutable_cpu_data()[i * label_dims[1]], - &(label.get()[current_row * label_dims[1]]), - sizeof(Dtype) * label_dims[1]); + memcpy(&(*top)[1]->mutable_cpu_data()[i * label_data_count], + &(label_.get()[current_row_ * label_data_count]), + sizeof(Dtype) * label_data_count); } } diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 1ecf149b990..773ebc39d56 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -23,21 +23,24 @@ template void HDF5DataLayer::Forward_gpu(const vector*>& bottom, vector*>* top) { const int batchsize = this->layer_param_.batchsize(); - for (int i = 0; i < batchsize; ++i, ++current_row) { - if (current_row == data_dims[0]) { - current_row = 0; + const int data_count = (*top)[0]->count() / (*top)[0]->num(); + const int label_data_count = (*top)[1]->count() / (*top)[1]->num(); + + for (int i = 0; i < batchsize; ++i, ++current_row_) { + if (current_row_ == data_dims_[0]) { + current_row_ = 0; } CUDA_CHECK(cudaMemcpy( - &(*top)[0]->mutable_gpu_data()[i * data_dims[1]], - &(data.get()[current_row * data_dims[1]]), - sizeof(Dtype) * data_dims[1], + &(*top)[0]->mutable_gpu_data()[i * data_count], + &(data_.get()[current_row_ * data_count]), + sizeof(Dtype) * data_count, cudaMemcpyHostToDevice)); CUDA_CHECK(cudaMemcpy( - &(*top)[1]->mutable_gpu_data()[i * label_dims[1]], - &(label.get()[current_row * label_dims[1]]), - sizeof(Dtype) * label_dims[1], + &(*top)[1]->mutable_gpu_data()[i * label_data_count], + &(label_.get()[current_row_ * label_data_count]), + sizeof(Dtype) * label_data_count, cudaMemcpyHostToDevice)); } } diff --git a/src/caffe/test/test_data/generate_sample_data.py b/src/caffe/test/test_data/generate_sample_data.py index 1f16fad9160..ab55305b556 100644 --- a/src/caffe/test/test_data/generate_sample_data.py +++ b/src/caffe/test/test_data/generate_sample_data.py @@ -7,7 +7,9 @@ num_cols = 8 num_rows = 10 -data = np.arange(num_cols * num_rows).reshape(num_rows, num_cols) +height = 5 +width = 5 +data = np.arange(num_cols * num_rows * height * width).reshape(num_rows, num_cols, height, width) label = np.arange(num_rows)[:, np.newaxis] print data print label diff --git a/src/caffe/test/test_data/sample_data.h5 b/src/caffe/test/test_data/sample_data.h5 index fe581afaa72bf3acb536682456e3104d0400f0fa..db245bac479edbbb55ce64d1e1482191cb8e6c25 100644 GIT binary patch literal 10184 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 W85EQFqn$=485EP1w}1Zs=l=yQHE)>! delta 100 zcmX@%e?oYICL`xYEe__%U94h)91IY^1*JJAZ)A1kN`MMGFi!r%D#4!b&lSwTkTG#% k?q&m)!;FlalfSSkz(hAIvbi!%JixX&jl+gfilename)); int num_rows = 10; int num_cols = 8; + int height = 5; + int width = 5; HDF5DataLayer layer(param); // Test that the layer setup got the correct parameters. layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); EXPECT_EQ(this->blob_top_data_->num(), batchsize); EXPECT_EQ(this->blob_top_data_->channels(), num_cols); - EXPECT_EQ(this->blob_top_data_->height(), 1); - EXPECT_EQ(this->blob_top_data_->width(), 1); + EXPECT_EQ(this->blob_top_data_->height(), height); + EXPECT_EQ(this->blob_top_data_->width(), width); EXPECT_EQ(this->blob_top_label_->num(), batchsize); EXPECT_EQ(this->blob_top_label_->channels(), 1); EXPECT_EQ(this->blob_top_label_->height(), 1); EXPECT_EQ(this->blob_top_label_->width(), 1); + const int data_size = num_cols * height * width; + // Go through the data 100 times. for (int iter = 0; iter < 100; ++iter) { layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); @@ -85,7 +89,7 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { // On even iterations, we're reading the first half of the data. // On odd iterations, we're reading the second half of the data. int label_offset = (iter % 2 == 0) ? 0 : batchsize; - int data_offset = (iter % 2 == 0) ? 0 : batchsize * num_cols; + int data_offset = (iter % 2 == 0) ? 0 : batchsize * data_size; for (int i = 0; i < batchsize; ++i) { EXPECT_EQ( @@ -94,10 +98,15 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { } for (int i = 0; i < batchsize; ++i) { for (int j = 0; j < num_cols; ++j) { - EXPECT_EQ( - data_offset + i * num_cols + j, - this->blob_top_data_->cpu_data()[i * num_cols + j]) - << "debug: i " << i << " j " << j; + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + int idx = i * num_cols * height * width + j * height * width + h * width + w; + EXPECT_EQ( + data_offset + idx, + this->blob_top_data_->cpu_data()[idx]) + << "debug: i " << i << " j " << j; + } + } } } } @@ -111,7 +120,7 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { // On even iterations, we're reading the first half of the data. // On odd iterations, we're reading the second half of the data. int label_offset = (iter % 2 == 0) ? 0 : batchsize; - int data_offset = (iter % 2 == 0) ? 0 : batchsize * num_cols; + int data_offset = (iter % 2 == 0) ? 0 : batchsize * data_size; for (int i = 0; i < batchsize; ++i) { EXPECT_EQ( @@ -120,10 +129,15 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { } for (int i = 0; i < batchsize; ++i) { for (int j = 0; j < num_cols; ++j) { - EXPECT_EQ( - data_offset + i * num_cols + j, - this->blob_top_data_->cpu_data()[i * num_cols + j]) - << "debug: i " << i << " j " << j; + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + int idx = i * num_cols * height * width + j * height * width + h * width + w; + EXPECT_EQ( + data_offset + idx, + this->blob_top_data_->cpu_data()[idx]) + << "debug: i " << i << " j " << j; + } + } } } } diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index d6151d5c1a1..c301c55bba1 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -12,6 +12,7 @@ #include #include +#include #include // NOLINT(readability/streams) #include "caffe/common.hpp" @@ -100,39 +101,59 @@ bool ReadImageToDatum(const string& filename, const int label, } template <> -void load_2d_dataset(hid_t file_id, const char* dataset_name_, - boost::scoped_ptr* array, hsize_t* dims) { +void hd5_load_nd_dataset(hid_t file_id, const char* dataset_name_, + int min_dim, int max_dim, + boost::scoped_ptr* array, std::vector& out_dims) { herr_t status; int ndims; status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); - assert(ndims == 2); + CHECK_GE(ndims, min_dim); + CHECK_LE(ndims, max_dim); + + boost::scoped_ptr dims(new hsize_t[ndims]); H5T_class_t class_; status = H5LTget_dataset_info( - file_id, dataset_name_, dims, &class_, NULL); - assert(class_ == H5T_NATIVE_FLOAT); + file_id, dataset_name_, dims.get(), &class_, NULL); + CHECK_EQ(class_, H5T_FLOAT) << "Epected float data"; + + int array_size = 1; + for (int i=0; ireset(new float[dims[0] * dims[1]]); + array->reset(new float[array_size]); status = H5LTread_dataset_float( file_id, dataset_name_, array->get()); } template <> -void load_2d_dataset(hid_t file_id, const char* dataset_name_, - boost::scoped_ptr* array, hsize_t* dims) { +void hd5_load_nd_dataset(hid_t file_id, const char* dataset_name_, + int min_dim, int max_dim, + boost::scoped_ptr* array, std::vector& out_dims) { herr_t status; int ndims; status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); - assert(ndims == 2); + CHECK_GE(ndims, min_dim); + CHECK_LE(ndims, max_dim); + + boost::scoped_ptr dims(new hsize_t[ndims]); H5T_class_t class_; status = H5LTget_dataset_info( - file_id, dataset_name_, dims, &class_, NULL); - assert(class_ == H5T_NATIVE_DOUBLE); + file_id, dataset_name_, dims.get(), &class_, NULL); + CHECK_EQ(class_, H5T_FLOAT) << "Epected float data"; + + int array_size = 1; + for (int i=0; ireset(new double[dims[0] * dims[1]]); + array->reset(new double[array_size]); status = H5LTread_dataset_double( file_id, dataset_name_, array->get()); } From 6ec66f33fc45bbddc2cc04be5248384a25bf9f60 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Sun, 16 Mar 2014 19:23:00 -0700 Subject: [PATCH 073/113] DRYing and documenting HDF5 loading code. --- include/caffe/util/io.hpp | 2 +- include/caffe/vision_layers.hpp | 2 + src/caffe/layers/hdf5_data_layer.cpp | 49 ++++++++------- src/caffe/util/io.cpp | 90 +++++++++++++--------------- 4 files changed, 74 insertions(+), 69 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 269fbd9df0b..f04dd1d4e31 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -52,7 +52,7 @@ inline bool ReadImageToDatum(const string& filename, const int label, } template -void hd5_load_nd_dataset( +void hdf5_load_nd_dataset( hid_t file_id, const char* dataset_name_, int min_dim,//inclusive int max_dim,//inclusive diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 5d3da2f0bf2..d2daa9899e4 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -389,6 +389,8 @@ class HDF5DataLayer : public Layer { vector*>* top); protected: + virtual void load_hdf5_file(const char* filename); + virtual void Forward_cpu(const vector*>& bottom, vector*>* top); virtual void Forward_gpu(const vector*>& bottom, diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index d1ca0df80c4..5ac594b1c3f 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -1,9 +1,11 @@ -// Copyright Sergey Karayev 2014 /* +Contributors: +- Sergey Karayev, 2014. +- Tobias Domhan, 2014. + TODO: - only load parts of the file, in accordance with a prototxt param "max_mem" */ - #include #include #include @@ -23,38 +25,45 @@ template HDF5DataLayer::~HDF5DataLayer() { } template -void HDF5DataLayer::SetUp(const vector*>& bottom, - vector*>* top) { - CHECK_EQ(bottom.size(), 0) << "HDF5DataLayer takes no input blobs."; - CHECK_EQ(top->size(), 2) << "HDF5DataLayer takes two blobs as output."; - - // Load the HDF5 file and initialize the counter. - const char* hdf_filename = this->layer_param_.source().c_str(); - LOG(INFO) << "Loading HDF5 file" << hdf_filename; - hid_t file_id = H5Fopen(hdf_filename, H5F_ACC_RDONLY, H5P_DEFAULT); +void HDF5DataLayer::load_hdf5_file(const char* filename) { + LOG(INFO) << "Loading HDF5 file" << filename; + hid_t file_id = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT); if (file_id < 0) { - LOG(ERROR) << "Failed opening HDF5 file" << hdf_filename; + LOG(ERROR) << "Failed opening HDF5 file" << filename; return; } + const int MIN_DATA_DIM = 2; const int MAX_DATA_DIM = 4; + const int MIN_LABEL_DIM = 1; const int MAX_LABEL_DIM = 2; - const int MIN_DIM = 2; - hd5_load_nd_dataset(file_id, "data", MIN_DIM, MAX_DATA_DIM, + hdf5_load_nd_dataset(file_id, "data", MIN_DATA_DIM, MAX_DATA_DIM, &data_, data_dims_); - hd5_load_nd_dataset(file_id, "label", MIN_DIM, MAX_LABEL_DIM, + hdf5_load_nd_dataset(file_id, "label", MIN_LABEL_DIM, MAX_LABEL_DIM, &label_, label_dims_); - while(data_dims_.size() < MAX_DATA_DIM) { + // Add missing dimensions. + const int MAX_BLOB_DIM = 4; + while(data_dims_.size() < MAX_BLOB_DIM) { data_dims_.push_back(1); } - - //add missing dimensions: - label_dims_.push_back(1); - label_dims_.push_back(1); + while(label_dims_.size() < MAX_BLOB_DIM) { + label_dims_.push_back(1); + } herr_t status = H5Fclose(file_id); CHECK_EQ(data_dims_[0], label_dims_[0]); LOG(INFO) << "Successully loaded " << data_dims_[0] << " rows"; +} + +template +void HDF5DataLayer::SetUp(const vector*>& bottom, + vector*>* top) { + CHECK_EQ(bottom.size(), 0) << "HDF5DataLayer takes no input blobs."; + CHECK_EQ(top->size(), 2) << "HDF5DataLayer takes two blobs as output."; + + // Load the HDF5 file and initialize the counter. + const char* hdf_filename = this->layer_param_.source().c_str(); + load_hdf5_file(hdf_filename); current_row_ = 0; // Reshape blobs. diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index c301c55bba1..0f987c9e964 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -100,62 +100,56 @@ bool ReadImageToDatum(const string& filename, const int label, return true; } +// Verifies format of data stored in the HDF5 file. +// Returns the total size of the data in the file. +int hdf5_verify_and_get_size_of_nd_dataset( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + std::vector& out_dims) { + // Verify that the number of dimensions is in the accepted range. + herr_t status; + int ndims; + status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); + CHECK_GE(ndims, min_dim); + CHECK_LE(ndims, max_dim); + + // Verify that the data format is what we expect: float or double. + boost::scoped_ptr dims(new hsize_t[ndims]); + H5T_class_t class_; + status = H5LTget_dataset_info( + file_id, dataset_name_, dims.get(), &class_, NULL); + CHECK_EQ(class_, H5T_FLOAT) << "Expected float or double data"; + + // Establish and return the total data size. + int array_size = 1; + for (int i=0; i -void hd5_load_nd_dataset(hid_t file_id, const char* dataset_name_, +void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, boost::scoped_ptr* array, std::vector& out_dims) { - herr_t status; - - int ndims; - status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); - CHECK_GE(ndims, min_dim); - CHECK_LE(ndims, max_dim); - - boost::scoped_ptr dims(new hsize_t[ndims]); - - H5T_class_t class_; - status = H5LTget_dataset_info( - file_id, dataset_name_, dims.get(), &class_, NULL); - CHECK_EQ(class_, H5T_FLOAT) << "Epected float data"; - - int array_size = 1; - for (int i=0; ireset(new float[array_size]); - status = H5LTread_dataset_float( - file_id, dataset_name_, array->get()); + int array_size = hdf5_verify_and_get_size_of_nd_dataset( + file_id, dataset_name_, min_dim, max_dim, out_dims); + array->reset(new float[array_size]); + herr_t status = H5LTread_dataset_float( + file_id, dataset_name_, array->get()); } +// Read double data from HDF5 file into array, storing dimensions in out_dims. template <> -void hd5_load_nd_dataset(hid_t file_id, const char* dataset_name_, +void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, boost::scoped_ptr* array, std::vector& out_dims) { - herr_t status; - - int ndims; - status = H5LTget_dataset_ndims(file_id, dataset_name_, &ndims); - CHECK_GE(ndims, min_dim); - CHECK_LE(ndims, max_dim); - - boost::scoped_ptr dims(new hsize_t[ndims]); - - H5T_class_t class_; - status = H5LTget_dataset_info( - file_id, dataset_name_, dims.get(), &class_, NULL); - CHECK_EQ(class_, H5T_FLOAT) << "Epected float data"; - - int array_size = 1; - for (int i=0; ireset(new double[array_size]); - status = H5LTread_dataset_double( - file_id, dataset_name_, array->get()); + int array_size = hdf5_verify_and_get_size_of_nd_dataset( + file_id, dataset_name_, min_dim, max_dim, out_dims); + array->reset(new double[array_size]); + herr_t status = H5LTread_dataset_double( + file_id, dataset_name_, array->get()); } } // namespace caffe From 1fce1c424de0ef9dde54432e7053c9648e0bfa83 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Sun, 16 Mar 2014 19:55:59 -0700 Subject: [PATCH 074/113] HDF5DataLayer source is now a list of filenames --- include/caffe/vision_layers.hpp | 6 +- src/caffe/layers/hdf5_data_layer.cpp | 38 +++++-- src/caffe/layers/hdf5_data_layer.cu | 10 ++ .../test/test_data/generate_sample_data.py | 30 +++++- src/caffe/test/test_data/sample_data.h5 | Bin 10184 -> 10184 bytes .../test/test_data/sample_data_2_gzip.h5 | Bin 0 -> 9992 bytes src/caffe/test/test_data/sample_data_list.txt | 2 + src/caffe/test/test_hdf5data_layer.cpp | 95 +++++++----------- 8 files changed, 110 insertions(+), 71 deletions(-) create mode 100644 src/caffe/test/test_data/sample_data_2_gzip.h5 create mode 100644 src/caffe/test/test_data/sample_data_list.txt diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index d2daa9899e4..4b1422086ad 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -400,11 +400,15 @@ class HDF5DataLayer : public Layer { virtual Dtype Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom); + std::vector hdf_filenames_; + unsigned int num_files_; + unsigned int current_file_; + hsize_t current_row_; + boost::scoped_ptr data_; boost::scoped_ptr label_; std::vector data_dims_; std::vector label_dims_; - hsize_t current_row_; }; diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 5ac594b1c3f..7f993a6c43b 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -4,11 +4,14 @@ - Tobias Domhan, 2014. TODO: -- only load parts of the file, in accordance with a prototxt param "max_mem" +- load file in a separate thread ("prefetch") +- can be smarter about the memcpy call instead of doing it row-by-row */ #include #include #include +#include +#include #include "hdf5.h" #include "hdf5_hl.h" @@ -61,9 +64,23 @@ void HDF5DataLayer::SetUp(const vector*>& bottom, CHECK_EQ(bottom.size(), 0) << "HDF5DataLayer takes no input blobs."; CHECK_EQ(top->size(), 2) << "HDF5DataLayer takes two blobs as output."; - // Load the HDF5 file and initialize the counter. - const char* hdf_filename = this->layer_param_.source().c_str(); - load_hdf5_file(hdf_filename); + // Read the source to parse the filenames. + LOG(INFO) << "Loading filename from " << this->layer_param_.source(); + hdf_filenames_.clear(); + std::ifstream myfile(this->layer_param_.source().c_str()); + if (myfile.is_open()) { + string line = ""; + while (myfile >> line) { + hdf_filenames_.push_back(line); + } + } + myfile.close(); + num_files_ = hdf_filenames_.size(); + current_file_ = 0; + LOG(INFO) << "Number of files: " << num_files_; + + // Load the first HDF5 file and initialize the line counter. + load_hdf5_file(hdf_filenames_[current_file_].c_str()); current_row_ = 0; // Reshape blobs. @@ -83,10 +100,18 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, const int data_count = (*top)[0]->count() / (*top)[0]->num(); const int label_data_count = (*top)[1]->count() / (*top)[1]->num(); - //TODO: consolidate into a single memcpy call - for (int i = 0; i < batchsize; ++i, ++current_row_) { if (current_row_ == data_dims_[0]) { + if (num_files_ > 1) { + current_file_ += 1; + + if (current_file_ == num_files_) { + current_file_ = 0; + LOG(INFO) << "looping around to first file"; + } + + load_hdf5_file(hdf_filenames_[current_file_].c_str()); + } current_row_ = 0; } @@ -100,7 +125,6 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, } } - // The backward operations are dummy - they do not carry any computation. template Dtype HDF5DataLayer::Backward_cpu(const vector*>& top, diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 773ebc39d56..7a31a603027 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -28,6 +28,16 @@ void HDF5DataLayer::Forward_gpu(const vector*>& bottom, for (int i = 0; i < batchsize; ++i, ++current_row_) { if (current_row_ == data_dims_[0]) { + if (num_files_ > 1) { + current_file_ += 1; + + if (current_file_ == num_files_) { + current_file_ = 0; + LOG(INFO) << "looping around to first file"; + } + + load_hdf5_file(hdf_filenames_[current_file_].c_str()); + } current_row_ = 0; } diff --git a/src/caffe/test/test_data/generate_sample_data.py b/src/caffe/test/test_data/generate_sample_data.py index ab55305b556..0d8f5aa98e3 100644 --- a/src/caffe/test/test_data/generate_sample_data.py +++ b/src/caffe/test/test_data/generate_sample_data.py @@ -1,7 +1,7 @@ """ Generate data used in the HDF5DataLayer test. """ - +import os import numpy as np import h5py @@ -9,11 +9,31 @@ num_rows = 10 height = 5 width = 5 -data = np.arange(num_cols * num_rows * height * width).reshape(num_rows, num_cols, height, width) +total_size = num_cols * num_rows * height * width + +data = np.arange(total_size) +data = data.reshape(num_rows, num_cols, height, width) +data = data.astype('float32') label = np.arange(num_rows)[:, np.newaxis] +label = label.astype('float32') + print data print label -with h5py.File('./sample_data.h5', 'w') as f: - f['data'] = data.astype('float32') - f['label'] = label.astype('float32') +with h5py.File(os.path.dirname(__file__) + '/sample_data.h5', 'w') as f: + f['data'] = data + f['label'] = label + +with h5py.File(os.path.dirname(__file__) + '/sample_data_2_gzip.h5', 'w') as f: + f.create_dataset( + 'data', data=data + total_size, + compression='gzip', compression_opts=1 + ) + f.create_dataset( + 'label', data=label, + compression='gzip', compression_opts=1 + ) + +with open(os.path.dirname(__file__) + '/sample_data_list.txt', 'w') as f: + f.write(os.path.dirname(__file__) + '/sample_data.h5\n') + f.write(os.path.dirname(__file__) + '/sample_data_2_gzip.h5\n') diff --git a/src/caffe/test/test_data/sample_data.h5 b/src/caffe/test/test_data/sample_data.h5 index db245bac479edbbb55ce64d1e1482191cb8e6c25..a1f923a71ae51bf568810679b01e98ab67adaccf 100644 GIT binary patch delta 37 scmX@%f5Lym9cJct32K|~Gn+E80~x^#3>ljh*<6_>9$?#?#*ris03B)#Q2+n{ delta 37 scmX@%f5Lym9cJc&Ue(R_nN6A4fs9}VhK$XMY_3cb53p@c<4BSR01aXctpET3 diff --git a/src/caffe/test/test_data/sample_data_2_gzip.h5 b/src/caffe/test/test_data/sample_data_2_gzip.h5 new file mode 100644 index 0000000000000000000000000000000000000000..56c0a740ec2a5163d2200826c3748bb930d26b78 GIT binary patch literal 9992 zcmeI1X-HI26vywI(P`3hE3!ozx3nTMDvHX~YDOoOCQ`~EV#dZSm=wu{ms{pW(tM;IoSjU0`>!jY*Uec-?=gwpsJxyU**cT&-)yp)Xy0N=PO*rsye^}t z@h1*}43J{5KmyS_qX;gNK`I=vbXaUx)b_`fVr9@s-u@b~_UPeHeAUF)=Ij&VDn_PU zp_HcKE^>M;&=YN)Tp;F@l@^mVMH(d9)oh$n;W|l*OXyVSH0c!S+iCW3nk1dx8bcDk zRH``QI|r>(TG4WS%I%{8-x=J8seTBA{prN+0Xp$3t^iknE5H@t3UCFu0$c&E09Sx3 zz!mu86-ZcM&daI0<@Ik`N;)ZW^(_NMsKU1{@Z zU);Xf(vdyptjoT7pCm<`abWhF)Xwa!FN!`kZTI@rJue{lm^Gv@t|x5Pf!Nf_i|M^J zd6GdR8>*Qhk{LSfox)yi#lqEARo>0#>o=z7G!L0?cFT`WowU^AQ4rI!YBt0VAWlN~ zA;f7A8}37_MHuBaBaCtq}l{1y9}?TRLU`glQRfg0_?+{0ib~h})3&DTI;t6^N%J?^1-3cNN67$omAs&^s6| zhIMUlA$maE(E{;Agj*pVjqoFgBM?Tp1&B2$cL2gDw>QEtcjKnOtoY*QmxDrf-?ewC zBP&948;6eHbI(}$*l%J^=Tn4>Ax5b^UxUTqD1(X{pyH165I4c+i1PLJUb=blob_top_label_->height(), 1); EXPECT_EQ(this->blob_top_label_->width(), 1); - const int data_size = num_cols * height * width; - - // Go through the data 100 times. - for (int iter = 0; iter < 100; ++iter) { - layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); - - // On even iterations, we're reading the first half of the data. - // On odd iterations, we're reading the second half of the data. - int label_offset = (iter % 2 == 0) ? 0 : batchsize; - int data_offset = (iter % 2 == 0) ? 0 : batchsize * data_size; - - for (int i = 0; i < batchsize; ++i) { - EXPECT_EQ( - label_offset + i, - this->blob_top_label_->cpu_data()[i]); - } - for (int i = 0; i < batchsize; ++i) { - for (int j = 0; j < num_cols; ++j) { - for (int h = 0; h < height; ++h) { - for (int w = 0; w < width; ++w) { - int idx = i * num_cols * height * width + j * height * width + h * width + w; - EXPECT_EQ( - data_offset + idx, - this->blob_top_data_->cpu_data()[idx]) - << "debug: i " << i << " j " << j; - } - } - } + for (int t=0; t<2; ++t) { + if (t == 0) { + Caffe::set_mode(Caffe::CPU); + } else { + Caffe::set_mode(Caffe::GPU); } - } - // Exact same test in GPU mode. - Caffe::set_mode(Caffe::GPU); - // Go through the data 100 times. - for (int iter = 0; iter < 100; ++iter) { - layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); - - // On even iterations, we're reading the first half of the data. - // On odd iterations, we're reading the second half of the data. - int label_offset = (iter % 2 == 0) ? 0 : batchsize; - int data_offset = (iter % 2 == 0) ? 0 : batchsize * data_size; - - for (int i = 0; i < batchsize; ++i) { - EXPECT_EQ( - label_offset + i, - this->blob_top_label_->cpu_data()[i]); - } - for (int i = 0; i < batchsize; ++i) { - for (int j = 0; j < num_cols; ++j) { - for (int h = 0; h < height; ++h) { - for (int w = 0; w < width; ++w) { - int idx = i * num_cols * height * width + j * height * width + h * width + w; - EXPECT_EQ( - data_offset + idx, - this->blob_top_data_->cpu_data()[idx]) - << "debug: i " << i << " j " << j; + // Go through the data 100 times (50 batches). + const int data_size = num_cols * height * width; + for (int iter = 0; iter < 100; ++iter) { + layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); + + // On even iterations, we're reading the first half of the data. + // On odd iterations, we're reading the second half of the data. + int label_offset = (iter % 2 == 0) ? 0 : batchsize; + int data_offset = (iter % 2 == 0) ? 0 : batchsize * data_size; + + // Every two iterations we are reading the second file, + // which has the same labels, but data is offset by total data size, + // which is 2000 (see generate_sample_data). + int file_offset = (iter % 4 < 2) ? 0 : 2000; + + for (int i = 0; i < batchsize; ++i) { + EXPECT_EQ( + label_offset + i, + this->blob_top_label_->cpu_data()[i]); + } + for (int i = 0; i < batchsize; ++i) { + for (int j = 0; j < num_cols; ++j) { + for (int h = 0; h < height; ++h) { + for (int w = 0; w < width; ++w) { + int idx = i * num_cols * height * width + j * height * width + h * width + w; + EXPECT_EQ( + file_offset + data_offset + idx, + this->blob_top_data_->cpu_data()[idx]) + << "debug: i " << i << " j " << j << " iter " << iter; + } } } } From 5669f61927ed8131f223e1b4db823a00eb74896a Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Mon, 17 Mar 2014 12:19:44 -0700 Subject: [PATCH 075/113] HDF5 data now loaded into Blobs; cleaner interface --- include/caffe/util/io.hpp | 15 +++++---- include/caffe/vision_layers.hpp | 9 +++--- src/caffe/layers/hdf5_data_layer.cpp | 44 ++++++++++++-------------- src/caffe/layers/hdf5_data_layer.cu | 8 ++--- src/caffe/util/io.cpp | 46 +++++++++++----------------- 5 files changed, 52 insertions(+), 70 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index f04dd1d4e31..1dcdb7e7477 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -10,7 +10,6 @@ #include "hdf5_hl.h" #include "caffe/proto/caffe.pb.h" -#include "boost/scoped_ptr.hpp" #include "caffe/blob.hpp" using std::string; @@ -51,15 +50,15 @@ inline bool ReadImageToDatum(const string& filename, const int label, return ReadImageToDatum(filename, label, 0, 0, datum); } +template +void hdf5_load_nd_dataset_helper( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob& blob); + template void hdf5_load_nd_dataset( - hid_t file_id, const char* dataset_name_, - int min_dim,//inclusive - int max_dim,//inclusive - //output: - boost::scoped_ptr* array, - std::vector& dims - ); + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob& blob); } // namespace caffe diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 4b1422086ad..8ab1afbf7d3 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -389,7 +389,6 @@ class HDF5DataLayer : public Layer { vector*>* top); protected: - virtual void load_hdf5_file(const char* filename); virtual void Forward_cpu(const vector*>& bottom, vector*>* top); @@ -400,15 +399,15 @@ class HDF5DataLayer : public Layer { virtual Dtype Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom); + virtual void load_hdf5_file_data(const char* filename); + std::vector hdf_filenames_; unsigned int num_files_; unsigned int current_file_; hsize_t current_row_; - boost::scoped_ptr data_; - boost::scoped_ptr label_; - std::vector data_dims_; - std::vector label_dims_; + Blob data_blob_; + Blob label_blob_; }; diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 7f993a6c43b..5b568a8d86b 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -27,35 +27,29 @@ namespace caffe { template HDF5DataLayer::~HDF5DataLayer() { } +// Load data and label from HDF5 filename into the class property blobs. template -void HDF5DataLayer::load_hdf5_file(const char* filename) { +void HDF5DataLayer::load_hdf5_file_data(const char* filename) { LOG(INFO) << "Loading HDF5 file" << filename; hid_t file_id = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT); if (file_id < 0) { LOG(ERROR) << "Failed opening HDF5 file" << filename; return; } + const int MIN_DATA_DIM = 2; const int MAX_DATA_DIM = 4; + hdf5_load_nd_dataset( + file_id, "data", MIN_DATA_DIM, MAX_DATA_DIM, data_blob_); + const int MIN_LABEL_DIM = 1; const int MAX_LABEL_DIM = 2; - hdf5_load_nd_dataset(file_id, "data", MIN_DATA_DIM, MAX_DATA_DIM, - &data_, data_dims_); - hdf5_load_nd_dataset(file_id, "label", MIN_LABEL_DIM, MAX_LABEL_DIM, - &label_, label_dims_); - - // Add missing dimensions. - const int MAX_BLOB_DIM = 4; - while(data_dims_.size() < MAX_BLOB_DIM) { - data_dims_.push_back(1); - } - while(label_dims_.size() < MAX_BLOB_DIM) { - label_dims_.push_back(1); - } + hdf5_load_nd_dataset( + file_id, "label", MIN_LABEL_DIM, MAX_LABEL_DIM, label_blob_); herr_t status = H5Fclose(file_id); - CHECK_EQ(data_dims_[0], label_dims_[0]); - LOG(INFO) << "Successully loaded " << data_dims_[0] << " rows"; + CHECK_EQ(data_blob_.num(), label_blob_.num()); + LOG(INFO) << "Successully loaded " << data_blob_.num() << " rows"; } template @@ -80,14 +74,14 @@ void HDF5DataLayer::SetUp(const vector*>& bottom, LOG(INFO) << "Number of files: " << num_files_; // Load the first HDF5 file and initialize the line counter. - load_hdf5_file(hdf_filenames_[current_file_].c_str()); + load_hdf5_file_data(hdf_filenames_[current_file_].c_str()); current_row_ = 0; // Reshape blobs. - (*top)[0]->Reshape(this->layer_param_.batchsize(), - data_dims_[1], data_dims_[2], data_dims_[3]); - (*top)[1]->Reshape(this->layer_param_.batchsize(), - label_dims_[1], label_dims_[2], label_dims_[3]); + (*top)[0]->Reshape(this->layer_param_.batchsize(), data_blob_.channels(), + data_blob_.width(), data_blob_.height()); + (*top)[1]->Reshape(this->layer_param_.batchsize(), label_blob_.channels(), + label_blob_.width(), label_blob_.height()); LOG(INFO) << "output data size: " << (*top)[0]->num() << "," << (*top)[0]->channels() << "," << (*top)[0]->height() << "," << (*top)[0]->width(); @@ -101,7 +95,7 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, const int label_data_count = (*top)[1]->count() / (*top)[1]->num(); for (int i = 0; i < batchsize; ++i, ++current_row_) { - if (current_row_ == data_dims_[0]) { + if (current_row_ == data_blob_.num()) { if (num_files_ > 1) { current_file_ += 1; @@ -110,17 +104,17 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, LOG(INFO) << "looping around to first file"; } - load_hdf5_file(hdf_filenames_[current_file_].c_str()); + load_hdf5_file_data(hdf_filenames_[current_file_].c_str()); } current_row_ = 0; } memcpy(&(*top)[0]->mutable_cpu_data()[i * data_count], - &(data_.get()[current_row_ * data_count]), + &data_blob_.mutable_cpu_data()[current_row_ * data_count], sizeof(Dtype) * data_count); memcpy(&(*top)[1]->mutable_cpu_data()[i * label_data_count], - &(label_.get()[current_row_ * label_data_count]), + &label_blob_.mutable_cpu_data()[current_row_ * label_data_count], sizeof(Dtype) * label_data_count); } } diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index 7a31a603027..f1a64344807 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -27,7 +27,7 @@ void HDF5DataLayer::Forward_gpu(const vector*>& bottom, const int label_data_count = (*top)[1]->count() / (*top)[1]->num(); for (int i = 0; i < batchsize; ++i, ++current_row_) { - if (current_row_ == data_dims_[0]) { + if (current_row_ == data_blob_.num()) { if (num_files_ > 1) { current_file_ += 1; @@ -36,20 +36,20 @@ void HDF5DataLayer::Forward_gpu(const vector*>& bottom, LOG(INFO) << "looping around to first file"; } - load_hdf5_file(hdf_filenames_[current_file_].c_str()); + load_hdf5_file_data(hdf_filenames_[current_file_].c_str()); } current_row_ = 0; } CUDA_CHECK(cudaMemcpy( &(*top)[0]->mutable_gpu_data()[i * data_count], - &(data_.get()[current_row_ * data_count]), + &data_blob_.mutable_cpu_data()[current_row_ * data_count], sizeof(Dtype) * data_count, cudaMemcpyHostToDevice)); CUDA_CHECK(cudaMemcpy( &(*top)[1]->mutable_gpu_data()[i * label_data_count], - &(label_.get()[current_row_ * label_data_count]), + &label_blob_.mutable_cpu_data()[current_row_ * label_data_count], sizeof(Dtype) * label_data_count, cudaMemcpyHostToDevice)); } diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 0f987c9e964..72ceb8d2ba0 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -100,11 +100,10 @@ bool ReadImageToDatum(const string& filename, const int label, return true; } -// Verifies format of data stored in the HDF5 file. -// Returns the total size of the data in the file. -int hdf5_verify_and_get_size_of_nd_dataset( - hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - std::vector& out_dims) { +// Verifies format of data stored in HDF5 file and reshapes blob accordingly. +template +void hdf5_load_nd_dataset_helper( + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, Blob& blob) { // Verify that the number of dimensions is in the accepted range. herr_t status; int ndims; @@ -113,43 +112,34 @@ int hdf5_verify_and_get_size_of_nd_dataset( CHECK_LE(ndims, max_dim); // Verify that the data format is what we expect: float or double. - boost::scoped_ptr dims(new hsize_t[ndims]); + std::vector dims(ndims); H5T_class_t class_; status = H5LTget_dataset_info( - file_id, dataset_name_, dims.get(), &class_, NULL); + file_id, dataset_name_, dims.data(), &class_, NULL); CHECK_EQ(class_, H5T_FLOAT) << "Expected float or double data"; - // Establish and return the total data size. - int array_size = 1; - for (int i=0; i 1) ? dims[1] : 1, + (dims.size() > 2) ? dims[2] : 1, + (dims.size() > 3) ? dims[3] : 1 + ); } -// Read float data from HDF5 file into array, storing dimensions in out_dims. template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, - boost::scoped_ptr* array, std::vector& out_dims) { - int array_size = hdf5_verify_and_get_size_of_nd_dataset( - file_id, dataset_name_, min_dim, max_dim, out_dims); - array->reset(new float[array_size]); + int min_dim, int max_dim, Blob& blob) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); herr_t status = H5LTread_dataset_float( - file_id, dataset_name_, array->get()); + file_id, dataset_name_, blob.mutable_cpu_data()); } -// Read double data from HDF5 file into array, storing dimensions in out_dims. template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, - boost::scoped_ptr* array, std::vector& out_dims) { - int array_size = hdf5_verify_and_get_size_of_nd_dataset( - file_id, dataset_name_, min_dim, max_dim, out_dims); - array->reset(new double[array_size]); + int min_dim, int max_dim, Blob& blob) { + hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); herr_t status = H5LTread_dataset_double( - file_id, dataset_name_, array->get()); + file_id, dataset_name_, blob.mutable_cpu_data()); } } // namespace caffe From f6780f982a912ddc118697197da5c7425960c293 Mon Sep 17 00:00:00 2001 From: Eric Tzeng Date: Mon, 17 Mar 2014 13:04:10 -0700 Subject: [PATCH 076/113] Fix a test assuming CPU mode without explicitly setting it. --- src/caffe/test/test_common.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/caffe/test/test_common.cpp b/src/caffe/test/test_common.cpp index 8b521cc7ea3..275c6e1bf73 100644 --- a/src/caffe/test/test_common.cpp +++ b/src/caffe/test/test_common.cpp @@ -24,6 +24,7 @@ TEST_F(CommonTest, TestVslStream) { } TEST_F(CommonTest, TestBrewMode) { + Caffe::set_mode(Caffe::CPU); EXPECT_EQ(Caffe::mode(), Caffe::CPU); Caffe::set_mode(Caffe::GPU); EXPECT_EQ(Caffe::mode(), Caffe::GPU); From 0eb19300630a6922d37856445658e3f813e3cfe6 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 13:48:06 -0700 Subject: [PATCH 077/113] relax timing checks for commodity GPUs --- src/caffe/test/test_benchmark.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/caffe/test/test_benchmark.cpp b/src/caffe/test/test_benchmark.cpp index e8e3a116e3e..8614f4823b1 100644 --- a/src/caffe/test/test_benchmark.cpp +++ b/src/caffe/test/test_benchmark.cpp @@ -111,8 +111,8 @@ TEST_F(BenchmarkTest, TestTimerMilliSecondsCPU) { EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); usleep(300 * 1000); - CHECK_GE(timer.MilliSeconds(), 299); - CHECK_LE(timer.MilliSeconds(), 301); + CHECK_GE(timer.MilliSeconds(), 298); + CHECK_LE(timer.MilliSeconds(), 302); EXPECT_TRUE(timer.initted()); EXPECT_FALSE(timer.running()); EXPECT_TRUE(timer.has_run_at_least_once()); @@ -127,8 +127,8 @@ TEST_F(BenchmarkTest, TestTimerMilliSecondsGPU) { EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); usleep(300 * 1000); - CHECK_GE(timer.MilliSeconds(), 299); - CHECK_LE(timer.MilliSeconds(), 301); + CHECK_GE(timer.MilliSeconds(), 298); + CHECK_LE(timer.MilliSeconds(), 302); EXPECT_TRUE(timer.initted()); EXPECT_FALSE(timer.running()); EXPECT_TRUE(timer.has_run_at_least_once()); @@ -143,8 +143,8 @@ TEST_F(BenchmarkTest, TestTimerSecondsCPU) { EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); usleep(300 * 1000); - CHECK_GE(timer.Seconds(), 0.299); - CHECK_LE(timer.Seconds(), 0.301); + CHECK_GE(timer.Seconds(), 0.298); + CHECK_LE(timer.Seconds(), 0.302); EXPECT_TRUE(timer.initted()); EXPECT_FALSE(timer.running()); EXPECT_TRUE(timer.has_run_at_least_once()); @@ -159,8 +159,8 @@ TEST_F(BenchmarkTest, TestTimerSecondsGPU) { EXPECT_FALSE(timer.has_run_at_least_once()); timer.Start(); usleep(300 * 1000); - CHECK_GE(timer.Seconds(), 0.299); - CHECK_LE(timer.Seconds(), 0.301); + CHECK_GE(timer.Seconds(), 0.298); + CHECK_LE(timer.Seconds(), 0.302); EXPECT_TRUE(timer.initted()); EXPECT_FALSE(timer.running()); EXPECT_TRUE(timer.has_run_at_least_once()); From 3c19256bf1f9007f9bbb0ca0413f7dbbf6c64d65 Mon Sep 17 00:00:00 2001 From: Jeff Donahue Date: Mon, 17 Mar 2014 14:03:19 -0700 Subject: [PATCH 078/113] make runtest with TEST_ALL_BIN obey TEST_GPUID --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6043d2ddc6e..e2d43d87db4 100644 --- a/Makefile +++ b/Makefile @@ -167,7 +167,7 @@ $(STATIC_NAME): init $(PROTO_OBJS) $(OBJS) @echo runtest: $(TEST_ALL_BIN) - $(TEST_ALL_BIN) + $(TEST_ALL_BIN) $(TEST_GPUID) $(TEST_BINS): %.testbin : %.o $(GTEST_OBJ) $(STATIC_NAME) $(TEST_HDRS) $(CXX) $(TEST_MAIN_SRC) $< $(GTEST_OBJ) $(STATIC_NAME) -o $@ $(CXXFLAGS) $(LDFLAGS) $(WARNINGS) From f7160844e238885f3c1263e71f35e66309ce9974 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Mon, 17 Mar 2014 14:05:32 -0700 Subject: [PATCH 079/113] Making HDF5 blob data non-mutable for copy (minor) --- src/caffe/layers/hdf5_data_layer.cpp | 8 +++++--- src/caffe/layers/hdf5_data_layer.cu | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 5b568a8d86b..98873cb1c9a 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -6,6 +6,8 @@ TODO: - load file in a separate thread ("prefetch") - can be smarter about the memcpy call instead of doing it row-by-row + :: use util functions caffe_copy, and Blob->offset() + :: don't forget to update hdf5_daa_layer.cu accordingly */ #include #include @@ -110,11 +112,11 @@ void HDF5DataLayer::Forward_cpu(const vector*>& bottom, } memcpy(&(*top)[0]->mutable_cpu_data()[i * data_count], - &data_blob_.mutable_cpu_data()[current_row_ * data_count], - sizeof(Dtype) * data_count); + &data_blob_.cpu_data()[current_row_ * data_count], + sizeof(Dtype) * data_count); memcpy(&(*top)[1]->mutable_cpu_data()[i * label_data_count], - &label_blob_.mutable_cpu_data()[current_row_ * label_data_count], + &label_blob_.cpu_data()[current_row_ * label_data_count], sizeof(Dtype) * label_data_count); } } diff --git a/src/caffe/layers/hdf5_data_layer.cu b/src/caffe/layers/hdf5_data_layer.cu index f1a64344807..bed7f35a156 100644 --- a/src/caffe/layers/hdf5_data_layer.cu +++ b/src/caffe/layers/hdf5_data_layer.cu @@ -43,13 +43,13 @@ void HDF5DataLayer::Forward_gpu(const vector*>& bottom, CUDA_CHECK(cudaMemcpy( &(*top)[0]->mutable_gpu_data()[i * data_count], - &data_blob_.mutable_cpu_data()[current_row_ * data_count], + &data_blob_.cpu_data()[current_row_ * data_count], sizeof(Dtype) * data_count, cudaMemcpyHostToDevice)); CUDA_CHECK(cudaMemcpy( &(*top)[1]->mutable_gpu_data()[i * label_data_count], - &label_blob_.mutable_cpu_data()[current_row_ * label_data_count], + &label_blob_.cpu_data()[current_row_ * label_data_count], sizeof(Dtype) * label_data_count, cudaMemcpyHostToDevice)); } From e6055c167ca354e88690c491ec877d76477982ff Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Mon, 17 Mar 2014 16:07:39 -0700 Subject: [PATCH 080/113] Lint errors fixed, except still using stream. --- include/caffe/util/io.hpp | 4 ++-- include/caffe/vision_layers.hpp | 3 +-- src/caffe/layers/hdf5_data_layer.cpp | 11 +++++------ src/caffe/test/test_hdf5data_layer.cpp | 18 ++++++++++++------ src/caffe/util/io.cpp | 16 ++++++++-------- 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/include/caffe/util/io.hpp b/include/caffe/util/io.hpp index 1dcdb7e7477..7bf78977d6d 100644 --- a/include/caffe/util/io.hpp +++ b/include/caffe/util/io.hpp @@ -53,12 +53,12 @@ inline bool ReadImageToDatum(const string& filename, const int label, template void hdf5_load_nd_dataset_helper( hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - Blob& blob); + Blob* blob); template void hdf5_load_nd_dataset( hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, - Blob& blob); + Blob* blob); } // namespace caffe diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index 8ab1afbf7d3..ad57d8b2830 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -4,6 +4,7 @@ #define CAFFE_VISION_LAYERS_HPP_ #include +#include #include "leveldb/db.h" #include "pthread.h" @@ -389,7 +390,6 @@ class HDF5DataLayer : public Layer { vector*>* top); protected: - virtual void Forward_cpu(const vector*>& bottom, vector*>* top); virtual void Forward_gpu(const vector*>& bottom, @@ -398,7 +398,6 @@ class HDF5DataLayer : public Layer { const bool propagate_down, vector*>* bottom); virtual Dtype Backward_gpu(const vector*>& top, const bool propagate_down, vector*>* bottom); - virtual void load_hdf5_file_data(const char* filename); std::vector hdf_filenames_; diff --git a/src/caffe/layers/hdf5_data_layer.cpp b/src/caffe/layers/hdf5_data_layer.cpp index 98873cb1c9a..60e25d015ab 100644 --- a/src/caffe/layers/hdf5_data_layer.cpp +++ b/src/caffe/layers/hdf5_data_layer.cpp @@ -1,3 +1,4 @@ +// Copyright 2014 BVLC. /* Contributors: - Sergey Karayev, 2014. @@ -8,11 +9,11 @@ - can be smarter about the memcpy call instead of doing it row-by-row :: use util functions caffe_copy, and Blob->offset() :: don't forget to update hdf5_daa_layer.cu accordingly +- add ability to shuffle filenames if flag is set */ #include #include #include -#include #include #include "hdf5.h" @@ -22,8 +23,6 @@ #include "caffe/util/io.hpp" #include "caffe/vision_layers.hpp" -using std::string; - namespace caffe { template @@ -42,12 +41,12 @@ void HDF5DataLayer::load_hdf5_file_data(const char* filename) { const int MIN_DATA_DIM = 2; const int MAX_DATA_DIM = 4; hdf5_load_nd_dataset( - file_id, "data", MIN_DATA_DIM, MAX_DATA_DIM, data_blob_); + file_id, "data", MIN_DATA_DIM, MAX_DATA_DIM, &data_blob_); const int MIN_LABEL_DIM = 1; const int MAX_LABEL_DIM = 2; hdf5_load_nd_dataset( - file_id, "label", MIN_LABEL_DIM, MAX_LABEL_DIM, label_blob_); + file_id, "label", MIN_LABEL_DIM, MAX_LABEL_DIM, &label_blob_); herr_t status = H5Fclose(file_id); CHECK_EQ(data_blob_.num(), label_blob_.num()); @@ -65,7 +64,7 @@ void HDF5DataLayer::SetUp(const vector*>& bottom, hdf_filenames_.clear(); std::ifstream myfile(this->layer_param_.source().c_str()); if (myfile.is_open()) { - string line = ""; + std::string line; while (myfile >> line) { hdf_filenames_.push_back(line); } diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 59aee0c51b4..0b0b97eec5b 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -64,9 +64,9 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { int num_cols = 8; int height = 5; int width = 5; - HDF5DataLayer layer(param); // Test that the layer setup got the correct parameters. + HDF5DataLayer layer(param); layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); EXPECT_EQ(this->blob_top_data_->num(), batchsize); EXPECT_EQ(this->blob_top_data_->channels(), num_cols); @@ -78,16 +78,18 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { EXPECT_EQ(this->blob_top_label_->height(), 1); EXPECT_EQ(this->blob_top_label_->width(), 1); - for (int t=0; t<2; ++t) { + for (int t = 0; t < 2; ++t) { + // TODO: make this a TypedTest instead of this silly loop. if (t == 0) { Caffe::set_mode(Caffe::CPU); } else { Caffe::set_mode(Caffe::GPU); } + layer.SetUp(this->blob_bottom_vec_, &this->blob_top_vec_); - // Go through the data 100 times (50 batches). + // Go through the data 10 times (5 batches). const int data_size = num_cols * height * width; - for (int iter = 0; iter < 100; ++iter) { + for (int iter = 0; iter < 5; ++iter) { layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); // On even iterations, we're reading the first half of the data. @@ -109,11 +111,15 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { for (int j = 0; j < num_cols; ++j) { for (int h = 0; h < height; ++h) { for (int w = 0; w < width; ++w) { - int idx = i * num_cols * height * width + j * height * width + h * width + w; + int idx = ( + i * num_cols * height * width + + j * height * width + + h * width + w); EXPECT_EQ( file_offset + data_offset + idx, this->blob_top_data_->cpu_data()[idx]) - << "debug: i " << i << " j " << j << " iter " << iter; + << "debug: i " << i << " j " << j + << " iter " << iter << " t " << t; } } } diff --git a/src/caffe/util/io.cpp b/src/caffe/util/io.cpp index 72ceb8d2ba0..3ac69f9744e 100644 --- a/src/caffe/util/io.cpp +++ b/src/caffe/util/io.cpp @@ -103,7 +103,8 @@ bool ReadImageToDatum(const string& filename, const int label, // Verifies format of data stored in HDF5 file and reshapes blob accordingly. template void hdf5_load_nd_dataset_helper( - hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, Blob& blob) { + hid_t file_id, const char* dataset_name_, int min_dim, int max_dim, + Blob* blob) { // Verify that the number of dimensions is in the accepted range. herr_t status; int ndims; @@ -118,28 +119,27 @@ void hdf5_load_nd_dataset_helper( file_id, dataset_name_, dims.data(), &class_, NULL); CHECK_EQ(class_, H5T_FLOAT) << "Expected float or double data"; - blob.Reshape( + blob->Reshape( dims[0], (dims.size() > 1) ? dims[1] : 1, (dims.size() > 2) ? dims[2] : 1, - (dims.size() > 3) ? dims[3] : 1 - ); + (dims.size() > 3) ? dims[3] : 1); } template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, Blob& blob) { + int min_dim, int max_dim, Blob* blob) { hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); herr_t status = H5LTread_dataset_float( - file_id, dataset_name_, blob.mutable_cpu_data()); + file_id, dataset_name_, blob->mutable_cpu_data()); } template <> void hdf5_load_nd_dataset(hid_t file_id, const char* dataset_name_, - int min_dim, int max_dim, Blob& blob) { + int min_dim, int max_dim, Blob* blob) { hdf5_load_nd_dataset_helper(file_id, dataset_name_, min_dim, max_dim, blob); herr_t status = H5LTread_dataset_double( - file_id, dataset_name_, blob.mutable_cpu_data()); + file_id, dataset_name_, blob->mutable_cpu_data()); } } // namespace caffe From 114773f60de84118e5095822c1f8e057264130e7 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Mon, 17 Mar 2014 16:10:38 -0700 Subject: [PATCH 081/113] minor --- src/caffe/test/test_hdf5data_layer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/caffe/test/test_hdf5data_layer.cpp b/src/caffe/test/test_hdf5data_layer.cpp index 0b0b97eec5b..51ef5440ff9 100644 --- a/src/caffe/test/test_hdf5data_layer.cpp +++ b/src/caffe/test/test_hdf5data_layer.cpp @@ -89,7 +89,7 @@ TYPED_TEST(HDF5DataLayerTest, TestRead) { // Go through the data 10 times (5 batches). const int data_size = num_cols * height * width; - for (int iter = 0; iter < 5; ++iter) { + for (int iter = 0; iter < 10; ++iter) { layer.Forward(this->blob_bottom_vec_, &this->blob_top_vec_); // On even iterations, we're reading the first half of the data. From 51d27d14e303c0900889a8ff910b0ea05f6a3b94 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 17 Mar 2014 16:46:47 -0700 Subject: [PATCH 082/113] Move semicolon to appease lint --- python/caffe/_caffe.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index f6dd9c517e8..c1ef5f1ff2a 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -278,8 +278,7 @@ BOOST_PYTHON_MODULE(_caffe) { .def("set_phase_test", &CaffeNet::set_phase_test) .def("set_device", &CaffeNet::set_device) .add_property("blobs", &CaffeNet::blobs) - .add_property("layers", &CaffeNet::layers) - ; + .add_property("layers", &CaffeNet::layers); boost::python::class_( "CaffeBlob", boost::python::no_init) From 7dd03b3d093b6aa3a6e2a09246ac0993fc823beb Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 21:09:53 -0700 Subject: [PATCH 083/113] bring back padding layer with deprecation notice - bring back padding layer - split into cpp, cu - add deprecation notice --- include/caffe/vision_layers.hpp | 28 ++++++++++ src/caffe/layer_factory.cpp | 2 + src/caffe/layers/padding_layer.cpp | 74 ++++++++++++++++++++++++++ src/caffe/layers/padding_layer.cu | 84 ++++++++++++++++++++++++++++++ 4 files changed, 188 insertions(+) create mode 100644 src/caffe/layers/padding_layer.cpp create mode 100644 src/caffe/layers/padding_layer.cu diff --git a/include/caffe/vision_layers.hpp b/include/caffe/vision_layers.hpp index ad57d8b2830..51f5eae6d1e 100644 --- a/include/caffe/vision_layers.hpp +++ b/include/caffe/vision_layers.hpp @@ -195,6 +195,34 @@ class InnerProductLayer : public Layer { shared_ptr bias_multiplier_; }; + +template +class PaddingLayer : public Layer { + public: + explicit PaddingLayer(const LayerParameter& param) + : Layer(param) {} + virtual void SetUp(const vector*>& bottom, + vector*>* top); + + protected: + virtual void Forward_cpu(const vector*>& bottom, + vector*>* top); + virtual void Forward_gpu(const vector*>& bottom, + vector*>* top); + virtual Dtype Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + virtual Dtype Backward_gpu(const vector*>& top, + const bool propagate_down, vector*>* bottom); + unsigned int PAD_; + int NUM_; + int CHANNEL_; + int HEIGHT_IN_; + int WIDTH_IN_; + int HEIGHT_OUT_; + int WIDTH_OUT_; +}; + + template class LRNLayer : public Layer { public: diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index 1f79a74636b..d8d10f3b72e 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -45,6 +45,8 @@ Layer* GetLayer(const LayerParameter& param) { return new InnerProductLayer(param); } else if (type == "lrn") { return new LRNLayer(param); + } else if (type == "padding") { + return new PaddingLayer(param); } else if (type == "pool") { return new PoolingLayer(param); } else if (type == "relu") { diff --git a/src/caffe/layers/padding_layer.cpp b/src/caffe/layers/padding_layer.cpp new file mode 100644 index 00000000000..4cb67df0dcf --- /dev/null +++ b/src/caffe/layers/padding_layer.cpp @@ -0,0 +1,74 @@ +// Copyright 2013 Yangqing Jia + +#include // NOLINT(readability/streams) +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +void PaddingLayer::SetUp(const vector*>& bottom, + vector*>* top) { + // DEPRECATION + LOG(WARNING) << "Padding layers are deprecated in favor of padding-aware " + "convolutions and WILL BE REMOVED. Please update your model " + "prototxt to replace padding layers with pad fields. " + "See https://github.com/BVLC/caffe/pull/128."; + PAD_ = this->layer_param_.pad(); + CHECK_EQ(bottom.size(), 1) << "Padding Layer takes a single blob as input."; + CHECK_EQ(top->size(), 1) << "Padding Layer takes a single blob as output."; + NUM_ = bottom[0]->num(); + CHANNEL_ = bottom[0]->channels(); + HEIGHT_IN_ = bottom[0]->height(); + WIDTH_IN_ = bottom[0]->width(); + HEIGHT_OUT_ = HEIGHT_IN_ + PAD_ * 2; + WIDTH_OUT_ = WIDTH_IN_ + PAD_ * 2; + (*top)[0]->Reshape(NUM_, CHANNEL_, HEIGHT_OUT_, WIDTH_OUT_); +} + +template +void PaddingLayer::Forward_cpu(const vector*>& bottom, + vector*>* top) { + Dtype* top_data = (*top)[0]->mutable_cpu_data(); + const Dtype* bottom_data = bottom[0]->cpu_data(); + memset(top_data, 0, sizeof(Dtype) * (*top)[0]->count()); + // In short, top[n, c, h, w] = bottom[n, c, h-pad, w-pad] if in range + for (int n = 0; n < NUM_; ++n) { + for (int c = 0; c < CHANNEL_; ++c) { + for (int h = 0; h < HEIGHT_IN_; ++h) { + // copy the width part + memcpy( + top_data + ((n * CHANNEL_ + c) * HEIGHT_OUT_ + h + PAD_) + * WIDTH_OUT_ + PAD_, + bottom_data + ((n * CHANNEL_ + c) * HEIGHT_IN_ + h) * WIDTH_IN_, + sizeof(Dtype) * WIDTH_IN_); + } + } + } +} + +template +Dtype PaddingLayer::Backward_cpu(const vector*>& top, + const bool propagate_down, vector*>* bottom) { + const Dtype* top_diff = top[0]->cpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_cpu_diff(); + for (int n = 0; n < NUM_; ++n) { + for (int c = 0; c < CHANNEL_; ++c) { + for (int h = 0; h < HEIGHT_IN_; ++h) { + // copy the width part + memcpy( + bottom_diff + ((n * CHANNEL_ + c) * HEIGHT_IN_ + h) * WIDTH_IN_, + top_diff + ((n * CHANNEL_ + c) * HEIGHT_OUT_ + h + PAD_) + * WIDTH_OUT_ + PAD_, + sizeof(Dtype) * WIDTH_IN_); + } + } + } + return Dtype(0.); +} + +INSTANTIATE_CLASS(PaddingLayer); + +} // namespace caffe diff --git a/src/caffe/layers/padding_layer.cu b/src/caffe/layers/padding_layer.cu new file mode 100644 index 00000000000..cd52b809984 --- /dev/null +++ b/src/caffe/layers/padding_layer.cu @@ -0,0 +1,84 @@ +// Copyright 2013 Yangqing Jia + +#include // NOLINT(readability/streams) +#include + +#include "caffe/layer.hpp" +#include "caffe/vision_layers.hpp" + +namespace caffe { + +template +__global__ void PaddingForward(const int count, const Dtype* in, Dtype* out, + const int num, const int channel, const int height_in, const int width_in, + const int pad) { + int index = threadIdx.x + blockIdx.x * blockDim.x; + if (index < count) { + int height_out = height_in + pad + pad; + int width_out = width_in + pad + pad; + int w = index % width_in; + index /= width_in; + int h = index % height_in; + index /= height_in; + int c = index % channel; + index /= channel; + out[((index * channel + c) * height_out + h + pad) * width_out + pad + w] = + in[((index * channel + c) * height_in + h) * width_in + w]; + } +} + +template +void PaddingLayer::Forward_gpu(const vector*>& bottom, + vector*>* top) { + const Dtype* bottom_data = bottom[0]->gpu_data(); + Dtype* top_data = (*top)[0]->mutable_gpu_data(); + const int count = bottom[0]->count(); + // First, set all data to be zero for the boundary pixels + CUDA_CHECK(cudaMemset(top_data, 0, sizeof(Dtype) * (*top)[0]->count())); + // NOLINT_NEXT_LINE(whitespace/operators) + PaddingForward<<>>( + count, bottom_data, top_data, NUM_, CHANNEL_, HEIGHT_IN_, WIDTH_IN_, + PAD_); + CUDA_POST_KERNEL_CHECK; +} + +template +__global__ void PaddingBackward(const int count, const Dtype* in, Dtype* out, + const int num, const int channel, const int height_in, const int width_in, + const int pad) { + int index = threadIdx.x + blockIdx.x * blockDim.x; + if (index < count) { + int height_out = height_in + pad + pad; + int width_out = width_in + pad + pad; + int w = index % width_in; + index /= width_in; + int h = index % height_in; + index /= height_in; + int c = index % channel; + index /= channel; + out[((index * channel + c) * height_in + h) * width_in + w] = + in[((index * channel + c) * height_out + h + pad) * + width_out + pad + w]; + } +} + +template +Dtype PaddingLayer::Backward_gpu(const vector*>& top, + const bool propagate_down, + vector*>* bottom) { + if (propagate_down) { + const Dtype* top_diff = top[0]->gpu_diff(); + Dtype* bottom_diff = (*bottom)[0]->mutable_gpu_diff(); + const int count = (*bottom)[0]->count(); + // NOLINT_NEXT_LINE(whitespace/operators) + PaddingBackward<<>>( + count, top_diff, bottom_diff, NUM_, CHANNEL_, HEIGHT_IN_, WIDTH_IN_, + PAD_); + CUDA_POST_KERNEL_CHECK; + } + return Dtype(0); +} + +INSTANTIATE_CLASS(PaddingLayer); + +} // namespace caffe From 73db43c48ab39ab07005a2ff14b46c8f5c649d95 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 21:16:19 -0700 Subject: [PATCH 084/113] bring back padding test and lint it --- src/caffe/test/test_padding_layer.cpp | 117 ++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/caffe/test/test_padding_layer.cpp diff --git a/src/caffe/test/test_padding_layer.cpp b/src/caffe/test/test_padding_layer.cpp new file mode 100644 index 00000000000..ad1f6bf5928 --- /dev/null +++ b/src/caffe/test/test_padding_layer.cpp @@ -0,0 +1,117 @@ +// Copyright 2013 Yangqing Jia + +#include +#include +#include + +#include "gtest/gtest.h" +#include "caffe/blob.hpp" +#include "caffe/common.hpp" +#include "caffe/filler.hpp" +#include "caffe/vision_layers.hpp" +#include "caffe/test/test_gradient_check_util.hpp" + +#include "caffe/test/test_caffe_main.hpp" + +namespace caffe { + +extern cudaDeviceProp CAFFE_TEST_CUDA_PROP; + +template +class PaddingLayerTest : public ::testing::Test { + protected: + PaddingLayerTest() + : blob_bottom_(new Blob(2, 3, 4, 5)), + blob_top_(new Blob()) { + // fill the values + FillerParameter filler_param; + GaussianFiller filler(filler_param); + filler.Fill(this->blob_bottom_); + blob_bottom_vec_.push_back(blob_bottom_); + blob_top_vec_.push_back(blob_top_); + } + virtual ~PaddingLayerTest() { delete blob_bottom_; delete blob_top_; } + Blob* const blob_bottom_; + Blob* const blob_top_; + vector*> blob_bottom_vec_; + vector*> blob_top_vec_; +}; + +typedef ::testing::Types Dtypes; +TYPED_TEST_CASE(PaddingLayerTest, Dtypes); + +TYPED_TEST(PaddingLayerTest, TestCPU) { + LayerParameter layer_param; + layer_param.set_pad(1); + Caffe::set_mode(Caffe::CPU); + PaddingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); + layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 6); + EXPECT_EQ(this->blob_top_->width(), 7); + for (int n = 0; n < 2; ++n) { + for (int c = 0; c < 3; ++c) { + for (int h = 0; h < 4; ++h) { + for (int w = 0; w < 5; ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), + this->blob_top_->data_at(n, c, h + 1, w + 1)); + } + } + } + } +} + +TYPED_TEST(PaddingLayerTest, TestCPUGrad) { + LayerParameter layer_param; + layer_param.set_pad(1); + Caffe::set_mode(Caffe::CPU); + PaddingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); +} + +TYPED_TEST(PaddingLayerTest, TestGPU) { + if (CAFFE_TEST_CUDA_PROP.major >= 2) { + LayerParameter layer_param; + layer_param.set_pad(1); + Caffe::set_mode(Caffe::GPU); + PaddingLayer layer(layer_param); + layer.SetUp(this->blob_bottom_vec_, &(this->blob_top_vec_)); + layer.Forward(this->blob_bottom_vec_, &(this->blob_top_vec_)); + EXPECT_EQ(this->blob_top_->num(), 2); + EXPECT_EQ(this->blob_top_->channels(), 3); + EXPECT_EQ(this->blob_top_->height(), 6); + EXPECT_EQ(this->blob_top_->width(), 7); + for (int n = 0; n < 2; ++n) { + for (int c = 0; c < 3; ++c) { + for (int h = 0; h < 4; ++h) { + for (int w = 0; w < 5; ++w) { + EXPECT_EQ(this->blob_bottom_->data_at(n, c, h, w), + this->blob_top_->data_at(n, c, h + 1, w + 1)); + } + } + } + } + } else { + LOG(ERROR) << "Skipping test (gpu version too low)."; + } +} + +TYPED_TEST(PaddingLayerTest, TestGPUGrad) { + if (CAFFE_TEST_CUDA_PROP.major >= 2) { + LayerParameter layer_param; + layer_param.set_pad(1); + Caffe::set_mode(Caffe::GPU); + PaddingLayer layer(layer_param); + GradientChecker checker(1e-2, 1e-3); + checker.CheckGradientExhaustive(&layer, &(this->blob_bottom_vec_), + &(this->blob_top_vec_)); + } else { + LOG(ERROR) << "Skipping test (gpu version too low)."; + } +} + +} // namespace caffe From 76c077b10edd641055c01c9ad3bd897789ee33c8 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 21:16:44 -0700 Subject: [PATCH 085/113] style: line continuation spacing --- src/caffe/layers/padding_layer.cu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/caffe/layers/padding_layer.cu b/src/caffe/layers/padding_layer.cu index cd52b809984..f19294bae92 100644 --- a/src/caffe/layers/padding_layer.cu +++ b/src/caffe/layers/padding_layer.cu @@ -57,8 +57,8 @@ __global__ void PaddingBackward(const int count, const Dtype* in, Dtype* out, int c = index % channel; index /= channel; out[((index * channel + c) * height_in + h) * width_in + w] = - in[((index * channel + c) * height_out + h + pad) * - width_out + pad + w]; + in[((index * channel + c) * height_out + h + pad) * + width_out + pad + w]; } } From 708181affc562a1a1f06b55d514dd9e8ea2d6748 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 17 Mar 2014 21:04:11 -0700 Subject: [PATCH 086/113] Add ImageNet Lena filter visualization example --- examples/filter_visualization/lena.png | Bin 0 -> 473831 bytes .../filter_visualization/lena_imagenet.ipynb | 606 ++++++++++++++++++ 2 files changed, 606 insertions(+) create mode 100644 examples/filter_visualization/lena.png create mode 100644 examples/filter_visualization/lena_imagenet.ipynb diff --git a/examples/filter_visualization/lena.png b/examples/filter_visualization/lena.png new file mode 100644 index 0000000000000000000000000000000000000000..59ef68aabd033341028ccd2b1f6c5871c02b9d7b GIT binary patch literal 473831 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 z zV|fZ299EMFQb3KkTo_SXmpQ9Wy)NzH{pHM%%N2=-G zc3N}KFdxcTb9xEsc^k$=2ewrQRG)Owb+zaBr=Nd&erzxd)BWeW`@cQTX@1e4hO~^s zVQiRU-GfQSbewWIV7qcTY)_|;4^OoVuJPgH>C=LTpZs_?DDH>xvpnliQl+?XnhVc@ z3k*5<{$acS_&&aWqIVzh;}e}eJY1hIZOeVZcBx!DQ-S@Po$55;F$ZO0UY1usTtuFJ z-QK^ahxfnQ-``NYS)VV@Zy!<`f%7_l{>g71E)V?T6}~8Z_qkhs`{DY_Up_v(|Ms}w z(VG{zZ8>GIxSnLJZ)JX!Uf}VIX};g*-5|qOzy7v=du3Je6hyV9`Rl)4t{vAKI^Hh#r@4zZetGxXn{WU6 z{o8{~b4x1@4QRb4PzgPKt* zfRVhYM`%msgdsW$Rf4Aczy0n{7}1fije<-j=B5bHpc#{A2K0o^0VjN<1UQfEZ^K6!_J=f0Y-n{@-fAa z&boflWq)`T_4)5e-?~#CZ`HS#_?=C7d+qzfd}1GZ|L}$_20jSxj&NSagG5r0*iIp# za&$m56(a81++WS7`PJ7Sv~GD7<8CuR4Md?I)*TPwRA`_~nN>;wW}YUDlAQqvz-$$1 z@DE?yokq#Tm#N`qoyPmtZM3AsY5`G|(Bnl1v+HcF9xJSTyB*G{i+#>aT81SXEls-E zE~<}hZu=X4{pxPE@aXaR?vp3aaJ=YsAY3@~MP<47H7O+1j?fr=;EeGi^$k|Le8_kA z1ZBwRteSdgZ7BqYDWTUIgXp;tq*}U-jk@cUg`$vyu=;7g)^=7WK z6NA5*jdxume~_3@8Bs7{Q@AGJ1kop*9XZGPo(ja$`21qEeX<=MU-geRF@@yGw-|My?LJuaT1CX`xBmx4P7MM=R` zL)YmvlNhZ#Xq4@Uo@C{;%p?h+fjXivHD9el>^SX~(qf1dLI50u*PGq>c{)E|U0$wM zL}3$goEiq2Ckq>IifU*^OdiEBuz*3p-pLInGj)D<9t8v>9SS49B83P z5e(dCfCd)Ov%B;E>bpNS1T<~LXlMY=YN=yy7}#7w$;C);fjEHI&ZRWRYL#1pinTSf zAV5eF6bXlvBQ?N~xN=}(GGZZy*fB3I31tJg05F1yEN()A7>l>aW==CVQ&5yOFB7;q zkYU4IuszsP9o?5afsDmk^H#yL)dI7rug<&R!NFHjD^Qu089)ID!J7L9u^Fo{^s7Zx zpur3z8iAVhd^ijub2aJ&S~Urh3%Qs>l7#5&*ak!;S51&zS;3?drNC}E4lojr^D0Gg?pR#%V}-TAFu3yAKo5+ zPJFQ*esBuccjLR3Yq$FNEVLVaf1FAOEI}Gpox*m>)e!IuYTKY45oJF{fg;>hS0>W) z6<6|heSf#KJkay?3QJUIb&`I!J(tv*S3{d}C#j4LyH>Q76CyxN=nPt?`(v$nENHgf>cNd}-W@kr>+Q3b zn{}VAqC-y$F^cnKvJM$)^~24aXZ3g%Nxdz!6h{i%;LP3QPr2J>=udO{=GD9XySLNb z-Eo@KG#Anw^24;gJl`}Xy|aEOmG5uwk9XJi@5g`m^3~gKzP^6@_QNl}c=PN1&4<^k zkUCkKR*$R0yZih5d_R8pBVsVIPly)d~^JADR=4|Jxo&1 zAf3t8fZHwV36^ZQCUVqlr8$C0baTtaxi?CV3eu62g8;ZY7$gpc&{$ZZGzXw4;tqk` zh^4V1t(h~jKx>GO)WDN_b&G_K0L0*}0wD$gQ?LROfC8YADWEf$Ik2Onp*I9}b!2jM zhQL@IQGytrP)X-~z5e<5LFakF{j2&APWgEFo1cI6^?Y;8&~MW!g3!P~z-hO31;V&Z zOhY(7U-yqLSI@4(WlBTfWQN7)?DgOO`M>->{JU2NZ>>q{3B2EkJlTdr1|l?6$*M4=G@@*#dYC zNNB!zC5(i^i!q5Z2|;!NCX%My59$@67cVXdKq3vqi91*(90-66Mj~`mGIMZ8V5#7p zSq6^g6=m)9L@Z#7V@C$Y!Kru}Q2z-7CbENRAWO>XkbtsRa*AZZVRl%7FG!>i%rj%p zSY1sUN$>>#l!nk|a71*+o=X7&mq6GWFxxC3)-r--UQswH263#e(5<{y<3ht4=KF+B zO5}vD4uECBC_)j;P-X`w6}M3s3m4FpEzU?jG_VHTx%U8jqu{(k)y5t1$ur7ai!f&4 z0rilb*qaHFnmA}9L?Y+L(=iM*yQiF_HVEcwyh_>(6C+5@i+i)xnvVBm0^F$Y$psDB zG7n)x&#BfpuwZ5x9#Fp9JWeyO>#u1K-D~f0X3t)>N69SY6 z!kn-h@e%On2ivX7PTf4SW6w4KW*U8)a$m-G96cuugM?VJ1k+tulZk1ymPUmXtL z9BTJ0{?2D~`pOQ+N*DH>O?P`!PbCvX%zIy9TUK*r5m=r7QEn+_X01v1mEv>?La5+x_076ZG4Qvk&j?UFywo{77M+rN1d% zSKBJmvEZ_XZd`1Ayyv%f#UDNCe2J?R5qy`tPqvH;GNol+e2R9w-RFDz@+Nm!hh5zD z^Tn05>2B8X?AteTWA6_Sn;|vk87a@%5wG|2>%9$cUx#5QL-+o6JpSpQz4+|YZneF6 z`{CI3hPkxWZ@&8N<@1XbFt1|&a2WAB{b0QLVVb565nbkTq2;9gV3%a0!v#Su2E#}OI z7Lt1vce9x|DlFg)xHBjYfpoDtl1HaNz<|ck8Y3>K3?M;Uqllzkg~EW2#74kXaS(BZ z>RHRfo8{Gqaw?@Qc)U5>96x;X?cMzZ(C6I9Q}P)k4uk035~I-l9-X`1=xmdAXRD94 z-Lt21wx*DP+_5R9hui%x{$Ky<7ax?vN$q4|2B*Q{L4hA8$lT%S* zXJ`%`v?duV0YO^ExmXDywW1a}03q)*GkI7H!nf0U20Pi*+_20B=Mc zuAuMMO(%>iZ{%>&Ze_C}5#dt9Ahj5?wrX+Ztr0P_1Sl-Qbt`eI4Gk7_bnCDzAmCbs z-9Z`9n*sG`wF!VXq`@^KBRBA{SdAvhbwn0(AV|uAY1VRdSu@NC3A_rZiIWsy3nma$ z&>{d3nG;awHc4}51%d?i*!r`$-NN;)3Oli+*u=%fghi^UxHn-yBi2GGQqSn*AtEzr zwKRBdqP3xLDbn?z4ZFd#QaWe2b`uNWr9$WkqU#-UuNufRf)SxEiOL8)aNgE>Lv-JR~I zh=Xo6xWZYf=PmELED>wXT)_Gb7+Nkmh*!V>g+gj-y5PwVQ-i+mBA($?H)k===unJ1 zoLhG$^X%9fz??_xac-81d*anjQh=;v&Z?;1$YSVp@tyB2xAyQbtA^qG+Z8-Mr}vfF z;*OT$&GsJd>Uv)$^NGACbP^g>$7x@tx->5NP&KfGI2>CEbu=C3y>+qg-yeVvcV`y} z+|6faEf3Qvy(?25w%vxUa=Ez~`mTYM_a7D>mW=IYIv!6AEQTkzITx6)ix;21IJ|#* z|K-hoIT3~a*w~G1H8tM9dM^PMt7pTbP1s%MhyAH_eqtPv`R)jJpMSM`bXISdthLHI zdHeQ3K6^8M_jfd5ULYP)>bfFB%9aU=vbv z6sHC-*T$gk(3=*DVzml&W&wNw4!kU2rW6Efb!2ixbS;iSpn?#9awByE5r@i7uG$P7 z143hFY-U=KBiU>o1>L-|^a!(AG9+}s;K*(m47iyRFhh@;Q3Qwt=f#S#5Cmd4ZvZnx!$&byq$00Xe}EcxY(_He%}BK+!laF!U~Ly~JiH zkrR@1$`CCWH8nt;8%82GEuzWs66_k|3eY6D#)N)?VieYHljUZ10s{45k+4zM%V}(w zq@&pOrE6swq8%qSBtnk@?9d3Iw64R(q)5ADqd02Rsno!cv5ZW}xivRb^}IMHR?{G8 z2FD3PXw8|`%m@h}xkPIfITV`$)5ee($l|m-=Nsyqe19DL>o7t2;~6@vf&I z{$xXM==S*V+NOgo!=~MpM4Gl;F|bLyE!42~u?Adp*mR!fYU79L?cKP(dfJJx$h<#> zbS7I760glLdStpkXlF27K-+6tM=HJRQfIgsZz^|vpvVKxW}S89Bcd1GTwuvvdC2i1 z&NpM@M%%uWbecry-&1wU=pBl6_9rqK-`uxd9O^$%2Sus0~ zo6ByT$!pgAy`DYPqPwo^EmCXy`84MD?;Z|^53|?R=3@-uaQETi`euZBdG$P@hKsX{ z$5(9`PscZh;~uDA#bJMYT@?dXYAUPE&BKR4!TDiqMKw3@YzVa}MDC?Fzy0Rkp&9jS z26c~)-LviLlQdimY!An`_lGa;s*AXG>0DA*w%>^>2=N{1Id_6|0$P(j)E3bfmoo%~ z8eAJvXj+`vl)y~HtfAu+Ah>IDaA3Bo9t5>CG&E#xh(Q>=00sjWAp<95^@=PM&>?~^ zRtupJ5?E;%MVdFK5D*YRz{p@m1EUx*I8+WGgr?-w+zqgDz*ejs-_goFZ zyZ_<8`00lnBWjfab;4Cli^D3>0xh_7*d}fulrs|&Cva3~96}6;ok?rl0`7V!i*HwS zJI*Y+XrT$YOTt*H!5Ft!n{BsF&~-7uq3{*8Q;}W_&=$pPjY9I)twL~hGY{y6AgEIC z1Mmvx$wD(|z|D}jEdV7THf}Ktt+DF~CP$xsVQbWjIsPDt4aps>+ev*FtqV!-Wd>S6*vvF1g90QtWl|7mh|WIgf(E%FX)`h5 zj#>!GO+m~@@xg-$YeQa6C9zT%%rLl?+B_t*Ru_uVni2t11gr`kO+pBYMGalu1k+rW zb?jw42-5_XTrqN+P)tQ=GGYhoxX)FWs)>`My4m8(`=syxBE0+~>W*}Ji|-eu&*V(l zW_|T_9@qHU$0Xl`{jZnn4RrJNbUo*JyvEGi&358LZHM{&0vErxN>A?Uo7=;i@?qNS zmy>JgxOwdzb)D!?X7eOO#zW?}i>TbvU(99x$dN z2(!s>YtW0`wbgd2p}c>00HQ~aSnJx0x2);%m=`AL0s|BeT*?rKd9IIfd>`VXc_vER z9?+oau{+L{0!YN>r8qS}nU_``_H~+l_}*tRwz^Cg(AD+Z+&qsk?x*7fhw)_H*?={9 z@v!tWO#2gH9zvh`6>rXnX+FYyufZSW@>3$j;jz$}zMIN&OWpQJ-8k}oE+u9N$=Zy@ z%l>{mjcO8G$)3Df7u%12^xYr)@a5GHKHF?=ZJg?x zasKArqLGI+%gWCl*|X>CbZ`%hk0>P85i}_mD9Nz`3W`}q^Xg`X8D$gv-on}?6A1d^ zzA~Iz0YWqc2edkCh@i#0H3|o<(9E4c6hksx$Xy)~JMqa4%oGC{CAS6CTq00*RRShr zP^Z`d%tkBDlXCz9P>R%=vwLRZre+3yJk4MK?fm8OxSvnUJib5X#SfWW8+mecRx$FB zP`NNfVw2e8+zgyxO$cG7XP1}#)64$xy4%IjCQL*!#Nahx8R6}J_pkou^Cg7XDkgwR zLE9XX0LlV~q4nUvOm3}mGHXz*Vrz{crXjSR&J1RNR!c!}nDAg=3M~jK)@qfZ4_()E zvkqMs*3sQ+rL8R!0-7&gy|Qs8S_uo#KZylehixHJb0H!_ayRR{Vi?^)dk9C+0hqKH z$CwpR%@H6*@uApBP;0mL*35wojTVOpNL-3Co0uCQIY3lK3T$TV1Q?uBB}Y{xBnrwd zR=kGl#5RMABNHRm6Hp{&cXMj4CfE%A$(&1y1jROw!*Ywnu0_bTv6!@gP!{zF4MJ?H zfy;t`<{Dy(Fnf0y%RQCc92gToX%dAJ;>W=ER4x9yrLah!4$jQtKqle_q zQXP6mQ^#mbkk!%MjfoykHNSa~@0`K%9&c{vbS3AHNq?nxhtZ$V4?Z2vN#4GmJ}l+M zckp4Phuism!S7yRyVC>eG2cDJ`n}67SO5HW9_27Y#jav#^Ng#6oG_oT62&x+^HyqE zuba-MJ{|MTy-OEXNe0ZQ%>l!X;`upG*J5Snw0IZY9k|96+X+P*^_8^0fy{PY_U~Sg4+nKM4Ah+sAy0?*(^P|4 zly%x%?S|F)$B)mSZL8|d>tDY8<*z7o(xjcH;aOj|XUEgEdRw$1=4$MR!YS5DZq;id zW?w(|abL4JMNGRcgl+U6{oqF*|Iza&-+y%Z%<|jQ^5wTnd}e;GQMa45KihU^JEj7% z4xWh;dvlMf8B46x$QePcssaKr&_uo>8Vv#?G$mtZaI>RXL@*7Jb+$_CNSG)QKx0Jr zY%-9kP*hZL(u&?8TXl1DG>M`UhG-dyI<$b(2cR`}5k=fh%Z%QT#UZeQD+r@$!{CUZ z^L?9c%I&-3S9jwV-#(1}@!@c)UQUgNZO!8*g)&eai-*wi1VdtFEwx9sL}9(5L_oAT zll9f3)zfF|O$&VpWEcbV0T>mbEb-mn{Pd^)&CjQ@`tkqr4}SSy{*@-DToVms3Z}dD zt{qR(_u7aedeekL*cQ+IqpNoRaGaX@38D2v6h<@5IY&r~6oS>foQMQl>o(SDC(V?hBz=bYSB5?7KkQM2kt#)5_EHSVJlENAckS)k}#mMV{I(S zK%4f#9+<>?b|A=3D7Z`xhP)+*V(MDi)IEk;DX~wAS*>6IXsAm+th6zC32Py%tu`>| z67{_v9wq^j0Ysvikp}VBy3_GKV03lrh1YJ`d8rQISy&F%5s}SzUmiPu{zq@~E;d^Jh%`%?$%iUUfnmnnLVb`i&V7ZSrE^+Ja0HrE5 zq~`sgr62EZ@9!5r-)y)C)P9;xdf2Xdv3R;IS-@*t;Ve70lUj{k%BN0P-R4uHo0IqJ z<61k4UC>(4A#Ouio^<*_xSz+09YBT->Wo;mLz|gb>2eK|jT}X^Ee#};4iP%3jj2#K z&VIA6!{hZ@+a--C9Rhmb<)PkdJeB#R%f-djX4TGyV4Kb>!u5MwT~#^nF1pR7#PwtS za2OlvmB8V!eD$uDH^rCKF7y{m2-|kZV_RafO^BPTbC=Wj>fPbX(>{;6&K&#A$Dht$ ze7-;2tT&yO6}FoC@SPvMNSh13h#!9O(+^+2&c~{8je@$gut$y)AjA$yYXQ!KF-QzQUGcgLvl_1%3-m&d27t9$kYsl zT>#f9Vd{nsag7&s_2N5^F1UYwA$U!JEQSyOBuMaV`0lsA`m_JXzy9TiK|H_u?|#8U z*SS_R$PS@Kz&7XDtx$E&bKk8H$c1$(2v&VT%3R5%G8e{m%TpH9M%mSygzbRy5)$=& z+^%~;3BgkY0p#gmLR=?AFxZ+aa+MGqn|A{xR<*G1p*A>~5H$w~6Qs4MSz9m(WosM& zqO*&*wMx+EMnVV**sMlIHL1nJIoQEG5Jv<P#~#IVv?X zbe~60)QJUWHxpzBVrYSrIRIvifw4IuaByq@i-Zp2BE&$+u~7dM_`!4ZKomRmOd41# zxwusj#gI5pEk@@^o}sC`n+dx%3WkEq=!&4tteJ*s%K7A`ma_?%cO=k7R!2n$A!hR^ zF$j7!;APhJIW0}RadSgtRa|Oi?Ey<&d>G7(njwqEK3RsLw_I5iF*>L=!v=z8&81s2 z8xa*ZFEu$S8iIRP?-`m^L(Wy32gdW&viV^|{s>kpws&xSSjwe8+lK8noPL&Hdwcc? zT}Ih|HGNs}yz?N-tNQSvl`J!NsZiRVZtn&l)9t3UH5|uCEl@Hbag(&JSs@Y7rp0c> zYNDJe6>hGxz4q2%l9uaDM!{NgNn z1n4X<6{*^nCBc;+cMw2{pxcpy6IjB z;d;}({DU8yfAZq?@WpTc^k2XJ^?Sz9?LJx$EADpN?b&>Iw^WbAaN2)B+BKMS8Ifcd zQmd*p=h)cebbPnJd6mt9_4&s?`raQs|Lkf0&W|5`_Q`r1Z~fah(*xYx9e}s-@?r=> z_sQe_>A7%5j2z9y9Z4Iw&*~jvb98qCFtY%HU}h|c3f`+Ja;Mx70#I~o#A^aa$Oh=< zB#7(|1OUxZVq^;Fvk|)oBqDC8XkhM0LTJql9eT88fzbQ9Bu)cpll9;p2pwDjm_#EH z_)Mg2{BU^l`NQA;^xJ>?)o=dsaQ$Z5k1;RCOf6G&?pXn%s5(I$Hf5YCMW9AQ3=jcA z+^nLcu<82UZaClckB9Ti&H9X2=ZOQxm4sCy7Q~x5=WqVvFaGTR`mg@_XXBxi$UUk; zvC`%cxgP>@3V|I6leWg#iWjJ6NZf{$R_BZh)y`e}u2YoQi=hexGY6zVHz>_s@#AHy_JUA#Lg%k~ALUCb5129*1@(NhU*>UhXfwMC*15l*s zO(SD5LkfV7SVw~hZGmp>R2&8e*-EP8gc9L(Xju zp{FA2&MUGNXj)XeL|k2@q>ez9gQ0d10{~%37R@LkA(fM_112Uk$Qe+8#1OQrwDi;# z#0g^Jy10;|0|#QnoS|m)KnAYn+91%fqzCt@DsH4bR5=fIR%|WE5@c{g@nR>6=MFYI zP)daZ)~Tcj1Qm>!pc2-eVr!5Xh@)Gv>XAXn>ugmOGYUhlOHyG(h)Pa6#sHNyoLY5o zfW)bK1r=+H^y^x31k2Sku>?9D`S$biKu`ab51XPaTN zb~o)KJozZdjBx)jO^qn5f;=pz(|lJAUR=>;8R`_Tx+Q*u*WU=EEl3{g` ziaoq3!N+&5%P^d6YK?qs2qDDnjywTO+!}-BZ9G}pa4E)j+P}bdO`)rBJk$URY3*X( zv=WIG?7C$|(d?Mb@b z*>2N1==(Y?G;%rbrw^x=s>J1Z-BsRgsqZ;)-tVUmA4JmyrC2eU(30#y>&?yb=FNvb zt@iuF{lkHi&33a{Z>!?;?iqoe@#^9c800$~?25ZTp>3P8XO$*UCx0W#zmBYP?4)f#{S#5MU` zVL;5F7E(e0EsFyfpagR^bWv4j2S;e;Lgdldh&TjPE4(JQ3~3+&BGar$EWx!kWzEZc z_~K`8|Lhm{Zy}F*tbnuUUQ#jE#VK{A!MJB|KOcJbKmPY$|HJ2p+Xp!SQ)O{uamg~;SPP8XY1w;Pbp!)9@C z^GmbLj=;tUt}PB*Yon%1qKQoexsj6<0iei;TWoL5wu&M^>YhOY5f}h227*w)*jWKP z@Z1=^5`!5qF^lNV-pq!An$6Y}j%GcC+Umm8;Y>iP(%e_f8BHAk zy*jKdpFsK+AWWcnRwhFAIbdsEix5Mu5!@Ec&9x#>=YTSoWgSu=a3#b9P&8Gj(nlJz zgBUjS0VJp9-fv(W1A``(ld3if5Exo7+_luTswm^mtv-xA*ASR;Y*X4b%)#HBM;quPDaoDb--Sgf3@q^XtkWIoJQIVX^jrO z&$&NKDRi+Ny;AFoWo}E?VQWNl-}_j?kVj1V)$P%+yS$>d4=ii}^uXykMAm%Iyvnu; z)4^E?wyWXpSk`(Pm)3?JtphHu2>>(+=SI#Uv0bqyu1vt*eG?nJ(h=uH~DmPJ&t)? zzkfTd6SofK3@8FD`EVW2p4xbtbUOR!_q&0w|Nh@UyZRlag6l0jL0yFq((2`pmfP1~ z{>gt+y87($Q|@=Pi>D7?+`oEXjjSz8tCv6dXtREtD5_ao>hkJ!w_44Wnk_;ypC$}j zAgW|Th?^n(?(hHZ_kOZ_{OQM+msxLqdHTis_qQ9BPRGO9^Y6;1FIU@6^bPLsIDMim zGe);o>%lCd2@r6!Y)oJP%8o{68UdBb0mx0kM%Fb)GODNrTD4||jz&@@e#CR4isBEu}5SPkXCZ#ke0TD5GZ#OIRy+How$*P)b}A^;O;WeGF)xWuGam| zS0riUxLV23JF9uKc(LqnfB9ej5C84I{OV?@3$Dxz1DO&y@CwR^iGxXv8O=m%iK5M% zh@jA1kCD^-aO^PFI;OM^$IJo2mTukExmq_b#kfOsB1e~qR#!lmPcJr?@nX9j?7?%S z0HC7-Sp&ePz9k=lPZWFh6Zm4(RR9cuoLtS_NsnNiK|yDS0G~i$zZ1$Xs2d$Uhp1-# z%9`S2o)XjCTEbAF97)Wf!_uTh=L|u}4WVJ^t$+(-Rm7hB;4~-znV04PNgW&jsIevI z71e`>&SJ3K5GS|5*sL-R5kLrMbE%DxBmZwc`dv^$2XzSj0IjjRhu|zgs2t4MJ=k1z z5XprRoO^G1)%E4LBubo{#)y@O8&TpI0+DheH11Z&8EK8Q1gykB>?Q+HbpiE46r6x5 z!{X%TL8Pw0n=yME%qtm!I$<$gnn$XKQmj><9Ibi*_S~j|4b{yW3Jn^q5wFA>xkd6# z6k8D3O+`O1Op#)>smMwM_88ZfUtJul(;`br$&aFh;UUE<#ztY=nx!BP8S<)|-5Buff zpA#8<_;UF?)qbXaV|4fpow8SR&Oyq8tq`_WT?{b6Zx zJIQi4R#FBe2nHlV0elg! zjn?3q2rHngYEV6C!pX@5JM0meJg#8QgahTHr8QJo)C^L-n?HQ%Vx8$^L(T?6T3udk`#8qk1Ku$@jbH1TZbAAPiW^z7l)m$`~AY6fH3 zZ!cbY4x<%9Z$v4^7mv?=?~neY@Bj1NXFq!J_-xV-@Ag06U;py$G=p^7zx?jz_g=29 zN=HgX9R;acRr2DcSTn<92>%2b#jJTiD6P0U0b2wxtJazoQ{@<=x_V`-xoGov4$=Tg zz*Lh15;mmXeQ78_2!tNc%@LW|OoPedlu!T@GcfrAC}ad)(bQW6tSHebBZ=1$t(4Lp ze*5!({1-oc{gux%)>;CEsLuVsRu!3J2;Ptc%>_+K64$ui0U`%siSfw`K|}8Q^KLlr z*3X|j+VSQxrS&STS9pFQTj5m)E!R~)=J1RE>R01{JA zP9!XyDJj;XBtQU*sUaCq09x2|ar^I45@ILV&CY0xN(cLof#z z(0dmZu*IZ7MGuPegoK8@*AanKg_fx`$R167JWV#0S+LAS3pxvPW5+}h+;OZBAUFn8 zbBeud_P}mN5I7;~fWirbo4R46z}m6^R?paNu}wV#64*4ch_|9fH3Lfvu5JvifGKmR ztztkhkF99~Y|WTVz>7L~snUo@+vW3d`{|Ey{Y={D^zeB-hWzMhSe>QmbN#yc)yMqu zF`fQ#`bwAGB~8Uk$q#mF-J&J#)|)36!=T<#?`d3)tA{^Ye`t0*eQ2_8xQfH&rgU{- zSreSxkW^9QRKs-gqqcZ{#_QF7KOdLVIO@a0O{sF)A0F=Zx2JKupA?B)ba9=I(ska7 zTVaW=8Z1<-swJ+s>&MU5XOFGUc|NXx^!wXqPmVwPuMe-L?XzcYet7fM?ftLU>x2BCPx8?mW|J}cvEpl8vdiI^>Of21Q*IoJQ@@#!}`RW%x8;^%m z8M9`qtt{Dv$*t=iZ&urn&e9+J&wu|%|NQyyd}q7!hxX+cH@~=h_swaXWVpP1^vUzx zkDhPVn1IA*4FSD2SSYtrsR5`Fh2jRl9hkd`v3UiI3qxSdDBy}nPQb(lxU`}w(LJCL z#9o$(N-^M4Mq+a>X67hB;w*>`F4ctCy@@d}L^owhq|I6dRlsOYRAvVx0;d(QLv3zz zGoGf0hoAlJw|~8S`1V+4Bh=s!I3R@t8NkpxY6Tb+0@pgb$~uNB*s7!$;%dFw#3A%o zoAsm1&3S*mSzT|+DIKGjw_Mkq^P_M7>aYLb|Hr?&c|hcW&`5-4j0>R%x|jY}z8b)+Dat*jQ5P5dvb|!T^GSNze)aQZTUKB+#7MmD#;fi5dWe zrHrI%gQAPq#aOJNHpf)GMdk((UBQ9H3px{J0C%(q?&x000FlsIa55(}>Afrz!7~CH zf;u^QYlulI0=faZ0tGW5SK}z!niIIXMGr2(@K1;Zq1k5RH4|CPO;d0{aIj|R5I9su z!7SkbzwcQ9YkLZjdJMRrQdlHP_HKV0)#g6)2Fa zA&4@_+yHmPZ%v=WDo|cpE-2`uI=b=}_>|BUTcq&7Xti`9lwg`GAtQ@U87R=U17DhR zQ9^;LiogX-l&j6yZ&I!$okBGxMkBDsEog6I3`;|@T3t8iUQex65YkEIhhs6Xw?SPTW^Bk2GszA!j<;`ugwM)BnXFan0|q^EKI%=P8jaugguai%zaW zSbjR+O4pwme1id&ud*Gzzr+>G`Uhv#$L0093vcGjmvn!2vp-&Z{?I?}+v&OZ?Sap1 zTyz#|_k^3>5TSxM-M~WF58|y!-$vN3XX&&8_FZrLadkm;Ds!!eLzw`3Vei*A*06Gz zpe&U7y4nnN%(WRMmR1@Idg$^guVQHm8n)DRX8^6V4jI@F%Dq*t)1r!5R<}2&Q|NY| ze$;DWoX}BX^|+z;w^d{1&I66QWNTQh?e7ow^Q=q0eOO!xZ@8pdmYxzmIVbmJnPTV1 zrPF0WVP1FAkkSCB64H>U-)uJh!;82INjfW`~LOo z%g0Y*=$F^G^;nvP&3B(|AEojAD}6ss$9jJC9ghxR+w=9!X*|5Y<@x=KpZs3UM$FC8 zSR#@lEht=b>d#(2{r>qy{rG$RkNzi*K6$#6)2r$0Z$Er_bNIk}>@T*k`|ii-({`TAL`DoqQbRfeyi;Rb1TMA|x|=V4^H=}Re{-L?IcPejU&68d2%4IlSyZximK7d`6z+K){T$K zJIo_+G3g}~Z{|);OsG&4p&1FfD>B3kSv?G9nu)m-6L7Ca?461gfK|~Fx-I&FQ^2+~ z2*`{m(G`%Hz#32l)xQJAprO?7eZ@@AlNDha`B?- zg3N&dTWu^jIR@u07<V(oefV0Bnnn*&ZVb8=~D{>?6J&<8W z?V3O+i^c(LG#LnHGjFOKqnB(vgi=+j1Gu>(pcphwAV-*ydt6H$&1dD+mdj|=2ponu z*47b7b5LdnNygo(9;*e$krlFuDFw>SqlyJ64QTU6+WQes(f84`JIxKgiH)Vhe5*1oI?k-d(E+VVj=w7k1e6>zn!c_m_uSc$y{# zq4ad{q7gzKk7=_LNlsu$lP+vCZZ|eJJDrLHuqXYOaszHOUvG53$rOp z3=5P-P>$S%6>m0=)8_Hz>ha_Kmw$oWh0e>*|MKC>8|W|Rhj#PsXPN<8H}6m5-Mb*0 zW4_&d^xd@De)YG1hIu$Wyg7UJyXz;9LTsvhx_zDJo05wZ)yqRm!#}+E=%2lK`8e|J-_F0W>o4ygri&%|X2lnuerNODvy>VUOBlV0FWHoQ z8HzHCW& z5f#FK0$z!{HVu*#f!zt)DNqD3azjQ^Yo17=R99|p4JeYB!BWd{KFx3c;@^M$i^Jy0 zXWl=ns|PlZ@j~~v*|AqNgV2-asADz(SJ$c%0&vFyJrAjma&a~6pzk(4Yl<8?3xQd0 zG(PpgG>`}tuiVTq*f0HpYAc2}d0OzJTK(sciBx43dS*6YiT#0~UbkM*K#6SdnPeKF@f?{f_1r!Ewp zTLW`9Kx`D(jX8i>B5BoVK&U*M713#lE)ClAAI$yk5e+YJ!!rM}+zbn)c=kNN8+-FE z^Y`L5$n?ejHv>SE#}16rnwC7Zi#DlT*wS6m-NW$Mg|0Gkc-ULtYVGFSj>khrPHDXk z%EFw-)UVdt((RtuJaap=bme0WG-1EZxmpnOs)+jVcA}vl(i#^uGmh9M2%R}0GFl~? zZMXtm<^s!HLUp%HQy5Uwg~nJ8qlXa46nrXR)Rxl(7t3*Z^Jf3@hff|2LFzGt zu!;_qUO`_;pYD4(3Jh=n^$9Aq^&lq6{m3d@k@fV=*c=yYdJmK+#c`1 z+A^vw3!AZZb({q`46C6JS06pQ{Qe)5n=kV1`~LY40_MAK--Pq4!}W*TZ+?9m_XUR7 zcX>Jix`Ys(d@P%@o1g#ba!=l7w{{oUQtZ$e4a)6f1#e)sOH zU;VZsH1=w4#1VWg{QE!p4~UDKBL_kSn8DbV=Bz~O5r{-WMMtPJ zVIpDlMU>GD{z(@d5!wt2hD?m$#T4DZIe=GmZ6Hj9?h=|i1vHRA3{104r)iw-e*5#U z|Mi!@{Mqt;mVS4UHtRr@sw5keB-7Es1wAz=5L#){1-B^OYCFVm^|ae;&vs$`QkNf&8zXVXZ?%w z>1OVzo}XVm8p4w&>&K0oCda{{0rdeUa3v+CqO`_xA~Qw8RvCR`Y z5C@{Ucpkf9jniz0qeuimlfLKz-YindEl^Mh?pc7{kRgyXj0SV@#MP=-F;r+1bfGOx zQY3Au7MqJU54@;akblyVmj-M$#W83KT$Ko+&6YEpCF&h<0c-4x(JKV~GGvMjiZJ!@4UBUc8`=#|C zoxEL~{_);ke_(lp^H`13#X5Bxm`66ShR{*xY~vdWE7U|`ER)D_LcZgb%(uf%}-g&U3tA0HBNOZb+7+)RF&dzqjChlUtxs+k; zwoKEs96rn?pGrw022`qX5a$apFQ(ON7>3QTIe&IFJpatgetz>6UB1|ycemgE(&TLa z?Qd^hz4ivR^1xp1N0ls3pM__iMd`o%_kTRj`N^X$uFqCaKFaenUcbJ-e}7s8S3|vB zTB#6+RloZBFa9yaonp3WGJp`_(R%&6Km7Cu|NPN+fBa(CY5CdT?QiDeLq3*m806yd z)6MUGZ+Nl|?Jea<-Wdouw}rHkwrH?GiZlz6(t1s@m|6ozPFM_iMl&aOuk5|S=*X=t zgpnenCxKFzB1lRB!A%=@L|5fT{Xoso%=C=91)I5(VGrWu;FyKby%QsZ$$W$DDAFt@ zw0&!3neyEizy8&Kc%7HNS&($K@*`!(y6679>NPI}v5R4)^T8??(%21bks|u#u`s$1r#Th6NV2-2mII^`XUh|C_)0Z~sq!@(;hMt@Qxj z*QS9Y2lE+QV^!at(P>Y~6D8PLQ=rkw)p6{1+vD9$sUmSz%7PVxY^qg9Cj;tsp^rES zhhf@h8fRr`H)9=-yY-GhcV~EUweBv~Tb=`~LT*(A$_&ytGM=iXGr>l%=g@=o7)Nq( zuCxSeiXy?3BsKsCrr9+14Vx$Bid>7~J*Lh)vNuvg^rp~JAZq|hp{aI`)f8lzfqDQ$ zuhgKJKxk~jT8z8aY5+DTh2j!1FD?O8J$(!V)g%p@qv_)6;_}nq?KkQ5U;djsRp^6<5U)1! zh?dXq-hcV^>F!}vv-u1ljehsh^FJcRIn!r9`A@(4&A*wnhQ57#`Q-Qh;0K@nGy2hY zE_bW@)93F_Z|8>-R9kO$DPCS}UtX+UTnX)|03}lj-kP_f2$ci{4Y%wgh7}D#5vh@3 zNBQ7AqfA=F8JVKlsDv;F>l*|?X=uu>MT^5~7LS6|%m7SKks(i{vm!VLWd(I60dPV^ zVyvTMVnLJQCg`0~7IW~-Z8}Yd{q_C(zyH~9{&KoLwTow~xK61X@K7L0Z85^wtH|N0+)r4tR1XAUG7gR3nwMO0lFxQ#d6uv?ac1hSJ{l65xbz5N+pt*Dxx));Jy&3rylFvA_f%10A=qo7@Bbx z(5(zC6004EQ+B8*gtc-}R86&F_2?K(AM{bZCO3mg% z9OG#Ma_>5a8d;iI>9W?X$eW%>?9mxL~iI@ zwR-Ew$*cf#S@N)s9kk=vB2nnE&K`oe8?u#b3_dM^r6h@YX|)Qnt8!0m5yBD}-3(J# zT^K3=LU78c6h&=Hm`c&qW0@ht-NWkeo4@NXpX=}maOUIB{hCgjkK#r<{ieMcaeFRL zFJ=E~dhOZHyWj0Bhd94n-n}2jLpZ-;y>CyR-2D1(`*!ROZ&&9pZg~6>+v0tgciN z)iONx(@n@zN#{oEmCa#TnysxiY_yc6iylL&8nJ~a)%vwp4CRDzpxd|e^l)}|R_Eh# zDsSE$_INg1zR#Qw_xtgL7!b7M-TG>H{KMamtjGJW_wR1ry?(34h9@+VZd>fcEC|Ly z7T`eMfsi$czIk@mKR&a0D%Uexp)MRg|LItGewc25`vrGh>d(gegJvvnI)8lr;y?bM zZC~s@{JTFry*j1c`Qt~AL*!yOe);Wk{jfjWH%_@#sSSv_PA;ClB)_@(&W~fi_Fvd) zjo*Fx(NF&4k6wO1efRnE4ZffL_Wk{bWjqqaxY-W<%V*u?cJ+8IokPwo_5=(Tsx55} zt^=iD&8QI}8zVs!&4$RB9Vq0zEs@p<%cN|WV+kOUp=I)fOV-?cqXYx6ih_YFc7P1v z0j7e{h=~HAfsJm0qK--pR0Oa?Xtg>)Kw^W8hN`1hD)aU0zy0l-pWS`)#txH&9!Q1= zqBw^Ty#W!SGa_=_q5IHx@!}E>?}iRT*L7AyT1!XFB|1L9X6{hD?;%68A0HicsckG z$tfrpnClUll*}2eGGc4RMOD27LO`JPD)0B63V7$vk+oR^a2Lap5JKzCtCd2r6IBS< z7U|f7$%H_l3k3q~N<{=f5U@pC=T?O_E~9A&(j-^|fJ~@9*sR(K*5*)Yy>2y&k+~Wg z7IV)=?uHbkY83%wc7ZqodJzdo6>8GnSXqMjbnA>jh5&8=wx!@y+&lM*Ai)*U7vo9m z8PSAJ6r?T4XpF6L1Vk(D4iLAN)e+p8IAOV?f<9$cfCw#3q~QV>jZ|i zdSIPdOtixY5y6ww986FUn^G?#FpCeYya`$=17b0UPP~vqGXXY&uAwx`2vwJ$Fh%nb zLeJ2a=AuCX2|y83Z0b5d$Y_wDTx)}vIb-`>vQ zWqR`2;D5JV*Q~qYM`!kMo9=Jyvma>0a`(2r{VHridhx8S!nn_l4R~AyTl^H`Ac0dC zuuh$v_uLq{%%hNT$OS{pOYu@*0}qqAjt^G$_i5PB<tdrzi3k2^jFDR6lw$uBshx0SNeRsTH#<{)v>RSj2(9ldm0IHW)&p-Z;{*%q~ z$J5XLtQ?nud59YK^=U@EA|NT$?@;5p;~2UG1SHN`kIQ7$8|ISL(!fc3_TcgS)cu#8!wqg4y~WP6feQBS8!5R;2S)7Xav02+z5R;?_K zD@j!w3QDD-2EwkgxUGWLLX$a1BzHt~);#gNZe7rW;pNtO2JW2%Dlof3!F~lc1s*CX z#3U}YskFVN-u;L?xPdt$76$?%6b4;n$yo%a39z-s6gdVj1-W^M&_qLoTIE>l4y0k@ z#ucbHoxwmGf&qw2gnl*?M9s`025fb~h8Z}Sd0OARz5ciy5(gU<&(3{)6;J=r z-prXkNiQBp_@=&@%lcgYP|()P{Sn%5(ZB9~^y2OpHr;+MyBBMz<@r^8`1-VP+rOXp zEmev^eYb;U0&^YM1q&%Js-ZCVNSq%I6x&|N52Zakj1~Fu%ky^co#nPkKG$K;`5xn5 zX_MNa);0Sw3~?#Lak&re)SzHWA0F~UIz3J{2iHXzk7C%%ib}~C#8spLkpuOoxq#0B z``yJ|oi}uLIxSzm+rPQ1W1hi!6zQ8m@0;z}lkdEcj_$tt#fP`=3U~9&z}T2VDItW# z7Y;iPJl$Tm){r^0<{;X@ySiOp#ME)WX%=qY+?*d@2Rcu2_4Vif2x-lx2?tY4-THhZ zAOFtpUH-H0&!7L@;Tn$1L?$E_cA|cE_vW|n-oGj1)SOn`HmEPPxKG2-Z=OE7`OCka z-v0Ijr{DSBk3ReH>Z9-B%d1N&$MMggVZsn4Mp*@Eo}!6a(H+95C5M(|9AhO({TdsnL+C)mWD32VB+j~;?*W1 z*0K+MEQ|ZGT3wjkm-|{Q1o94GLIy*tQMyAr1_@ki3kd{lF+-jNF$Qa`Hq#K9iOQ_T zXODKfZiri7Z@Sn)Y}Ku1bp*;GI-DFS#TioaE`d4)cMh0Kvj!Bznj@n-R-kS|Om0S6 zN+V}MFcfh$_YK7ZK`fpr1aJTz5K6Na(7a9Bt$Z4ZBVePJfxH=;AuwZ$FeIG7RUFkJ z8!KaIOxPCmWC6*Yti!VR6>w&Ebnc=Kz8IhB^PiF8f)|4$K~J=?bBiDA~S8)M97t+ku8PjmasdowG$DwRrL%a$YT zAc7a32?%V-dgG7cjTeX@2#l~L8<12ONyzF-l1u5z%*yumr`u=mz4lsj&N0TXA@zNU z%%~1I10Zfz3ucQYG&zoi5DV*>$|dzjK~SJ+JKIb`O}&GjY(HZ>uod*~MCdD^00C^p z$-$Br0&{^DFp(V{X2(jpdT6MU6F@*~)EZWCbgQ)(YIDX4c>>><38a&yFi#jx2|Z{? zN(^CfiasUkUKwzZ6?}&9$A-h?QQeRNEhTbeQxgmzFG#_4H(cGv^a0~S?SI@}mnb*<{zc~1UVXLM(|mQ9 zrT5bpOR(kVeE)9$(VhS3V*Ba)kRKiA^7KkCU%$KC?(WZ9hcfR3(jaJ;6L?8EBA5Ui zi(6v3m-1oTQ9Zs9ef93t-IFt2k~+$MdHXOv$?ZV~P`=FTW5+Yoo^b6k=Dvb(kKw#J zsKMYDpFBU=-5UUYb9{5V)TK_LPcO&ILms2{X)k@r5V6~8Ymf%4FZ-f*^&yY&?v;LZ zTpy8T+}R0{%*0;2_x$?l^N9NPx4-%3i!U1tk_nQ)u?4NYKu&f!?DMo+jxXJ;w=NNQ zaRs^HY0W8r`hy?MPp;C_XRrU|zj}T9t?QGV*EjE8)n?tR0YLI$DAWG(#UK6X^5dKB z^)KtU3lXH)v?H>& zj=DMwk&18wqa=@LVCTZoT*3`;gNk8olwku%usjBgZVwjBd zAXQXzXLJwigb6SL1tEnL1jTUiBVg~*+Lqq_`d|E;|HnU7`{3KJ4##yxiY}+!;k(oI z6Rf9g_q^VI3%!?pu^#7UkNvn$&qSnc9d^!x|9dj>)?9KVHA_O>S;>fj0s+u45!5Zl z0}^r`Wb1M{@Srgz8L6l8@a?xh{jdJ+|K}eaPfC;~NWIwHsDeke2E@rM=7e?YjGU-F z)KoGR5*+n(ip=>?IA^axv>FSz)N>UKa^G?iUCmge5KydL!BD2&mLbP*`Jz6&WQ5(W zjNGU4WRPAcDLMK;u9XG|60MMTlrxV3#K0Td0BY{Q!hjy#I5eUd26P}|r4UTQ%^Eu; zy!&l*F!Bh&TneB#4xd1LP)b z!4wfQ_!>4cbtlFEqKYyRE}#+~lsZ6(2-F^m1{5Zw(bcv4W7+q$k|cw%)&_u3f}8|g zSkN7bjev#Q;tqhwV4ZWp%+@+}b7U|>0Z-uQ;08PZIb(7M_S*SCy@O;>5ayH+f_)MO zZ*Bp|8o1BFZosl_jOYM?f~L&^5pyPM$%O(7pnv$2Jbdy)7;a?yQeWQc#RqcptR%)) z|FXTi=1)K1vGa1g`*I;m?c&DTFxofy$+Kq9&;87Y9_D6Sj49-CU*;Z8z(~MrvId+7c-_ z$r4HQA$Y<>yL~zw^SZ+R@gN-BmxWaOAW; z*ss63yIs!dYCm6IcVDyd<@--AFD}myU)+8E_V(SmBd6;kdFQ87K(G*^@1~1k+A-Vt zxO9undm4r;Igw~TUOoTx*$-X}JKP?Ycfa`Q-P^ZxvG3dQ?VDq8$$)^Krt#uteDOzr z^yG)1F5moSdwJ~lM@_rSXHU|_Zuf&9-hKY_&wu{Q%`s5N{pEN6!~d1E<%`dM{pe

1xyHAcV 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

QfDybyff4SPk zVKXXwxq`ZyL|bd~iT?F0koE{Q=W|g1j@3kdwgpVijx64G)oWbLramB4@`dUg&RC9g z-e-fwD&-22S!}y~agedo zDvRXol?mc^rPin>#8>=6fgou(OF9FbDN3L>t?hugTU_S_Eu`C7)iiP7l$@L|4n>?c zLPj??E_`&gsR$esh~jMPB!@5(-}&m!SS;o`P5MU&K$S4o5!OJP}j;S9w9fR?oP6Kh`I%y2kM?aNMv3s!6+_L5r?{MFM;EFzSTwo&6;Vv2IlQEf#8boCM{BT$KJk> zSGBVda^r;qT0#im<^C^UQycPYJ}eC#c1wCgd7T!#W>mBL!1jKu-NogeFOD7?E)!r`eUZhWPB z%MW->(Y)~}wQG0mT3FY}KHPg~Q#qVY2%z+=L z?zWr|D8l5;$#kNL&f_ScZ}r&6*+ePjT4MP2FfLoH*WYp?I%x{1n$Ipjgh<73sdn*8 zrnp$xGG|&GX=l>%b%pvXj#sup7eyPc%VSRZ#g&~e<(;{En+VC@q;>m?5~~j4hy66r zcM+$bzVeEzEhPfHzT<)!;DVp0x!#mno)hZhM6TxruJl3z54$n_)Zu~n(Uj&RyCTT$ z?n>q6jvYiNqHi@t_yG`2Y5GzlRM$H6*CHYps4{!5n#&Ly0x%fa{=h@1@p(z~uI9>d zv>t2e)l(FC7W4GVJ|h?T=?=G>#5qG|n=*2k+HQhgON(+OJLdk+2l$+=3~Ig{Y>ast z8o^R4-4O&?qybk#=|aA%kJ=(?G{o;rNh4>>tw(B!O%WOEh&6L}ySw&KlinanY)|MQ zM0DkLhq8Zdt8^`e=+(Q;Gg#>NP5*XOc3T;2HRhvT$8Do^!E-rA)q@TVRml2}bPv2Y zC&Uv@+>j}7&~^!VR3jKwU0(xKP5r?CUF_5xwx!cfR;D3N2k;Hk3~lDO=$z;?=utE$ z^AjK#TvFT;0?@GW90VMFcD#rE2h0+@wQH%yKE&`ov$+$oL`Hy+tKWpEkFjEVq$Rjn zu(Ci+AWc;Fd5sD@iE@894k4!)7CKO8 z$;euwpn*S=mFxDQ2B6EFjCbwLUH1{NX$|B&H;Ud25n<Ll|!pM3-}T41uiI)0n3Az8O&uWkKT84CCY;1Hm4E*nMdApV0HWhi|KWHcI=cRA$GDQD<{E7c3$oF66nvjlv9k#>Pzo5MC z#Zms9NF}{Jo-cm!n=0N;5(n)RXJ>c!Z=B#sg5YVpy2w>NChWQXJDm16$M+<$CmeH_ zPV`<@*T`sfQwzu&Jm!Dm$|)$wBppvy71yyeAMku=oF*QQG5F7@gLJveQMAOokrlDm zJ(!}*uCA^wyV;&Y*`BKm@uDwY*L=i>hXhumS&8xfN9Ha|_RWLG&1t6)j4^oIR!W~Rae|20<%FneCh20`wUS6KSSajwColk$+pweXCz5Kh& ze4Xd$x2e^BmQ0zS@Ax*gyB<<~Pg-}EVFMeH`j*uCpZ5{0baw~AMmw1lxE(i@30%D+21JG%@+;jPHCby$qu`2OUv zDvBc)WkrNZ{_pR-2kR70x?Tgkk7@@X?p$c6RLe^j1OX3IxkJI2BJ`A$m?C$1Pup~& z3sIkmUSjXg!bO?6xVX#*R&DIaeUCWqkE}$QbictABkd$YUMjGG1O6=8&67ZQXDNwu z?E$dMMCyBUlnA4N!EQ!xZ^*LCFv~w+BHyO9caZz&>4kbL%h#9Znb)yDe+FScRR8lP za0=*?{^3-*%o%zP-ge#!!<35#1}O^*x-f}jc6MrCU!SL7=!QVIVC-?L>#l`^1LPq~ zcsG#jZq&1r3KbRgVq6?kGoOt3P?S7N#9vP->m!Bdnt!wK63id>Ns{qFn*@YD$CnfE zV8idc86xy@w{@{{8lauyb5K^>C9P`Vx;}>cx;VesV!U?OP0;zFL@7IIH#gAe=46G* z_+c__^}L>Uc8**iJ8l^^?nRZOzdS7+-N4J|u^Z@CW|z$IQnT`C7Qg!QYX+B9|EdG* zkNtBh%p~38IO)IGOfWv+Kc55!|AcMQ?k{&OZ%6g<60++ zP2t8GBGmH~5}+dbdOxPUK?1v`U+f%tO4H5J8&qhvvjEhd%4q5rV zFN*&8*kL{SPkYj$Nxr8Yw|aa%XCfy4{)VvWAkjOw?|U&w_jhli&;|Cpp~83(MoP+f zkq7JRJRl^neQJIccFsi)`HKo{j4T0nIi(yST}x*mL^(?|u=C+IKJaOav2d*a;UUab ziOgq@qV;-K{~siqnfo$q`hTfXX?cas4A*c>at}ld5+~!w#kr;e)bw*K=yKpyzd`+dU%F#j(F<*ypq^!ooDvi_r5{GZ|H phSKt1FP@M7*TR+d|Nr8rz|L0niFaSH0B>MlvXV*?5RggG{{kU}5KjOA literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_14_0.text b/docs/lena_imagenet_files/lena_imagenet_14_0.text new file mode 100644 index 00000000000..fd15f5993d4 --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_14_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_16_0.png b/docs/lena_imagenet_files/lena_imagenet_16_0.png new file mode 100644 index 0000000000000000000000000000000000000000..11e5a475ccc741094b003060a3b59946ddab3c7c GIT binary patch literal 48740 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_18_0.png b/docs/lena_imagenet_files/lena_imagenet_18_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8a8d75398192b91d0bcb2fa6db778c9353bd42 GIT binary patch literal 109734 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 literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_18_0.text b/docs/lena_imagenet_files/lena_imagenet_18_0.text new file mode 100644 index 00000000000..7f0ef20e206 --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_18_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_20_0.png b/docs/lena_imagenet_files/lena_imagenet_20_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6898559684b2a35f2d1e50d2c962e11e7547be GIT binary patch literal 106842 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˒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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_22_0.png b/docs/lena_imagenet_files/lena_imagenet_22_0.png new file mode 100644 index 0000000000000000000000000000000000000000..05a3eaf39fffeed505d4edc9304ee325d2e87f63 GIT binary patch literal 31815 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_24_0.png b/docs/lena_imagenet_files/lena_imagenet_24_0.png new file mode 100644 index 0000000000000000000000000000000000000000..85b6e9eb73ac2d9933e7b82ba8221164e635a726 GIT binary patch literal 69889 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 LZFs5D{lNbRe`H9a literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_24_0.text b/docs/lena_imagenet_files/lena_imagenet_24_0.text new file mode 100644 index 00000000000..2a654e67644 --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_24_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_26_0.png b/docs/lena_imagenet_files/lena_imagenet_26_0.png new file mode 100644 index 0000000000000000000000000000000000000000..11bf0b1d66b814ddb08de7997f3e9ce8c5502b50 GIT binary patch literal 76025 zcmZs?2UJtr);6r7A}AtAuO0*ppdcWduTh)#N57sD?sP$>m%k{=R zo17s1Dfoad{&>B4N0sC^T{{NaD6>Caw$Mow1X3T?lwzRVjX&=a=M!|MwT1qE`&!Vm z@So2W6XlHmJ|xKdox9}kuO!CJ$D020saDskn_f#rsc!q5zpbmCBL@_SS&%G&zrWx- zcblUrZls-2t^Dba4@;XrB(UPB)%=jFirS|~nA38VopGn0;eSSaob`>hq}Cnlwmap6 z&DV&onev`k5|Z$Z6mMG0&ofB+`@f_h7h4k!cIsOzKC7&`+MG;#VePipJcHni{~ZM! zt~wKZ;qt}($A6#ScmF4|ZJ`HUaxIbscnDs5t@?-f!Gc_C<8P8@ASDw=9l+&i)q4Vb z3wY3adf1w93N09w^LKZ1bDNh5rl=eY#(xl0S%<_Y2_CPLP7s1i?5%sDf=f2|gRvNV zP}}wF8$iXw)h|N8oTK?$LO`V7Xqg}oYai5HxS*)8E<53I6L>Ja+j0wtYk(98E(M(s zg9L$$DqHUbms(F&S~UlDkBDmaiLbw&rPWSU-7YbRwe9w4J+uQ31)c5&=_UrQ)CcM& zZq46Pvr61*=RYw_-1?Gp>@nYfTCM)kLkzG5k)tfM6HhiJPK}LE$-Z;fa{wics<_?p zZdLQdtzL^3P^1hRu*d4fx{YI|=5mk#l#EqsUL-7j3RCOHSDz@dfyOd()BJ`nXR z_=F&@zvlmP(dB?w>CWJ`ztU=Dh~N^?z%Nm734eNwcRA+qKEPpH%=xJU2#VNl=o}4@ zj^YZRF+34hupOSjpLhfNZJ+j4)zb38?i)Kvf1R{P!>RSOA8#87wLXo(GssQea6Q1y z{mkLt`${VaJl)SZRUi--4Ll~+DtDHy5>Ye3mjz|qS=^Pe-?$==RhNxg1GPK3zPy-H z1P%v@RfhjLH9zWn%9X|_L+8ujADke4MQPrfR_sORUR zOv1LFcmZQAG!6{~40Vpyxsmk9ZqgjN%gE7?EoU?NbBzCsVs!(w;*4U;=`kt(2*37@ zJbSvn_Neg2IV|M#csKqi2coew2aUOY9Ko&=G>DH8>t$H`?ZyXI!n8_U`V*CJTOi*+!>0`|kR)<38$EAq{5wdrzKE zc+jPEno%{WJ-X4*t%5jEPy}IY-=@A}=bqYtu=kgRJbd%2jR?#7J|#sWu;!kbRmoMp zruJ6q3{O0v05)s(GjJVo^S9&hC%v0%XV3?EGm3^?hOagPbwQb8K356sB9Zr78|vG( z3CF%3*QY;ET);lM%|xhty<`lGZJOb;o!|b+2v8l57Bhlsu=w1=S~d1X|N8pL5az~O zqFoV6-I~E;B$Qt6!-K4Ife{VDb2Di_lDuWpb@|ky9-5YE?q$#xX9TJ);0BaPw}A%( zJ}tvdYc~86#ygf1wnq7Q-<-z2tjS7;5JA`9y(x(qGVn#bsN;Mkp{`+SIIt_e_WYr` ztAKdYXQ2IluZ3n@2=CFNmYOKy%a^wT@+?0-+(|NxBgCw}UC~S^6{?T;Cp#_mbg-0k ztL{|Upj#3xq+eguqLUJiSlqSb`t+X` zwhK4vm^)9l%<>m$J%ppQ?z}ySZPL4icNk4)&e;cyv@(M8>qsbzt8;?~@6 zLlegfa2zE7ld0LJeTIiiI3Ij~P-i+yXwiO5>g!1(UywD6NN6oqg{7m!J3uY?WI?VH zJmx9-pOl@RCa~RcOBE6=@Ke?}Xc7jF)Gm38Lv1E9Ux4wWnQyl5+WmF&MF!mmzm*r$u$HPv^nyVI{SYN+e#XVc~B^o>hVTl z5gMVOmYE?dSZ-yP0(jzKXy_j&`OF_tc<#%^%CJU(-|h^AYn^!?0G-1ckPlxcFI3MM zzU06Rd7dAMQ-glo88*mjWwUp;rF&E*bUl@#DXBRwSLFb$&`ufIuA^L5+IoCYS16G3 zchNAE5Gi8(CqYF+E>n2dpB13y6Mf9jA=xf;uI!(|kc=K~Fz@+Su(wa4#RNdeaN^He z8QC*W=iTiOt;mSENjR1xnaT;sgV&7EBQRMafD}t+EQ*MJICm`_I2EOPnuR1e} zth#BmSUBMv>M2i?`As|*O9_h9Vq@Ig9U}@_cG|V9y0FlZ4PO^2F{&#LuvihnnBlQ) zlTp=W`7$?ySLQ}p`418TKV_TKIp$eHjn3${N+vjJDH)=SFwNo#V$YOiHfk@rb&sxn zkjbx8`?@xI_z{110aOw&u0%iZlXFVQpKpJdDgIdWn>>a4SM5d6|IUC~U&_Lr>HFZR zoV>5P&*8hvGhXUe0Rhn|`ye<>WL*X-rw_jFhIn6PQl_nr*$=SIU%B(N@U>a~~KNJND2+X)N1H@m}9CKov8g+vNsU+r!PF zXhx()5bQApSmZ12UGHJWK5#Zy@)#&NucgX^sr-BS9Sp2XT2MyEdP3f8?D0;R$DwJy zM1nExp!J;2ttVJJg27*`|EW(OKTg0MT+QOTO2Fwd8lGpnV=Y+HDiE4F=kpD~We~WT zB;Natb_OQ&RBAlO*AFb`wqesQee`gAdZ*{_9s z7TCOpWG}}w#wxDiiS<`CdUma1Bj%)ZU;6Ka2WaI1@x;@9Iz}vG$G&HXE!H3J zOc)qbY-~~9V~J7!sm+ByX@mQ1J2mrejEo%>canO^l~WUKDD_!Dr_78V>?jPLSHzKo zfY8n;)nGB8BhGj4h6<^nV2MtM{%a-yXp&* z^O;Bd%!>NBR_{gyaI@PG_j&5OpTU8h>5pUV=Grq8FI2wnu>yl$KmiiSY9(`$29kY?*TI;Jc%9Sx18(`+of zV|)wI6L?z^lNIhq;!b7Q7n19L<~8LVby>&z_Bqu}reIQT#Uu`Tsb$ygc`+4)Si0}RpCzYrJVyN}fiPC@telsKEeywc*g#0cvs4a1V=!VT{i-Ij3~e{W-( zr!;@U89-D-aB+Q|lJ33YvoxuvTcxPK$f&>; z_6I3M#GY52l4dVK*syrRn7p~MuyK-4F7AIw!}16%H$qb?C>=QBJWE+s3!Qs40j>wS zp;b-kEFN$e3~2G3BaoIuyI-cvLEX&Q@v|-S+Xd@;M-MHG-;9;jTgh}^*?JDz7V?|NXMR3nOd09Z!`ME<$Xe(cz00Sc zb_S)E&S*iW#bT9g+1-H?2M=G+PG4PR2)!QaY}@*_TnM4ebW{5fZU6ihA*8zf)ap=K z7}9fPlB-fHyZ5CEpG(v+Kz?Ux=D?svqrtf6b?RRFj^FS zM)_A=RI(WVdM9KTW2eR^@3Vq7fH#Q8{jihuIfQ*Py|~LEk$lb3MVS(T@?=p!KS*v= zBB4!;2?4pugW|2KaUnkO45S)T^^Co7H&!cU+K8lX>eSXWX0pItZpBhxt z;`1#m>^jU>5z23}1lZK-xZm?UI^5zuj^J(JdiT*m&OdI4tkA`a`b57yc1p=`dlO6M z#l7jL_)+@hbls}!4RvgbCW20ng=F~dfD1gQ7VKgRJU`sF5-6#1FvTWrwr^Jo=knBq zdh-PC&E7n9xn0?hd#pQ_s~s6#{b^^)#~#@4c`l0Mxccwra9OfyVNiA9B0;0|nlwRD zx14ocSZ0<(0@3c?yx)>u4v9%6)zgiq?&`YMGa%UEj}jg=I_Y`CXFU-iD_g5ShO*xQ z3U()zfgMaBg);8|w|TEqn5T{FJQbIf`**z3$8nVPWJqaywrwCWiP=&_+m>(1TJ zpFS-d)cjM@RitNR(C0A!PbTlwZr*JsO>Nprm1;h|O(!YWQKQbu-C=nx`qk$5Te^wU zlkEF%7$`Fa!MD)1X%&u`Q@UU*s|9tq2o432jkN}Y~;hWLm}BKo0DlAVvg#{ z@YV7!1Brso1YXkndn#h(;NOc$`iideN2zw+>4l$KjhK+=O&wrA^i{T6()Vvr7$S4; z9ImtBy3?ap<-=bXK80xzd`;%nbg`lY(aDxWZH@=VH*nf4u>VOfQxNz$C-9(Wzl(vW zaC$@$szox6Zu^r0NN}Of+W0iBaj)-jJ=5(c5x)uke;OMh8NwqT1F)IP%%1Z*2LtE% zEUz)E18NQTR|zN7@kvCPpt&H9|M~>M)6q@YJJcO&^X-%TRdCD>)9<}L1;=WCPniKq zLcG88d{dg!7DJVJ$J*W?*0L58IQo&yhN$vr39k(-neKpscmRdte>409#`!; zRkm)eMUUjwc>T%x!FVvnwHm%rPB#5+I`3J3AxF2!j;SY1z`Z>AY@`4oz0OEj+TEc> zcqninUgz-`yUa2V&KGOv19W34smpbS1@J$&F$x^o`k0x`g!W#u29kN4Z3`&I*YB1x zEJ9Nu8ncD?0-1OWMMo)(w(mNoPctDy;tK159V-0Ue-amOI=fe);nj^DoVo9BUjPW( zaQ|0s^B|w6P^efbhn@%hblV>^p@iJgsE<}&zC>;=zDSp?)O$5$#3=B&rzyM};>k(+ zV%nU(l5c(mM6=d@dDB`RU_Pj7rHs_t&&??oY2W)vs^MqN9b4gGFH&@)@S5H@@Lka% z7)z@H5@GdVr@be2I@{wnoT9;-I#~`AZo7syt~>@)W$0mcM9)ZFx0B7HiAT>Ni%?vH zk?Ce}oQeG+zgu8!Y)B^QZZ-%n+O`%-j%F!oq30kll>36kRTj zi|1T@*OQNEn<8^H{XP}`fV@kug&bia=Zs&6U@9pfD7~&-l}Z%d{`~5PR+$z zJ{m*Xw@%3HuhjA<5rP3$WPRdbZKc~gL z`qKDe$6$i^^HhsXep=Rl0AG!=3uv$@ul)S7K5iG>NA1>AhMQa6mmdstH8{;z`Xv7t zYJPy_sQYhfl9JSL`~1-x_sSwRH8l8}o%}B=So9?Cb<7M#y731hw)wuow=WW%&qjmU zqm0Muj9-5z?5?zzz2NqFi+!X-uG`2^uDf9SjU3P!X0Ev*y1`a?9sSoX?rZZMT)0IS z(Y;w6iDmT-g{GQTRP^+XY;30QoB%vEYkM=S*U9wy5pCi@2(6EaU3Ad zg4jhB8Qm|t_ZlvHU~k_>%CSnC#+cgcq))uKY0D37^bELJpNb&IgB|pCR&`cuz#odR zdj)uZe&Zda^4?5{klv}@jNB*i*mB`aee{%MWjth5Mpr}h@2p#R^Ey=RgScJOQ~O)H z&&lr^m0ISa!~|t9CcYru&=<%em!T|j2<yS)uV#2xd;Gy}aY0<-2q4G;N!OnNmbo^iG^M(WBoY9C1p<>XQ%3*g%Lb!-?#*KSWt*|_|X@Nc$rm4 z{#4#LuI1X_tsikAx|-3dpxII7^%QnAs9@Zsws7QNm>H*Le?L;-OUC|a9h-64r$MnF_;RA!m1kWQ2tn74wf_M3aSB)bmuuCZdJNE`u@Jf4A-Es!wcTcmOH zG`yQ{nPsdgNJ>RS?*SLAU2h)@tmWn6jhc0TxjDbvnKH|FUyvmjW?YXsoQ9L`0GqbQ zY+R0&=}jy0+lG0b#1%Y|3a=y#AvohEY$lrA2p5ZDWimfo6NLX4lo0shCTtryCl39C zdvZM$=v7X?2V<(8p1P$`o3Z`L9>Z2B=T3j#}8?5!spEFo)rr$9q;v&CK)1 zD*!Y?#*2mmD$-AXRX}$t z^0~}*((nfTRe@?^#c4dPK7YRI9I#+|sD3;Qjw}AuF)aCcicLPQ`}SKBV`P;6SjoAmEd zd8S%=IuH~60(FPD0i=={wS}Kb?@$?nq5v4tXdx0F4^Bz5_7_*527|r1)gdYfzg!Ln zxg&mwk+oP4;3{kF8!lzU`umbFdOPmu9$yZN7SeI0*GK7vtnOR+3zFVKqbx=AjFY>H z&^;dLnb3C_?7AqXcF+aX-VaW&K*TrR*Kl*R?0M!mpdQ6R-(@@Ne));+SD0Pk{_o}i zxurC|u6PR%cyaIU2m_59n#?_B4xyB*S)dnmzNt6f7Ju&l6SQ;^5v?bFK)nTqQ;Daak{!P^pgw-S@@7vkQekh0COoozaH(e776lNHuz;1Oah>_r6}G^5O<| zJzU#OuKwAzVV`dokMa;BZpIZiZ-GYE6(6=rou;=wT5DoT_%A@lcH}l$KO_C|^|y0+ zdV2lauK)03*3vREtfC+OCoGc2CMG7MUf~B>PAgbQyKgbA#O;b-nvt z4Eynav;d@pS1rZsY-GOG673_*_ggu)OE}dW-#4|%J0SaN({xWbj;w2ckXR^u_>%yPEZJNkK({VSs%Gu}gYQ$QAjd7& zb>cxIFl&sMPYY)6fx9EXIx$@k~KDgJTz_d~e0yQAx4z&FKm4%v+2Y1Jm7wCRM|G-MCYkFQ_6F>}yQuz2hG)-Q_bqGb5LI z#d*Q%KRu?CV}6vWy%0TG-w2O#L`$Q?>Lk^`DsIRemMN9^%%03wPh&B8cVkc&FZb#K z^%kSBXEX1?>V-(0NET9J1K;W`Tu?dE$G)x14DKI?Z7Z2dst&^iFzJ%5ioX;o8UutM ziSfoHU@r@3MpE*!AS&bMqLQ#l50{=)JlJofc2I&cRiKWD`P;&QmkdBeF!t2*#l4F5s!^1@d~`hntQ_`)@eywYJ{E)YA<P0?6&d|9Gga7iI<~hJ zhpG`X@SVK#YfUSNo5apfg9o&kdA7`^I0u2AOlvLEf5z0{Gs_o%C8 z#Bk*)lg&GyKq@W~TcJmAwoTXg=@Wl{IgJT9Oa4psbm0}{oi><~VMA@VUA5dbU0bzV zNRkrZ2j3jlHM46;3SHTO0Eh87Y`3F+Qm2;3b$TB94>=eompx@ZB`1>A6Qd6~1W|N% zsW00N*+rd{FE3{w0`-E%N^1#WJ5+-7o`cql)HjX~&G~w7N$aiDGls8-2O!Q*&;O*K`U%Q`AKUq`+z1gZm1C1cJT6I(NWQi^vd@#PCdz&H zlTgYyYqGY;gR?Wr&TaXD6jfqTGapUx=DYlNYXv-ag^&1)f*Ze$7u<&g_)mjFIYdW5 z-r$JkotjX>L!gm}h!J0=40hR<4iSH%>2UL~dh6c1)!s{EbzWmr{8 zYELztL#Qa2I0Rl{+MfzYb|7GibXn)frG{xbIsBz@L;e)+o3^8i)(ZZFu2{1is98b9 z!yiYnJNs>yKe~FVwvJiv@$vbBi-<$}4Qy`1M$&Ply!#DqL@V1jpJUec`P^H4xS;7A znR=PBKsS#!gyGMiUs)bikWr@1+L#lqv$Kl+SQ@t);n7{F1V!d5vy?G(*oafY+J;T?f%|+St&*)Y!Y7Db#B#R~sN<~jz*5r-c zxm2E4XYi&ms#||TAO%x4P{0AXV|x>NUgj$I?*Jrf{w}RD=qIa)M@ZxSD{NMlwdpA{ z{{3z4 zx@&ue_RBIz-`GOUw?$HD5^=f8L+IbWOr5m^r>G3mNXY*NeS)qxjxny-e8|QDvU`2f zh=X3mtgw7?|=L~GK|*o~Rb z1Na&h;c4vpntMASTu~vU$Ob29A(XCrVs*8amYg%MfdtQ|FzoJ<42A;GiO)Dj |cLqSr$FQ{56 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�O2p(nnRQnc431ixXQNwy@QD|K>d6$tu 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 aN~8pJQd^_gX|Yn^2W4SvUUu@_t^WZxUNW!% literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_26_0.text b/docs/lena_imagenet_files/lena_imagenet_26_0.text new file mode 100644 index 00000000000..7e26ebe0995 --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_26_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_28_0.png b/docs/lena_imagenet_files/lena_imagenet_28_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d9edfcedf0373e64da44eb24310954b5d90bf6 GIT binary patch literal 28800 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 literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_28_0.text b/docs/lena_imagenet_files/lena_imagenet_28_0.text new file mode 100644 index 00000000000..c46e63fcbfc --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_28_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_30_0.png b/docs/lena_imagenet_files/lena_imagenet_30_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaafbfb75912d14a89cab6a95019fbc03fedf79 GIT binary patch literal 20702 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_32_0.png b/docs/lena_imagenet_files/lena_imagenet_32_0.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2e780085bb67cbf01ddc6bfdda0f2d7c96993e GIT binary patch literal 22051 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_34_0.png b/docs/lena_imagenet_files/lena_imagenet_34_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b7202f165546c9a8506db4a43947b32c89d8ba74 GIT binary patch literal 23550 zcmd43XH-*N-#3VtC@La?0tzA)1gWvmq>9oJ5b1;}B2q#?dcOowiWF&~qg1J(CDedO z6Cxm?6CiX55PCvMo5Ow2to6S0toOrw88Lk zD+Y#tOo1Q0b7z4o-w-8q;DgcQnWo`6;7{PWHxa=9&%0@uc`z_Av!DE&!b}HK7#MCb zXsRe1`etrS`(<*BWYOsdM!)&BUV46eIJ@xq)K{a%g=bxZRp+I2Uq84;mE|73sW13= zV)zC74q4|;KmVk_+qQe?YYV9lAIh3t=2cN`s8CL_mk7;0*NgGI`1{f`X(D-H`4<7} zwN<`kI8xjQUs)JrO~)D)DI!8Piw#y5Z*;pe0#mcQq$LY{{9AUr?H>k)2VWSO85n*( zU>60hwQE!Yzc1eX&ka$xP~xOBytug7kv?GinYR$^+R*vN1^7a7(&Ita(Uu^x#Jj(@ z#4PGxs`CZaM%Dv&UZH>A{pGi}?6~^(JHH8V;Zc$e^?0mx)Io9Y`W4kv3=H{JtLh&E zNE?ISl*4LWCLR&Da5zJYlR-yBTu!knQ7Uz1<`~BooyIF|%^Tj^kE;UrR9u1a{1;-R zza()Sv(2FnW=fes&3}nd5tE9f1sSgck7=*5dpA$7_xab%lu7^RgBJY4_(Hf=rT518 zcVI^Np&VLmvG2(oLBn@{J!e%g4597i=yU>m5PyDu@#cr+<>mb68jS0f)}~v>zx>Bw z{+7_hFP;+SRofQ2Y@DnN3^reSn!~yO$431hckuuF4bjB&qhP2e?${Wk50J<|xrcF` zt2Mr5Cni4+m^x87@jNF3!_$QSl}`WLTOOs^JkiClojjY;b3)l$nrSa8-#6snJ$YQz zFcjgp_cqIC#*h2S`+T(+?t(MSoT*VK-$VF^rycc*z=s7Dcg|CnrCaqK9EyO=vlSKx zMjO6h5r(iwb1G2xhtj1W>HNhea4Xr3%Jwg3KDmt7>mT=;B*gy1@UQO~-Adzf^8y-` zypGWZji@W`vRS%!a!fXO6!nb9pVE`R9kdmoseX##Y4bmVrde58=FPrUiU$n?jyv<6 zvipCZkBpAKeT4kES_m);zmOYGSz8#B^Y(0;EIvPxUvnkPC)+tx(yr?ZwN+YLy0oF; z$?6^8n_qfX_Ig+Lz9#X?v~kP0eT!8*ephZ<^{o9f>sYhjo`nDY>dm2K0aN$y8GzKj z)b{HfAdXo>%Qjv@*=GFL%hP4ON=O?MdEcLZUaM%@e8j;8Y_k)Bu+6c*$WI$8(s*QK2?}#l*FH7U|7y0U>jdiU{MK4J&YnO6%A^#2UGuHLjBcbPX^*zc0fLHJu&uago7=DC zE6)6{%PE+vGUR>@sGPPp{~h_&54FwbpDya-T7tZ`+n7pywr0%h-M$ysKl?rnh?mBz zAB-X}v{25#dc@t>2OPkqr)%NCDyuIofkFQ2{O2zI%j5pPk%HMj!U>U&L4Y)$D&(;^zhS&HJ21*vR1EcaQ!j z>IuUW6UD^_MNXJ}&8~l#!@LhpsQKYanO*D?HEo!<k=qg-O#g<~;Zk&Eh4A+oYEI-na&1jZ_Me~405=U^It6eEK)2i~uSesX4572y z53BD3G~H0fa45LyGT86|EU`4N^;+8HR@!L>xJD&=LMKl$Hbyae-3&g71zy8|3HyI6 zz_sTPBV<*`sh>^2*i+{cl*33a3(e0AWsvcz06WwV=4HEiJezdyQ{x2Q8LCk4rWOae z$UwT?rls);aVbur3u|-kQ~D#7a64u*l~5xG0iA?Gy*Q|!h0G}iVg&G-`1>spx1%*G zZ7xDSRL5l8V(?WDHTqny?>{!7Id9tGewwG5QeEqA2WUUUSDQ1HHXruk^mNawBzJ8U zOm^n}rr5OGbBw;B`h1vH@D4NHj!#?mLQSlaRpWdVz?@EZ+b+x&DJ8eisc!ae1~1~2 zXbUgw!2wPvCbS`+@AK`u7>_@>< z?{aGpb^9}*3_IcgQcqpYLj(n2*g6C&_*3jSm8ZO5p2U&=-evA`JKZlu0_DCYSB=bw z$K1^FysDA$^1QK$2`oK5UBYkojlmATI4p6qK@fjGmt&;!i#NN%MDW5>?5c^adO|;%CDOMBo?sc&0k3s+(Cp`8pZ-fQPW123r^+fieqr zmfnY7`ba*|6Tg|7IIxmDuyR*O?q#S~JB#${Cmz>$eubmO#KxoL49i53;(*X_7m?O@ z+F>_lMG2}d>ON8V{eibRr!~I9>q_$yC%ypIENJ@FyxdYdG?`L!A$bc@8$GdqlZ@Kgy^O``4uTAJgvK=65<-!hks+Ooo>7yE3}pOGJ)I zm7B6rAJq?%x!z_}p}xNTFllqUnICHGE{a`_eY5Z;;8g-ghO~A!Z#PSWg?VgiZO3&% zq~@`H7zYEF`|#Zi(4nQ}j_79(C2j=LS;6(d-(uy&nS51pIPaPc>L^S=N@g(7O-H;i$pE?Yih-n-M^3>a=$h~u+vCio1%^@Wx>?^)_pT`X%ZnC-WQRP z@0ye$b+2ZMztjD8ELrTCt2qAan^zPfoU6j?DN0MeEg@ghIU)9EPNj4zGbqUzF2x>Y z?C;RcDhI1D$}l%l_S87m)|h=?}xwt_3;f~U5fU++U0{s zi7gZNinGTQw2)Q?buL1+S4ginEgX9i-YrBiCw2i%}HcC&ZVZyq&I zw-32hJws`G=xqw-h{o`)Lnh-wERO#;TPC7X-0G2<5fkfdJX9v zzcv-dn|g2D-+!Cqc|&00Sj{98gWPn~-sbIASk6b1GoZ%-Xaz_&Q?9)wOA3pVWs*!} zuB2BuR5LXAIy+UM({e{g=ZKMONjuBooC)NJt} zgec-TQSFAVTFMAe@Ye7p6ExK?^J0-+#_<{j-4DApT4`Pw{ruw`Hoo`Cfc0bp2rRY;*?yi>iWYYxWiQgt1t;t)!Oyg2j{^4!}(P zD)F+RuY`25tG#h?U36W0mcD=Hi7v6WBDn*>fyg9mttOBST zGqvXj_|(4hKcq*HO$!}3NsWY+gO(r+rl3cRZ^kUmCLCq@wt#e3ShGd-T4zhzW5L7b z0VPmYkT=m$t8UCLZUQD>aOA7!v9ToZBEDZ%1b=_y3eohV^QguZ!L!z%xU2?_WMWt7 zM|{P_LgUS5vN+7oUdGaFg@erfQ82Lf%v)Rxb>^T%t`3Z&RnUkQx?wZeBbE_gvf-9@Lc0H z_|NmBo6}8_!4zLfDJiGnANq}?NoSp|B`m=7Qw`Hf;L2NRrY|EA^^aaiyoVDxZHKEpZ{Ae|T*ZS{IyGG>q$Ne% zvIJ)3uerA}F!p#r-j4srHztp&n%>;jqm1pUH_7F3(mIGXVWm%2ew_+)Bn9V+byA@ zN<|uFgvGARl$qY{%Yb=aJ(EnbP9Zt_HT7FIl~`|S!Eb|+8sIwPZ0}=FAS%Da#rKCf z*@l3v(~F6TaeDXe@5l33B%Frt8@QW^Fbf7ItY20QD1Kmntn(2QZvzLzJQ-&SYy(ny ze;sY9Pm=U7lpB1&L@h&5b=80)c)Y3}*1cpbkjo|9CcFAAtkx6%s@$^4SWkhNw0jiz z?fp2OqU(PyTnrWUsJBX+?i zoGpWXW}n&a=3`wG73oL53qn?+(hy<8Xg+UK!jXujO$g~R;0fe|U3ZkA1&5RikGB@$ zxQ59vy`rh2+q2-j@ja=V8u3Wz zfix;IT6YJ$SEP6^h8L_6A1W#h6S;T?=Y(4-A^LMMB*fNHT{6i-zn(%8%wfU4k<$f^DaRy=XToXT4ORjwrN!_ZNxe z9kgM`XJBWS*A>SH?@1JNe*N+EvnRR(uGiKkl1TpS(m_%Md%HO%@-$ywJk>*i19YK!# zdkO<+i@>Vku%D8qcHOZfub)5f4tS!Bbor`C+gUt&71<|NceO<)j&Cc(Dx*%%(Zven zuJdf4NY?l)kE4KO);^#UN`5kWJXugjGMS| z7ZTs2qMla>@aXXPwLltwQ}XOJZNPq%NlcGpt~%cn7@HeZ?;{mlIk;P;h0WdHyM-;4 z(c_Heg0DGRu7`_}YbiHac}$X?Pi)Na(qBG7ZU}lhsD_5`%l`h!cD1%>-zjdc*~+b1 z6ib4BarYW}84aP9o~iOE@;sb-+gtsCMSAA`>mOb-DRFDI<_NE2yk6-5c@!M3o}@3@ zl=5w*CrM~TPBvWb#G-L6e`A`32ir?s0;e_4@&;~yz$J1=|6LBQOsH=wDCQHzx=fkA z+cMKsa5+7c;H%=h`aRrLJfYGDN^E7lekTa8UG?$xpVO>wYN9{=F#BpV@p^4I|8B(R z9;<#G{>!#l8`VL%W+AKj@dg9)`Ul6RFRJXZle6pAFxN&P#H|MXemFL0s~BtE+|}S{ zu#bMa3mC&*C`LbMeQRT1>RbiO$eQEa0o(T;=|5J1gCS`nDYm=6mR7DE&m4rJSfUn# z$XLL|NCw=PhwfsvRbQK|9a{x&_*l%zUilh~YSI+)(emNIAmf&=#TDqBq_MjD6o{ zvqePfB@u2XTwDKB=q;^`19<-iKk@!Z^bhF2?lU%H<;>DQq2gRLi0qYajf5Vk32Z`n zU8h-+w@Xk-hi9Ld$5D$e>|%?P-bO*Z!6;aUFG>oRl^E z#b%-y_(J=9htS5~cLRzdsO@L9Xz7P>85R{U&u=HgQ-$isc z7KSTac4@ImxxnpEPI&B5Scm6-d>(KNL^J{&Wj;|VOyVbhn4^D?4hjn=A=4#da_5m9 z?#K9LG^INvDfUU>%8KSi)&=5tjGR!VJw0O=qs`UAtSoVjfPsdO6Q_whOd!bbbw z*uAi9`qd_llXM46coVgzf?lHFUW9hB8{PE*QIIg%z9!0`p^t3)CJJ#asE>1;3wW3#7#hU3LG6&{ce$UDswTT%R%OFDBCAC zq;rfGfjKndm<4sqMWdDtE{#jd4wgM$N|jNg9fY*Q^a;(SQnmW!ht3G;zDceJ28c*A zthj#FowjNgrZ}I%&%N$s`HhTsR5CeENEF+3CvdwhJ0^&Fa|KbzT3ul~`7Sx?I5TLy zyf;L9&Heopf>T+6;nPtwu~3;KteeFRoh@E)&nqwh4-#DZ<3ucN-dr>td`U4^qE%pDLLVc7o9 zI!#^;sq9oGdIMnhmV24sU-8EBHTm!zqH1yX3=+yNK_M(-AzzEd1?FdwP$t%t;N3)< zC62Kwl%@Z{^sIZbi1)bTkkmeVbdK}HeCLieIha)QY-=&u7vF=L^nQR)EUZIMHM~W8 zV9&PFQTv^s(d_=d5~C5Aa`n;)&*HNM2gwD0nr~ZLZ+xk) zjw~YmM~c=7%9oxwr`W3F1YxQpG`ME%FDA|`!}68G{G|?Qe?RB9(gUCmk8KS?jn!$8ZdxIJL8pM~)Kb2AIORdHEaL@tZ5n4FK+N;Wts9f*`xve%CqaJH2% ze$>Wz6Lv|X)-U4}j8{_;7LzS6l9@ejmRs|M=q<(?JXyZqeR;n+M`tYkyA+_`yT8)5 znef}~3znOwSv#8KhcLlAo(n09{HW}L$a+Dj9H5;}21IAE5wdOx-5~&-5jFm^XJbnVA z9mDgi)pq#(*2SO*2`Q3|mG)JZ@6#$Ha?Lo?ki&L2cNHNPE}J1#-)D~6z{Jy+)FEWj z>DGV=nr8Fw*`+=mF#F$cxe++SG{<`H@t^68r3r0e1#+7jvKJf|x_-6l-`Ed0@TSw# zB{8dm%do_=$+}aCdL-jSwog4l8H;Crud@gi^ZaE7-7qDEv8GQLBd1aCtdI)`jd;b$tRMCzz-*0>GR-MA*aGqJ)*#`TX^^081KI=KAw_tdF3 zBjlN}y~iLzdo`x*jbo@8z9VQZ{FmJuct1GH^#SQV@GsX8r6p(o`Y9vD9O+WteW@QrEq~#6}9k-=$Av&WIV{f5eYgclDQkMU? z(=)`lE@X_qx2x&_{OXo372^026K6fxvR(DH0Q}Q(*U+1G0>{iEa71}WN~{`HRIq%- z6(JS3lCuRb`++4VO9@84#(}IXe3>OHyuZ0xMty{Y*=wc4!!>JYY_^w)7@g-96^*@E z&%%Yc*Ge-UaT4#}Y#%`yznaWT9U{PK?h-032UdIb>6wZbq&i-{S-Ww(MVB(ry_&mv zOJ-HEHV8L#R>TSjw_Rj^Csx`=?-zhNYed0%wOZ~C2*LYW9z12!O|1Ktk0IvG=-7lY z!nJ+(Sd)>NJ199s#`nNds+l>{hPXKm zRstgIeW3L9t}XOTBb9_j1RlND+e`83o^@b)>*qk`jhfwTDhQmRR8u=_UO&+vZ?QB- ziXKw*I~739$VDLbbDHIl3nHZx`|ZP4FJ&8Wju6lXN| zI=hy~1z)()r&4$_bGVZpU>im+-$SGd|v5R&WA3HLU0KI7jF4-;*+W=>1GbnfB;AE&EzfSND6(jZu2I$?jPKp}vVykgJO zHAw3=eC>9$w-7^&cd)J8$Tt9Iw6sQ*d;Vpd)nKf{@Qj)+<~K5TrL69uF6V zCUbey{mW*hx`uaTg8T;_nN-Mcr|IC9sTSHII(+-hKH8sh*WL{?C&u6)lijXsI|P!% zD#zPpRKNj{vK<&v<+98dGAOLqeGHT;6X=rkr6ReZxVOKuFJk4hRe|^3$~@qTzg^dsk22_jm|au)Yt8JbtbUp7>BM?KXL~= zd-_{8E5PE{#Jh}p%YT|K98j_jNS84(&w+-3k2f3^uB(Y_9R*tX8N{Ta8FedfbPw9Y zEDQDX)bJ(3y!SY+l&!;A8~N!ja&yhXF>;YRTn>E+ibp-YA-LLNhfpJ79qhEbzg1<+ z4hw$nGYa;#i#D3;?{3>2>t?UcX2LGbUneEQM>bu`D0Ey}w zPdMa^C>%`X9qp}@78h&k=;)-&`BYT>bV)Ac{{{ExFQysiLU0yT;TRmDFWqnN(*EwI zy(M5pe$~~RqpMX7yEpZM?*wg!4a)axu0145j@3&$oWso4QI^&SSZ2cD{MDr^3`5-` zK+sDiw~|5RDUSu}ovo3zk#N4&=FQJBJO$*f1M3!({V)!TS?)3eJq07Ou-A1$qS*6) zQujghJ6Y~(bNL6tf9j&k!OYO}4I@tp(;~#(`XWe4`27?vuY-S-i-24^Go98-=W;c3 z&DHvw`_6;&4d9vfFEnkX{3n>+%i6k{u$`#8Mr(-7=qrF}wI1nILMoldKH#WRwWwhm z)rU52H^$cI9|7sVU)wLoEV)8njC8TxkQ5%zGl#p=mZfJ3pHp59B?jQzyt}SrRuo|t zqE?he!Ei+%$~ljDTyVhB*@LYBYkAy;%i8iSjpPQM9WEG<%iS-v)`T|OR=hA+N;+`h zI@2nBI1o(wxuq#tS;66fsJQC%WGU%%T>NGWmR_9~sCoYnPY9wnQ&w^!c+m+mh5=n) zT5olRHRviO#;0hp@Bl8V(d38D3)Q==O0@d@pQi`A3?m@}Td2`pppHkcPUL+1ZKTZN z>g41FX_#G{q(OFZdR5wEAU6SOPBxty4emwmusOY4f<96A+Yqxf54a4KMkM5ryd68E zer*LG=p@&*D4Jr(5%7ZRSm*0ZiXI{dBx@SC$~( z-$PML<)TV6en6rX;WFttd+>mIP-Zqnr3d>jdK)+%p<&uMYQ@B(_I|$3yzh6eK)PBe z_V}`z61{aV8MZpF={h~x`E&H0&SHs~^$L;w2IFHtpm>6T+^l`O6m7lHFm)@zx8``n zqzM}51k^w`t%a!-Pz2=q;xW&egyLDiKl^o4#;QBB24!ADc?z^h;B)8`*4G6yZ4Ue= zy{nH2o5uo}i%>U);JBwBH0B1h9(6j0Nv z99d02+R^Fh`@`%=o#z-$Ck#3+V~j}s$&}A!En%<>q^NO}z7KR0p0|ZRj00+RJrEgftJ~+}Mtoa{*%I4#j|L>_(6W(uT)GcvH?fWhc+( z3zL_GSCz?>y}3zNKaORc4vEZo&F*V&kEG;ZYxt8nj_?5$Nni>X=^0|@H(EBiWY{$4 zPYs|;JOXmW}5W0Qp%uQDLmkoak zv{A|WVuc4Ydt7lj)DSX()?3kq27fH%cmL9~^VrkmWxxUH#jv*O5xe#%pa(j4R=W(@ z9Tt?0gY~5m6-!Hoa_3PO_97mLf?JaPcV@$Ag?h49AS=J6pIcVAc;R5$T50(A$lUF9 zYrcqL`HF?OxVLG+FVbGUTb>OcL)sP$Wyrv_VfvFv-(HQe%6V(l&8)!#4WMj|kZ2); zP#D)p!wLdb%;&mJ!|Q2VA4RqLVcbwv${XiLHzwMaYnGBn?oY%w8wD_Tm!B2sRaR?1 zhdHt>?=Ev5>)MOK)V_{e*C(8YLn>)Id?IwQp1JDKiybcQI~#(rPK2+`qc(oi>Q;^S z)1>u|F)$|(8mJiykW`Nhn3U{OS~^{;Gd}Hl+vrd4af+4DeCqbFp8|}yRkCf$t)Xvi zhPwGcl=Y=s+UxzS+&)+1?oHKO&QipsOJvaM-{M|Bv8FoNHmma(k&){w6l`sebr`nZ zDJe`;@OPEtyuj-PSgX_eD?Hk{pe}-1+a@d-)JXSh-p0~~_YrLniV6HiH<{T)-%<|M zl9@0{c1pOTSE&}4(iKyx7z0ZrEN3v&j|qjhb(q47O|{Wx^$&cXEMbSVdCKyUbujaY z`_MpvQMo^N<3S-4SWg79?aOt{$Mc&Zr6a&TsZ)bpb2WqYBiGQeIK^To9TP~lc{?;Y zMA6G>sakv5GqDaYe7?pqgys>l)G={({WM=h#fBErm8f{tEPeAkGE%;6vbljI0#Ej~ zaddzN>qcQ5bNmXop`%zEqesEb4NIxlKq5U-ropa%G>4xZUbow14cS(N;QjO)tz09M zAl*Lki{;}FrnjW`>PJz&Iwkxi$hWTV8@98CIdS5#^HU_SoRQ-UT6|9$YRpmB6MvgY zk-3@6-Dh`GhuYYRZfWgY^&)BpaC~Tpb!C^+(o+b;3a!au-lpuZYf|abH{;i{trCLPL#UorWCov6A6Bpkl< zw)j>__`R=u^n&-detBu6`bS&XN-~%!T59GHlm99q5G_VS?}D9Q;irBWU*YPuyI)s5 z-+bFI=#QD$`ACl&+Cqm9B!cC{#H<~Z^d8TMNHZ zpM7Q`ef*ZVi1}l!>HK!lCGNF`8f8?{EMI=WzqjUPLGw)hjt%;nbcKJP=3n20 zzY}IZMoPP&^BmshO252`uV_bK)jvfG>IQcO#Oy_T2-U5tyJv^cR^Gktz2NLzS<#Gf z@hiO4e_x%GK9mE*68_sEdl_?fACv&$8BiBPe4M}qk0)I`6cDJL4=t-gk_YE zZc5#9WdfIvMK8SivXJHgGzv5iI5=IDG?2Wjzi*Vd2>uw{D@QcM19eBTgO%NuJz*^6 zU0t!*v`wl%<(gqa+^f)GLq9;|@av^GFA;iRPr}-eiOAgwFR7|bYZ}J-sJ1OC7IEIV z++o%g#fsgHsC+kYGX%~gIQVo%FAeE3_D%YMQrtOQ0O&9^q5adD43KcaO88hb-Wg6T z>wD-IJn>#MnVI|}Xv@k2TAlo8Ct@H5%u^=g{KF|33<*iqJq$jOgFd|1x$d=P(i&B0 zameKtx@5m{W}>arY1aHj=6z&q(CgjTmx(9 z{`tPO65N=?BJC^EeigK1LY~^n`zfO`=;&E~G@X5`1I5xTkRbr<;vJ#At|&(59(H_5 zX=4cIvdyEQrxw9}#Oi2@)O)EVLS5dIqg?L(UuTh>SMJqy6(=Xrg2pP|&40~>l(HYl zyZ=bJ6%H|2tcw%FPTCw%14l*iNNh7`3@Co*s+57y)Ns|+;_xx6wa6I9*5vKoYO+#9kMFAbU* zNe;}Ag#S_$5UVJHRY{@8M!KX-OHB?a8!`N-#*l~Q88#NeX~08^!Jd4`lCp@QPCQ7>{^$Re?`65{58)En4qZu5Fdmp zZZ=WgI|6xidqMZdX-Y~KxzRE|D2-@0sJvpJZhv~;f^Scwgh5=8dQ5a4(#S$?#w&Y3K+w_ zB)ew`(-QTOC0`+#)&i8WFjz23%bDt;AWcc)UE%uI9({oxykQsKO&ReGl3ylydm)af zqBX|V0b3{Yug#b>Kz&5zHXD`x0=1{K1Si;3vlw6H9Y)do z=Oq0==sHI*IjFo52%3%PO*vlTS%syg+jJ+~d>CnQqbNj1sHHp5{U%pImQcw2mA2md zAu2MjKhhudb`!po@FZ2*cU3`!vqbd80E_mk{Z9 z)i?xXRJ@9@LwJ=-#=BHKZmUl$&v2Ffo9HzE*oH2y2YTDaWyj{Pt`Lu=h} zBJt737@oSNOFRMyq<@a$ZwbV*5YXNnm`2`-3+TEm)wav-GbK5-gnmLa+!{)s_lW=% zJ2WZO11YbQ#@Mwnxb=^4vR~FPx^2n(pNY{}^+#hVKZl#$ebXX zTzC$rH*U=&b6(TQz?%&txBL`xC}ptn=S8Vb&Z<0R zo1q(9_sPG}2`X3{NvU)(P>i6eBRHwHqcxyT0+LR~375BTg;)o0!%HkLH@Ac*ra&Oi z%8BAS8d`PbILJPbNuNC!(giI1z0PY>ElG@;DMOVwh~J_SULM;#G4+VD4GxZX<$f17 zl89|I@lX3_y7O=H?3V;w27Nct%9RP5B-Do9lU>vkbC+VUL})dxS8P&2en90DXy z)juK$&@0dn+9PA@om|d(iC631OsQllvzJ-Z9#P&y2B)UV0Mr4HHf%X0MV}fah1r+h zhhl8SH*NK5{heVpyI&&-lwo=wc0@+TlUZJ9QolzV>5h~AX%+e?AOX=qy zR~W#bPj4UR7MAZcX=>j!8`={T`;+lzZ&`K7Ck-d_tD4~cJB03Ycx~QwF`H94A-|q4 z3}kh~l~(CK@klP#D`QGlvnBq84b9WH^F4A4f=c|s+nZMSs>%;S%Bjh zdT%GTR6v?sChi_DLsK0ox;ZI=|G0OUOz!K*l=bV?y;j?nZSS2Ff zYYLbuC&ZCA6KQjNlmV`#PFmx7LUbE6jmuh8Cv!FExKh&8%31Ek!<|nq4`+TbO^a2} zb*=gEQFr3rqQ4wRN8o3Abp%ZHy@oE2NEN)rxE5 znbdYgFEy?m1cEm(O)QIvwavTlwezKmpuK~e91r)4P&y9LyEODX_eX_TP^G@-b$y*o zNz-khE%>Z^CZoP+9wr=q=vQ!?Gd;Zo=KS1lPr^###l>G>XB5g)V$BPChBta3rnm*> zH1g5Utd5Bt^s>Cs^|3#2mFX0HnRJjUD4Y^nQ0IW|tp)LYvtl*mW_3N-mNZw1XQ zgZONN2$R`ED(>t_f-jfQ=hAH^+^%S^tKQXUD*U$YG$eIl?_GN#ar+LQTNI3yF`hrr z_m1z5MUGwtdc|Cebt@Ig6O%*ZZf+lA=B9m`=r}Rk=y??~Wu=s^06A|w>3YLe%Jrfm zyx8M*zlZRj>KDWQXR^AYwYu|Q=~AsOx|P33&JK@`BAdSYn-1Gdh)JF|{+s0jhD1ho z3xp6&Mqq3z@zGAN;?~v>Ujtq$^AS5yF}ezf_W_;tPL)&s#;n}hH&9(z!T~XMfmWP`rKAOD}Ag-_)@p=>E-bJkna9`EIr}&!9v=dBa%fXKQ1GeSZ1b zQmYXy3EIBkfw=SwRKvZcwdFPK^%e*`@7bgw1Q9Zc_^sAvP42HtlR7I^CgDN9& zgv^4va|OT9JXUASSnE#p%;`9>mzh|zNae5yep=8_qE!t~Iu**-y%~ZiID5e^dmm}u zGZjdH@We*fC(TGqjgrYYpREVT)YS2x9qUU#%c+H^{*(1Gpp_#9MjOcWRk>FCwMnP@ zYy#}0EC&q&N|{A3B7x``C~vto=^W?KBVDh%3LZ{+k}sY zawr2=j4}(IY!=Fr_12#lINy3*yxW+(B?!XGxv&`f1x)z6;evq9CIF9QiaS&zwqo6E ztMK~D*Onlym{H4Tu*ggVMU4Ojk!0b!K-LtEq8hE3|YkX*6*(~EACgMj59#qQo^XJ;p1ls_cR4fHF1Yp z6O{1zs_tKX(CV)N1>9w279K8&m#QNGVJviJX-2l~wxcudqx{nxyV*%yKEx3q-GKkZ zRboDkiY1umXvJL%19}uCV)}qMcvHT9X7Frj6w}QI z2D%7nv+^b1y50HJ%kWZ@+x~~ z2aQra5+#wPCgdEZ-xi_v$Me$OF2q(c9^9!D-~SZS@RKR#ZcLnM_0M5UmbqHi;UyfC?DWl|?Zm^Pz*-?W)_hwYSgm zoXo(9^0Q3-PHh7y^_Fp&hHR*(mUbvda{f)W7D{y;K0)JF%TeDU?7HD-!YLkhHJ;a% zY`igDKRvrY>Nl&_+b9zp*QorBTP-I#LC21L@{8JL+r-~skn`9>p3&}QJ8{kLPL<33 zS*2`u)mF#t;zo2jeQa(E;RqpSj$uYkXGQpeE*tj>@;-gGtH~4}L0sRNo2N?a%Bo-LB)Js>5_(L+1XET;}Myqme=lv+VC=a_6 zyQmM)T^r8Kb%HqMe)J~7|6sG68OR8+rgDP??5Z*0&qgP0+7y-Oei*jlw`*d*in1^8 zX~!?AwXHKN<6l&6ylp?;j`(W{;AN&8y-s|r19}JmSTuKNbG9!$ds?c;kgh$_TWm;l zO@QfIK&EIv#AEHcOJP=8vZ1GiQTA(+ni^{sz6aB9Qr1-qs#F$UG`qZGdYjPGj|iKr zjpRq`^t*>bQgAd<-AP4kvwq={Cg!A4wvrQKRR^FKX^x**cnXt&_SDF$Kxy&W^Us$? zcz`-je%Vhb+a+!Z4d>Ca2|8WUdGsAHuj#^v9Q**ZE}b!0#dkhZa18)Lj;)Q9A{+*8 zPW#}3WXT&fI$Z!tGG6P0bLB}ZDHhP@4%vQ%Cw;&Z_AtlA-(LmnP6L3wf}fBR!0@bi z!uR*pGpF$Jx1W1bcDhf>cY-;A)%=b_g*r}-j)U8C?UIfde#lI-AAMhX#y2lkfn*wU z?cuXHpa${EmMjICl#rB=c(*ZLMOI?2&W`33!;Dwid2Lj6uK{)WFJ8Q%Zs4u!kKdlm z-^t18m4QLx&EUg1Y6!a5AO1i41rn-T2Smz!Mh}kuXG8Wq`;ZV5^R2S2t=x(VaY;!@ z$KAyq;DOfY-Z8lpD&gAb#035#uk5fH!YR21*b|4TdiVZnd-MyCfIfg;beD3S8Yk4i zgNdd6I?~gNGO-J_2*i^y3y+uunb{i;8r);-Bghwj5t}EDeU0eyk zk*(q!Yief*1VVqpJ#7HToe9Arp8(iapA<20%2AM&BWm3?XKTEw9T;Mw$p`)zXhL7X z7v=O*Xx=vth!vly1YmBct)PLUKMsluFS6w)+%u2s3*~eNh_QAdJn*&>*d>juYQa)q z#m3IgrToPRgi+1gz65@S?VqPlf{2kOA1KT9M=I@~ScZOuGuy>UM-1u8=}?b}>!h?C zVj%5kWn^Zi0+<*9j&E8_&?XJoiPRBO{5L&>!0QSC1P$tL_AdN*Zn@ zc@*4BQ&d`vf6lK7fWq|wI2$k??1(DX0Iy4;Qc>On^Ams<%sTjp=2Z?X1344BpwiMB zBWQ~Be(Ll}95!^_A@lncJ$d&KB^zE|UZ8R`9T4PmIJ#3 zOf1|v**)vZ*^X; zB>v(MI!zXUz}C9WJv)&_fX)f|Km+&5bFT&nRRASexFzn>zOn4oWQQ@aj-CMcy$O@9 zIYsVNri<4q>GK{(OR%kwKN$$(48Vi^0F2EtaHliBI{@;Cney2fpL3aR966DKmY^mNAnuikli!Wl z8-WLpI66Cf0HWjCywi1)(1^)s}-4)Bbej|jk(_f@W6aw0eSja^K zz5YtT0RXzir%PY*>g1aNIL3kwDQqc{OIp0yRY zA{V>B*py;#3vAKJ;*Y4%A^V^Z7yxLY(f-31cW^jQ3E+qg8&iJX7yyPo{P=&KNb$d& zbnt&X0^$E}H}uYrF85`4&G@aH7*1|UrzD`x;Rl(l1z-YV+=_wq0y^pWeHqf~ydr>A z7WUNwiXXdLLGxE~{_ZZJiNGle0F08&$=TTe=)E>BGyNWUMX;p2Tx`u0I2_>B?G>3= z14t;~4E+GCF0|$7ZQX$Smuuev`}>N8g=MnRHY`0OgSb`-S35bm;wkqq(3b#Mw&Q~> zxHbr7$anNx-LsR!%jeI-_=~@PR|Zt+S0>>k+X-V!!uz{x zW*#li^Um}B@%rO@+|KR(T-Sa5mhW%-676+6V0^tXlx@14e6bsIC^*L^=LantuG@_@$Bd`J*n7y+j#Ra!CtS|#!g>lHIy6QRxe93VNYz z;-vZj>N3j)TFfaQpK4kL_Kx#|fL)qhxc#<$JbPup{YF#7IA1v*Ih+#L##hcm7JtSU z9dk^2Z+-wZ-PFY0aMEuqhXpYU#Ht= z0dSO;c``Xy$!FOX7(^foSl!dxo3Q}RQb2)`b)A7DZEdzr<@1|-Xc&mN1tR!5C1rxF zbILqkzoWlD$!$l@lV$o~3L6tyT&^4^=cwY-Gn2XBXt*-zfG96;r?5wR(W{LC4q^vB z29RL(&jbpBKoWzx{+Ytz|NRSMnwhF$_pj@9e7=`Xs;p05aeuV)kU9~TgntZW>La)h zt?PCEuc?PfAY&K+ajKabDHfOvY11p3b-+r2|Fx4APXBwnFkfh)qIK9L-e~>#_vDu!Yge@p2h)O4sj9U|=TO6(6ePu6b0dMpl1^UAP^+u`0@_OVJ?w~qo!rZmRJd+rk{2< zcr|SGpe0gpJ(~&;kOFf1p=mkDM%QX|KVVn)S9?wEI0^WN5w90V_IekHjp0 zksK}UWTj-l%Xd08L>sycEGzXgIYr2diy1$!IAu@%mN)^J0c3JAGBglgnRHBaDKHCZ z2hl(%v=_`gw4X}D;3AL(l8d}1b&=d9PUxHhKsvXE(nf8H89csJn>hV+%7xkI@oGyI10tOJZD|b0) z35sfV5Qrcg4j!|E1qIlODe&yZ--_|6X5iCt_vkb2?hU13M&Z%7|6)0KYm}QHvM?I0 zH#MH<=_r*93ZX|G@Lj2huIoR*(3%-xS|JmG^gRPt2c@n6_qFXM^P z(#0%LgD|mF_&i_^!V+TEjONrm)qe71g_9Kd*<`uXtY$4N?FXf;ViQJl`1S<(0%N+;D2Wx-p1yWaoKBd`R4nodXxxrwdR@)E8IhyM&*NX2wPN=+7^qo1^3e}Me2!@^4Jgn6r;1+|f|j^gCx1e?w5bqAhpXRvVOQ4kYa8(9zpwr=Av9<}jtbzq}S0C7q0 z6t8q&dTAL99g%HaX&RwOftQg>#`bl6fW5Qx3p^Ed?sNI`o6gC}J#L^I3Zn~NfHbw6 z+vIN<-V5j=Y<{#^n(93s%;)z2;+6~;o;HMHSTe8IC^L`OXk^uRf zH$(+UwBi8J9Q3hk^(~=DVYbE)@&=vjD?`qL?642f>|cUdsxH|V?;;?FhhI8DvgnLf z_`iux3Z2h&6XHf!H*mUTn+Tddac{o5gBvKW#J^Go(&5rck@a~rPAtxFs8-AK7ajPd zNdcZKH!UvFX)mYlF`492r^Je7b8H0o$@1UY60cQ# z2!(p1$(8^7?f`fLm%CdriT#hJkk{%&rp3J%ZEtc&X;$>RhJGjKB>#tnrB1uYnc+;S zJWz9Q(YW&S;B9l_|LyPx;19&eA2!bKczk0oFp{xq)kvhh6w6yY^xO@mk(UcwT$Ag3 znNaw3SOqm5lMzff3+DVav{8V~dR1bBh(uHm^naWwvDV-c21};%-ae?zd&&ODnfvM^ zP2nb5TEQUyf*8;XfZid3svrWT^ZmLF%fR9X^fvb6&*MM5rc-%IaqcC*eg1M2YjX$# z5>%|FOfXR! zq2T09NjnKb+ankRyhvYY-X}l>dX|oB<;;ilpr-%I75}V}a23DJ^YxH^G(b{-Z7Q3- zL>Q^r3IYe{vuF!uq8>Q})l2Kg@yo{)jT{rt9i#<7?^0BK{ElP2|p+=?s z{15H&ehu&C_?Q-Ad%{M+gabWFUtPsiJ5uMW^{dW0ma9%wsNcTQ29Wvh0j>Wfa%B(w zfy0P>A14Z*9$~RRNQ7}0BT7~AD|J=90Zu?)Ebj1{mw9;mhh?P$lloLB*1L?X`sct4 zj1Bs=2q)f>!J+WYTNhQFu(kK)-KOI=8Cdx)emJx)1YSU#ZVyR<0cD48g3J3TZu4!7HRa#%Qc60<5-%q8`~#ILY0P!J@TxQ) zvl%3u&||j^7lHS35{Wc%R|YaByR)Vt%hC-=nWe{j^=u)7sTl}cf4U9An1Ii+>=@cq z>z+!Rr_T!_{ljHO)(9NYo8b+2(@!Fd`zSIUM^XIA>@yth`G)VxnD);O9h>lpoZDx9mXKfz9W4@9LwATXEr_;-_qt zp})C6@h_JgXOdH{Pd%IKi_F#KDcqLreAJch+*^`1PDe{^$;y+W-J8i|Le(StB{-tT zhmNA9+#R%7PAc*w{n)z^>S2RVhSk+;xF*L}?Ple%el_oQDZyw>yf2x`BW5&@%m1IJjn@LNYxGV=Yxdp0A&12C_DC6l@ z9g1;2gom`FtJ>!n1RQNL&ED=-zyU2sNkYKLJi3VNvM1Bfv^)9v_`<3wx-jE%e;@RP zK~ULKY}s%W387&Sk?riI0AA16RMGc(D}B4D($6YSqAbeJsV#I7h+>58F}pbkqrB%Y z(Sdb)FYIgWu~FO|4;>2m737+WO*aS>+nWaoY(>Af9d4$B<%R4XvV- zlM!f_3$?sBoCn7<2to13KAmShPEe_`o67DISS>?{QXmDH=q8j?YTe4I`@6)?ceTPv zze}EXYdKOO$a5-pW{`+Q+$i{7gv!pLh$u4|aViTQi_DHGdbv_=bhdt3l5*`DPH+1v z8^$fsqjG#I7f|1ULBZD(NOBbPft%G(2;(=6GT86q%I{8I>k>SVtUlL+A|T0x=gd=nFo$4g60 zaEu6oHIW4TrQt^xaR%FAv7t=b4f2%I?jA^1r#EO9AV~_q+)+JQdVDvzhR`x>)Ix{+9%GaK`v}$=q!E0%r&tU)G0wS<;egN%9cp?7wM&_o zuTR}t>kpnTQEHj3%nYU{nltUB*)}9*GDp4rI9)_@-2p;-bgT8`%uFdyqi~GQHQ4{u z^z`J^)B$#ezFVVV!1fv&8$0LeXSLMmUzD5s+u)$tqhSefU*#im2jg0Xm%K58d!QUA zsidTvV|1UVMgEypRA;AwKuMVY_F5nF*pQv=?d|G!4PxWsfY|sRPm?fjcyLS0@rxHP z%E`-1`nf;bgjfO?kI=_bBmAzdrn#YYWfBj@=-jKSYMz|Tp=h^x`uGS$Ka-G>Qu{GF zwW=ziu~CD3F9|A9uLcG#SXn)OsyMP8Dxf!xrOvHY>I=PISUpjvIa*|9ZqC8WYwhS5 zmYTYs?2>dEi*2c|N3pT7!A$t@%uHBvG7n^GZ#16c=HZc)l(bZcHH1)(YR;Reet@~H zz5U1`*WmWI4R04ZJ3FaVk8&Q2?xYA4B6Tusot>MempJ2XYAmibSQZu)0T=G=mJ8(- z6&&2$N7p$cRlNQEZS3uTvygZ?Gm}q|YpblQdpkeRjE{?BV`5_3aqU>FVWp*|Wx%mi zRk1jM_!C_N1FcVngk(nxs#z zudl~OR}L>P$3A<85sBFa$2~vq;_dD2*yI`&d)&8eV1Or5o96xd>chO@-7j9)$j4xf zjg3Q^MqqE-0#MV_)8zv4cTGiIJw0vRC7G`E<$rD(dI{YvgKHT%^a{F<(dMv>r j3RlbxM#cZ(OFt@+)tkZi)?G)z@}n>sC)Ep&Sp@zM>)DTs literal 0 HcmV?d00001 diff --git a/docs/lena_imagenet_files/lena_imagenet_34_0.text b/docs/lena_imagenet_files/lena_imagenet_34_0.text new file mode 100644 index 00000000000..15547e6865a --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_34_0.text @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_36_0.text b/docs/lena_imagenet_files/lena_imagenet_36_0.text new file mode 100644 index 00000000000..1f4f70709b9 --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_36_0.text @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_36_1.png b/docs/lena_imagenet_files/lena_imagenet_36_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4f04cbb3a10969c2fa6a922179dad1af01f874 GIT binary patch literal 12819 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_39_0.text b/docs/lena_imagenet_files/lena_imagenet_39_0.text new file mode 100644 index 00000000000..7592550f00b --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_39_0.text @@ -0,0 +1,3 @@ +['n02808304 bath towel' 'n02869837 bonnet, poke bonnet' + 'n03124170 cowboy hat, ten-gallon hat' 'n04259630 sombrero' + 'n04209133 shower cap'] diff --git a/docs/lena_imagenet_files/lena_imagenet_8_0.text b/docs/lena_imagenet_files/lena_imagenet_8_0.text new file mode 100644 index 00000000000..6ee93358dbd --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_8_0.text @@ -0,0 +1,15 @@ +[('data', (10, 3, 227, 227)), + ('conv1', (10, 96, 55, 55)), + ('pool1', (10, 96, 27, 27)), + ('norm1', (10, 96, 27, 27)), + ('conv2', (10, 256, 27, 27)), + ('pool2', (10, 256, 13, 13)), + ('norm2', (10, 256, 13, 13)), + ('conv3', (10, 384, 13, 13)), + ('conv4', (10, 384, 13, 13)), + ('conv5', (10, 256, 13, 13)), + ('pool5', (10, 256, 6, 6)), + ('fc6', (10, 4096, 1, 1)), + ('fc7', (10, 4096, 1, 1)), + ('fc8', (10, 1000, 1, 1)), + ('prob', (10, 1000, 1, 1))] \ No newline at end of file From 82c38b25cc558bd4ba216913b0ab1074bdd385d1 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 17 Mar 2014 22:54:48 -0700 Subject: [PATCH 088/113] Add comment explaining placement of system headers in C++ Python module --- python/caffe/_caffe.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index c1ef5f1ff2a..581a78d3db6 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -9,6 +9,7 @@ #include "boost/python/suite/indexing/vector_indexing_suite.hpp" #include "numpy/arrayobject.h" +// these need to be included after boost on OS X #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) From 895cd777e5d825ce657060b56068b314120e6439 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Tue, 11 Mar 2014 17:10:14 -0700 Subject: [PATCH 089/113] Raise Python exceptions if CaffeNet input files don't exist This is for convenience only; if the input files are moved or deleted at the wrong time, pycaffe could still crash (as it did before). However, in most cases this will make interactive use easier. --- python/caffe/_caffe.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 581a78d3db6..137cc283571 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -12,6 +12,7 @@ // these need to be included after boost on OS X #include // NOLINT(build/include_order) #include // NOLINT(build/include_order) +#include // NOLINT #include "caffe/caffe.hpp" @@ -122,6 +123,23 @@ class CaffeLayer { // A simple wrapper over CaffeNet that runs the forward process. struct CaffeNet { CaffeNet(string param_file, string pretrained_param_file) { + // for convenience, check that the input files can be opened, and raise + // an exception that boost will send to Python if not + // (this function could still crash if the input files are disturbed + // before Net construction) + std::ifstream f(param_file.c_str()); + if (!f.good()) { + f.close(); + throw std::runtime_error("Could not open file " + param_file); + } + f.close(); + f.open(pretrained_param_file.c_str()); + if (!f.good()) { + f.close(); + throw std::runtime_error("Could not open file " + pretrained_param_file); + } + f.close(); + net_.reset(new Net(param_file)); net_->CopyTrainedLayersFrom(pretrained_param_file); } From da3c9972bfc3ee302e7c4b091931ac088c317437 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 23:04:17 -0700 Subject: [PATCH 090/113] Draft CIFAR-10 doc and cleanup example This is a work-in-progress. A full tutorial should be written up at some point. --- docs/cifar10.md | 95 +++++ examples/cifar/TODO.md | 4 - examples/cifar/train_18pct.sh | 11 - examples/cifar/train_80sec.sh | 8 - examples/cifar10/cifar10_full.prototxt | 153 +++++++ .../cifar10_full_solver.prototxt} | 6 +- .../cifar10_full_solver_lr1.prototxt} | 6 +- .../cifar10_full_solver_lr2.prototxt} | 6 +- .../cifar10_full_test.prototxt} | 388 +++++++++--------- .../cifar10_full_train.prototxt} | 370 ++++++++--------- examples/cifar10/cifar10_quick.prototxt | 143 +++++++ .../cifar10_quick_solver.prototxt} | 6 +- .../cifar10_quick_solver_lr1.prototxt} | 6 +- .../cifar10_quick_test.prototxt} | 384 ++++++++--------- .../cifar10_quick_train.prototxt} | 366 ++++++++--------- .../{cifar => cifar10}/convert_cifar_data.cpp | 0 examples/{cifar => cifar10}/create_cifar10.sh | 0 examples/cifar10/train_full.sh | 11 + examples/cifar10/train_quick.sh | 8 + 19 files changed, 1179 insertions(+), 792 deletions(-) create mode 100644 docs/cifar10.md delete mode 100644 examples/cifar/TODO.md delete mode 100755 examples/cifar/train_18pct.sh delete mode 100755 examples/cifar/train_80sec.sh create mode 100644 examples/cifar10/cifar10_full.prototxt rename examples/{cifar/cifar10_18pct_solver.prototxt => cifar10/cifar10_full_solver.prototxt} (88%) rename examples/{cifar/cifar10_18pct_solver_lr1.prototxt => cifar10/cifar10_full_solver_lr1.prototxt} (88%) rename examples/{cifar/cifar10_18pct_solver_lr2.prototxt => cifar10/cifar10_full_solver_lr2.prototxt} (88%) rename examples/{cifar/cifar10_18pct_test.prototxt => cifar10/cifar10_full_test.prototxt} (92%) rename examples/{cifar/cifar10_18pct_train.prototxt => cifar10/cifar10_full_train.prototxt} (92%) create mode 100644 examples/cifar10/cifar10_quick.prototxt rename examples/{cifar/cifar10_80sec_solver.prototxt => cifar10/cifar10_quick_solver.prototxt} (87%) rename examples/{cifar/cifar10_80sec_solver_lr1.prototxt => cifar10/cifar10_quick_solver_lr1.prototxt} (87%) rename examples/{cifar/cifar10_80sec_test.prototxt => cifar10/cifar10_quick_test.prototxt} (91%) rename examples/{cifar/cifar10_80sec_train.prototxt => cifar10/cifar10_quick_train.prototxt} (91%) rename examples/{cifar => cifar10}/convert_cifar_data.cpp (100%) rename examples/{cifar => cifar10}/create_cifar10.sh (100%) create mode 100755 examples/cifar10/train_full.sh create mode 100755 examples/cifar10/train_quick.sh diff --git a/docs/cifar10.md b/docs/cifar10.md new file mode 100644 index 00000000000..eb45e644eca --- /dev/null +++ b/docs/cifar10.md @@ -0,0 +1,95 @@ +--- +layout: default +title: Caffe +--- + +Alex's CIFAR-10 tutorial, Caffe style +===================================== + +Alex Krizhevsky's [cuda-convnet](https://code.google.com/p/cuda-convnet/) details the model definitions, parameters, and training procedure for good performance on CIFAR-10. This example reproduces his results in Caffe. + +We will assume that you have Caffe successfully compiled. If not, please refer to the [Installation page](installation.html). In this tutorial, we will assume that your caffe installation is located at `CAFFE_ROOT`. + +We thank @chyojn for the pull request that defined the model schemas and solver configurations. + +*This example is a work-in-progress. It would be nice to further explain details of the network and training choices and benchmark the full training.* + +Prepare the Dataset +------------------- + +You will first need to download and convert the data format from the [CIFAR-10 website](http://www.cs.toronto.edu/~kriz/cifar.html). To do this, simply run the following commands: + + cd $CAFFE_ROOT/data/cifar10 + ./get_cifar10.sh + cd $CAFFE_ROOT/examples/cifar10 + ./create_cifar10.sh + +If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be the dataset, `./cifar10-leveldb`, and the data set image mean `./mean.binaryproto`. + +The Model +--------- + +The CIFAR-10 model is a CNN that composes layers of convolution, pooling, rectified linear unit (ReLU) nonlinearities, and local contrast normalization with a linear classifier on top of it all. We have defined the model in the `CAFFE_ROOT/examples/cifar10` directory's `cifar10_quick_train.prototxt`. + +Training and Testing the "Quick" Model +-------------------------------------- + +Training the model is simple after you have written the network definition protobuf and solver protobuf files. Simply run `train_quick.sh`, or the following command directly: + + cd $CAFFE_ROOT/examples/cifar10 + ./train_quick.sh + +`train_quick.sh` is a simple script, so have a look inside. `GLOG_logtostderr=1` is the google logging flag that prints all the logging messages directly to stderr. The main tool for training is `train_net.bin`, with the solver protobuf text file as its argument. + +When you run the code, you will see a lot of messages flying by like this: + + I0317 21:52:48.945710 2008298256 net.cpp:74] Creating Layer conv1 + I0317 21:52:48.945716 2008298256 net.cpp:84] conv1 <- data + I0317 21:52:48.945725 2008298256 net.cpp:110] conv1 -> conv1 + I0317 21:52:49.298691 2008298256 net.cpp:125] Top shape: 100 32 32 32 (3276800) + I0317 21:52:49.298719 2008298256 net.cpp:151] conv1 needs backward computation. + +These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start: + + I0317 21:52:49.309370 2008298256 net.cpp:166] Network initialization done. + I0317 21:52:49.309376 2008298256 net.cpp:167] Memory required for Data 23790808 + I0317 21:52:49.309422 2008298256 solver.cpp:36] Solver scaffolding done. + I0317 21:52:49.309447 2008298256 solver.cpp:47] Solving CIFAR10_quick_train + +Based on the solver setting, we will print the training loss function every 100 iterations, and test the network every 500 iterations. You will see messages like this: + + I0317 21:53:12.179772 2008298256 solver.cpp:208] Iteration 100, lr = 0.001 + I0317 21:53:12.185698 2008298256 solver.cpp:65] Iteration 100, loss = 1.73643 + ... + I0317 21:54:41.150030 2008298256 solver.cpp:87] Iteration 500, Testing net + I0317 21:54:47.129461 2008298256 solver.cpp:114] Test score #0: 0.5504 + I0317 21:54:47.129500 2008298256 solver.cpp:114] Test score #1: 1.27805 + +For each training iteration, `lr` is the learning rate of that iteration, and `loss` is the training function. For the output of the testing phase, **score 0 is the accuracy**, and **score 1 is the testing loss function**. + +And after making yourself a cup of coffee, you are done! + + I0317 22:12:19.666914 2008298256 solver.cpp:87] Iteration 5000, Testing net + I0317 22:12:25.580330 2008298256 solver.cpp:114] Test score #0: 0.7533 + I0317 22:12:25.580379 2008298256 solver.cpp:114] Test score #1: 0.739837 + I0317 22:12:25.587262 2008298256 solver.cpp:130] Snapshotting to cifar10_quick_iter_5000 + I0317 22:12:25.590215 2008298256 solver.cpp:137] Snapshotting solver state to cifar10_quick_iter_5000.solverstate + I0317 22:12:25.592813 2008298256 solver.cpp:81] Optimization Done. + +Our model achieved ~75% test accuracy. The model parameters are stored in binary protobuf format in + + cifar10_quick_iter_5000 + +which is ready-to-deploy in CPU or GPU mode! Refer to the `CAFFE_ROOT/examples/cifar10/cifar10_quick.prototxt` for the deployment model definition that can be called on new data. + +Why train on a GPU? +------------------- + +CIFAR-10, while still small, has enough data to make GPU training attractive. + +To compare CPU vs. GPU training speed, simply change one line in all the `cifar*solver.prototxt`: + + # solver mode: 0 for CPU and 1 for GPU + solver_mode: 0 + +and you will be using CPU for training. diff --git a/examples/cifar/TODO.md b/examples/cifar/TODO.md deleted file mode 100644 index 5e8dd277907..00000000000 --- a/examples/cifar/TODO.md +++ /dev/null @@ -1,4 +0,0 @@ -# CIFAR-10 - -Contributing a CIFAR-10 example would be welcome! A benchmark against -cuda-convnet could be interesting too. diff --git a/examples/cifar/train_18pct.sh b/examples/cifar/train_18pct.sh deleted file mode 100755 index 6a562ec2f37..00000000000 --- a/examples/cifar/train_18pct.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env sh - -TOOLS=../../build/tools - -GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver.prototxt - -#reduce learning rate by factor of 10 -GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver_lr1.prototxt cifar10_18pct_iter_60000.solverstate - -#reduce learning rate by factor of 10 -GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_18pct_solver_lr2.prototxt cifar10_18pct_iter_65000.solverstate diff --git a/examples/cifar/train_80sec.sh b/examples/cifar/train_80sec.sh deleted file mode 100755 index a55a870c372..00000000000 --- a/examples/cifar/train_80sec.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env sh - -TOOLS=../../build/tools - -GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_80sec_solver.prototxt - -#reduce learning rate by fctor of 10 after 8 epochs -GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_80sec_solver_lr1.prototxt cifar10_80sec_iter_4000.solverstate diff --git a/examples/cifar10/cifar10_full.prototxt b/examples/cifar10/cifar10_full.prototxt new file mode 100644 index 00000000000..64fb2a8de85 --- /dev/null +++ b/examples/cifar10/cifar10_full.prototxt @@ -0,0 +1,153 @@ +name: "CIFAR10_full_deploy" +# N.B. input image must be in CIFAR-10 format +# as described at http://www.cs.toronto.edu/~kriz/cifar.html +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 32 +input_dim: 32 +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +layers { + layer { + name: "norm1" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool1" + top: "norm1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "norm1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +layers { + layer { + name: "norm2" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool2" + top: "norm2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + } + bottom: "norm2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 10 + blobs_lr: 1. + blobs_lr: 2. + weight_decay: 250. + weight_decay: 0. + } + bottom: "pool3" + top: "ip1" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip1" + top: "prob" +} diff --git a/examples/cifar/cifar10_18pct_solver.prototxt b/examples/cifar10/cifar10_full_solver.prototxt similarity index 88% rename from examples/cifar/cifar10_18pct_solver.prototxt rename to examples/cifar10/cifar10_full_solver.prototxt index 667445ba392..b985b65d9da 100644 --- a/examples/cifar/cifar10_18pct_solver.prototxt +++ b/examples/cifar10/cifar10_full_solver.prototxt @@ -2,9 +2,9 @@ # then another factor of 10 after 10 more epochs (5000 iters) # The training protocol buffer definition -train_net: "cifar10_18pct_train.prototxt" +train_net: "cifar10_full_train.prototxt" # The testing protocol buffer definition -test_net: "cifar10_18pct_test.prototxt" +test_net: "cifar10_full_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of CIFAR10, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -23,6 +23,6 @@ display: 200 max_iter: 60000 # snapshot intermediate results snapshot: 10000 -snapshot_prefix: "cifar10_18pct" +snapshot_prefix: "cifar10_full" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_18pct_solver_lr1.prototxt b/examples/cifar10/cifar10_full_solver_lr1.prototxt similarity index 88% rename from examples/cifar/cifar10_18pct_solver_lr1.prototxt rename to examples/cifar10/cifar10_full_solver_lr1.prototxt index d9b3c9b1f02..9f5f466f501 100644 --- a/examples/cifar/cifar10_18pct_solver_lr1.prototxt +++ b/examples/cifar10/cifar10_full_solver_lr1.prototxt @@ -2,9 +2,9 @@ # then another factor of 10 after 10 more epochs (5000 iters) # The training protocol buffer definition -train_net: "cifar10_18pct_train.prototxt" +train_net: "cifar10_full_train.prototxt" # The testing protocol buffer definition -test_net: "cifar10_18pct_test.prototxt" +test_net: "cifar10_full_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of CIFAR10, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -23,6 +23,6 @@ display: 200 max_iter: 65000 # snapshot intermediate results snapshot: 5000 -snapshot_prefix: "cifar10_18pct" +snapshot_prefix: "cifar10_full" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_18pct_solver_lr2.prototxt b/examples/cifar10/cifar10_full_solver_lr2.prototxt similarity index 88% rename from examples/cifar/cifar10_18pct_solver_lr2.prototxt rename to examples/cifar10/cifar10_full_solver_lr2.prototxt index 15e9c2beb1a..785dffe0359 100644 --- a/examples/cifar/cifar10_18pct_solver_lr2.prototxt +++ b/examples/cifar10/cifar10_full_solver_lr2.prototxt @@ -2,9 +2,9 @@ # then another factor of 10 after 10 more epochs (5000 iters) # The training protocol buffer definition -train_net: "cifar10_18pct_train.prototxt" +train_net: "cifar10_full_train.prototxt" # The testing protocol buffer definition -test_net: "cifar10_18pct_test.prototxt" +test_net: "cifar10_full_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of CIFAR10, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -23,6 +23,6 @@ display: 200 max_iter: 70000 # snapshot intermediate results snapshot: 5000 -snapshot_prefix: "cifar10_18pct" +snapshot_prefix: "cifar10_full" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_18pct_test.prototxt b/examples/cifar10/cifar10_full_test.prototxt similarity index 92% rename from examples/cifar/cifar10_18pct_test.prototxt rename to examples/cifar10/cifar10_full_test.prototxt index 8b6c0ff8dc7..a77c7d268da 100644 --- a/examples/cifar/cifar10_18pct_test.prototxt +++ b/examples/cifar10/cifar10_full_test.prototxt @@ -1,194 +1,194 @@ -name: "CIFAR10_18pct_test" -layers { - layer { - name: "cifar" - type: "data" - source: "cifar10-leveldb/cifar-test-leveldb" - meanfile: "mean.binaryproto" - batchsize: 100 - } - top: "data" - top: "label" -} -# ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "conv1" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.0001 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - } - bottom: "data" - top: "conv1" -} -layers { - layer { - name: "pool1" - type: "pool" - kernelsize: 3 - stride: 2 - pool: MAX - } - bottom: "conv1" - top: "pool1" -} -layers { - layer { - name: "relu1" - type: "relu" - } - bottom: "pool1" - top: "pool1" -} -layers { - layer { - name: "norm1" - type: "lrn" - local_size: 3 - alpha: 0.00005 - beta: 0.75 - } - bottom: "pool1" - top: "norm1" -} -# --------------------------- layer 2 ------------------------ -layers { - layer { - name: "conv2" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - } - bottom: "norm1" - top: "conv2" -} -layers { - layer { - name: "relu2" - type: "relu" - } - bottom: "conv2" - top: "conv2" -} -layers { - layer { - name: "pool2" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv2" - top: "pool2" -} -layers { - layer { - name: "norm2" - type: "lrn" - local_size: 3 - alpha: 0.00005 - beta: 0.75 - } - bottom: "pool2" - top: "norm2" -} -#-----------------------layer 3------------------------- -layers { - layer { - name: "conv3" - type: "conv" - num_output: 64 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - } - bottom: "norm2" - top: "conv3" -} -layers { - layer { - name: "relu3" - type: "relu" - } - bottom: "conv3" - top: "conv3" -} -layers { - layer { - name: "pool3" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv3" - top: "pool3" -} -#--------------------------layer 4------------------------ -layers { - layer { - name: "ip1" - type: "innerproduct" - num_output: 10 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - weight_decay: 250. - weight_decay: 0. - } - bottom: "pool3" - top: "ip1" -} -#-----------------------output------------------------ -layers { - layer { - name: "prob" - type: "softmax" - } - bottom: "ip1" - top: "prob" -} -layers { - layer { - name: "accuracy" - type: "accuracy" - } - bottom: "prob" - bottom: "label" - top: "accuracy" -} +name: "CIFAR10_full_test" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10-leveldb/cifar-test-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +layers { + layer { + name: "norm1" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool1" + top: "norm1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "norm1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +layers { + layer { + name: "norm2" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool2" + top: "norm2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + bottom: "norm2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + weight_decay: 250. + weight_decay: 0. + } + bottom: "pool3" + top: "ip1" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip1" + top: "prob" +} +layers { + layer { + name: "accuracy" + type: "accuracy" + } + bottom: "prob" + bottom: "label" + top: "accuracy" +} diff --git a/examples/cifar/cifar10_18pct_train.prototxt b/examples/cifar10/cifar10_full_train.prototxt similarity index 92% rename from examples/cifar/cifar10_18pct_train.prototxt rename to examples/cifar10/cifar10_full_train.prototxt index d185f532c30..28e4612c04e 100644 --- a/examples/cifar/cifar10_18pct_train.prototxt +++ b/examples/cifar10/cifar10_full_train.prototxt @@ -1,185 +1,185 @@ -name: "CIFAR10_18pct_train" -layers { - layer { - name: "cifar" - type: "data" - source: "cifar10-leveldb/cifar-train-leveldb" - meanfile: "mean.binaryproto" - batchsize: 100 - } - top: "data" - top: "label" -} -# ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "conv1" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.0001 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - } - bottom: "data" - top: "conv1" -} -layers { - layer { - name: "pool1" - type: "pool" - kernelsize: 3 - stride: 2 - pool: MAX - } - bottom: "conv1" - top: "pool1" -} -layers { - layer { - name: "relu1" - type: "relu" - } - bottom: "pool1" - top: "pool1" -} -layers { - layer { - name: "norm1" - type: "lrn" - local_size: 3 - alpha: 0.00005 - beta: 0.75 - } - bottom: "pool1" - top: "norm1" -} -# --------------------------- layer 2 ------------------------ -layers { - layer { - name: "conv2" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - } - bottom: "norm1" - top: "conv2" -} -layers { - layer { - name: "relu2" - type: "relu" - } - bottom: "conv2" - top: "conv2" -} -layers { - layer { - name: "pool2" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv2" - top: "pool2" -} -layers { - layer { - name: "norm2" - type: "lrn" - local_size: 3 - alpha: 0.00005 - beta: 0.75 - } - bottom: "pool2" - top: "norm2" -} -#-----------------------layer 3------------------------- -layers { - layer { - name: "conv3" - type: "conv" - num_output: 64 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - } - bottom: "norm2" - top: "conv3" -} -layers { - layer { - name: "relu3" - type: "relu" - } - bottom: "conv3" - top: "conv3" -} -layers { - layer { - name: "pool3" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv3" - top: "pool3" -} -#--------------------------layer 4------------------------ -layers { - layer { - name: "ip1" - type: "innerproduct" - num_output: 10 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1. - blobs_lr: 2. - weight_decay: 250. - weight_decay: 0. - } - bottom: "pool3" - top: "ip1" -} -#-----------------------output------------------------ -layers { - layer { - name: "loss" - type: "softmax_loss" - } - bottom: "ip1" - bottom: "label" -} +name: "CIFAR10_full_train" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10-leveldb/cifar-train-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +layers { + layer { + name: "norm1" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool1" + top: "norm1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + } + bottom: "norm1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +layers { + layer { + name: "norm2" + type: "lrn" + local_size: 3 + alpha: 0.00005 + beta: 0.75 + } + bottom: "pool2" + top: "norm2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + } + bottom: "norm2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1. + blobs_lr: 2. + weight_decay: 250. + weight_decay: 0. + } + bottom: "pool3" + top: "ip1" +} +#-----------------------output------------------------ +layers { + layer { + name: "loss" + type: "softmax_loss" + } + bottom: "ip1" + bottom: "label" +} diff --git a/examples/cifar10/cifar10_quick.prototxt b/examples/cifar10/cifar10_quick.prototxt new file mode 100644 index 00000000000..6161caa10e8 --- /dev/null +++ b/examples/cifar10/cifar10_quick.prototxt @@ -0,0 +1,143 @@ +name: "CIFAR10_quick_test" +# N.B. input image must be in CIFAR-10 format +# as described at http://www.cs.toronto.edu/~kriz/cifar.html +input: "data" +input_dim: 1 +input_dim: 3 +input_dim: 32 +input_dim: 32 +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 64 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool3" + top: "ip1" +} +#--------------------------layer 5------------------------ +layers { + layer { + name: "ip2" + type: "innerproduct" + num_output: 10 + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "ip1" + top: "ip2" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip2" + top: "prob" +} diff --git a/examples/cifar/cifar10_80sec_solver.prototxt b/examples/cifar10/cifar10_quick_solver.prototxt similarity index 87% rename from examples/cifar/cifar10_80sec_solver.prototxt rename to examples/cifar10/cifar10_quick_solver.prototxt index e8b1d0774cc..32ba69de49a 100644 --- a/examples/cifar/cifar10_80sec_solver.prototxt +++ b/examples/cifar10/cifar10_quick_solver.prototxt @@ -1,9 +1,9 @@ # reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 # The training protocol buffer definition -train_net: "cifar10_80sec_train.prototxt" +train_net: "cifar10_quick_train.prototxt" # The testing protocol buffer definition -test_net: "cifar10_80sec_test.prototxt" +test_net: "cifar10_quick_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -22,6 +22,6 @@ display: 100 max_iter: 4000 # snapshot intermediate results snapshot: 4000 -snapshot_prefix: "cifar10_80sec" +snapshot_prefix: "cifar10_quick" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_80sec_solver_lr1.prototxt b/examples/cifar10/cifar10_quick_solver_lr1.prototxt similarity index 87% rename from examples/cifar/cifar10_80sec_solver_lr1.prototxt rename to examples/cifar10/cifar10_quick_solver_lr1.prototxt index 763b5d34478..1f369cc2351 100644 --- a/examples/cifar/cifar10_80sec_solver_lr1.prototxt +++ b/examples/cifar10/cifar10_quick_solver_lr1.prototxt @@ -1,9 +1,9 @@ # reduce the learning rate after 8 epochs (4000 iters) by a factor of 10 # The training protocol buffer definition -train_net: "cifar10_80sec_train.prototxt" +train_net: "cifar10_quick_train.prototxt" # The testing protocol buffer definition -test_net: "cifar10_80sec_test.prototxt" +test_net: "cifar10_quick_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. @@ -22,6 +22,6 @@ display: 100 max_iter: 5000 # snapshot intermediate results snapshot: 5000 -snapshot_prefix: "cifar10_80sec" +snapshot_prefix: "cifar10_quick" # solver mode: 0 for CPU and 1 for GPU solver_mode: 1 diff --git a/examples/cifar/cifar10_80sec_test.prototxt b/examples/cifar10/cifar10_quick_test.prototxt similarity index 91% rename from examples/cifar/cifar10_80sec_test.prototxt rename to examples/cifar10/cifar10_quick_test.prototxt index 71714da3853..a937df57d00 100644 --- a/examples/cifar/cifar10_80sec_test.prototxt +++ b/examples/cifar10/cifar10_quick_test.prototxt @@ -1,192 +1,192 @@ -# 80sec config -name: "CIFAR10_80sec_test" -layers { - layer { - name: "cifar" - type: "data" - source: "cifar10-leveldb/cifar-test-leveldb" - meanfile: "mean.binaryproto" - batchsize: 100 - } - top: "data" - top: "label" -} -# ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "conv1" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.0001 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "data" - top: "conv1" -} -layers { - layer { - name: "pool1" - type: "pool" - kernelsize: 3 - stride: 2 - pool: MAX - } - bottom: "conv1" - top: "pool1" -} -layers { - layer { - name: "relu1" - type: "relu" - } - bottom: "pool1" - top: "pool1" -} -# --------------------------- layer 2 ------------------------ -layers { - layer { - name: "conv2" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool1" - top: "conv2" -} -layers { - layer { - name: "relu2" - type: "relu" - } - bottom: "conv2" - top: "conv2" -} -layers { - layer { - name: "pool2" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv2" - top: "pool2" -} -#-----------------------layer 3------------------------- -layers { - layer { - name: "conv3" - type: "conv" - num_output: 64 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool2" - top: "conv3" -} -layers { - layer { - name: "relu3" - type: "relu" - } - bottom: "conv3" - top: "conv3" -} -layers { - layer { - name: "pool3" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv3" - top: "pool3" -} -#--------------------------layer 4------------------------ -layers { - layer { - name: "ip1" - type: "innerproduct" - num_output: 64 - weight_filler { - type: "gaussian" - std: 0.1 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool3" - top: "ip1" -} -#--------------------------layer 5------------------------ -layers { - layer { - name: "ip2" - type: "innerproduct" - num_output: 10 - weight_filler { - type: "gaussian" - std: 0.1 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "ip1" - top: "ip2" -} -#-----------------------output------------------------ -layers { - layer { - name: "prob" - type: "softmax" - } - bottom: "ip2" - top: "prob" -} -layers { - layer { - name: "accuracy" - type: "accuracy" - } - bottom: "prob" - bottom: "label" - top: "accuracy" -} +# quick config +name: "CIFAR10_quick_test" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10-leveldb/cifar-test-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 64 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool3" + top: "ip1" +} +#--------------------------layer 5------------------------ +layers { + layer { + name: "ip2" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "ip1" + top: "ip2" +} +#-----------------------output------------------------ +layers { + layer { + name: "prob" + type: "softmax" + } + bottom: "ip2" + top: "prob" +} +layers { + layer { + name: "accuracy" + type: "accuracy" + } + bottom: "prob" + bottom: "label" + top: "accuracy" +} diff --git a/examples/cifar/cifar10_80sec_train.prototxt b/examples/cifar10/cifar10_quick_train.prototxt similarity index 91% rename from examples/cifar/cifar10_80sec_train.prototxt rename to examples/cifar10/cifar10_quick_train.prototxt index 624d98800a3..2d3a10a6c7f 100644 --- a/examples/cifar/cifar10_80sec_train.prototxt +++ b/examples/cifar10/cifar10_quick_train.prototxt @@ -1,183 +1,183 @@ -# 80sec config -name: "CIFAR10_80sec_train" -layers { - layer { - name: "cifar" - type: "data" - source: "cifar10-leveldb/cifar-train-leveldb" - meanfile: "mean.binaryproto" - batchsize: 100 - } - top: "data" - top: "label" -} -# ------------------------ layer 1 ----------------------------- -layers { - layer { - name: "conv1" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.0001 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "data" - top: "conv1" -} -layers { - layer { - name: "pool1" - type: "pool" - kernelsize: 3 - stride: 2 - pool: MAX - } - bottom: "conv1" - top: "pool1" -} -layers { - layer { - name: "relu1" - type: "relu" - } - bottom: "pool1" - top: "pool1" -} -# --------------------------- layer 2 ------------------------ -layers { - layer { - name: "conv2" - type: "conv" - num_output: 32 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool1" - top: "conv2" -} -layers { - layer { - name: "relu2" - type: "relu" - } - bottom: "conv2" - top: "conv2" -} -layers { - layer { - name: "pool2" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv2" - top: "pool2" -} -#-----------------------layer 3------------------------- -layers { - layer { - name: "conv3" - type: "conv" - num_output: 64 - kernelsize: 5 - pad: 2 - stride: 1 - weight_filler { - type: "gaussian" - std: 0.01 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool2" - top: "conv3" -} -layers { - layer { - name: "relu3" - type: "relu" - } - bottom: "conv3" - top: "conv3" -} -layers { - layer { - name: "pool3" - type: "pool" - kernelsize: 3 - stride: 2 - pool: AVE - } - bottom: "conv3" - top: "pool3" -} -#--------------------------layer 4------------------------ -layers { - layer { - name: "ip1" - type: "innerproduct" - num_output: 64 - weight_filler { - type: "gaussian" - std: 0.1 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "pool3" - top: "ip1" -} -#--------------------------layer 5------------------------ -layers { - layer { - name: "ip2" - type: "innerproduct" - num_output: 10 - weight_filler { - type: "gaussian" - std: 0.1 - } - bias_filler { - type: "constant" - } - blobs_lr: 1.0 - blobs_lr: 2.0 - } - bottom: "ip1" - top: "ip2" -} -#-----------------------output------------------------ -layers { - layer { - name: "loss" - type: "softmax_loss" - } - bottom: "ip2" - bottom: "label" -} +# quick config +name: "CIFAR10_quick_train" +layers { + layer { + name: "cifar" + type: "data" + source: "cifar10-leveldb/cifar-train-leveldb" + meanfile: "mean.binaryproto" + batchsize: 100 + } + top: "data" + top: "label" +} +# ------------------------ layer 1 ----------------------------- +layers { + layer { + name: "conv1" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.0001 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "data" + top: "conv1" +} +layers { + layer { + name: "pool1" + type: "pool" + kernelsize: 3 + stride: 2 + pool: MAX + } + bottom: "conv1" + top: "pool1" +} +layers { + layer { + name: "relu1" + type: "relu" + } + bottom: "pool1" + top: "pool1" +} +# --------------------------- layer 2 ------------------------ +layers { + layer { + name: "conv2" + type: "conv" + num_output: 32 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool1" + top: "conv2" +} +layers { + layer { + name: "relu2" + type: "relu" + } + bottom: "conv2" + top: "conv2" +} +layers { + layer { + name: "pool2" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv2" + top: "pool2" +} +#-----------------------layer 3------------------------- +layers { + layer { + name: "conv3" + type: "conv" + num_output: 64 + kernelsize: 5 + pad: 2 + stride: 1 + weight_filler { + type: "gaussian" + std: 0.01 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool2" + top: "conv3" +} +layers { + layer { + name: "relu3" + type: "relu" + } + bottom: "conv3" + top: "conv3" +} +layers { + layer { + name: "pool3" + type: "pool" + kernelsize: 3 + stride: 2 + pool: AVE + } + bottom: "conv3" + top: "pool3" +} +#--------------------------layer 4------------------------ +layers { + layer { + name: "ip1" + type: "innerproduct" + num_output: 64 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "pool3" + top: "ip1" +} +#--------------------------layer 5------------------------ +layers { + layer { + name: "ip2" + type: "innerproduct" + num_output: 10 + weight_filler { + type: "gaussian" + std: 0.1 + } + bias_filler { + type: "constant" + } + blobs_lr: 1.0 + blobs_lr: 2.0 + } + bottom: "ip1" + top: "ip2" +} +#-----------------------output------------------------ +layers { + layer { + name: "loss" + type: "softmax_loss" + } + bottom: "ip2" + bottom: "label" +} diff --git a/examples/cifar/convert_cifar_data.cpp b/examples/cifar10/convert_cifar_data.cpp similarity index 100% rename from examples/cifar/convert_cifar_data.cpp rename to examples/cifar10/convert_cifar_data.cpp diff --git a/examples/cifar/create_cifar10.sh b/examples/cifar10/create_cifar10.sh similarity index 100% rename from examples/cifar/create_cifar10.sh rename to examples/cifar10/create_cifar10.sh diff --git a/examples/cifar10/train_full.sh b/examples/cifar10/train_full.sh new file mode 100755 index 00000000000..1767da6798d --- /dev/null +++ b/examples/cifar10/train_full.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +TOOLS=../../build/tools + +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_full_solver.prototxt + +#reduce learning rate by factor of 10 +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_full_solver_lr1.prototxt cifar10_full_iter_60000.solverstate + +#reduce learning rate by factor of 10 +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_full_solver_lr2.prototxt cifar10_full_iter_65000.solverstate diff --git a/examples/cifar10/train_quick.sh b/examples/cifar10/train_quick.sh new file mode 100755 index 00000000000..1d954b5935e --- /dev/null +++ b/examples/cifar10/train_quick.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env sh + +TOOLS=../../build/tools + +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_quick_solver.prototxt + +#reduce learning rate by fctor of 10 after 8 epochs +GLOG_logtostderr=1 $TOOLS/train_net.bin cifar10_quick_solver_lr1.prototxt cifar10_quick_iter_4000.solverstate From 3537728bac252fa3a55626d9129fa7dc9e3013d5 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 23:29:54 -0700 Subject: [PATCH 091/113] fix style bugs in new layers' proto fields --- src/caffe/proto/caffe.proto | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/caffe/proto/caffe.proto b/src/caffe/proto/caffe.proto index 75f958bc495..e0bccdde70c 100644 --- a/src/caffe/proto/caffe.proto +++ b/src/caffe/proto/caffe.proto @@ -80,8 +80,8 @@ message LayerParameter { // The blobs containing the numeric parameters of the layer repeated BlobProto blobs = 50; - // The ratio that is multiplied on the global learning rate. If you want to set - // the learning ratio for one blob, you need to set it for all blobs. + // The ratio that is multiplied on the global learning rate. If you want to + // set the learning ratio for one blob, you need to set it for all blobs. repeated float blobs_lr = 51; // The weight decay that is multiplied on the global weight decay. repeated float weight_decay = 52; @@ -92,20 +92,20 @@ message LayerParameter { // be larger than the number of keys in the leveldb. optional uint32 rand_skip = 53 [ default = 0 ]; - // For the Reshape Layer one need to specify the new dimensions - optional int32 new_num = 60 [ default = 0 ]; - optional int32 new_channels = 61 [ default = 0 ]; - optional int32 new_height = 62 [ default = 0 ]; - optional int32 new_width = 63 [ default = 0 ]; + // For ReshapeLayer, one needs to specify the new dimensions. + optional int32 new_num = 60 [default = 0]; + optional int32 new_channels = 61 [default = 0]; + optional int32 new_height = 62 [default = 0]; + optional int32 new_width = 63 [default = 0]; - // Used by ImageLayer to shuffle the list of files at every epoch. - // It will also resize images if new_height or new_width are not zero - optional bool shuffle_images = 64 [ default = false ]; + // Whether or not ImageLayer should shuffle the list of files at every epoch. + // It will also resize images if new_height or new_width are not zero. + optional bool shuffle_images = 64 [default = false]; - // ConcatLayer needs the dimension along which to concatenate, and + // For ConcatLayer, one needs to specify the dimension for concatenation, and // the other dimensions must be the same for all the bottom blobs. // By default it will concatenate blobs along the channels dimension. - optional uint32 concat_dim = 65 [ default = 1 ]; + optional uint32 concat_dim = 65 [default = 1]; } message LayerConnection { From ce7b3758cd4d22ffa42a59913ac43a93e073b19c Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 17 Mar 2014 23:30:10 -0700 Subject: [PATCH 092/113] sort layer factory's list alphabetically --- src/caffe/layer_factory.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/caffe/layer_factory.cpp b/src/caffe/layer_factory.cpp index be8cb7e4204..1002c599d72 100644 --- a/src/caffe/layer_factory.cpp +++ b/src/caffe/layer_factory.cpp @@ -23,22 +23,22 @@ Layer* GetLayer(const LayerParameter& param) { return new AccuracyLayer(param); } else if (type == "bnll") { return new BNLLLayer(param); - } else if (type == "conv") { - return new ConvolutionLayer(param); } else if (type == "concat") { return new ConcatLayer(param); + } else if (type == "conv") { + return new ConvolutionLayer(param); } else if (type == "data") { return new DataLayer(param); - } else if (type == "hdf5_data") { - return new HDF5DataLayer(param); - } else if (type == "images") { - return new ImagesLayer(param); } else if (type == "dropout") { return new DropoutLayer(param); } else if (type == "euclidean_loss") { return new EuclideanLossLayer(param); } else if (type == "flatten") { return new FlattenLayer(param); + } else if (type == "hdf5_data") { + return new HDF5DataLayer(param); + } else if (type == "images") { + return new ImagesLayer(param); } else if (type == "im2col") { return new Im2colLayer(param); } else if (type == "infogain_loss") { @@ -47,14 +47,14 @@ Layer* GetLayer(const LayerParameter& param) { return new InnerProductLayer(param); } else if (type == "lrn") { return new LRNLayer(param); + } else if (type == "multinomial_logistic_loss") { + return new MultinomialLogisticLossLayer(param); } else if (type == "padding") { return new PaddingLayer(param); } else if (type == "pool") { return new PoolingLayer(param); } else if (type == "relu") { return new ReLULayer(param); - } else if (type == "tanh") { - return new TanHLayer(param); } else if (type == "sigmoid") { return new SigmoidLayer(param); } else if (type == "softmax") { @@ -63,8 +63,8 @@ Layer* GetLayer(const LayerParameter& param) { return new SoftmaxWithLossLayer(param); } else if (type == "split") { return new SplitLayer(param); - } else if (type == "multinomial_logistic_loss") { - return new MultinomialLogisticLossLayer(param); + } else if (type == "tanh") { + return new TanHLayer(param); } else { LOG(FATAL) << "Unknown layer name: " << type; } From ffcdb035a09909a47320dfcfde3519331c33b0fe Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 18 Mar 2014 00:21:01 -0700 Subject: [PATCH 093/113] link draft CIFAR-10 example --- docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/index.md b/docs/index.md index c9042355aa6..9877fba3322 100644 --- a/docs/index.md +++ b/docs/index.md @@ -34,6 +34,7 @@ Quick Links * [Installation](installation.html): Instructions on installing Caffe (tested on Ubuntu 12.04, but works on Red Hat, OS X, etc.). * [Development](development.html): Guidelines for development and contributing to Caffe. * [MNIST Demo](mnist.html): example of end-to-end training and testing on the MNIST data. +* [CIFAR-10 Demo](cifar10.html): example of training and testing on the CIFAR-10 data. * [Training ImageNet](imagenet_training.html): tutorial on end-to-end training of an ImageNet classifier. * [Running Pretrained ImageNet](imagenet_pretrained.html): simply runs in Python! * [Running Detection](imagenet_detection.html): run a pretrained model as a detector. From e0e411046ba8c98459f950178f0391a9790396f7 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Tue, 18 Mar 2014 00:23:29 -0700 Subject: [PATCH 094/113] minor mnist example update --- docs/index.md | 2 +- docs/mnist.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 9877fba3322..49dea0e23f5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -33,7 +33,7 @@ Quick Links * [Presentation](caffe-presentation.pdf): The Caffe presentation, *updated 03/14*. * [Installation](installation.html): Instructions on installing Caffe (tested on Ubuntu 12.04, but works on Red Hat, OS X, etc.). * [Development](development.html): Guidelines for development and contributing to Caffe. -* [MNIST Demo](mnist.html): example of end-to-end training and testing on the MNIST data. +* [LeNet / MNIST Demo](mnist.html): example of end-to-end training and testing of LeNet on MNIST. * [CIFAR-10 Demo](cifar10.html): example of training and testing on the CIFAR-10 data. * [Training ImageNet](imagenet_training.html): tutorial on end-to-end training of an ImageNet classifier. * [Running Pretrained ImageNet](imagenet_pretrained.html): simply runs in Python! diff --git a/docs/mnist.md b/docs/mnist.md index d23c263d04c..c97f3cfe9e1 100644 --- a/docs/mnist.md +++ b/docs/mnist.md @@ -18,7 +18,7 @@ You will first need to download and convert the data format from the MNIST websi cd $CAFFE_ROOT/examples/lenet ./create_mnist.sh -If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be two datasets, `CAFFE_ROOT/data/mnist-train-leveldb`, and `CAFFE_ROOT/data/mnist-test-leveldb`. +If it complains that `wget` or `gunzip` are not installed, you need to install them respectively. After running the script there should be two datasets, `mnist-train-leveldb`, and `mnist-test-leveldb`. LeNet: the MNIST Classification Model ------------------------------------- From 53f1ef3af2f3a1a7a0b5f2c64dcde83066e04ff3 Mon Sep 17 00:00:00 2001 From: Kai Li Date: Mon, 17 Mar 2014 15:55:47 +0800 Subject: [PATCH 095/113] Display total num of processed files after computing image mean --- tools/compute_image_mean.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/compute_image_mean.cpp b/tools/compute_image_mean.cpp index 3e6b9114b46..d1739dac680 100644 --- a/tools/compute_image_mean.cpp +++ b/tools/compute_image_mean.cpp @@ -66,6 +66,9 @@ int main(int argc, char** argv) { LOG(ERROR) << "Processed " << count << " files."; } } + if (count % 10000 != 0) { + LOG(ERROR) << "Processed " << count << " files."; + } for (int i = 0; i < sum_blob.data_size(); ++i) { sum_blob.set_data(i, sum_blob.data(i) / count); } From 9b9eb7af01af5c8683d51f5383b2eed63953a778 Mon Sep 17 00:00:00 2001 From: Kai Li Date: Mon, 17 Mar 2014 14:33:13 +0800 Subject: [PATCH 096/113] Avoid repeatedly downloading caffe reference imagenet model --- models/get_caffe_reference_imagenet_model.sh | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/models/get_caffe_reference_imagenet_model.sh b/models/get_caffe_reference_imagenet_model.sh index af60cb6b01b..6c59472f553 100755 --- a/models/get_caffe_reference_imagenet_model.sh +++ b/models/get_caffe_reference_imagenet_model.sh @@ -2,8 +2,22 @@ # This scripts downloads the caffe reference imagenet model # for ilsvrc image classification and deep feature extraction +MODEL=caffe_reference_imagenet_model +CHECKSUM=bf44bac4a59aa7792b296962fe483f2b + +if [ -f $MODEL ]; then + echo "Model already exists. Checking md5..." + checksum=`md5sum $MODEL | awk '{ print $1 }'` + if [ "$checksum" = "$CHECKSUM" ]; then + echo "Model checksum is correct. No need to download." + exit 0 + else + echo "Model checksum is incorrect. Need to download again." + fi +fi + echo "Downloading..." -wget -q https://www.dropbox.com/s/n3jups0gr7uj0dv/caffe_reference_imagenet_model +wget -q https://www.dropbox.com/s/n3jups0gr7uj0dv/$MODEL -echo "Done. Please check that the checksum = bf44bac4a59aa7792b296962fe483f2b." +echo "Done. Please check that the checksum = $CHECKSUM." From 41a126d9905f01c57a70690b3e642758fea4d569 Mon Sep 17 00:00:00 2001 From: Kai Li Date: Tue, 18 Mar 2014 16:12:35 +0800 Subject: [PATCH 097/113] Add support for md5 checksum on OS X --- models/get_caffe_reference_imagenet_model.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/models/get_caffe_reference_imagenet_model.sh b/models/get_caffe_reference_imagenet_model.sh index 6c59472f553..3342ea960f6 100755 --- a/models/get_caffe_reference_imagenet_model.sh +++ b/models/get_caffe_reference_imagenet_model.sh @@ -7,7 +7,12 @@ CHECKSUM=bf44bac4a59aa7792b296962fe483f2b if [ -f $MODEL ]; then echo "Model already exists. Checking md5..." - checksum=`md5sum $MODEL | awk '{ print $1 }'` + os=`uname -s` + if [ "$os" = "Linux" ]; then + checksum=`md5sum $MODEL | awk '{ print $1 }'` + elif [ "$os" = "Darwin" ]; then + checksum=`cat $MODEL | md5` + fi if [ "$checksum" = "$CHECKSUM" ]; then echo "Model checksum is correct. No need to download." exit 0 From bc37a0f4a1ea3ecc7629e471e523e8c6ee6fa093 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Tue, 18 Mar 2014 09:18:03 -0700 Subject: [PATCH 098/113] minor fix to caffe model DL script --- models/get_caffe_reference_imagenet_model.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/get_caffe_reference_imagenet_model.sh b/models/get_caffe_reference_imagenet_model.sh index 3342ea960f6..0d65dd685ee 100755 --- a/models/get_caffe_reference_imagenet_model.sh +++ b/models/get_caffe_reference_imagenet_model.sh @@ -23,6 +23,6 @@ fi echo "Downloading..." -wget -q https://www.dropbox.com/s/n3jups0gr7uj0dv/$MODEL +wget https://www.dropbox.com/s/n3jups0gr7uj0dv/$MODEL -echo "Done. Please check that the checksum = $CHECKSUM." +echo "Done. Please run this command again to verify that checksum = $CHECKSUM." From 34e04cf7a9904f2680818dab9c0818b9b63c8016 Mon Sep 17 00:00:00 2001 From: Sergey Karayev Date: Tue, 18 Mar 2014 11:17:51 -0700 Subject: [PATCH 099/113] removing notebooks in docs, updating instructions --- .gitignore | 3 +- docs/getting_pretrained_models.md | 16 + docs/imagenet_detection.md | 477 ------------------ docs/imagenet_pretrained.md | 125 ----- .../imagenet_pretrained_13_0.text | 1 - .../imagenet_pretrained_13_1.text | 1 - .../imagenet_pretrained_13_2.png | Bin 7503 -> 0 bytes .../imagenet_pretrained_13_2.text | 1 - .../imagenet_pretrained_15_0.text | 1 - .../imagenet_pretrained_7_0.text | 1 - .../imagenet_pretrained_7_1.text | 1 - .../imagenet_pretrained_7_2.png | Bin 7503 -> 0 bytes .../imagenet_pretrained_7_2.text | 1 - .../imagenet_pretrained_9_0.text | 1 - docs/images/arrow-down.png | Bin 423 -> 0 bytes docs/images/octocat-small.png | Bin 570 -> 0 bytes docs/index.md | 54 +- docs/lena_imagenet.md | 280 ---------- .../lena_imagenet_10_0.text | 8 - .../lena_imagenet_14_0.png | Bin 167280 -> 0 bytes .../lena_imagenet_14_0.text | 1 - .../lena_imagenet_16_0.png | Bin 48740 -> 0 bytes .../lena_imagenet_16_0.text | 1 - .../lena_imagenet_18_0.png | Bin 109734 -> 0 bytes .../lena_imagenet_18_0.text | 1 - .../lena_imagenet_20_0.png | Bin 106842 -> 0 bytes .../lena_imagenet_20_0.text | 1 - .../lena_imagenet_22_0.png | Bin 31815 -> 0 bytes .../lena_imagenet_22_0.text | 1 - .../lena_imagenet_24_0.png | Bin 69889 -> 0 bytes .../lena_imagenet_24_0.text | 1 - .../lena_imagenet_26_0.png | Bin 76025 -> 0 bytes .../lena_imagenet_26_0.text | 1 - .../lena_imagenet_28_0.png | Bin 28800 -> 0 bytes .../lena_imagenet_28_0.text | 1 - .../lena_imagenet_30_0.png | Bin 20702 -> 0 bytes .../lena_imagenet_30_0.text | 1 - .../lena_imagenet_32_0.png | Bin 22051 -> 0 bytes .../lena_imagenet_32_0.text | 1 - .../lena_imagenet_34_0.png | Bin 23550 -> 0 bytes .../lena_imagenet_34_0.text | 1 - .../lena_imagenet_36_0.text | 1 - .../lena_imagenet_36_1.png | Bin 12819 -> 0 bytes .../lena_imagenet_36_1.text | 1 - .../lena_imagenet_39_0.text | 3 - .../lena_imagenet_8_0.text | 15 - docs/license.md | 20 - .../selective_search_demo_11_0.text | 17 - .../selective_search_demo_11_1.text | 1 - .../selective_search_demo_11_2.png | Bin 132366 -> 0 bytes .../selective_search_demo_11_2.text | 1 - .../selective_search_demo_16_0.png | Bin 127070 -> 0 bytes .../selective_search_demo_16_0.text | 1 - .../selective_search_demo_1_0.text | 158 ------ .../selective_search_demo_3_0.text | 7 - .../selective_search_demo_5_0.text | 33 -- .../selective_search_demo_7_0.text | 1 - .../selective_search_demo_7_1.text | 1 - .../selective_search_demo_7_2.png | Bin 30776 -> 0 bytes .../selective_search_demo_7_2.text | 1 - .../selective_search_demo_9_0.text | 12 - ...genet.ipynb => filter_visualization.ipynb} | 60 ++- examples/filter_visualization/lena.png | Bin 473831 -> 0 bytes examples/selective_search_demo.ipynb | 235 ++++++++- 64 files changed, 312 insertions(+), 1238 deletions(-) create mode 100644 docs/getting_pretrained_models.md delete mode 100644 docs/imagenet_detection.md delete mode 100644 docs/imagenet_pretrained.md delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_13_0.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_13_1.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_13_2.png delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_13_2.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_15_0.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_7_0.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_7_1.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_7_2.png delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_7_2.text delete mode 100644 docs/imagenet_pretrained_files/imagenet_pretrained_9_0.text delete mode 100644 docs/images/arrow-down.png delete mode 100644 docs/images/octocat-small.png delete mode 100644 docs/lena_imagenet.md delete mode 100644 docs/lena_imagenet_files/lena_imagenet_10_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_14_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_14_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_16_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_16_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_18_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_18_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_20_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_20_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_22_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_22_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_24_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_24_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_26_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_26_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_28_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_28_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_30_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_30_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_32_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_32_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_34_0.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_34_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_36_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_36_1.png delete mode 100644 docs/lena_imagenet_files/lena_imagenet_36_1.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_39_0.text delete mode 100644 docs/lena_imagenet_files/lena_imagenet_8_0.text delete mode 100644 docs/license.md delete mode 100644 docs/selective_search_demo_files/selective_search_demo_11_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_11_1.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_11_2.png delete mode 100644 docs/selective_search_demo_files/selective_search_demo_11_2.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_16_0.png delete mode 100644 docs/selective_search_demo_files/selective_search_demo_16_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_1_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_3_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_5_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_7_0.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_7_1.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_7_2.png delete mode 100644 docs/selective_search_demo_files/selective_search_demo_7_2.text delete mode 100644 docs/selective_search_demo_files/selective_search_demo_9_0.text rename examples/{filter_visualization/lena_imagenet.ipynb => filter_visualization.ipynb} (86%) delete mode 100644 examples/filter_visualization/lena.png diff --git a/.gitignore b/.gitignore index 07af1379280..3997e463cdb 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,5 @@ data/* examples/* # Don't version the generated documentation -docs/_site \ No newline at end of file +docs/_site +_site diff --git a/docs/getting_pretrained_models.md b/docs/getting_pretrained_models.md new file mode 100644 index 00000000000..7ef1968d684 --- /dev/null +++ b/docs/getting_pretrained_models.md @@ -0,0 +1,16 @@ +--- +layout: default +--- + +# Pre-trained models + +[BVLC](http://bvlc.eecs.berkeley.edu) aims to provide a variety of high quality pre-trained models. +Note that unlike Caffe itself, these models are licensed for **academic research / non-commercial use only**. +If you have any questions, please get in touch with us. + +This page will be updated as more models become available. + +### ImageNet +The AlexNet model trained on ILSVRC-2010 can be downloaded (232.57MB) by running `models/get_caffe_reference_imagenet_model.sh` from the Caffe root directory. + +Additionally, you will probably eventually need some auxiliary data (mean image, synset list, etc.): run `data/ilsvrc12/get_ilsvrc_aux.sh` from the root directory to obtain it. diff --git a/docs/imagenet_detection.md b/docs/imagenet_detection.md deleted file mode 100644 index 8896814bac4..00000000000 --- a/docs/imagenet_detection.md +++ /dev/null @@ -1,477 +0,0 @@ ---- -layout: default -title: Caffe ---- - -Running Windowed Detection with Caffe -===================================== - -[View this page as an IPython Notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/selective_search_demo.ipynb) (highly recommended!) - ---- - -This approach follows ideas described in Ross Girshick, Jeff Donahue, Trevor -Darrell, Jitendra Malik. *Rich feature hierarchies for accurate object detection -and semantic segmentation*. [Arxiv 2013](http://arxiv.org/abs/1311.2524). - -First of all, we'll need a little [Python -script](https://github.com/sergeyk/selective_search_ijcv_with_python) to run the -Matlab Selective Search code. - -Let's run detection on an image of a couple of cats frolicking (one of the -ImageNet detection challenge pictures), which we will download from the web. -You'll need a prototxt specifying the network, and a trained model. - -We will use `models/imagenet.prototxt` and the caffe_reference_imagenet_model -which you can download by `models/get_caffe_reference_imagenet_model.sh`. The -learned model should be at `models/caffe_reference_imagenet_model`. - - - !mkdir _temp - !curl http://farm1.static.flickr.com/220/512450093_7717fb8ce8.jpg > _temp/cat.jpg - !echo `pwd`/_temp/cat.jpg > _temp/cat.txt - !python ../python/caffe/detection/detector.py --crop_mode=selective_search --pretrained_model=../models/caffe_reference_imagenet_model --model_def=../models/imagenet.prototxt _temp/cat.txt _temp/cat.h5 - - - Loading Caffe model. - WARNING: Logging before InitGoogleLogging() is written to STDERR - I0213 01:19:34.836383 1959801216 net.cpp:66] Creating Layer conv1 - I0213 01:19:34.836407 1959801216 net.cpp:76] conv1 <- data - I0213 01:19:34.836422 1959801216 net.cpp:101] conv1 -> conv1 - I0213 01:19:36.050011 1959801216 net.cpp:116] Top shape: 96 55 55 - I0213 01:19:36.050045 1959801216 net.cpp:133] conv1 needs backward computation. - I0213 01:19:36.050055 1959801216 net.cpp:66] Creating Layer relu1 - I0213 01:19:36.050060 1959801216 net.cpp:76] relu1 <- conv1 - I0213 01:19:36.050066 1959801216 net.cpp:90] relu1 -> conv1 (in-place) - I0213 01:19:36.050075 1959801216 net.cpp:116] Top shape: 96 55 55 - I0213 01:19:36.050079 1959801216 net.cpp:133] relu1 needs backward computation. - I0213 01:19:36.050084 1959801216 net.cpp:66] Creating Layer pool1 - I0213 01:19:36.050088 1959801216 net.cpp:76] pool1 <- conv1 - I0213 01:19:36.050093 1959801216 net.cpp:101] pool1 -> pool1 - I0213 01:19:36.050101 1959801216 net.cpp:116] Top shape: 96 27 27 - I0213 01:19:36.050107 1959801216 net.cpp:133] pool1 needs backward computation. - I0213 01:19:36.050111 1959801216 net.cpp:66] Creating Layer norm1 - I0213 01:19:36.050115 1959801216 net.cpp:76] norm1 <- pool1 - I0213 01:19:36.050119 1959801216 net.cpp:101] norm1 -> norm1 - I0213 01:19:36.050127 1959801216 net.cpp:116] Top shape: 96 27 27 - I0213 01:19:36.050132 1959801216 net.cpp:133] norm1 needs backward computation. - I0213 01:19:36.050137 1959801216 net.cpp:66] Creating Layer pad2 - I0213 01:19:36.050142 1959801216 net.cpp:76] pad2 <- norm1 - I0213 01:19:36.050145 1959801216 net.cpp:101] pad2 -> pad2 - I0213 01:19:36.050151 1959801216 net.cpp:116] Top shape: 96 31 31 - I0213 01:19:36.050155 1959801216 net.cpp:133] pad2 needs backward computation. - I0213 01:19:36.050170 1959801216 net.cpp:66] Creating Layer conv2 - I0213 01:19:36.050174 1959801216 net.cpp:76] conv2 <- pad2 - I0213 01:19:36.050375 1959801216 net.cpp:101] conv2 -> conv2 - I0213 01:19:36.052516 1959801216 net.cpp:116] Top shape: 256 27 27 - I0213 01:19:36.052526 1959801216 net.cpp:133] conv2 needs backward computation. - I0213 01:19:36.052533 1959801216 net.cpp:66] Creating Layer relu2 - I0213 01:19:36.052538 1959801216 net.cpp:76] relu2 <- conv2 - I0213 01:19:36.052543 1959801216 net.cpp:90] relu2 -> conv2 (in-place) - I0213 01:19:36.052548 1959801216 net.cpp:116] Top shape: 256 27 27 - I0213 01:19:36.052552 1959801216 net.cpp:133] relu2 needs backward computation. - I0213 01:19:36.052557 1959801216 net.cpp:66] Creating Layer pool2 - I0213 01:19:36.052561 1959801216 net.cpp:76] pool2 <- conv2 - I0213 01:19:36.052567 1959801216 net.cpp:101] pool2 -> pool2 - I0213 01:19:36.052572 1959801216 net.cpp:116] Top shape: 256 13 13 - I0213 01:19:36.052577 1959801216 net.cpp:133] pool2 needs backward computation. - I0213 01:19:36.052583 1959801216 net.cpp:66] Creating Layer norm2 - I0213 01:19:36.052587 1959801216 net.cpp:76] norm2 <- pool2 - I0213 01:19:36.052592 1959801216 net.cpp:101] norm2 -> norm2 - I0213 01:19:36.052597 1959801216 net.cpp:116] Top shape: 256 13 13 - I0213 01:19:36.052602 1959801216 net.cpp:133] norm2 needs backward computation. - I0213 01:19:36.052608 1959801216 net.cpp:66] Creating Layer pad3 - I0213 01:19:36.052613 1959801216 net.cpp:76] pad3 <- norm2 - I0213 01:19:36.052618 1959801216 net.cpp:101] pad3 -> pad3 - I0213 01:19:36.052623 1959801216 net.cpp:116] Top shape: 256 15 15 - I0213 01:19:36.052628 1959801216 net.cpp:133] pad3 needs backward computation. - I0213 01:19:36.052633 1959801216 net.cpp:66] Creating Layer conv3 - I0213 01:19:36.052636 1959801216 net.cpp:76] conv3 <- pad3 - I0213 01:19:36.052641 1959801216 net.cpp:101] conv3 -> conv3 - I0213 01:19:36.058481 1959801216 net.cpp:116] Top shape: 384 13 13 - I0213 01:19:36.058501 1959801216 net.cpp:133] conv3 needs backward computation. - I0213 01:19:36.058508 1959801216 net.cpp:66] Creating Layer relu3 - I0213 01:19:36.058513 1959801216 net.cpp:76] relu3 <- conv3 - I0213 01:19:36.058521 1959801216 net.cpp:90] relu3 -> conv3 (in-place) - I0213 01:19:36.058526 1959801216 net.cpp:116] Top shape: 384 13 13 - I0213 01:19:36.058529 1959801216 net.cpp:133] relu3 needs backward computation. - I0213 01:19:36.058534 1959801216 net.cpp:66] Creating Layer pad4 - I0213 01:19:36.058538 1959801216 net.cpp:76] pad4 <- conv3 - I0213 01:19:36.058543 1959801216 net.cpp:101] pad4 -> pad4 - I0213 01:19:36.058554 1959801216 net.cpp:116] Top shape: 384 15 15 - I0213 01:19:36.058559 1959801216 net.cpp:133] pad4 needs backward computation. - I0213 01:19:36.058564 1959801216 net.cpp:66] Creating Layer conv4 - I0213 01:19:36.058568 1959801216 net.cpp:76] conv4 <- pad4 - I0213 01:19:36.058573 1959801216 net.cpp:101] conv4 -> conv4 - I0213 01:19:36.063360 1959801216 net.cpp:116] Top shape: 384 13 13 - I0213 01:19:36.063379 1959801216 net.cpp:133] conv4 needs backward computation. - I0213 01:19:36.063385 1959801216 net.cpp:66] Creating Layer relu4 - I0213 01:19:36.063391 1959801216 net.cpp:76] relu4 <- conv4 - I0213 01:19:36.063397 1959801216 net.cpp:90] relu4 -> conv4 (in-place) - I0213 01:19:36.063402 1959801216 net.cpp:116] Top shape: 384 13 13 - I0213 01:19:36.063406 1959801216 net.cpp:133] relu4 needs backward computation. - I0213 01:19:36.063411 1959801216 net.cpp:66] Creating Layer pad5 - I0213 01:19:36.063416 1959801216 net.cpp:76] pad5 <- conv4 - I0213 01:19:36.063421 1959801216 net.cpp:101] pad5 -> pad5 - I0213 01:19:36.063426 1959801216 net.cpp:116] Top shape: 384 15 15 - I0213 01:19:36.063431 1959801216 net.cpp:133] pad5 needs backward computation. - I0213 01:19:36.063441 1959801216 net.cpp:66] Creating Layer conv5 - I0213 01:19:36.063444 1959801216 net.cpp:76] conv5 <- pad5 - I0213 01:19:36.063449 1959801216 net.cpp:101] conv5 -> conv5 - I0213 01:19:36.066474 1959801216 net.cpp:116] Top shape: 256 13 13 - I0213 01:19:36.066490 1959801216 net.cpp:133] conv5 needs backward computation. - I0213 01:19:36.066496 1959801216 net.cpp:66] Creating Layer relu5 - I0213 01:19:36.066501 1959801216 net.cpp:76] relu5 <- conv5 - I0213 01:19:36.066508 1959801216 net.cpp:90] relu5 -> conv5 (in-place) - I0213 01:19:36.066512 1959801216 net.cpp:116] Top shape: 256 13 13 - I0213 01:19:36.066516 1959801216 net.cpp:133] relu5 needs backward computation. - I0213 01:19:36.066520 1959801216 net.cpp:66] Creating Layer pool5 - I0213 01:19:36.066525 1959801216 net.cpp:76] pool5 <- conv5 - I0213 01:19:36.066529 1959801216 net.cpp:101] pool5 -> pool5 - I0213 01:19:36.066535 1959801216 net.cpp:116] Top shape: 256 6 6 - I0213 01:19:36.066540 1959801216 net.cpp:133] pool5 needs backward computation. - I0213 01:19:36.066545 1959801216 net.cpp:66] Creating Layer fc6 - I0213 01:19:36.066550 1959801216 net.cpp:76] fc6 <- pool5 - I0213 01:19:36.066558 1959801216 net.cpp:101] fc6 -> fc6 - I0213 01:19:36.333488 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.333513 1959801216 net.cpp:133] fc6 needs backward computation. - I0213 01:19:36.333521 1959801216 net.cpp:66] Creating Layer relu6 - I0213 01:19:36.333528 1959801216 net.cpp:76] relu6 <- fc6 - I0213 01:19:36.333535 1959801216 net.cpp:90] relu6 -> fc6 (in-place) - I0213 01:19:36.333541 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.333546 1959801216 net.cpp:133] relu6 needs backward computation. - I0213 01:19:36.333551 1959801216 net.cpp:66] Creating Layer drop6 - I0213 01:19:36.333556 1959801216 net.cpp:76] drop6 <- fc6 - I0213 01:19:36.333560 1959801216 net.cpp:90] drop6 -> fc6 (in-place) - I0213 01:19:36.333566 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.333570 1959801216 net.cpp:133] drop6 needs backward computation. - I0213 01:19:36.333575 1959801216 net.cpp:66] Creating Layer fc7 - I0213 01:19:36.333580 1959801216 net.cpp:76] fc7 <- fc6 - I0213 01:19:36.333585 1959801216 net.cpp:101] fc7 -> fc7 - I0213 01:19:36.450057 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.450075 1959801216 net.cpp:133] fc7 needs backward computation. - I0213 01:19:36.450083 1959801216 net.cpp:66] Creating Layer relu7 - I0213 01:19:36.450089 1959801216 net.cpp:76] relu7 <- fc7 - I0213 01:19:36.450095 1959801216 net.cpp:90] relu7 -> fc7 (in-place) - I0213 01:19:36.450101 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.450105 1959801216 net.cpp:133] relu7 needs backward computation. - I0213 01:19:36.450114 1959801216 net.cpp:66] Creating Layer drop7 - I0213 01:19:36.450117 1959801216 net.cpp:76] drop7 <- fc7 - I0213 01:19:36.450121 1959801216 net.cpp:90] drop7 -> fc7 (in-place) - I0213 01:19:36.450127 1959801216 net.cpp:116] Top shape: 4096 1 1 - I0213 01:19:36.450131 1959801216 net.cpp:133] drop7 needs backward computation. - I0213 01:19:36.450136 1959801216 net.cpp:66] Creating Layer fc8 - I0213 01:19:36.450140 1959801216 net.cpp:76] fc8 <- fc7 - I0213 01:19:36.450145 1959801216 net.cpp:101] fc8 -> fc8 - I0213 01:19:36.478497 1959801216 net.cpp:116] Top shape: 1000 1 1 - I0213 01:19:36.478538 1959801216 net.cpp:133] fc8 needs backward computation. - I0213 01:19:36.478549 1959801216 net.cpp:66] Creating Layer prob - I0213 01:19:36.478555 1959801216 net.cpp:76] prob <- fc8 - I0213 01:19:36.478567 1959801216 net.cpp:101] prob -> prob - I0213 01:19:36.478581 1959801216 net.cpp:116] Top shape: 1000 1 1 - I0213 01:19:36.478585 1959801216 net.cpp:133] prob needs backward computation. - I0213 01:19:36.478590 1959801216 net.cpp:144] This network produces output prob - I0213 01:19:36.478602 1959801216 net.cpp:154] Collecting Learning Rate and Weight Decay. - I0213 01:19:36.478628 1959801216 net.cpp:148] Network initialization done. - Caffe model loaded in 2.581 s - Loading input and assembling batches... - selective_search({'/Users/karayev/work/caffe-bvlc/examples/_temp/cat.jpg'}, '/var/folders/4q/vm1lt3t91p9gl06nz6s1dzzw0000gn/T/tmpt2_xYx.mat') - 23 batches assembled in 3.691 s - Processing 1 files in 23 batches - ...on batch 0/23, elapsed time: 0.000 s - ...on batch 10/23, elapsed time: 2.928 s - ...on batch 20/23, elapsed time: 5.803 s - Processing complete after 6.722 s. - /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/pytables.py:2446: PerformanceWarning: - your performance may suffer as PyTables will pickle object types that it cannot - map directly to c-types [inferred_type->mixed,key->block1_values] [items->['feat']] - - warnings.warn(ws, PerformanceWarning) - Done. Saving to _temp/cat.h5 took 0.066 s. - - -Running this outputs a DataFrame with the filenames, selected windows, and their -ImageNet scores to an HDF5 file. -(We only ran on one image, so the filenames will all be the same.) - - - import pandas as pd - - df = pd.read_hdf('_temp/cat.h5', 'df') - print(df.shape) - print(df.iloc[0]) - - (223, 5) - feat [6.90396e-06, 1.27811e-06, 1.82159e-06, 1.1020... - ymin 0 - xmin 0 - ymax 500 - xmax 496 - Name: /Users/karayev/work/caffe-bvlc/examples/_temp/cat.jpg, dtype: object - - -In general, `detector.py` is most efficient when running on a lot of images: it -first extracts window proposals for all of them, batches the windows for -efficient GPU processing, and then outputs the results. -Simply list an image per line in the `images_file`, and it will process all of -them. - -Although this guide gives an example of ImageNet detection, `detector.py` is -clever enough to adapt to different Caffe models’ input dimensions, batch size, -and output categories. -Refer to `python detector.py --help` and the `images_dim` and `images_mean_file` -parameters to describe your data set. -No need for hardcoding. - -Anyway, let's now load ImageNet class names and make a DataFrame of the -features. Note you'll need the auxiliary ilsvrc2012 data fetched by -`data/ilsvrc12/get_ilsvrc12_aux.sh`. - - - with open('../data/ilsvrc12/synset_words.txt') as f: - labels_df = pd.DataFrame([ - { - 'synset_id': l.strip().split(' ')[0], - 'name': ' '.join(l.strip().split(' ')[1:]).split(',')[0] - } - for l in f.readlines() - ]) - labels_df.sort('synset_id') - feats_df = pd.DataFrame(np.vstack(df.feat.values), columns=labels_df['name']) - print(feats_df.iloc[0]) - - name - tench 0.000007 - goldfish 0.000001 - great white shark 0.000002 - tiger shark 0.000001 - hammerhead 0.000007 - electric ray 0.000004 - stingray 0.000007 - cock 0.000060 - hen 0.003055 - ostrich 0.000010 - brambling 0.000004 - goldfinch 0.000001 - house finch 0.000004 - junco 0.000002 - indigo bunting 0.000001 - ... - daisy 0.000002 - yellow lady's slipper 0.000002 - corn 0.000020 - acorn 0.000011 - hip 0.000003 - buckeye 0.000010 - coral fungus 0.000005 - agaric 0.000019 - gyromitra 0.000039 - stinkhorn 0.000002 - earthstar 0.000025 - hen-of-the-woods 0.000035 - bolete 0.000037 - ear 0.000008 - toilet tissue 0.000019 - Name: 0, Length: 1000, dtype: float32 - - -Let's look at the activations. - - - gray() - matshow(feats_df.values) - xlabel('Classes') - ylabel('Windows') - - - - - - - - - - - - - -![png](selective_search_demo_files/selective_search_demo_7_2.png) - - -Now let's take max across all windows and plot the top classes. - - - max_s = feats_df.max(0) - max_s.sort(ascending=False) - print(max_s[:10]) - - name - proboscis monkey 0.923392 - tiger cat 0.918685 - milk can 0.783663 - American black bear 0.637560 - broccoli 0.612832 - tiger 0.515798 - platypus 0.514660 - dhole 0.509583 - lion 0.496187 - dingo 0.482885 - dtype: float32 - - -Okay, there are indeed cats in there (and some nonsense). -Picking good localizations is work in progress; manually, we see that the third -and thirteenth top detections correspond to the two cats. - - - # Find, print, and display max detection. - window_order = pd.Series(feats_df.values.max(1)).order(ascending=False) - - i = window_order.index[3] - j = window_order.index[13] - - # Show top predictions for top detection. - f = pd.Series(df['feat'].iloc[i], index=labels_df['name']) - print('Top detection:') - print(f.order(ascending=False)[:5]) - print('') - - # Show top predictions for 10th top detection. - f = pd.Series(df['feat'].iloc[j], index=labels_df['name']) - print('10th detection:') - print(f.order(ascending=False)[:5]) - - # Show top detection in red, 10th top detection in blue. - im = imread('_temp/cat.jpg') - imshow(im) - currentAxis = plt.gca() - - det = df.iloc[i] - coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin'] - currentAxis.add_patch(Rectangle(*coords, fill=False, edgecolor='r', linewidth=5)) - - det = df.iloc[j] - coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin'] - currentAxis.add_patch(Rectangle(*coords, fill=False, edgecolor='b', linewidth=5)) - - Top detection: - name - tiger cat 0.882021 - tiger 0.075015 - tabby 0.024404 - lynx 0.012947 - Egyptian cat 0.004409 - dtype: float32 - - 10th detection: - name - tiger cat 0.681169 - Pembroke 0.063924 - dingo 0.050501 - golden retriever 0.027614 - tabby 0.021413 - dtype: float32 - - - - - - - - - - -![png](selective_search_demo_files/selective_search_demo_11_2.png) - - -That's cool. Both of these detections are tiger cats. Let's take all 'tiger cat' -detections and NMS them to get rid of overlapping windows. - - - def nms_detections(dets, overlap=0.5): - """ - Non-maximum suppression: Greedily select high-scoring detections and - skip detections that are significantly covered by a previously - selected detection. - - This version is translated from Matlab code by Tomasz Malisiewicz, - who sped up Pedro Felzenszwalb's code. - - Parameters - ---------- - dets: ndarray - each row is ['xmin', 'ymin', 'xmax', 'ymax', 'score'] - overlap: float - minimum overlap ratio (0.5 default) - - Output - ------ - dets: ndarray - remaining after suppression. - """ - if np.shape(dets)[0] < 1: - return dets - - x1 = dets[:, 0] - y1 = dets[:, 1] - x2 = dets[:, 2] - y2 = dets[:, 3] - - w = x2 - x1 - h = y2 - y1 - area = w * h - - s = dets[:, 4] - ind = np.argsort(s) - - pick = [] - counter = 0 - while len(ind) > 0: - last = len(ind) - 1 - i = ind[last] - pick.append(i) - counter += 1 - - xx1 = np.maximum(x1[i], x1[ind[:last]]) - yy1 = np.maximum(y1[i], y1[ind[:last]]) - xx2 = np.minimum(x2[i], x2[ind[:last]]) - yy2 = np.minimum(y2[i], y2[ind[:last]]) - - w = np.maximum(0., xx2 - xx1 + 1) - h = np.maximum(0., yy2 - yy1 + 1) - - o = w * h / area[ind[:last]] - - to_delete = np.concatenate( - (np.nonzero(o > overlap)[0], np.array([last]))) - ind = np.delete(ind, to_delete) - - return dets[pick, :] - - - scores = feats_df['tiger cat'] - windows = df[['xmin', 'ymin', 'xmax', 'ymax']].values - dets = np.hstack((windows, scores[:, np.newaxis])) - nms_dets = nms_detections(dets) - -Show top 3 NMS'd detections for 'tiger cat' in the image. - - - imshow(im) - currentAxis = plt.gca() - colors = ['r', 'b', 'y'] - for c, det in zip(colors, nms_dets[:3]): - currentAxis.add_patch( - Rectangle((det[0], det[1]), det[2], det[3], - fill=False, edgecolor=c, linewidth=5) - ) - - -![png](selective_search_demo_files/selective_search_demo_16_0.png) - - -Remove the temp directory to clean up. - - - import shutil - shutil.rmtree('_temp') diff --git a/docs/imagenet_pretrained.md b/docs/imagenet_pretrained.md deleted file mode 100644 index 1737b810a64..00000000000 --- a/docs/imagenet_pretrained.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: default -title: Caffe ---- - -Running Pretrained ImageNet -=========================== - -[View this page as an IPython Notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/imagenet_pretrained.ipynb) - -For easier use of pretrained models, we provide a wrapper specifically written for the case of ImageNet, so one can take an image and directly compute features or predictions from them. Both Python and Matlab wrappers are provided. We will describe the use of the Python wrapper here, and the Matlab wrapper usage is very similar. - -We assume that you have successfully compiled Caffe and set the correct `PYTHONPATH`. If not, please refer to the [installation instructions](installation.html). You will use our pre-trained imagenet model, which you can download (232.57MB) by running `models/get_caffe_reference_imagenet_model.sh`.Note that this pre-trained model is licensed for academic research / non-commercial use only. - -Ready? Let's start. - - - from caffe import imagenet - from matplotlib import pyplot - - # Set the right path to your model file, pretrained model, - # and the image you would like to classify. - MODEL_FILE = 'models/imagenet.prototxt' - PRETRAINED = 'models/caffe_reference_imagenet_model' - IMAGE_FILE = '/path/to/lena.png' - -Loading a network is easy. imagenet.ImagenetClassifier wraps everything. In -default, the classifier will crop the center and corners of an image, as well as -their mirrored versions, thus creating a batch of 10 images. If you look at the -provided MODEL_FILE you can actually see that we are defining the input batch -size to be 10. - -If you would like to just do the center, you need to specify center_only=1, and -also change the batch size from 10 to 1 in the prototxt. - - - net = imagenet.ImageNetClassifier( - MODEL_FILE, PRETRAINED) - -We will set the phase to test since we are doing testing, and will first use CPU -for the computation. - - - net.caffenet.set_phase_test() - net.caffenet.set_mode_cpu() - -So now, we can do a prediction. Let's show some output as well: - - - prediction = net.predict(IMAGE_FILE) - print 'prediction shape:', prediction.shape - pyplot.plot(prediction) - - prediction shape: (1000,) - [] - -![png](imagenet_pretrained_files/imagenet_pretrained_7_2.png) - - -You can see that the prediction is 1000-dimensional, and is pretty sparse. Our -pretrained model uses the alphabetical order for the synsets, and if you look at -the index that maximizes the prediction score, it is "sombrero". Reasonable -prediction, right? - -Now, why don't we see how long it takes to perform the classification end to -end? This result is run from an Intel i5 CPU, so you may observe some -performance differences with different machines. - - - %timeit net.predict(IMAGE_FILE) - - 1 loops, best of 3: 194 ms per loop - - -It may look a little slow, but note that it also includes image loading, -cropping, and python interfacing time, and the convnet is working on 10 images due to that. As a -performance note, if you really want to make prediction fast, you can -optionally write things in C and also pipeline the image loading part. But for -most applications, the current speed might be fine I guess? - -OK, so how about GPU? it is actually pretty easy: - - - net.caffenet.set_mode_gpu() - -Voila! Now we are in GPU mode. Let's see if the code gives the same result: - - - prediction = net.predict(IMAGE_FILE) - print 'prediction shape:', prediction.shape - pyplot.plot(prediction) - - prediction shape: (1000,) - [] - -![png](imagenet_pretrained_files/imagenet_pretrained_13_2.png) - - -Good, everything is the same. And how about time consumption? The following -benchmark is obtained on the same machine with a K20 GPU: - - - %timeit net.predict(IMAGE_FILE) - - 10 loops, best of 3: 50 ms per loop - - -Pretty fast right? Not as fast as you expected? Indeed, in this python demo you -are seeing only 4 times speedup. But remember - the GPU code is actually very -fast, and the data loading, transformation and interfacing actually start to -take **more** time than the actual convnet computation itself! - -To fully utilize the power of GPUs, you really want to use one of these ideas: -* Use larger batches, and minimize python call and data transfer overheads. -* Pipeline data load operations, like using a subprocess. -* Code in C++. A little inconvenient, but maybe worth it if your dataset is -really, really large. - -Parting Words -------------- - -So this is python! We hope the interface is easy enough for one to use. The -python wrapper is interfaced with boost::python, and source code can be found at -`python/caffe/imagenet`. If you would like to achieve some custom functions, you -are more than welcome to look at them! diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_13_0.text b/docs/imagenet_pretrained_files/imagenet_pretrained_13_0.text deleted file mode 100644 index 370b230b1da..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_13_0.text +++ /dev/null @@ -1 +0,0 @@ -prediction shape: (1000,) diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_13_1.text b/docs/imagenet_pretrained_files/imagenet_pretrained_13_1.text deleted file mode 100644 index 01ef4eda21f..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_13_1.text +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_13_2.png b/docs/imagenet_pretrained_files/imagenet_pretrained_13_2.png deleted file mode 100644 index 88ed305b35d7a41bc5b9ad688732181a649f2fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7503 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 diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_13_2.text b/docs/imagenet_pretrained_files/imagenet_pretrained_13_2.text deleted file mode 100644 index 61cbdb0b223..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_13_2.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_15_0.text b/docs/imagenet_pretrained_files/imagenet_pretrained_15_0.text deleted file mode 100644 index 6edc34136a6..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_15_0.text +++ /dev/null @@ -1 +0,0 @@ -10 loops, best of 3: 50 ms per loop diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_7_0.text b/docs/imagenet_pretrained_files/imagenet_pretrained_7_0.text deleted file mode 100644 index 370b230b1da..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_7_0.text +++ /dev/null @@ -1 +0,0 @@ -prediction shape: (1000,) diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_7_1.text b/docs/imagenet_pretrained_files/imagenet_pretrained_7_1.text deleted file mode 100644 index d7fb0ea80d0..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_7_1.text +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_7_2.png b/docs/imagenet_pretrained_files/imagenet_pretrained_7_2.png deleted file mode 100644 index df847c0c6810ef13476600e5fa7bee9d1c0eb93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7503 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 \ No newline at end of file diff --git a/docs/imagenet_pretrained_files/imagenet_pretrained_9_0.text b/docs/imagenet_pretrained_files/imagenet_pretrained_9_0.text deleted file mode 100644 index b0e8e68f926..00000000000 --- a/docs/imagenet_pretrained_files/imagenet_pretrained_9_0.text +++ /dev/null @@ -1 +0,0 @@ -1 loops, best of 3: 194 ms per loop diff --git a/docs/images/arrow-down.png b/docs/images/arrow-down.png deleted file mode 100644 index 585b0bddba878b95acc961fc5c0c55c3ea2e75db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!3HFke0{SLNU;<^miKrK zR4D>d>0FeWSdy8arx22vo62CJZ=!E#Q zuUEhHFKq}eVcf!fOXk2252o^`A0Pfx?pl-`?tS^o=dZa}n)o-rOj#-_e`l7jy7u+r zhj0Hd|L1+)z+f_A|GJISy4qrPpME*#k;S{#M4)d)HS2xXctpM~nN-ejV$=G%1)}zh z6_&;B=NTB*Rz&o)EN^QNw)=Nauj9or^J@~D*Th}TXM8@bL&NZxPHmc!SKl9%dr^gl zqh@m|zG6sNdzVY`kauM4^m$&|dG9N?-~61nSXA6TxH5R=Pxc4Kow9qMI-LOq1%s!n KpUXO@geCw=gQOS$ diff --git a/docs/images/octocat-small.png b/docs/images/octocat-small.png deleted file mode 100644 index 66c25398dd9090905e37aa2d48bb2d77a0ac6255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)V>IRB3Hx05~r+FEKJgdgKHE00ELo zL_t(Ijg^xed`v89bwq|>- zBcAI>wNjQ~{V)H%tlWtR3ZPgl_WI*s7zQut?CiWv)3hNC$Q&OX?xs?y7lFshPE4M* zWwYbCv9ZzqmMOqA&6xTyFpvlX0a(^MlwlaPupofy>3N$E3)SoOTg`Kw1aKY(ER{+J z8i40IIbbma`(6R7dL#-k0u){W3czrO-f82x&g$~grz@IyWqNvQc6)p4Nm@33tb3m8 zqya>Phsa&m{#?w>&fMT<@_Edvm9hja12DK_rqO6@Dy6#qH=`bjY5@o|v#Lj;wod}b>JrdoE#olbS0=7RdB$LTJ@R`4#*!KNI_tZAjO+JC<^Z)<=07*qo IM6N<$f|}m$2LJ#7 diff --git a/docs/index.md b/docs/index.md index 49dea0e23f5..f3ed60a717e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,48 +1,47 @@ --- layout: default -title: Caffe --- - -Welcome to Caffe -================ +# Welcome to Caffe Caffe is a framework for convolutional neural network algorithms, developed with speed in mind. -It was created by [Yangqing Jia](http://www.eecs.berkeley.edu/~jiayq/) as a replacement of [decaf](http://decaf.berkeleyvision.org/), Yangqing's earlier Python implementation of CNNs. -It is maintained by the [Berkeley Vision and Learning Center](http://bvlc.eecs.berkeley.edu) and several Berkeley vision group members are actively contributing to the codebase. - -Caffe is released under [the BSD 2-Clause license](license.html). +It was created by [Yangqing Jia](http://daggerfs.com), and is in active development by the [Berkeley Vision and Learning Center](http://bvlc.eecs.berkeley.edu). +Caffe is released under [the BSD 2-Clause license](https://github.com/BVLC/caffe/blob/master/LICENSE). -Decaf, the big brother of Caffe, has a cool [demo](http://decaf.berkeleyvision.org). Caffe's own demo will come soon. + -Why Caffe? ----------- +## Why Caffe? -Caffe aims to provide computer vision scientists with a **clean, modifiable implementation** of state-of-the-art deep learning algorithms. +Caffe aims to provide computer vision practicioners with a **clean and modifiable implementation** of state-of-the-art deep learning algorithms. For example, network structure is easily specified in separate config files, with no mess of hard-coded parameters in the code. At the same time, Caffe fits industry needs, with blazing fast C++/Cuda code for GPU computation. Caffe is currently the fastest GPU CNN implementation publicly available, and is able to process more than **20 million images per day** on a single Tesla K20 machine \*. Caffe also provides **seamless switching between CPU and GPU**, which allows one to train models with fast GPUs and then deploy them on non-GPU clusters with one line of code: `Caffe::set_mode(Caffe::CPU)`. - Even in CPU mode, computing predictions on an image takes only 20 ms when images are processed in batch mode. -Quick Links ------------ +## Documentation + +* [Introductory slides](/caffe-presentation.pdf): slides about the Caffe architecture, *updated 03/14*. +* [Installation](/installation.html): Instructions on installing Caffe (works on Ubuntu, Red Hat, OS X). +* [Pre-trained models](/getting_pretrained_models.html): BVLC provides some pre-trained models for non-commercial use. +* [Development](/development.html): Guidelines for development and contributing to Caffe. + +### Examples + +* [LeNet / MNIST Demo](/mnist.html): end-to-end training and testing of LeNet on MNIST. +* [CIFAR-10 Demo](/cifar10.html): training and testing on the CIFAR-10 data. +* [Training ImageNet](/imagenet_training.html): end-to-end training of an ImageNet classifier. +* [Running Pretrained ImageNet \[notebook\]][pretrained_imagenet]: run classification with the pretrained ImageNet model using the Python interface. +* [Running Detection \[notebook\]][imagenet_detection]: run a pretrained model as a detector. +* [Visualizing Features and Filters \[notebook\]][visualizing_filters]: trained filters and an example image, viewed layer-by-layer. -* [Presentation](caffe-presentation.pdf): The Caffe presentation, *updated 03/14*. -* [Installation](installation.html): Instructions on installing Caffe (tested on Ubuntu 12.04, but works on Red Hat, OS X, etc.). -* [Development](development.html): Guidelines for development and contributing to Caffe. -* [LeNet / MNIST Demo](mnist.html): example of end-to-end training and testing of LeNet on MNIST. -* [CIFAR-10 Demo](cifar10.html): example of training and testing on the CIFAR-10 data. -* [Training ImageNet](imagenet_training.html): tutorial on end-to-end training of an ImageNet classifier. -* [Running Pretrained ImageNet](imagenet_pretrained.html): simply runs in Python! -* [Running Detection](imagenet_detection.html): run a pretrained model as a detector. -* [Visualizing Features and Filters](lena_imagenet.html): Lena viewed layer-by-layer. +[pretrained_imagenet]: http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/imagenet_pretrained.ipynb +[imagenet_detection]: http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/selective_search_demo.ipynb +[visualizing_filters]: http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/filter_visualization.ipynb +## Citing Caffe -Citing Caffe ------------- Please kindly cite Caffe in your publications if it helps your research: @misc{Jia13caffe, @@ -54,7 +53,7 @@ Please kindly cite Caffe in your publications if it helps your research: ### Acknowledgements -Yangqing would like to thank the NVidia Academic program for providing a K20 GPU. +Yangqing would like to thank the NVidia Academic program for providing K20 GPUs. The Caffe Matlab wrapper is courtesy of [Dr. Ross Girshick](http://www.cs.berkeley.edu/~rbg/). The detection module (`power_wrapper`) is courtesy of [Sergey Karayev](http://sergeykarayev.com/). Our thanks also go to [Jeff Donahue](http://jeffdonahue.com/) and [Oriol Vinyals](http://www1.icsi.berkeley.edu/~vinyals/) for various discussions along the journey. @@ -62,4 +61,3 @@ Our thanks also go to [Jeff Donahue](http://jeffdonahue.com/) and [Oriol Vinyals --- \*: When measured with the [SuperVision](http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf) model that won the ImageNet Large Scale Visual Recognition Challenge 2012. -More benchmarks coming soon. diff --git a/docs/lena_imagenet.md b/docs/lena_imagenet.md deleted file mode 100644 index db4e2df38c3..00000000000 --- a/docs/lena_imagenet.md +++ /dev/null @@ -1,280 +0,0 @@ ---- -layout: default -title: Caffe ---- - -Visualizing ImageNet Features and Filters -========================================= - -[View this page as an IPython Notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/filter_visualization/lena_imagenet.ipynb) - ---- - -Here we visualize filters and outputs using the network architecture proposed by -Krizhevsky et al. for ImageNet and implemented in `caffe`. - -(This page follows the DeCAF visualizations originally by Yangqing Jia.) - -First, import required modules and set plotting parameters - - - import numpy as np - import matplotlib.pyplot as plt - %matplotlib inline - - # normally this file is located in caffe/examples/filter_visualization - caffe_root = '../../' - import sys - sys.path.insert(0, caffe_root + 'python') - - import caffe - import caffe.imagenet - - plt.rcParams['figure.figsize'] = (10, 10) - plt.rcParams['image.interpolation'] = 'nearest' - plt.rcParams['image.cmap'] = 'gray' - -Load the net and specify test phase (since we are doing classification) and CPU -mode - - - net = caffe.imagenet.ImageNetClassifier(caffe_root + 'models/imagenet.prototxt', - caffe_root + 'models/caffe_reference_imagenet_model') - net.caffenet.set_phase_test() - net.caffenet.set_mode_cpu() - -Run a classification pass - - - scores = net.predict(caffe_root + 'examples/filter_visualization/lena.png') - -The layer features and their shapes (10 is the batch size, corresponding to the -the ten subcrops used by Krizhevsky et al.) - - - [(k, v.data.shape) for k, v in net.caffenet.blobs.items()] - - - - - [('data', (10, 3, 227, 227)), - ('conv1', (10, 96, 55, 55)), - ('pool1', (10, 96, 27, 27)), - ('norm1', (10, 96, 27, 27)), - ('conv2', (10, 256, 27, 27)), - ('pool2', (10, 256, 13, 13)), - ('norm2', (10, 256, 13, 13)), - ('conv3', (10, 384, 13, 13)), - ('conv4', (10, 384, 13, 13)), - ('conv5', (10, 256, 13, 13)), - ('pool5', (10, 256, 6, 6)), - ('fc6', (10, 4096, 1, 1)), - ('fc7', (10, 4096, 1, 1)), - ('fc8', (10, 1000, 1, 1)), - ('prob', (10, 1000, 1, 1))] - - - -The parameters and their shapes (each of these layers also has biases which are -omitted here) - - - [(k, v[0].data.shape) for k, v in net.caffenet.params.items()] - - - - - [('conv1', (96, 3, 11, 11)), - ('conv2', (256, 48, 5, 5)), - ('conv3', (384, 256, 3, 3)), - ('conv4', (384, 192, 3, 3)), - ('conv5', (256, 192, 3, 3)), - ('fc6', (1, 1, 4096, 9216)), - ('fc7', (1, 1, 4096, 4096)), - ('fc8', (1, 1, 1000, 4096))] - - - -Helper functions for visualization - - - # our network takes BGR images, so we need to switch color channels - def showimage(im): - if im.ndim == 3: - im = im[:, :, ::-1] - plt.imshow(im) - - # take an array of shape (n, height, width) or (n, height, width, channels) - # and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n) - def vis_square(data, padsize=1, padval=0): - data -= data.min() - data /= data.max() - - # force the number of filters to be square - n = int(np.ceil(np.sqrt(data.shape[0]))) - padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3) - data = np.pad(data, padding, mode='constant', constant_values=(padval, padval)) - - # tile the filters into an image - data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1))) - data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:]) - - showimage(data) - -The input image - - - # index four is the center crop - image = net.caffenet.blobs['data'].data[4].copy() - image -= image.min() - image /= image.max() - showimage(image.transpose(1, 2, 0)) - - -![png](lena_imagenet_files/lena_imagenet_14_0.png) - - -The first layer filters, `conv1` - - - # the parameters are a list of [weights, biases] - filters = net.caffenet.params['conv1'][0].data - vis_square(filters.transpose(0, 2, 3, 1)) - - -![png](lena_imagenet_files/lena_imagenet_16_0.png) - - -The first layer output, `conv1` (rectified responses of the filters above, first -36 only) - - - feat = net.caffenet.blobs['conv1'].data[4, :36] - vis_square(feat, padval=1) - - -![png](lena_imagenet_files/lena_imagenet_18_0.png) - - -The second layer filters, `conv2` - -There are 128 filters, each of which has dimension 5 x 5 x 48. We show only the -first 48 filters, with each channel shown separately, so that each filter is a -row. - - - filters = net.caffenet.params['conv2'][0].data - vis_square(filters[:48].reshape(48**2, 5, 5)) - - -![png](lena_imagenet_files/lena_imagenet_20_0.png) - - -The second layer output, `conv2` (rectified, only the first 36 of 256 channels) - - - feat = net.caffenet.blobs['conv2'].data[4, :36] - vis_square(feat, padval=1) - - -![png](lena_imagenet_files/lena_imagenet_22_0.png) - - -The third layer output, `conv3` (rectified, all 384 channels) - - - feat = net.caffenet.blobs['conv3'].data[4] - vis_square(feat, padval=0.5) - - -![png](lena_imagenet_files/lena_imagenet_24_0.png) - - -The fourth layer output, `conv4` (rectified, all 384 channels) - - - feat = net.caffenet.blobs['conv4'].data[4] - vis_square(feat, padval=0.5) - - -![png](lena_imagenet_files/lena_imagenet_26_0.png) - - -The fifth layer output, `conv5` (rectified, all 256 channels) - - - feat = net.caffenet.blobs['conv5'].data[4] - vis_square(feat, padval=0.5) - - -![png](lena_imagenet_files/lena_imagenet_28_0.png) - - -The fifth layer after pooling, `pool5` - - - feat = net.caffenet.blobs['pool5'].data[4] - vis_square(feat, padval=1) - - -![png](lena_imagenet_files/lena_imagenet_30_0.png) - - -The first fully connected layer, `fc6` (rectified) - -We show the output values and the histogram of the positive values - - - feat = net.caffenet.blobs['fc6'].data[4] - plt.subplot(2, 1, 1) - plt.plot(feat.flat) - plt.subplot(2, 1, 2) - _ = plt.hist(feat.flat[feat.flat > 0], bins=100) - - -![png](lena_imagenet_files/lena_imagenet_32_0.png) - - -The second fully connected layer, `fc7` (rectified) - - - feat = net.caffenet.blobs['fc7'].data[4] - plt.subplot(2, 1, 1) - plt.plot(feat.flat) - plt.subplot(2, 1, 2) - _ = plt.hist(feat.flat[feat.flat > 0], bins=100) - - -![png](lena_imagenet_files/lena_imagenet_34_0.png) - - -The final probability output, `prob` - - - feat = net.caffenet.blobs['prob'].data[4] - plt.plot(feat.flat) - - - - - [] - - - - -![png](lena_imagenet_files/lena_imagenet_36_1.png) - - -And the top 5 predicted labels - - - labels = np.loadtxt(caffe_root + 'data/ilsvrc12/synset_words.txt', str, delimiter='\t') - - - top_k = net.caffenet.blobs['prob'].data[4].flatten().argsort()[-1:-6:-1] - print labels[top_k] - - ['n02808304 bath towel' 'n02869837 bonnet, poke bonnet' - 'n03124170 cowboy hat, ten-gallon hat' 'n04259630 sombrero' - 'n04209133 shower cap'] - diff --git a/docs/lena_imagenet_files/lena_imagenet_10_0.text b/docs/lena_imagenet_files/lena_imagenet_10_0.text deleted file mode 100644 index 4c6065c294d..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_10_0.text +++ /dev/null @@ -1,8 +0,0 @@ -[('conv1', (96, 3, 11, 11)), - ('conv2', (256, 48, 5, 5)), - ('conv3', (384, 256, 3, 3)), - ('conv4', (384, 192, 3, 3)), - ('conv5', (256, 192, 3, 3)), - ('fc6', (1, 1, 4096, 9216)), - ('fc7', (1, 1, 4096, 4096)), - ('fc8', (1, 1, 1000, 4096))] \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_14_0.png b/docs/lena_imagenet_files/lena_imagenet_14_0.png deleted file mode 100644 index 4fe56feaf65b4e308f4400a13964f623a09ec0ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167280 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

1xyHAcV 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

QfDybyff4SPk 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 diff --git a/docs/lena_imagenet_files/lena_imagenet_14_0.text b/docs/lena_imagenet_files/lena_imagenet_14_0.text deleted file mode 100644 index fd15f5993d4..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_14_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_16_0.png b/docs/lena_imagenet_files/lena_imagenet_16_0.png deleted file mode 100644 index 11e5a475ccc741094b003060a3b59946ddab3c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48740 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_18_0.png b/docs/lena_imagenet_files/lena_imagenet_18_0.png deleted file mode 100644 index ba8a8d75398192b91d0bcb2fa6db778c9353bd42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109734 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 diff --git a/docs/lena_imagenet_files/lena_imagenet_18_0.text b/docs/lena_imagenet_files/lena_imagenet_18_0.text deleted file mode 100644 index 7f0ef20e206..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_18_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_20_0.png b/docs/lena_imagenet_files/lena_imagenet_20_0.png deleted file mode 100644 index 2f6898559684b2a35f2d1e50d2c962e11e7547be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106842 zcmZ5{2RNH;-@Z|_RW#Mwqowm9)TTzNrP^AL4i$SRN+@cJS+!SNd&FpIORPlHruGa~ zD@bgL*kZ)^-`@9mzwiD2jw6R#a?5qy>vx^MbAVU_taTXh_qjKZp{_JE%$H7Iw7(|&4ryqv(mYX9ec_qD zlHn6o{L*cAxI0}TUGbGd11-aqb;p-qlU@^B!&;9mUjH)Wb^6i?_KeQTvHS{GYgyFO zs)XORi~eS3I41oKjVni&gNz=&RAY#zs>emXS(S1nLUdH{7=P3PbU{PIcL7N%T!To} zryPyp3HHUcsM;aZq?B5p-PPy^*?-@@d_Lso2^U60`~H9aDEJ!u;-76vJ*IE}>|~R} z`Yhz%+g)n>pU?k$J2Cv;<17E(7Gi$xZg(P#_TP~e!s8QKVwJC=v6#6LGBE0 zG~ZH@h*74DB%@HVuj&s5H-`O>hGQvK|I9(3FZMuni8AICYZarANA=zA*JvYGkdEPy zy#EYby41h=#@5#MbsE?R*UaxRz5$0+{rkhIS3%wEOL~yUh|#hej5r&GYc;iWzk@#@P$?FB z8ALrSVZFDQ6&9A9F#&r)1*Q%Hfr@?SM1Y+GnFPYZ!h~bwg@kf2ANt!`IL-Kg4}B(< zZxZ^~kh>F{AP_S%Gw@Ar%R^ydo=3}Of*{Zs4iOp5rULxa5ZVaXquQMu5f;`ZRxK(d z)O&BaFf44O)Jj85t-Gg3U9I_GXIWUt($CK?h*D8YMu0#Y>rHGLYR%tY7ThEt#(zi% z38`$x$Ev9{SCfub4UCP`vs|0rv#{eoJHfNpMn^|~%%|EG~fG0ACT~ zQDYTkb|~oQYEGz84v)*JvIXfPhWRw$f*=U384FZXKHZo7k`OV1PGc=HE zKj&Mym=h@^G>vvb+N-IJyL5rs@fH(cF|k&d%2o<+>AH-FlKo6&bY^=Ud>LNzDeQ;A zwtJo9zm99Rdeh(acu z7!!`boylM}cT)J` zFi%bG><3L?e&eqA3@*qKYsNb88tVYIooSm_WDXKeI@*Kis4sN9H3gM-TYlkzOTe;b>dl}_e?C?A`n|+m#{+r{2173rK&62zz>R@3x%TemPvllN1xnU!73klZ zjTZ>ZW~s}z%L?~CM&HO$kEX54#&0>@b(Gd5Y>c`__^vBUm!OWf^Mhgc#m#HbHaT-r zWdGwWlrHumy%e~80GR$T8)8q;+|i-5b1!Hv&=1Yv&EJE^du%tk8YL_1z(ex7r)MQ3 zWTq5~1^-yqx~TEH3m( z_w@F%T1PrJavqf3aOV-&34Wp0++}vW>ABx!R!5Re-Z?MABs=)CvvHUha)Oy`cxj;U zo3BvmHLIV(;ZxRUv1ekvx~-}{-dLZIo4htBi7^Mwp` z@#`Tn2~gT(7~B!rKv<(c?sdfh#bG`0O#3;Nym3Zr>RDfG@i(*}jTaPStF1v_Q<@H= z()l|3z$+3yQHWcsRm(+zbA3n}&(MUp${@zrkA8>UrS)U@2z->!)_f1Ul})XAc4=%j zNpZcgLd=SKr!06bW5e4o5cR}t8v%XCxQ5Ww)TCdwnRn{&#JIlKyJ7i1;NS}8vHEtt zvb3H~@X)M7C0sW_WiU57n>?a>4dbrh67}3+UJ>g!QKjS4BW*_w)51Jf_}PAJrlMWp zQMaA49|UE7&*m$O_exybIk|OL8$1EttIr*v!S4GJt>6|tBEd46DlmeCt3zb>uV23! z{F^zXsCNxa3mdnT=Y_WTQ_|9S)wok`^*tit)I4=sv6Ym3V3q!DSDcxz#UWMCyft*P zn~JcjsLuqebAzJ>;uGd0kv(PZ;62pvQu2jzq){E3KR3Lh-#e;hv+IYQeYE11W-vz` zez%4*8hT&Kp9fxY#eN`9JD2Q*10zyoYL6g@GPmX0_X??rt!*6q0|XrAh787K-CyI( z0Y?kgn@zC#TF2o=*~Y;{0$O|0jh4kPR_y{htwHk4p;mFELose`WPE(w-0#pY*t9im zLYCVm{x1Nd0m#eXrofJ&PwZlL>{UD1f4~~JJx24t_R#OvSUOts_g|n_`^-(Gj$=O9 zBo!9!A-cP}-&V^0I60hTf^dOAPQEj|!a4P3txipq(Du})?&hoSGEA-*7X6rx2wTKF zaT+PfuGVn-6fNb#p3#65jejt%>pw{^7#602DHYZZQ=9Egy3lyK_%ij&>_ImQ3yP}# z5~6HWlbck`ee;~kntsZ`oE8-PH*fj>viS=a`*AI|qrJ=br|VwR?j+mj=Z+UzJ&)#R zf6T-zXKn!iKu+l30uiB-7N&w{-tzwQCFzkG%7)i)KfLf-n)Tcle;9)J!`aHC4S(3= znu%P<@Nh>6A8fN*f7jrkb!m}muYcfE#&$aENFgib`>46}4f$pHGA&yx>v)ImJ-!F@ zhu0!^eTZ9`flf@W_eq6%@Ib~{8pAmHy}dlSTDu$wwexBu>SzVV1f_r%4&S=NH4G$m z-W=~Q0C=XFxKk7kyZ6%_pQ*etiuZHR0dIB^tWfmr9Ngnm%<)Z8!`!6o3B3$gSJw$C zDBe2reOqtn`=~O!ghnAJMco?Yf3s}m;|6~;l1d>@D3$q_W`X+G0#TGyi~Hvb<+`0iUiD-#|h<&Eysg%i|Y>`!G?7*KG1dgILD zMDj;{(=1+viZw2C)7q0Jdur_i=4Doud%8Bunjz^ZcY+S5FvYS)g6EUq*v);od9xd8(6PH0p=Lk<8@$au=^OX@fx^-;wN0#5RAP1#4 zslckAGZVg?Xi-X^-ujKd88fMn$`fDHI+1ok8es;?|Ph;MxjfD;g95Nm zdTQGQLdPu>AE@cJlIK(OQ|S?Q9r4fXo;L4hS%_N3)bX9Ow&&Okbj#{lz5)uK zUczd)sxy|#;t1u!KMD7e$euKZ4`LSCQ_Ez?=}t`iZ~Gc}E)-`1r~o*tk*3=@VT-#& zLEt%MCr|O(f0Bv3U>l#%zJf!HRqd>th0M}&yHXt1)DKVY=z2X>Q+s8&0y)`&2@#(LmJpp-95Um~g43 zq$ry?TR#J%!aJ>zO1!ugTTp0Jv=RL*jY>IIaafQ;X0~yY&cUR&EFYGjXA6Tdf&A9v zU{yhF!aECMk^j>tmRfRrqpnsLD+anmwB55rB(W%rWo zrIpE|;b6v~L@Q>-)GiZ`iNOq86Ev^928&^r0mp2Z>5T9Ai~uL7_E8WH-gDeQ&$c2R z#q0RPV!C?hbGmxsN$ydlGNEkwY}I*Bs$wc_jetFGKR$3Rx1R@LVa}TT@w6y`B)Sa+ zCARTp`Y`6}JWmUrXl$#f&MUY^rfl(j>&fA+9+r+axYZW zACZA;#$#VixnjYFS$j-XlzhKpEpr2!*2l`S5;^pnyxVrVC=<#40sC#K!8hoZ^BesF z6V7;9I@adJa}H5xnfUs87!og;dvoV6XVN-eDR~U^JEVv(V%4e}6Zy0&qOi7FM4nj= zICHy@H&e4&o&IKDSW0w&_=zRMdzOy{c*4n|imeZ8@ga+Xo z%Nb=xq#?Mk5hr?JLvm?STOIOo3QkMz<~tUx%SCQt^P@G3$haU_J71{(e2fBZqTbNw z$Uy2Y4l(~V!l6;nGc&>8W%J>!Bm4cIKQaOmHhA05QO}dfQ7pdjZq`VUvQz!>PO*lX zf52vW4b`^(zHGMg40GqtR2lnU9|YSkc7|OkS()28ZBy7!U?v82o&sMrj0yEE;^mbIUW{3sJ$K=;92=|n9a^)Q%_)xcAjDmzkF^JXWp zg_vo={b>7e{bhZl6h?V;J;7}G_2jN`qI4Samyh22DuT#=P=J27kc^^Y8pq$;VGrpiF0Qpc0@Z(1G6JI)d}ahe#)ci%1-P47A+%@kAL1T zh;gMR^wK6zk+G<%U2?3>G1JO+G2pKeo9Vs&@2;cPE39naR)R+vki3>mHu%^4U~w zyyqh|HQzNKQe+qr74+|(*v#;|F!@8s+I41j;F^L(e#r{ehlmJ&$uWHuCv!{l*DS*f9jZ? zgTMsB4G;Q4Re+_PuhD4s-Q~+_e^-9Kc-SOJUul7Gny4xlK}@+d>gEjAZGRD0S2HX6 zIYo+*-}0la&#E=iXg|L^YNulSSD2(&)W8juI6?S3j@C}YX8f`uXy)1NLj_X^2#YPp5 zmJX1O3dz8Yhq{* z%DfAGwOwLN)D2=)8l#ng@KfGyk#C-hE^Y<%*#QpcXKoU_u-_TAguGL@^ zq4&7c*u_88fb2m$jFYn+Qu5AQ10Ff)5o`4)$9of`qlqxC`79TsoYy50aZKTd3N+E| z=*BOuD@HhvHKJq9_59pu_B;i;3)+|Kd>0f+DezeL`(g#JYNmmkD(P=K*D3kfPr}eL zxG)X5&;4+tE%p~(eNioi5VpAWRC(&0?jk`FC8ij-Lr-S8FCxhVDLFnQla9%1K6??O zmK);$`p9}0xpi^~P_*G;rmohew5hj_?h@pZqFsIcQO7sP4S+EFkw8|DCiAJ}*m%O|8OH zB}=Z1Ket~rz;3;~vA|2EE0L+Hz2=O)W*@zqx~pm=E%izL`#%(Qih)GrZ;%FGe}Y%# z!BT;64kVi()N&^ob;>hkUB1w8siosmPX~8cpsUl!ZezZc4tA`Lj05Xy(0nK>0J`2Zdi=*7=B1tRF;x?QK;v?Hi7%HUASTsJ|<={LwY`!SP6u476871`OSeZ#E6-+V6DdOK~g4#;7VDR=oERhEe}2tPyu(Xy0W8)k2&xe#H&;AbKrinajU%JD1tw zQLEu2Zi}$eesi+!3?L^Hl<)9XY|T}p!Y2_vX0AOl0IvRcRNX2n2BPk@`C3i1pSPx` zFp(0u*3(~K=#?AlwR{*|g3^T}*NMxWql57l!~wFvWR0`AsIZTsSZic#_S{+d zSp8+v@_t47mX1ZuO3T3C9RDMgShk2h+a>w?dzc|eLOP`Z?0@Aio-#`LIwT8vn2X!I z$s~{Q&?U@)Eg&*(S3AH};@-eH zy!GH?4nNQ3<3~e}_oHm7<;6(E^qR`3#w@gqrSK{|wOdYK9RCe0v2N2nZ9yL7?$l00 zwq~(FG71AW4P(UXKINxD?Wy0tsM7==34Ms1E31k1G9eM#tN6B=nIm_Y>N$-cu%k+NU{ucEic>wXu zCKN=w6|OX+_*9Yltxs;bLx#g-BG7NR*o;IrtGn{Xh_j_MU^ZXyqM5r8w&s@FU@hxt^-#r!K@AA4_-zoAEA$8fC zTLo=-RGL8B-P`MqbopLUpQwxJ4gR#xodxbAdgV6|%I&M`N9kssSIM|+;Zr#cbB}Nh z1|j<^j$=b&8v2_G1*!{`Rt{>+w*uasm3`q2ZPBff*KL`)t+Z=>4U-vj z^qFI!y+haf^uOnei?XKR)0PLW$;~U^%hZR4-ci=p-^(;fIXszzZijFv_S|Yt6r&zt z>lKSrbM_FovqT=_azu={W;#CgkK12vk;7#nY~ zz%PwTOiaATZK1t6nrNtzo|>Q6A}654JBk2jQc%-S1LIm$6BFExOmHyUHpV;}tL^my z@du*z(>An7jL95(s`cv@3%wci3ZbFv>0Y6bI+l+AdR%f|lmF2WwNwZHgL6GUm0GGi zbMmK-Rr^2}u1z2BOQH6))V9mL_NaiE#Rz&(RNiKSnD2@kG<0Q=DTG-k<=N_~`42C{ z&o2$?*>@e^i;>M`E`JsBnTLwcm|M=`Diap2S{rzoa+vAwn}xm5KdEh)e59(x^C1ygp3^!%30u4s#uG(->)?B)vG)$L5WM~NR{)`NNvA4h{?COrwV=NzxZhk_n0+$;N|K;5 z!;MddljgVIybTcM;JY)magT64a{9rRi^{34?T&1e(iw;9h}_3A8fN8=%4aum+OHt2 zzZ9e@5}NTi#+D!bOJzLPz4u}-ULd= zVKVQ5`{iCPC!#K@FZ zX(7eYNfS{)*b*^G#Z-(N45&NVUDv=%Z|3Q-&enrN*%S9echMF&$ zRS>D{V&1Lcb+*hMj|5N%4D|v+}#~`_{~f zM|Ee&Pto`IUCHt|l2eV450UObC z0zAt;D^PH285;~qIKNo)x~O)J;@kQxMCKhHJ=o{xUi9~5c^AoUEnNnX zCzudcaAx^z_s+HgcucwkGF#=gT(z-RT{N-|^k!~BjFLn2cyVfu6aRhtXbM^tC#E%n z^@!hZC$1=a1J(lbozD5v9_HcWZJ$f>k@e_aFiDBCw>V)CZGZG(%&*LYU)rL7&WFqr zKFsizfV#5B@1&VeDkhqZrCr)m*;>HXFG&CQIoA{XrX{s?ZXmxUnpe)92V4Hq7qZB% zomxMp(HSqacQ1>7v}_==CgW)2m~n^;&W3~E~-7*qMf(I8uvri5QprBVU(Mt*&XvQETw z+a3nrHhood!8`B=9JM-zT{`oxXq8Ujy@kT|p9^{McTn0siu(5C`QYW${##q=FGD=u zQ%fb99#We}el1cGZ_JNkuX47Z==yDb45y&gJN1?Qgd$U%LXW8F8w6}ql59{PcTEO@ z2%SUcAn^ zz3@R@KTUg*)aNxqxyW1!7(q$McwhFv<`og!cte0%Xc&N0$L`+Q44`M_LcigcP_oOt zwk}F#-CIqjQnk`v=MMYkBeVmY_odf-d?u?MrL|gTpKb%he{dBdridOo8;0Z!C`VGA z%6Yz{IeP7_z;`j5d)&v65tMs4$8;3}dM5h_w6c~6)z}X&hdVnvo0HGP1eA?)^?sad z=N>2n`nf=LaHQ;Xih-e&e|mS7t-Ww^N(%RS_s;5gk}Co0#@t5O(rT4|#H`eDs4i+W zQ25RCq}PlIje8N*Z#m-8?bYh=t;e_Lezoq1rf&gAuQ*x~iYGF41S{YWqWZQV)b9-o2am8#h8&c=Jr%~%u}A9H=43I=Q{iamt6 zF`=$nyN%T5OES1sr4!t5ujAUJvDffppul_9`++}!a zU;K~ZMz1wu|8a)TYGrUc&+wm)*J$!Ybw#9SW0hOWl~-zNX3sl424mj2kj7~hV=s8r za~i)UzLjG6In|8hNghD&0*+_gv^4ihvnG<=%7_LX|pY%;^nQfWQD z%BhGs37vb&QPZQYX3`>xoZ4z&$9^lhrkq9UZ6xvPl`=;s=jIaEF%$Pu8=%+on#V7D zY@bSH;q?Rlyhlqi3y+@!pe~hj;N@qc!rguGmD4qAG3rlj*Es5{%Lq~bpGNdOdUo>6 zl9FbFSMsS4ZD^yE13??kr~s}GAxqC+YF(wc`$?bk!0fZ)`9R>dilE=#6gy&y{nqMGs?<=06jjp9s$Uc*dJnIgn378AMNN0lub-=v zkc(>cbwKra81u5odnDzSl!d9DFZwDM)09Gv!!2(=uvN$-nZzN;9u zfM2~J3)9HHUf9B`w2Tb?+2oF;7d9?a-J}MWX+8@pFV{k-Z5>N{%vP@i3_77Pi#mL3 zT`u@h-6&GIULaq%(0GmYez27CmW5q zuWng6d_zj09#Z!8?>J~Ip&qJ|o{OI;Est{zM)go>c?jNR&_^`0D7ScZgsnj-V3ojM zlyysrqLF<_^rMpb2cEp5NgrPh5%;xF+vYt1L<0GKq7CNu@(;ZYej9vmY{oZAT-AK=DL9Udx>0kj11erC8kL$LIJ?;AZoc$vwQ(0QYaAQUN zwC@(?Io67B~Juv(sm7A$-F&M-vSk~V9g1-Jm%E`;-nEpdPU-7Te4LC+ruY|E1J^H5DC5g?sYvLR_bV5d zFZ$g|iCzR$<_)6KX1lNk^=&HCZ0ZIq)Y?qMkk*Mh>BOZl8LD|k0eRst0Hspn&FUNG zFs0ljCT{hVz_s-HpHgV?FV^Sh&!1W2L0yhCSP1rAoARo22BW!lME!F*8^C@6&|(S| zMDJxaAFPp1Mf&4@cZZG=juF4%VScQ-)%0wSN58Z-GePk1z7Ll(&JiHTa8yCVY7f zLLJ3taz*ZL5B;@ljnDHT?0iS__XTzDGX|6fR903t-g}=XdJU7Yim`ur>lIF>ij0ya zK12>Ot-QC~FBu#;EVs%30^Cdc8XR7?_6dD!47Un*5D~$qdkS)LNvq)PMjtVe{g3~L zvxR=<;N)bQ+DLbiy7fZ(Ks!y=&CnoEV$+|hviAaihYLZgc{$(Kh{e$CvLY>kZi))S zD(Z}@%o*7SFoqI>5Mwx&U((hLye0!dKjY?;j_6k)G6U&((-N>Df;PuE8}nMu(1jXC$$L>>Q2lgGbXluTNi{LIjh zIR0eilWjXq2I(=L0Gq}+qm{R;z+9_g*1ex;c;cNDzom&&jvCr7beR^&REdTor9~qR z#>Y8B-kRJ`I-*P6_=ZK9jd4m^@~rgrz>KcOm1`-^ryxcJ@%89Bv6K%9P>XcRf<$`I z)Tw#1!Q;|i%K9gm!6UMLh{LnH1Qi(pD{3|P8Mqd7WEjk7q*$}c&ASXQ{QN2MDeR7Y zSx`r}PhwDjGV8H|!L^)b7mCA=0e~vQZ>K}^pbTuWALCk*UgM5n2 z;2d5bZ78#tcH)JaIgGm!DED6ugcsq-|Co{Qe7z*`j~O{u^3?MJ7%`W#y6JWc#6nan zBPgsBHqTWkrLk^Dk1phTtiV(cyq+y6vc-O+`QUfFJ)j#4C^5M04vg{l02ex?f!(fj zN620y8(`~&!ZNOajwZyhu1Vdlgb$Z`W2a{`KB2B%QQ7UBzp)J->cZLzE0a6Y^1ihM-y z+VgvXl&Eirwzc)c6%0NTK0|d+f?6Egtvv%Ze0dHq?XvAXKb7=^-hU9>vmeootUMTB zP~ik2JJ=5O!U~%pET}j(|Gg$qsnbNG2tnRi0DD#3^n?cb)@MP>wfCz?(T^OFw4Wy{ z#cc<9QOsqFJLdJw^I>JW4K5hK0jq;c_NSh&^aagWi_@8EVDoD_(umu6VO$4ZrxaH` z2Cw&%UQn?0iQly$4JxOSNUR~mruLGrLyM(6M3 zpmJrM^wsb_v(uYh;%lB^B(a*CyIgh6sFTA5!0Y*lwkFSMuidY)Dv)j6d7{eA#7>wP zxgD=QQa10o;C8pzS9c5!3!}VGn_nQmA!q1VlzTWtp4*{5;RpZfiqtza34KDMyRVF2caiZKY zU!DEpWXoFnFNAHVK1_jRp4(P8l@lreVUFRAeSRhEKjD4i2U=muTFRnu1qwX*GG!Mi#X5iVeFKi?Li-ABW@5c6_=I~NrZeTo}f>PusT%nZ_v72+@{w(*X>8#OL3S)cOS>63VXEoPM z{tv)|3*1?dq=mMc=?nlIk8U|9DUwj%fE*L=;`u6rmSqb;oAv5VJxD(GpO>=IRw;lE z56QU-3WT~I1{7Y+vvcE^NOafP#~qK*(U;s;7;uu!&ujEbBv7D_OgY^die}o=qxZeB zC4BsE8ffXsEi<$EbNrrS4&h~aLkE`)(z+ydw=Td-ovyZvR+)EqE{;p2i2mX{zM<4L zWNzLwHkxnrGOlZ)#WD^zT>(f{j&}v2SD; zjd%p_{8u3ZtW@6z;SQDUOWDr9fEp3XwBs3Y^z^D`tinGrA==~ zlWqHrfLOr96I5N{Q7VV$N;e+rcLDDFSK z{XCZ>>8w#oR)3v@)#zsgxx36U&E5WUiYN|`gXll10J}j=)O@=OQ*7!q3SJcp{660$ znqYNh%E-V}QY1(!M`K&kLPRI;4!sdA=CPzkpsmVVFcRyAR^CN;m6#dXHZp>HpwaTL zq)XO5Q_BW#W9r7(-db2#^f8r`52!p(uj2LGr6hVtGCBUmqfC8zDGiBAM%Y~#gM(e~JeJ%=wZ*mV)uz-|i<+T}P3MbY zU7}>kNUYv}i7e{5ltS{sb=H+R(xV3k!f$Q7G~#UHh0>Gz&-;FNJ3+U~kUy=4Wfs0J z*CiBj+Za+-ClvdJ^3}h~=Um%jXfJ#^U+nK>*M9iR_>OO?U?li074!S93cN z(LlQ060Q!g7JNzMTzvcK$$XowzqAp9(hv);tkzs5(ufb8wEty8dH5k;!4Jm*I0vEw zMh&yxcX!}_i!~M58s+I4f*^mg5p3!#h@6xKtBy5Xy0zbvzInpy6!p%;h@+R^<;)te zw>7%7Ip!9OLMSIh!LrAr-5S3V2@ViiFiR%B`?ZySTKDFB+C`&|?j#_bq1y9e0YXnP z+Vp9nW+1!xt_^Q86l5Z=V|Xv%`>~I$NI1`6cUf@#Xrpd^Pm>XZd{o_y4>tU{jbJ`+JOZOi``l9*0hazinM#nDbua1Z`xqA-@(lC9Aita~t+TP7cEsk68E;ToLs&$Hao6lj!|?Ck;m0 zHP>wfN=RiOvvxH~sy8gm;yMxFPOIxH!N>RdX0^uGTgqjpl#e7~MN~$}sWmIkry_)L zE3UjtAX*eh^>6OeU{t|T8C)6;(?V;ExCF_b9EXocM6ouY{gioU^#yl|r zc4Ln&2-8T3e6V*>$jL*;CaEXT;A!#AmqLc@RVw}Q3@#EJTlc z75eW*Pp-^#V_ywS8@l20g4}ib=d;#;97`s=OMWsKoCGyZ2YfnvVe=1oPFv(4GfBjCun|=MHi4CG8 zbZ|6{8*}9Sz4cZgOO&n?D|M?qD>pSz|yk%h7Os% zI>O~8&NaB)T#@MMg=S_jj3RyN`tPTQp0(Zq^{*R(oBU)c8h4M@zwK1K_P&Y9U0+}f3vypV^xrZL0y`pZf$MRpI}8} z^%JR4`wX}odQovJh3FNJq`B!%$G-?0*f%ZA@C9Ul5wlTbZA`71JWOyV*QqP%XxP{- zho8NS$tj)*zKOm_%|RpkEcZJ_C+&v{pE#LL#-dvjMr-~P`ilbOCh{l-_C_$}CBps}v+)dIDsOof8<3K&JK-3awJ>sHB#(9_;EftpX`}8=#1_57Rzc`ZdhjH^PCI}etdu6j3M*Zh`g4_(WZl+ z6P4f+HVfRm?@QW=XA#{*;Pa#lX9}?_~}aZdbvnUMxGDxh`HK&$)?MPqh)DVc-@bV zz{_V|kSH9j+bv3MpEiRov1LC6hZ4qSalKUltTc* zf&*#9%OK_0sahn^s-DJ87Jm1efMes-hmmj9xN9_U#=%h%BmQi4=>UEJmEx1mn{iO3 zf4K7?%l!7j@$6;Ps^MBOq4zEiPS)pu))DCC-556hxLm)u)p7WcdFw3tSj7bhsQ@ybXTaF}y6mlw3S$&?P7`TWAFBU+NL{?^VxE)r zuR8JHa%!gO!m-CDP6<3oKvIw&uVmJzJ)!$u5U<72|+m|n2R=-5uEz8N5P{X3?A=CcEHuvxO1V%OHLD3sUL682p2CB5ur(}>e(Oe0|iJ5$CSK*xDxLp<7~14pwq;nP*2 zu7};}C9(3;Vd3@FFW%W80X6mF<+v{eZ_bu~e0Px5eNguBu5XzzqWNxRK7U$Zg4}EX zXO!3K-wvUB70VsV#L%L`%kMSmY|a^DW&=-~nLY#zJ})i;v1WqR;XT3Cg~77stxUAL z0OPA=f*2Q4@(g8~vre8n!;^&xCkz9a==(gmr z`diU2RQsXHe|#;X?0~!&!DUKotsZ&jT3@1b`-j?W3xzqKM3<`~ig5{sUO;4i@2XYq zf4l&{m3L30=3&I^e+CNB!tesCC!InMRC?Y10-x@Ia9)$M3a#E&0{ zF5S={1j&Rei4?cjiE(iXZck{;hT!rCu`-T-+B~O^D}1ao0$7_W)(h4 zj97yrg95}}MX_G%vwZBjk|b=j%KVUZ6y`W~JOw%okZtXdVGhu@7Q^7^lP2xv#5Kog z*eV&z2Kj!7GM!Y&(2g9`0I@&m7Xk!BO;zSDX6ymS&tZuy?NQ4vL;Y3}O{Lc<);igv zAz=s`K%Jk-x-IpFWUxa}zLApzF4mj9jw!*yae5T>j7bTz~L$?)Zu#-@M;Oyf`)P_9R(6qsn{2#=oz{2H?&7%T2?1N6*}>jDP^)sYSBe^YzCRAn zVC6@PnQbaMz(xcbS1bQ^Wgp6gf$et=xMX!-3OWQ8ejE<03!=kjpx5JTDQQPIvm53iihMf>0C zb;1Wn#J5|bYbU0Vybk^Qx60njQW7Y&k%gltF>B*)!zS!VA9Q5^Znwo@EfdIQuJ<7o z!dIn7$#7pa^gqq%dHPd!L^<0fXP(v9a6b?TT&=!+&CI^rK|yt_y7!+)^N-}4NBPy+ zllWu1`k$BsAwew>##04esLFR3AEb}HA}Tv1PuM7z-WW|RcISgLQji$R>-q}^mVOAC z2V3rnNig`IhlzWFJV{5%D^hgY@W9c-vA;m%>U5)NeDIotJUFR9r)V8i|5D^uTg=mnjpd!+wOD}?`G!+Fx?}RQL zgixg@O+@Jsih@cfAxLl1BoGj#gc77AAiaeWAm3o^z0X-^U)MMP@Q);8&N<5aKF|G( zJz*#pTWbJIrtg&QnJJo~jf$J&Byp78b^DOP$m8wUXGZ$xd#uIXuDVJ~g~At|oz6P> zAJ_fz=CXr3Y-PFw|15QOA;q{coN_*1@R6Ng9`Raf$rVrT3)O2_uRGv1bSRdTYlBu$ zZ~p5|i()2eF$>5wt9D;uWJfsOyO(NOyjc;n*#*4h8H z(E#dNhQQNHni~TNK@vRs7uT0LKj)Kf@+tG5#5e7W^G`pBSe5f4li!qPKRJD@+FD7Q zkp8^J?_zJv(lhpERGMW4hjdQs`Zvg-(_(ZSYI*IK=Y_D^1C(3TIhm(`X3T z*#_fIGtEMvA1+3UXO1N>7~QP0Zn}gOLiGnZI5@nS8?_aO#b7S{0+s6XLc&>Ua)Ec( z6dZ_Mjps>4IhZiblm78km8Y=_or%x7CJL1f7hI1*OYp)yY5^LlID=E8>JTK{3e1TU zjql%&mg~}e6f$HXF?mEjPtjpx7x20oQ*3|mdBk|FP(@gfNRkOx5{}w#+-YzN>p1Qj zjz0;C{2|jfYQrsq@7G1(UndM0S6a)BP@t;ATNJQ4UvE z0|PIYd0yEN4ij1H39^q(Y0RBq9n4~0Jcf-JNVPxiT>I!Uw$a~+jGv5zq^!FimG15B zl?pPtEHlSy8TshSEu&u95Bj2qA9r+Kx{gy|t2M=SDC%J@p=@?Po`2HG72xcQL-7*` z1goGR#bd_9*VRVy^iI&~&NLyzE#5joLF(9~!EgclZ(ZgACB*#C6-jY%W^>B^a9vkK zG#v6;PebN z0~!ld8ik29L$r^_L^YO>@popv@Jg9zcGXB`)^$E+bLk+UmCC^hcV#w^yj-mt$X8?# z-7%}xp@!Lo#=oIZRvqj>Z1>zTL)!$+UQEyHQAPOckqFxS7`970Q2f zaw>{&DwRp^HR4d(%l3Rnb%gKBE#a0gs>)Q~@-7q0Zqwx{O1170M!5jju+v>sE-`Gc z5t!kDnzC~cKpKGILLw}Z-K}1fXMgFCFY~#o+Bw@zAPbr&{A%yY%Kuc7#yWs4+Jv#j z*V`&o86ll)RWuAaU4p%PFJqyHmXT z6+LNupr_i_dp18v`COWUV$XKxNV%7wprDt$ci+`ws{_1$Sp8AfnQZ&EfK~5)KQJ1; zWX^#5kg6yxQJr04pz~UIy-B}vmiA5)Xfdi-TFfJz*GC`QA2-0&&J_vz=|*9Tt9`Tw zNdb7W831#15*2r9m_$uH(FDKV7x5+;Zz^Kdt;lfqHU?=e`N3z*nS%@6K(BRDs2Do+ zNy8=p*qy_X5xkBK@h%E|YntTy{%uDYO?w%BZS0eO0TVg+JAKS(5FtnZ`(Q#5Sl2ZE zV7Bo#--lymn4H7Zai z85ols)wT-tjpG7EC=;te(mau@71W5~V(6fQcfW;Gl&7ow_GjI!U1y`+Bg-gG2(S=y z;5r@8ngW$MGhW51`-_Pjd!++apKbdBe(w`cWYmI#B=Is`dXhkooO$04c(tOVf#Dn= zWTw9qm8QceJHeD4Q)A)-6`Cj_`p<2y-FpGU8YlZ$e(qC`ewit5;mh{3QrnWpZk&*5 zf=JZCGa^#F?HK6Gg|mVF74!<}&DO$z^#XXVFEh1ye?xNZeC-4X9x&XK(epxxz_O3D zCCvU+j8~OoH17FBssxZ6hM0Dj>Iv}O(_I#S%LH>kXm_m}*Md8?W9{X6d0xb15HI4& z^Hh+VE>$6}B$?R>mu2yn+x_)Ml@vj7)0wS(PGB`!|B z%I}Ivb6I(uPQkyvJj+@d!A45;ZN+JgKIsfrAsNJyY1j(p)w`o(ZiJ6HB ze?X81G^1o=SJr+`QB0B@J=gQT`eVy7(*X8aUBMo^(_6`Rb4%7749|D?D4(vjlW$)|m#-OqofMy?;ny342_(NHHp9nH&=rxceb^L*c%lUqY%?+CY*@2vzdCZ@*2V<%u|w^R_I z_+8Cw1*0uTFYezTs$T*2D;>?>d`8;IE$qD~mm};iFwq54MebOmaw6`uMm3f+c18dXP>)B!hTof{PV;&&CP z9mQH1i^~itnKA)D(VsPxZfkeSjB)GzulR88(%km(s>&YOju+jsAvcWcM)-7O7e2gN zuXHo{+xFt(Z{-{d7mSgf2@lG)Y`Qpf!;^S!ZK!@UW~9xK?s$f)W~7>rAR78M0)~#7 zTG=vBHNOM@K6yD=RAOj9E>Q$yLsk$Qj6^tACKgD#qS=b{^G=iC_IxRA8T)aZaa9(@Og zz}{vGJc@rCo`cM9zhQ60?$$Ro(+$y4I*FLot?1lmh*ey|83FE9?W0xrNeg%tb^*)) z$wLAhF`pW@hm7U+(jsli_g#QjCSwFlhV4oRZA#ycXK}xF0kZ+q1`|*MSRZRT9LvWm zEqq9t-opk5$y4^Q-1U$Cz3tRL+sWanRX;^5GCzKW6lH7tVFi@?{N@DA0b>VMIb2VW zT>p{MC~-Wbe!q&$E*-b2>$d2ufkegH_X*MF)jdZS7NJmz5>Vex@L%d>ecn3DXOx(K z#z>ZDUvGWAlUr#WQ(Q2D!D#u)5>YGj*NPS6y?#&4ckzWlLfWyC>CLUJs>7$Af2p>6 zNjkwj#SR|}o69ta9eA9`bjZ)ez*}@?u8~z~ChXKEZOPQX2nOjKMn8W?adQD+l>u*F z3X=qnv4-=qatyNL;nVovFZ^8^M4al-W}=Fy;9>V^N?+5AiCIn-FYXRY%)-3@TT|s2 zhfW@v)mQIqT-TkbfIMJ%mW>|lWB2t-cTTNVK*ly+FNxk8PIlrAM zAU8|s2l{L!!QZvW|1L|w84rdDQeo&l4J9$(N%P&hk~QCP_fCtWQDQ26$Bt7I$%z@B z1|ew%$=-t84l14p$R;*5*BUpN71p*MZDZ-uF4ksZ`KnTq;RrndELWh^`9peO;$UKx z2WAPsJqhM)S1ae7_tJy}|LXT0kEcT5EsJ52J?Whg7>VGzIt`yCkW5~R9Hxzc01bDzFRkbK1(d{+j{ zBokT7-<*saP9Agl4_ih2|JNonENKwO%6mTFal*6xF@DS!T{j1`APkOHkLecx;43ED z(#`|tDWa==^$$Cf=x@Qr{`;H=@xD8}JU5W9XQW%;w_QFfsdJCFO*c)wc=q#Mo|63~ z;?dp=H^onFsi^AxFaC`?3+(utyZ5}#ALJ@Xw&#on{%)ka7AT$nBj#>Y=r*jD&&B0w z!+il(z}?Y(P>0sf&>o)gddYIcR%)>GcYSQ1>_d3xQ`&n!>*lcTSdFLsj+~cXXSeqn z72IZKd!_ zHcyK_w|bHw4atLE<9A@C)_$g zaVmtSR`K_x%?HK?g||i0cz0nG=^ktpXv;;97~qAi5Uc0#xi0$Qe<^X;57@1kWDI&g zYC!*<@h4^tAC_%TIJVSIO-!3S@AK2euMO;dghj3PgGyQ5-Uktqr$&*u#*&cP4$8jC zT}YSoTq8$gOMZ4@TK211Q8E3b$XYmstS|!~ULA;th=`ZoVqk0_z&aa4GVTB23_oUF z9G^;`_ADgmRU%()1na~c`-2QcsMt;n+{=u1K&Zc4_uVl2t7;B*L#HMRNLjB;W1qu$ z8W-=2HSgxK_6o$j1OH)R{@$RP95VTYP<-)>y`A>+0EwhzNXKu*{yXv-K~nm6C47u; z;y%Shn`w4AR;q8whZDQv_ge4l$-&XA>BhJDV$+TQUP?5T8+ReXhSl@r8LS7y-#(4b z@K!vKCC0mIe5B@qPH~FeLlA5sq1|}SR{$I^2CduWW^yCM5VKYjXF5>Lh0YAsp6{Nq zcIA0rW~{&A@n)~8{z^=jZ1TCr;XbCBj*aiga-Xyt_MrqyDFvoH2tWs55g)gc_s!DO zm|-n_KV&!P)-qBac8pG&c;SO$l~_x_)soh_F z4#_jZMQ#txOA!wwPpl3EMi!6`XZEV!zdcsuC}My{~=J!$CVqUEFtN1C3djzg@W~HXK?^Rr{*JGvni8Um&dc7r zrr&2u5~q`Fo3Z*k2321E#?hgV{iU<5J~KH?t4R3>G&VcHTfQ4T?{5ui&3@66r;RWy z##}B7tVl62onmp6dL0c$`hW+Y?m0jO3)z|F1Y&dAo&eg7n0i^>YVj#+g%8|i4rDXS z&!Lg}X3ooA_dGZIhnQgYnXapBuJZOkQErhoTPIH=a3zqfN1k(FGZg+)|5~+^ldhdU zr{A~TT_uPl@%i1-%Ocx6P+c?Melcn3;S${=J17bv0Q#1uuoI*jkH+iP4i2AZXyl2= zxpBw?BJ-x%tn*T_?U0^89SK?au{$6U{v8*KcTsBI(4~D<@tsv(d?xqs(!!uet5IL^ z+Sc$2A_yy!aK$OkSCp_seC#STz_Zs8-sygb?|XhN zWOZ@i{7S>lq)LI+POn4ueHlg1{i=cvariX4>4}{FKBn>|jSdl(>@qYKojVs-@f_zX zxvNj_^^$#Umuj=yFI8Y)bh%U^>ep!(5~(AlzK=Z?Ft2j%i~%~dm9eb}!^ zLGoIhzs9MtiVZEBR`2;r4j;pIQ#m(`h^Q58ud;)CV3RG5t%OtaCDLw?r82_yMvp$$ zY!+^RxDULr8-nxJ^^-{{Rg zRrEP@qnS{p;Bwbk>ib0hJZ(D_%ghqIt(xn0n6BaDT$d$Ii!yO|`D- zxWg~Y)4J!i#>tBOpmuJPx5_`1C(_6w!(a|HkKEO^*uqN;;$w3Z(+-(Kcva_z{nc?5 zvTrQ~AD(zI);Mr6(2ddAwlY~lzq8xlqT|aO4K2bpz_`rR^M_#9vgd^b*-D;WfVyvS z&S3ILIeW*|hUm!)Gr*Jd)XBv|TZYh_EZvc$&bJ=K8U@9@3|DlhnL?KHZXO)moN4AKzif>{YeDbOHA4FxQCu>8(5 z7!JyaDEmVAo&M2C{l~uJ4QGn}l4F9$X{Lq;7c3yxE-5bjIWy3(*(WELbWMprLb;nR zW$yXc{kar#E++VEKe_H2X9ioDn@WETWPCWx`Wqy&FGjDU+*Nhf?(V~@kIuHoV?sm| zlPMT+>=LHE@n{-~AdeGo_}%C3e|;ti+plUAgiC5>+LXIG59BBTb&aMQEe03gabJm0 zYW9Eg#xbQj=YYzi<In62ZxIINmQ^+5QZ25DxLv z`TV{@fHy@dSCDS=Tv^RqubQ*F(~DAauYV|68`k-_*sl;?pJLwryQ3z(wtYb-Ie5P? zn2m|)m{fAI#Kd255sG~seUu)yO#&whWRih-zO_^o?kzo9_-ODPe)` zC_W0D-4n(QA<+DTtQtJp#dt@HBr^odP`#07uDAB~2P>+Yo_6^(y?sJt!cr&TS&dzJ z)H3HdCFvBuTKf~?nSQ;^CLYEpf=MdZ@21Ex2MQy{BLC-HTxi zS_=owf%M_}f*H|(vm4s|=bQ$woBR1z@$2*O2sdo~IHTAqO@fg$O0AWSmCKuFo{t0r z7Y+;4VHJ-1aDZET?XRyA=Qf_ty*B^~sq?*`&wh=>ms{TDGu~ows}V+LoDHbOFZkq! z=uT>wrn>+J5T|JuPryxhn;c1@^aVfD``pt1D8Q0mUDEFAe!$MxP1$ZbG5~3haFu!}5YQrJwx#zyB33Ls<}@W`9C+pK zS5Y(W$$4%74vBvlV{>lzNpblV_k@_}+V`@7LWTV7#i+if|ZKM-%e{l!52+jAivWPhI_Vl$JdriR5vTi%zK zZ?z)6qY)PO_?vjQ`oWnlxX|FX(wOAyVvFVQB?`V7Slp5ODCjf$+e2;e~J_m2D-{e;4#y8rwQ z#2aW3seI%ww^H4$ZCtKPO(fOpbL-Y=bSMLoFGgI zc6|76q@C{5YC>WF|?2)ya3UIN^>NADmbvOgS`neN8L z4hj|;pyXJFBuPu7gITpQRe5n~u82vQDtlY`-E8LdwB%n!2EH>D1vUa9Z6>C7WHiGb zG{s(`pE7(RlM=a(4`tRCGZRcA#AtRkD-~a})_;KV7Zl%mwM~CVEz3UF((3Spa5xR3 z4k>| zVo(Vo!%kd3oX^d69D3_~RQO%?O1s8>x8zUd6Lq`nY@(ZIv<+tq2Bv>r=PJ@X8}~lI zl0*0)?s^O4Orh^uI*Fquv%4dXosKqvdS)%K*5YTqp2iL2(vyV6mY{p{#TH>~t!bbonSfAw4oKiibJ z$1gPYJ8HzfZwA%Q#a8&<$dSCmrdm*+oqJU?+wmV$|1kyzV1Rvp+;~Ate>eFgeecRk zW}W$!2=V1hyIUC_TZuM*^0J5S8ws%CI3k3XdE5CXaB>4dLmy0LlLqAhv-Xda>v(Fi zRF}j(zP6V{^iLU&mk3ai+~KhrZ|ZqPTGF8LOBQnOk59J24UpD6RR>+*Nf@ zhS)jt`gri(*GdVyzrB7TVi>b{j152hG2JCgK)E0smI;z;ML?PaJ%} z{;RHDbD}s#&{0Idt-Y~-KPoM%M8sTE4~?xj${N3|`Lt_uBp;a5en8ETKOSTF$j16- zyIq0=Y~^^rF^9C6alBe%;1D~^yKYJ~OdVqzUaxtFM| zyKT~ZSJk0;j)T)D#}5q0i_jk?Y<{<45j0~5;lY4YWF3|fG@WL|YuK^*yjcmt!I$OSO*t(Qq3vfj5-%lu9w-zp2*+{uz5C zJVdS(-o!NH;xE?fuFHr&T~-$K`9x6x!jio8f%7mbCfVA-E)(rD*yl;~mF)T+5_c&% z(s!+eY^Fb(P6=?aU(FDu3@_cgWlWcF@t-26|Lr~6bbkD&DVxB%jjnERd6N`@H7q`M z^c>gM!KxUYTHm<^m-Y7l6wwZ^M5tV(mi(l1-1lmPOZO>ANiO2{p`@lMaqqoPOmlJ` zD-Nc-XK|d=vvPPKI^y9W{kphuczX)^Q`$pYMMGJ6=5HuHDZYH|vLbMp`M5BUr5^Fd zyURKWqrOUU2TI@qCHl3qt`l7=5e$;8^J9kwbz3WMr1v6E9<- z(;$qSzczHr<+DNRIt@2l#{+z_DRIe$ZEyCM|}O(85mNo-3UZe|R1Ns^Th`Z1O@#RK(581(q{sjF zW&8g!*T0_E4S+#1IpDHh>ZGB~Nj?i5TwlucP2t-@dAH=|R>3-x^U>BnH2RBj{_~X! zQ}gVCdi}GXnv#7q25m1@`bTc^$>6Td2;kXco}3sAoH{VoFv9IyGW6k8do-N*2^ERz zo_0{&Z(h%n+CU6IvzTKGV>2)Q#k1Py<;una9DDDF-~2;-=v@& z@=@>)rjm$op~Rzmi>auBEItF~ifZJhm~BlXjxyTR8lVfYOnwFp(I=hRt^WG;PFMNz zYP>C+D}VHHS)cbQ=TVSop=Fzhg>qfd&>syWdL!V$c6K-7ew;XRO-7zcWo*=5pZs+X zsY;KpD&AF4MZ~*q8CF(}#`iAb~VhKs#~;YJBynXvJ2sWnX! z8N3;a+!?#@D+s^X5_BQ0YE1F%BpnqwMySc!Gkq_`kf2r9iC8})z*af3qQRc&bvtuwG8PGVMNPP=?dOEa+oy;&ZCRxXr#$jd;JJ}1>ktXL=2zL}~8frESiN(P6R|gi)j)aZwXWEf7_mWB||5bbV zrQe>dpW%W*@FGvt{P>#h)ZzHDYT0D9dwHx*Z*Xp~lsCVap%%XA#ysF;)`zAy(vGFb z@K$s#=mif=dRpVgl3oyK-nKOAtaLt)v@v!za{2!F)zFVhHm{*(dEbHwPl@EwaW=H= z(6TsAEV!fs#;K7(T?`qr5~r}+Csik>{DM0zq$Nv^rQ6y0Tk2%)je3qL%H>~2{;Wj-h<{*f2p~_)DNC&|0gm?U#pD zBMRZ--(w@X87HQVzEN|wWyFwEG0uK=;RA`92xs2ofzfL7bS6A2P+zLWJzWj<0G@^?S6cY>P z)F`yk=k5Pt;lg0kcz5*9K;&9mc~!3wXkoNoF}jJod`CKQk<)etWqSg}7vK~C{g7|j zXuGqq!pM+?D1kVb)9xtrnhO*G!g5#WkNt65edQkig1LSc&zU_uV!PSjO>D3FBhO|i z(qzQm0<$r*ZVQSVWUcUF8-m=x4~LSU^_?eNdb}VqHZk#?KYzT1UQ-CNC_3L2SeV0E z1RHWAOBnGV%I02%oqv^}o#OkFGQ(u2?#JnbLx~<6 z{WkaFl7&8=t`H*Txl(pUa#LE_Fp3R@HnDHCMq9}8l)-iEXsa1no71!R=AdTIiH`Y~ z#e=_K4Ej8>|KS!^`yYN)YS{n4FV=2aw+DVW&T3il^8MT3f}qYMKO2^AY6CR2 zhT3Y6vd}fhvohG9e+R)Fn%?wI`$TS25RegW1fmc?w*dOy3rz3{>3syqwg@yj2KT>e zoEU06*FQOQI%a;6JyGK&=_l9pDoSZ*+_O&349~lnWMugBVi>XCm7DrcM$HhHq6*;B zQPe2MDHL>)?Uh}0^LC1GqV{am;!71dPi-zXf>%&bV@B{FG26#}fdyul;556cHfKDe z1Zx#Gj{CD-UV16rRpq-%+w9byY7An8Fn3_J31`L^N}0>)AK4=yyH?q4+@<5Tj}QuBR^?X&#}YV1>=@-#&nBzPjdxsQ!I zATUG%o*@Dy5P`78^)P_pH~D_{o!vQ{KS{`1Cs7?{*_6XgDg_7;z6qA!lK7fs^w>Qz ziKB&^fH=~ow^lfg5b0odi;WHv#;}k}Mx{^rhx%08o8G=LOUrs(b?EdYJsMOMk|&p4 z70C|XwSsQd#VAYxKkf>y96>f!GoFte26cNs5bgqq3IK@C;UAjNbtXW9tSMk#>ej70 zZzsPN;jSuou*Ol5P4bDDX1)Bp$6alZRC z#B4dy8wMgkiLmiq0N7l!(|A`0Fv0(4u}mKw$MqSSrAAwRXg>BOMCTmZ`c9bRp>bJ< zwo<-NzoP_eToJZXKHrp+ZRKJxIBubMukSq9N*r`&W-fPlETZteJnfZ@Sv0nSs^T$! z^(fZ4`DM@DNlP|&D%REb1z1d#f~~B*z`pYHH%hQ2P0Mcia4_+S%f~Rm+5#8$#Ip8S zV!Q`i%)9SAVU^L3oN%xya!l*%F5bsuM4hB|2a2za;fI{3L8STjGXsqpG{vnVX4rZ0?I5@2)E=f<8RUT+S&8i#}+v9^cW6t`X z{9F<;NdrxD%3T^{!LvrY^Fx%8Lc924r>Zh>Q1CiwaLWPw;kp*(lX?iOP z{S;>M*y2&eWDrD9l9*09A4r@R=kvY&uM#wo%<$=N>Mzrfvc%<2rBDL@nO-chGZo_+KF8x)CYO?FX&MXW_p-ldNPP|w}+Qg`oDG*K&+-S z$n*O8poPpYH1wl5p3~_qI(}E};VfPHb&0>KthJZp9P#@m;~L|p7zG3xAagjR}Z>hJWW)r*%TOP(dA{KCr@#+A&5z|XV&rk60( zD{O#w9b4+BL=#)l_bnPM62z7dUY5lNoebno=h;E2dc&hznr%@(4HAk>cgyx!@%JG8fh@6sWcQ~%-bl4jEoGU;G0EcNg>C! z#%n|OjVX~1Rn*J6qC$?H%L6`@v~u|scoL&bVxY!lt>F3pcg z%JiCJH>HKdI*vFkFd95ajLu9<;(B}K*Cy|G-TJ3CTNZf&hEVXEc{`RBx)&j@mg**T z3oVNaOo83U$q!AGZI#Uk_etm>$yN7~dI9qB&d$!t2A8bRv>Ptqgx1)YkoPfs1(vI8BaS=~=A13ARrDK2TE7p!CH^m&=`Mb$!T$~6nKvc4*8YXmDa(;a z+mUK&m1cO`x69j%npRp77vH~&KB1a-`ck6$-j~y~H{V@QSN{-wgI~h-LdA5cN;_@h zO)En>4jX)mWyV7G%F&@pgCc@luZS4b9USNn4o8sa1|+Y|fb@#Dv$ zC#%%7)cS``{I}>g?RZ`+M=MFV?5q<3{5b%aDDtMGMs@ujWy0 zUR~yQc_SlRr$)8#hwsJ>*}kTNh#&lSST<_1im?DZ6%Et8Iuh%s(NXy`QoGlr;jfM} zLR;G0Td$y(=oI%0OsEOIyY~Zjy}@^p`gm5X(>UcIglKrX)=~MKmx|2+SCMekBO~Di?_gZ@MwkOHdGKJ?D zXLvDLs|c_%asniMVoXBdEHBeQvZ@8c8j_&|8kys7LfA7keV^+7&-Zi)Z=x3+9v zST`ZMY9Gjmy>bpg2H?O0CmLP;EE*uoZ8JORvc?3p$;4a_^jgTQj7`~b9Qs2c2UA3N za59z1uX+G;anN|1a#H#+`gKhsDEiBiIe^n(_nTYkaAw&)b)Zd|^+bz3A!y;p$6hz4 z%4r3bbiY$%j^zdBpm)U3=#?X@ofwcxSih%a>pvA^Dw{*ws2mXKnE2(>zphkXLN8Ah zkiJX38Vv%mQ}@)^A$1@+?mS9eZVL7F`R~>d$D$IRJof!R&*3`XGJh;ny-uF5qy;K8 zpkFFBsqx5xL!X2x%COpBO$vsl&&tZXFs~InSfKc#}CI+3N&Kro$=Q?!oFV z*VQ68KPBt_1)DiN7|}y8w&i@UaH6BGea??Gn5cJJ|0Xtq(O{1c8seI4jH>~!VSSwvzc`)VFM9@W3F`!DEDCzm?=ExLK;WS|bdD~=P_ zP>RL}kwYuq1yI#nAAo`};CgfVj95;=sS;R~@J(Qtc=ECYLIOua105Z|Fn?_^3fJ+A z6MSJJd^#?2h3fPp$3rG212cbH-tYo)3mtcCw9iCk$5hpD#GvUCYEXx1V56O^lg9DZ z{kDis7)CtH@V%nE4$FFkQdim@uzYmbQG8#pZ+_G&XCHtF*!B6HvVgbPpB2aZ&BTG9 zN6ZfJ*}o@zS!8wW$NZLRy_h{0pLMuC%)0cu7suMWnveoXry-DX$Q7_8+FuuY1)SDPOv~LD zpPwZ>4WJzENVA<{yV|9?fK>eqGumoH`l%bAf~hkqY(4VaN0VHQLfYUiEmQB@7$Wr= zO8D8OoMHPfOTkB~t4SA+DOvy-uQ`xx0v%>dbZJ3kL4?n_UeK7(P(vB1s7a4zwT&sT ztZ^`K^qi2#zV>f552Pl6(9UR>q>0}X^r+963s4xoFAKC)L*dvg#zp+Qk7ND-?-AUd z;}kp~COlj;XG9eS^F82XWnI{v$#oY?=ue9{OnMU^L;^zG=;)697vNhkqC~*q)O}0) zt)T_tv>ziDc_PoyXIIg4>ScnSo*rk>bun1um2mPBQddn4sNc!}r=7B2M)~tG%iZdg znorp=J^r%R+io_i39E?_Aiv?|(Zz>keie)onygO{$VO2p>s~wu`>fR+A&BE<|C3?5ZE_+Y(0G zYt}8lagNW|Hp}9H)lo(Ld$NgIKpQo~F-u7e<@szsvlhc9KP%l;&5M3Iz=F3{y1i_O ztud_y@K-R%>LM>54-VNnEYTC*I*~N$K`bUu-g{;&6AC$$Ygtr+etitg%MscLiN&2T zpY*}J{O_5>d9-pDu!LEeN^WF3lxG?a^m7NUwd8&j3M8goPo5ctX&i??@#g*VaF$ed z!U22C3~;E&MAtv14z8oRxuzg4A)EJlu%aqUTWa)!KO+NGOrp?}t#$?3`fp(okqrGO zD$f7t^Ie|Xm0vlR#{F9JGnK?e#lpaZ{2ZRz0citsxHou8avW?Yk240rP#*V>z#o7H zxX5G**s68S)9o>G$rn+a*>U<&Hyofg@$+nE0Sxsg;6o1ii|2A3EY-!Z zrju=DaEKOPl=roB%E)_q^2dfHSoK`5dT)i-oeKha###`wO;cktXUlf6_wSEX8bQz{ zJi=;}1%$hThhC0C3Z*e@uXsA8N9zI|FxqWK9#bCf&AgzREW=Gz61 zIFlJAIa_-9X+%`cq@*f)rXP70IMBkP5Y8DHb&9k zZu@_hja>!nNx>()yu9o6LW@zDETauIY~6nUkg?5TVYXd$8U>#*z@d z$`WPRE%1W%c5}N7r>EpIJNK^LF^y$%xmAZpq^JLZb!C16KsSy;Pp3{UK8bu<_dgop z0(*TR25aVz!0*TLNvqI&^u6imhZ07FysZ}H9!tdmtIWDH7R#YZKpbswYO?wieNK(w z3CBg+&92O^Hn9$t%eOZoZvz4BLi1BZun z{OIF=@pmV~UCm3#t&1LUH{3H<-D?<%g>(v>pF-RbyIwD93mxGHDZz! zoBl+D)BCB~xqA!G4SL~!jx7|?uti39j}N-UmE8D*#USco&-{W%qmzm%r86gmLgp{7 zB(f5LoZ%vqi}uy*W#_u__j)_T`TT^HT@M)|WV`T_Tj#DRK9)TDce?Jt(3P3^jH4{+ zxmJ1+=RcQZ#>(<9rs+C=DgHFkRD0qjoCm(V8 z=PK;1^zZM^BuLK`Kp=q?<|j5*(mhaxoLHZ%JC2*88c9h>47zJY7Vt-UXGc{DZ>|Fr z$Ph%nP$`h(vWSN#NZLE!Z}wv~Q*!N1x(7IGrN#iAs&$Ur?p*r&u6gh?eiqB@hB^=M z9T{(FFRKyG2Qv_&73fB{gMJrJ&&u>tgl71#$a;+tZq6tDIG zv)BVqpzjm^16K|5NuH!)UPtj-yR5^e?7)p~JCQJA=}Ri@wQk9qrmM&;gLv2u z%TVHBE=168M_@-*vS$RVst3FVCfq{`jaVCm$v3 z6x}~Rt{~5j8;G1wk(bCRzJtAE62W!FcrEPQB{8k?h86zKUNU|m=E&b57Sl#SZ(g;0#m$`8qpzrE%+qa^<{}N!5aozvopYn^yTPs;f#YTtFW9bE9 zt{o4C_N1HkdYPEqe?2n*-AW+LnnbDdhH=l*e$Nvs?oE`AkiUtxs5znFxew%^Qmn<) zfhzg~YTYc>Bh?_kXE9|_@qJA$tSvCP>aU*lt9Sbugly>Py0D98JGId;WCCSS=}=G2 z3z;Bdg!+`r&D!Q+VJ>6S#hM0H0vzbO5t%veDT+LOk2~%-r%@F@-fcFzaaTHRHMFR0 zFxWgua#!U>(3i81?)F0N8EcMkcYC)BSTyA*%`O5z&%)0lv(>h^hK(cO%7y=n$F(B(&*N7*xiNG@-2r6s1mU|a4h#m!xx zI=feCJs$|Gz^>^jjyNNG(+}gZrFAQ{(etJDL-|S?Q5j7gkyp8yOc^3;pJ$#I0ohFjPwEA%^0SQUdIHTr^2H58 zbYA5R=B>QAQCx(6biuzwRYfwgGi4>bv2l7H=Gt=h;d5Krwl;HVFkiT$?i@b8S(X0Q zYW%X&Z@Hz$*Yk78fw%o(91&rW>PoPb6jL8)6lB=TBTm`rTGy5O38%6Kp1f_1a!H1` zj8)M>U4`wZYzj1t16ux7a|}VYSk$wUSgp47wmUBE?kEPah-cVKKPyN%{>+!i4Xbds zsZk3Xn-8pfiaPyPcTev1{znTi+Nye&8@7$vyj{YyoZPg`J2ympe z0^$~>OLw1^J}y@7qJ`Y_%h)^rgDw#DjI+F>;#N8K_~^x{d3Gj*(ZIxAT@3{>T=hKY zO}BR47yQAr+}M@63b;;o2^Cm&_(o0s)8)#qTD(d; zs;iP1y-v0(#B#sc+hN;SE&L7BC$u)@lag#q1;GPt&AC$(;@x& zuD>lt`PG!>@}4evkpF7!kIzuOAATS^!?o7I{vePg4Y>q0eN--v)Md{@=?TCD4sLhx@7%;W~aL(bVs-myBfd9n@;*6 zhH*P5X(ul5*QOhNY`&}zcWF4ZFLzi5->zz3l)acCMz_tF^&8JW=<%7?!5l3`!Ryx_w71;R;-#_qw3b*>x4N8yeh9+frHKKjo4 zia@@1YSLGYCRwKA!36hI>_RL8r^T1$^~4iTjJArOA8Wkm$|&^Fje09^ zni+8!ris|Kyt31;x-5vxAQA+YSr@mqyrNbBLI&2oA=t7BJbL~i5OT5#v*!z774rU5 zEh8&F<4+iDuFYx8J)DrQ20(hV!uX82WcL8mJ7bE0TWpftrsf{b&c$im!#bWT{KM`x zhhqj^M}DPq^G7|6NFzVedv{KaeIEt!RgqFR{gn(ZKJQUj4_B`*N6D#W5Yd8EF-8R1 zR&%2wM7A8v`B&As3irAMB^90*&9od? zt8;C+UMHuan9MqG#C4U1o<-OhS6SU3g)AWN@Ql?h>1k4mdG|$}ST@cP2CGOM@I|=9 z-KzWl*#KjhHtiDAv$I!VkcGp1iH#p;r(iTrn|&@e4DGB?)6ZiP?+=YNk+$vLuPgU` zM-4eX_NQocq$R5q9FE9J#qJOc%sB;dHaG;{SK(W65c6$H|Ch>7%@+U$9n$lvD!P15; zHRRa+_kznljvgJ=aStZXje)Vy@lRK|>KC>Om~yx9k}jQg2xkkKY47=WzgtN71=KkZkcB4-G1L z>t=R04eby?8Px7(L`oK5Lu&dBY#=lMW$@o!pXfju%6GQQVI#c|bmECzEl`xS$@*Tf2uG z3E0y?>ux9pdMJtwD(eWW`orP&UBxr^{_7FDB}u_tpmtv8&nE@GAf8;1TT)z9S2Lhj zB_rYzULM}B#0;U?Y>#9Q;_f;2{!DYx6lgAYHyTV|o~W)WP{ftYu>~R4N0fN$%18=z zLK1M_X)beuy$!u_!6ArjG)ZRrOzeE@+ZH$}W`363=NCITIG8n$ayHAwCx6l^LQ-DC zyB->eX~tMiwn`7Tc#tuUkA8qQu&;Q`%i){l_tHxy8egAC!)o3DozQS%sjUNUdDx*S zV2^8v!+1}Og26nrF)}%00c;%&UhnX|f-BHd!N$V!ojE8Adx&3Ktc0j>&QJW&(-i;I{$pR-;WAkGK82jsNN4~#QZwCOWEA${iq zExI_=dWiOx-J>^7nJ;lEbx1?KGdOfxb z|GF(J*x4#CON%WJxk72&_5Fp~`l#6bj-5Lvds*d++5eo`F--sH^k&`V; zX;Int?8-8gtz}U6b-9vxz3%(@e5^Xyrd^7!7~H-27>S*7$=3-I)Oo9=BtfR(t)h+~5p~uT zkJZ&UGa$qGQR8s$n5983}v&MQ=nJE^STgV`LzP zWWm1;{yCzZlV7VQ+&yY@Atrj<)XXfXOr?c%CS9Z|`jhBBTnMUvyL5|NGCuYEiLPr2 zA~jPAocDCJwI_Su+Z{NV_hl7VZVP?Y=gs?Ky{2pP#Yy9s3mema9x_E+dkUHMr9-1w z!mJV&CAV&Wy73)wG8&rLLr;jiQvEsS9kVZGq=mR^n(};m*g}R5>+G)nR9n>J`-VCn zQB%a1r1;VReE&bEayL%{;bGbRayBYK3#T2M506Lg#A9X*Fs6o{M>~mr+tj~NI}OO^nhi* zt5-fO44h0N9Ok*vZ89;a#a^`~ zC2n%w#719BfU{42rT%g1henTUW01xWppiPPy&?Ru9hc>VTJI~;L64tHB#z=<&auwI zA3ajG1m_KnIGG8K`F!WCPMeEeKQtMiEb@MMM z#0Okl_kadSLWls$lWhDUV0}P1PIlo5&t9MZ+67-FgC9KUVJGRhL^L+~BUV>2;N$Sp zSxaq=?}Fi>mFth(ID6CEUv{OI`_xuE0r0aDZCZIod0y>oyOUeB--zrA?|CvMeTFTp!YesBIdHZe`N*|Yc7M=Vz%%vH*w`eW zq-90o?gqIzWCfV{lZU`oQw^d$zA!ibVi~*tDJ1}uu6vpN2X!2HuYn)xpS4#<|M*}1 z$sju~c&Ksmq;Ck`CS#*po3Rv3@p3rD^lwcw&oySi67#F?0k<)2nN*qHWHvegm)7|)%Top*9r{F`%)cD(<}@lNAPT>r)uM9T8p4^q+* z78Rc}w&&;JiZT#|tyegZ=Ee%jTf|z3XtOTkA~}WJLsL?HEz!l1%CcUTMNPx8Y?O1f z5OnSQfl^V9HOB;4?q3~z(P)I>mf94wSc?{VS#d(+0BQ7{G#W94<7Cku7USedEI&T8 zA>F(@h7+kpzW3#4WPc6veqEzVOMP62kxX zPuhB*8jJCT@m+)n9O(a)bMF`INFD5A!s$ajZXD*w^2t!)X1y@&_tfzjFwuJJYWz4y zE5hd9U)XrH+dXnQrz;{RpRY8ETluQdzt1}xjSwmSGsXPO^5Yy$vEfV&fs4O=kE z37%k$HAFQ;nMkYZ zBpIMLhbM`feU@cd*}oMEY|N!-Mt)pKCsOL2$sT`9hXnkq_?PjVtzrlG$IDa7jp4i7 z-PT`!($u*B$aPOmv$sU8zeN!D9wkOt?OvN}{#uabZTAy{d!JlXE*PerG84Sy0t>0m zHS*{sU?16Npy%IcFYX&-H$#i|Q$oDe#4NnJLhCmwyb}Rsl6`=RG+=!0kx95ygE&rO zw*!3lT-{TUnQ}yuYnrAm@15Tsfg#?R6E<#L(;LZnmNo3pZYwv&xR)C(u&tn@-@14P zQ#@*IYi-UzY;Dhn)owaKC`pNlg!#L+_>ccE0Q-FX7-p|)$;Oy(^Xv*RB8P4Rb1*6g z`~jIDjU~)VX7HO|SOBUJuWeB5?m7BlZ@n@X2PAzOy9WBZmivPd>kj|(7g>zZd^`Ys zo!PCk3UWuZ#l^LOV5*(jx-q*e3#c)9ZEaB|!43%P&j}7Y-|IF1SuwuvYsT0g5e2mS zYLwW{X;DBQ4g(>;G_%2k86Cr=^{a=;3%CIIDV~{q16W{YM>F&5!@%n3^6gXfDpSJ$ zVU*F>%xJveb713zjqeA*3kGEkwC3YZPHqF-Mr5DYGygU%9!Fhx50sSR1s`~K(<8Rh zW0K?UnTjJ|aeYttJf#h=z2`RBbUB!^)GwQxS@Xx?^~`Gfg7QoAnhMFs-k1((khi*H zEJ34rfIb$dr5QDPqX)f99|N2tm&OuEjAC|#>tn+OE2g6z4g^i(nsrv1Xc;&WyM-p5 zfj?ceCz3-0?LD}O6phaUfEpAM?L)50?ROg(N=wb=!j)#%z)O)FM}j=wDse;YP6D>H zF&OxizzYVy~HreQ17*Ly-*bJ>=A_R%f$>XXnjOgE#;8pA!+(tFww8At+mnsSEI{MDa*MzWN!{YLWcy%h#C ztSjr$&(hY0@_!DksP-l|6*2%|0io@DuW7X{ZvIhsK!N_*G56dsq4F-&+unO(AmZ?U zGPn*;&gmb!a!4b=8+kOF_b2#VC$0EMWl&z8^4TL$cMq zzkU{T@Dsn%VQiDs*(=0w&|EEE&@7r$ljUvOq6X=?*CUn3lNTvx*}=JkW7?yqU2)&o z!_+r!LbEjsYKE!W{!Vgr%v+R}bGAqz2oVR*}paoExfbYRu{w>B$h?ceSJ2g}Pie&88j0OrxpZgDO6=kBG-_V7F$$L_T-?Vb6ue6Sc zeoB#Y?t5E9|Cd4rc$6xtrS4}yXz0Uu4}PzYpsMgYI37K=7rgKcY^#6ESKiHvVG1Sm zTBFAD`@-Izt0h&k93>7)5=y;NB}WlgK*GymT*`%TT9+y}Ha92do++Ux$!*5Z|1xAT zsQjAE&z=L`A^{eoXx~=oE6%b*@Oac!b?1Q#|D= zbLv))tHs$nMm|MzXk;iUO~oG8v32R3wgt3=K6b5p+#U=&A1KU+&(Q13vsBpbhu`WY zJ1@;v3pThbZXu``h;yT3d)l{I;CVfd%L=M9Q#4=J7dZ^IKZ7g77zwU?>LhWYi;JTAFObi~j7iF1U7?5wt*%5h)6xxhQ@%>8_ZA4iSm>8+5gWbapym+wvF#~THn{kYR= z#Bezfo@vER;8Dn$F;0MokR8mY+vKPZFWkps|2%CoetijC zRp3buW3jP;@>eJd_OA7W)_5GEe%X3IKc*Q}!#x`gAXb{x=vpIuF+C*bzX5hoQD4?O z5P8;{Md(<`6k0&R;&|Qq4fTXOQ|E9@IT?b8vS!U_KbxZ2XLXFKSXI-i+?N$O4EBUa zo8KD@Ndrh3yU|SpD~94k*5q$44z4V>`CY?T>9*4G%~{4?+(&D}uxUIxsy{aDU0G`0 zZQa&1OM5k{rgp3ZPdVT8@z1jfyZ3tJdJp@I=$X%;e&^e17Jjrca>tdQfho@jY%saC zVq#o)4g`ysaLe=&qKGyqNU~TslJ4Y2R}0s*Pr*CT5wmR2&ay|pDC@R{y2$$~K4q)~ zj~fXg1b6$5!?@G%@v^I+#P&v6D>Zs9jbw@SX9zkSQX+22pkr&`R!DzR*GWrT9v)(% z8s@so4ZZHwg;jgkgyXwvHjQJL!+?4?wV1XMK$P%5;Gn?qrMzxZ2pj{a7X_s=z0o&Z z&bVYZj0;ZB21epiXUaaYh2J3PEPf`XGF3b->+>(i)}WeWBVQDo&(W_i2x$nX@ui>& zhu zoYJ4P+(=m&9)(%k%AYd%X#L0i-3z1c56O8YOF(?DHpNjAK1Vz-t4LnN6kp9PES(=i z!?tw$AC#*&a{g%&2xNcL9ByJ~yuQz>VO?MklMFT-3=QPXpg-OWCDiEB#+5Hd&Xhf+ zm9B3=^dIahRvjMOVAVafQfRkfFd!$24S;lK#9EnX=35ctuZV#t2`AfY9iYcq=)j=qOjCEsPpX?rN@?Rph_U6 z)f?J5sv$OHj0>*42trn1#fvu(ycXkmdP%bo>4*$Ny6+l4$IHA)P#@=XGZKfA=n()4-_uZ^0Mj zCkU7HTJFJk7Y;}js@Q}?P~JxUPPQG*(0Lr#opZBX>*wZu9ej3!qDCWWl6hJM)&9C_ zlK(peupz|veNc3u=ks3CDUMHeK!dSN1akoS*Gyt}MYQ4WB^$OdcP?pa7E$mlPO&K` zVsFdD28a(KPPaJX)z<7(l^R8J7$sUtK;-$*Grw20vfGi1TWg=5`nb|P%g<0>Kg+-K z(g&>O){mE6SL`YYA+5H0JR=3B!q_W6lQulevfqM>HaYi9gktW%tLcEDt84?K1-?Vr zgB?7JfM!YdYKxaTQ(1QP=O!R1S55`j?k)!xk&ug-YC?Z%GhHqwVU2{11hq||ZPbu6 z^~y+ID=ZdXn?dL$`hht#JL83@W$m6FIT=TZ_^V6*~P&u1N*sL@*xoN<&F23^b#^cqlpYNzsfku!7aUG|^1 z*^{@|R&H-;urEOl5mVHEzMaIe?zTW&hrC2jFEZV@8SA<0T}@$|tzyY>?w(7?X+P`* zN;5TDR$qUk4qs0OhWRVEBC5QnvmQ3x(K$JCh7${MkJX6Ny*wbYT_3Ywtu}h33a$@g@oxOkk z*+=9|`zQhaOIW?2vq^SC2~vWZOYWwRyFwR4LNZ}H;Idxs5a{@u+ZDN6CX&l=do#XB z(5sv?=EH>0t)&+E7OWBxpZk8Qt3f1#2oPwa_0|{fNfV++1HWXuq{oXPMpClv z(|*;g!&A}V$Ebba-*tTH9tCusRT2M@h~lemw69si)~}&|mz{J~f;EDlR2rj ztaDYDJ@8n5hWoHPm+KC??dZ*}asP2kj>@I8{hv)RLvF}^@2@Y;mll0NRL@+d9b!ez z0O2!*!Zs_cRNSRD>21)tId7e2rGTezJ{s=(iMZAhf-O54x;K(3z?QMie2Vik5l|G- z23a~9pqwaMR3w9+fJv%87^^%y+}WWxtV3w;L#KV^a-0;%^@X67e^$d(1)1upnmIpK z*P|R9h>o@E^0Cn6CiI602}McSsPTeckvwE4khVHM2o@PzTAvWb5KYjkJ-;l3(|Fy}{lVVll5{|T} zYN%81`r?pkYz0oTF7Dom>%MO%2~8ut%`Xch4HEd2!$Jd8xU(I*fko|3W`)Pfn}nGl zjMpov((L`f@7JcfG&EkP?Qa}DmWysV?69kLTjI35$gT@=62Js^N}ys`%sVNG3p1ya zY+c!Fz=9mZwf)QOM-p$n`^(xUE7P6nAxJ_yO2lv?ojYUXYM-S6*Q<-oi|7-}995H- z(!M)J;m*D1DbMPOAU}N8uJLl*@Bz0674u+9=35K*O}w$0S&3z%{Y#WF^u~j=&)#I| z4Ni8%>t(|E(?<09R?|S~L5cnmZFiyU`>Fxn#o2c3O%AWPx)UXB__;_`WiZPz)5ACS zVG4E*U$>_mq1Y#^uNw&`pX%{MV6<;q&%gBd?xf^?V%eA$&slzPC>uS`zgh+2L zzJ7M-faBVOeIRRt6Ogq{uG9G7OlTxR8R>zV2|^F-wsco>kwuDAw~v*1`wGRJk9fFs zGILovbB7|{3tpUs_3IW`^+uJdz*ipjup4K*dQhbkLg{*)k=earX(K@f_aqJZ&ZR<) z6apGVt|g(v0(aecwX1dt;~S?gRW)6)D#QxGETvJ(9VBl4tHhfU>uR^g);tqTv`6W=r?zoY!ZNb2{xxt~ix>Yd&f$E-Gye5IfF@afwhQuX?I;iBgHq7sxY3>P$9+eeQXFpS ze+H|)7>`dzSYK;EZfBTOQ2zM(%TGFz*`E}tX{QY|DF8CaVBAe#%PU`q;alDbDcX6A zml7C1WUl^AYbC@ipt3tS{#PqEEACeKXPj2@E=W_Qbp*4WwDwfui#TV;idkKjzSLICMSLwr+S%0QJY{yv{ z-W~Bx3FD|Ypf{PlALt|R?~)-$e;f_De^i{_0ASU?6U7R-9eklY)6;47tGEtzXYMD& zGL8bBOTPXf_bRY6s9I$qbIrU=%`x{9vxgu;bs-lxu)5W{5a`)Jpr-(M0B|?}2ZsmX8%7^4?w49|BQ<iI4XZdM0hDvsV*;O}s&pX#Qj^+`FRaXB ze0}W8L;`g+q<9Iy-60Xbui}7ywFm#YC#-#?pg?x}sPswBV>!J{oS<*4j>ZD(z461V zz(I)?cQ5%e-0#w>GF#3SnwB;s{J1NfiTvB#t3NL;4&c66VE8b7eCX(i|EDG?XK$ct zONw(R+3H);4g(&$>rt)pF!Dlh80gg2*ME2W8fGTCzUBKNPHIV(Ib_W>H9T*?0&hvr zQrI`qZ|r^@1P^%QbEER?kE%5o(p}?lY;B^v?}NzW%>{oo7gsgAV?z z3UdLfikAsouf+%`UZ0G^n{7?4G#uQmjj$tM3BB}ZL{51`RllhQfJxeyIF|S0C35Cp zrAEf$zEW|w3}*}oE_j6VI(9`uI46uw~XYe+Om#_o#IjC75M?y2Q?%I-_6j{N-6( z@T@CpCgi@hz;^9AN8X?f?VxsQL42h{Gp_ni*Yi5IEJO8(GUaO=629rWRfjPkZcuf) z8rC^#nEp4dt|;554~q|j6TVqg5jLb2u1{bJuXFTpR@Rsoh%L^}Go=raDL>!N^H zQsD1|e{4pkv;c7UJJ3Xtuph&GhOWF`M-+||jl??Epzz&V9Fk9p@kyQx-4gL)CSP)qc*)Uk%fFSq;2;XkKuMMRGhXn8}xJydbi8 z@EuP8OYXKp+_X;n`@FF*y|d^q>i!>OQeKAJtyBwpSrD4cEW{g7Z;8yo;Ij@iG7@My ztDZtmBJ4kF_Cb9;X3%&s*kTE2zxc6!Fb-l#d2{W1SirHHLTKZe@#HBZW6Z~be` z1_kyqw!>L_J;t^-PC1rdbij;4N!@56qZT14N^gfT$F3RJ8I|4={+|9xf|e`Kv8-Kc z<|e)Qmdc=K*M<0)9Fxqi@hoF4nxz~Yt*CspI$1NbH1 z6A`ML&$p`8axE74-6Z3rkt0oP4CwH+%&k>vDEiGyjW%na-1B}HGOF}hrR3@74=|q& zi32CXU&mtcN@g}y0=(8|l^hK&w*Rzsr6(y!_x!Z>LM=5Mwkt+K9@K=`^eN=3Gb&-J zEpFT*PG( z@#Zb>pS>SA0w-iWX|KYMcGu`h3;(>brJd1ezpPKxq!ECzW!(u52~?c3R&@n{D)cU5qSqCeSMh3(aEyVplM4jKZ=(8*tOu+ni>HKak;_1d*1s z%m(8YLC>vB>+95UZG0I_*$#)xz*nE)b^?`OEr`1|UBI_~E-v~lc|`&BLd*#YeX^wO(*zcnwFPXh2D z==0Fh;;eP%Z2fM3uon2or?XcObGl*`7g~Z!88B;>02YV0yzF8ol1ftcP45LIl*vnG zKRT>~JHo#yx4mDrR0m-t?C`n>8z}p$4{_Tr$!}b;mZU4L!gGa&GAr%Q_t`F15!0+&dF3VhseL*{2jrzKe27~oWCU<& zwx~PrmGXOvRcmiOkw{LYO}d6SEmKjgL$%}kMz|`SVO5_m&rSlnFjh_*!nH;yOBTxw zB^F2glu(x)iQznzvGLXyx}1MrO!yLhoA}?aRcB+H(>?33`V{na6&qxh!5}GrX;%vU zcVf8TE{@>rY|ZfZdKKo5`ef3-xfz^sUKO97x(>5S$T+HrzbzmrUHk0y1)YBDm&*O# zWnmpZ+MsiG9>T*XzGN}gNwX~($gS`6WanRs=(jy<`_OK|jnuym%Z*oVnbUKV`a2XJ zj0riqruv^39{CcKg%Zni%AA9Wp0W9~g|PCe#o^F?uG2*ERl){}ME9PH3#=V*?d|J6 zr35aLk*EpPs`Z{l^5O&<{))!~xuIRJJON{PchO;8%dJ0txW>A-k}&1ppa-j)b)-5g zxm*7>qZ;3f*CetSy^2WL-ptw6cJ;cL;7p)5l<_TsZ}1f94li_1_%|jdt_+MoYWeO+ zAsXeCs&pMt)b{&Zlj8#7F{^(%^xBI7@tSsYq4^EBT z(8PN$dpDtC>_27PwcsF>gn9Kr*L`hnFYQ|-_ghpDPRu=9Jl#J&;b8HuV(Ba<*=_Wm z$IRv2g>jQ2w-t9m(m6%EREL77JF={_v^3d38Dl>pak>AP;;0)sS&cn&PBqhvma-BO zvD$>0%)*!K?0eG=gzVHF4%zeY6+_{0c2O^h+57FpoFru|5K>G}mqx3DU?UR1=zI zAP4mbQZHufG37SNhK7cHkJ3;z{kM%#Zl3$fJ?z22rI_>4yVCFe02->8l{@yvs_1ELUB27t z(EI2xY$XU{_+r}=<7XYniul!)wDqFbdRw`X=!ARF`rmIUQ@pNr+s&Sl6=*~j&wU%Y z`)Vg7F!yI%Y8eg+H6sWW*NA}HatIgayP7$K+AO}nAR(iFx2hqKF5)MHlv3wB{;o!e zS3wL#crn*3a`pRm#Eftz1c4m%J3x@MzCGLS$^p5QiA*D0p2D$^%o$G!O8eNlFW`B* zav-j`e2{J1#TzBo5AG{>tuaqF1&2zfbxMozZ4XkFmcz()35hS@c~>*67pF91RqjWF zTIi+h9w?t&-?z<75{A@1GXc0q4QJ#h@y{n7Fbx&`#l&3nQ?EbW80V&g!j(x*H(n005O8I%x+}ToO;En@+MIVO|Ic!@B3MJR|Hpsz$A5Sy|3_lU z9x*vtXKJ`sL3z#WHqr>uHsit`yyA#zBuBBh6%c~q`dga?w z(_iA`Fi^gDc)qxJpyA=7c)?=bUnI%GmAE(%v>P}T;EDWJxf;ohI9)#NCU)5K%*Ox* zLJk7gppKJUO9FN5&{LGXFzh|gkPlD7P4Sc}oO=fEl ztGz-uH)4wIgHo#)=`v6WeLC6|`s=Ip_ptfm!)KJ_R=U&mLw|-}J*ye3f^h2wxgkK7 zI?2ORPN)uKuEng|r8PIm)GRvvjNgRWX50$Tt~SsTb#1@l6PkVmC`9(QE`}&5ecE$& zDCLlOe;UyE;XTPa%sJ~D4-L5TKQI>nwk8BqOxG6gEpHm!r6{oBuEQ7sR;%=fO5m)B z|50%G3?mD6a*E;KCg`rO-xvhdp5j2j$kFub>T0*iJZk#qv7f$K6%z2Hi`}Qz#%n*Sr}}{fefoQXEYrxl-o#K%*UBJs%;h>C2do2Eh?6(0 z+5#a4Fh zF9UMc@;C1Ld#ARWfcE8VLCq}|9CtGvXo30}{HH9zXoMU&--HPVD zZIGS*yH>3n#(g@Ixi9ML3xl*pp4G(h)1i->s|DmFI?B#ohqv20AA0nS!$E+DV*6NO zdIb=uK-5eG7XP#2&aona0`SG9P4JV10`LDWAcQq~M6FRT(?Opf8#ZkHodc!kyD%^V zd8j4Am2b4QD(?NP+`9}SR#=j+?0_0)VV>S4R;Eg#pVS*&(H~QTd81K~mLA2Weo=h1 zUQW8DR~t}0pkS^-BPVGb&D}I_Ap0z?!dqSyd4qnA)@$)#)(yZCOC4&z`c$z%*9Jrg zc7+wB$5Jlepf#R@x}lpL0qL?1lS|o4Y>z*I1!%-~Pe4?(lC*(`909 zQ-0St7zdjRJMLeSt*z2o2_b@S068u);sql*EYpq?a*#5=S+14<`)?8!Xq@Jqr6R%& zzM7SB%N{IXoH;ew*5y;FrC}H=GGt(Bj~# zNDyS~mnWSF1J>tLi%)wFJbe}g;%$Bv&W7;t0L3yOzYfx5C@bK2bahZ6Vw%xx>%7md}Umf7&8|^caPxXp|I9y z9vmIV7fdTNZg0e_N<^$l@bn&AR|QR7ad3XFQ`|d1T?neGqSg)&M|yyWj31)UVA}x5 zW9VZ(KJ9>3R-UaVm5-z6*cLz=+Q22B=|!>GbCO0;-f2390E?+t2-s(O6ctVF!vsKt zvxJU+&#afl>=Anh&>aSlf|ANj*-Y-mPnmp<;q`$tat*&BpwG-$`^go*sYjq^i-(6N zR@lFzg%S4H{i2WkKCa-yx0q8vO?FH_hXvu9{QQ(d8U%~}n9oS^MYsSwa;a645z8%0 zD2i~*(toih3PkoX=`CN6kC2~F8;8t5I!bMJ3QhMf#^aIF3C!Y2o?dAu7whNpjeoI7 zhAn+f9E#N)1&7Q;*U1YER|{_xPVMw3T3HjPuAr`<>kfIFR44vju>M+isyRtfXY}z_ zEJ+R}aB7>&YIQH3H>@;IjsfD$sWEVB_?U$iSSl z=_jr^<%fB=-tSEE);Sn>@}pJDruWkQZ?0Sqxpj8#yK6&TdO*{rLK{y0__}B1Kd?4a ze?9<|IRTyqjrB~Bv%qUjpLhC42wu8QX;h~8ua-+9U5{6sIXiAXy4gVFLE`&?r}|v^)whE^tj3SW?qpp?U8QLDsWC-ZO}6(1I{{d z8-hD^12m6zTTxt>_1~DjI7Y5Ik?-ep2mn)Bk38l=fgZI|yuj;QJiJC;$w$f;?r0@t zqA_iNc_U^6`6lLaE#Q=x*vjk31zwXAG@WU}i%ln!XqB>awaG}n(%#DiW>L>uIyf{3T-EAVMG4WQVJwy zX_|?Rgztm3=EONF`#Tm(eq1=FRZ+?BFKc_3RpT-}?Cy+ggc{X&YU=oA)L$(O4#t!0 zN>HHmty}q>$oe;VhC5OzJ?slon8@SuP0hxq<}bZ;=~A4VvqL+2C5*><7{uH!7QoW? zn1o_ty4I-7@f}KtTkd`TTYH8TIL5>Z_$|EyeQ9y?_J@*^l9X4Ry1I@DkA-B=tsK2S zO8G*>N42uG8jN%BkKCl4Lq4gu<**4KY02tIv4g;g(g#CX`KtO(EcH232jUGPd4sNT zki>1?pbx&~<>k#L*LypB&gg6q{ci+Xnfa;0;lx1n!SN8<7Pvh~n-#7|e$&b;Z&=B# z1s^uKCX$<%Bc|JulA>Gq4z?T(1sBXI0d^9)%=V~twH}?KtFEj(c=XUi0nPiDgq7G$ zH|VK;y*H)Qn^Ibr&Zpb|*#M*R{OS)947N0tz;eeWKwZr(LbU>+l~!UhWpU>A(`4YPZ5qJ?dqoFS#+xK{T9%5@iBh zGeT6f4LdR;QkcP5Tg9Bn0fH=#S2ut2=9f5lh%fHSde{Hxa~dxD9+(nYWZl0*-ecLE z*?mb?x6!n_*{0n%W5P0x%{p5+8Q@c|XZrjdA%m+~p}AsBD>yDKAs}iuRPjH@j@w3` z|5qq{_xM$59`k?uUBUCUtnYhYmPmee?Q|WR725TNg!&wi2tSKcnbFv&q*qRbzIiFp zrA>LCJ995f<8H|(ho)dZ3Be1$%uOHPIkedZs`>ht%+*^res%MkBjczON@3S@ewQiZ zM)qUwXuLX-=aAECr?K;a`iUbGeW}OYLB7o-{>V+IDUDBudd}04pVkIG0$b&Jhv_eG}(fR6t)L!Z5|Hn!KR_X-J5U_&Cw=NaO&unU_l9= z1-6Fl;FO0~1-WS-aZ0aDuK-7iMz0H9HlNZ6`hFv|r4uxx)>K|0ST>Qmiir?VwA7+isj_htrMpn#)_=_6H}* zn8cS*vZ|7$0VKVSkhzW5%^eZhzGI`Nf5L|ol3}G*)V{)o;M*AhqY(ulJo3HU->MO!KgJV{w zs*0CiZh-r5RHgr12Upg~x$`AFCC*a3-4o_+Hv@Zb4b3%Qstn?U;>BhI*12A z&dwwg6A>KGe#b64`oiOiuW{Rue_3rHOs&LwP){Y><%cFS@kXjgMRVzP4eZB57ifUz&0f>j_Q%56)aFO>`nxGxo9#B9) zOXS+SNfXQRMv@M8NbQ^#^O2`bI_D^g(ugEcmRxV;0y}6>e>na$rU^Cc#3+$uJuMry zHQ2O2Ch`9NvhKo(uZIY;$v5#z0`9pv85uVh*Id^_ucTSOL`S#b6bu*4585@QPe?GJ zDB0BZ=TNp5fQ8;^=CHXdpgR3S$&5@->qIZCX}T9lr^15SNpksLZd$twP`=F-JcUuEzBXlp!*A3?ZA(^;ufHXNHdif39&z<)X)cN#_dY5nqX4ScK9 z)ejifIL+L=ZY!ecIp&)`F20XLTB3aKT9CWFxa`Noopks%Y^>Ar6Wp)(OJS~uCatLx zHmY8oO6d=e(QHKq_aC5iXr)@%L#XAy)CgsWjt}LZM<$({a|jz;ulUUH<vP^bEMlTf)%BCx^g~ z(-f?RC-#vK3yhlsil=PE`aSC+=3rXWpEucxoHBfx64?hhe>`6)dToLd?G|2 z{dYGMWn6oZ*IVZ3C;gMfTQFU7Ox4=K(lBx8P;yp4Xo`l-;%3n+9(QU7@~)%K8^RrS zGrI(3jB$M%Y^0=I9XfECn$vAN+^k3wu>luaNno+Zfm-aSYDd7&Q^E}3kYcEkln3%>WneN{>%2`;aMtq~otk4)dzm(Wd+^ACqd3e$co~Hb$T9op2B?x2z~Z z?@bwB9J;07D6_P9z*eHCX5=Q-&hyzB8|b<04e>UQ{Zq|%B+$NPNE^`i(Y-!nYevlq z>+QW)99@lEdqMe7#^Kom>n*LA@fqYNU`7sbc;cWnkN z+c8gPSfOu3?Q1I&lat#}?m2=y6I+DM>CwcNziz(fn4JevF-BvwZ0@jmJ)YEk!_Zw! z@xMkPCIWMU#HaY~R>=3-qBD#5UI?bEa(a$%FxQy@3eeNmv$gQ`YMmRHER*DhuVvv- zFzIG*Z{Mdcd26=*Y~h@)#{_JgnfBp}P7fm@Ff)G-h>9FlTWV~DcVo}hG1Z0y%L}35 z*fKa&RKOe@=P0%+050CL24I`r#fQ+Mp%S)P+j1jsDz3@XJ zx6}A!g?m9ij;&=RmcrJTehO}-LP_MKou{EX+HP4dqnFkMV+QXE7a!^_UUAaC6YfUe z*gq^vl#`5CHnW*j5R1FRr?`#5eFS41Y8Fuu@q zBCn%l`eE)@yz%1Pi1kDCmat)~_w&CXRV(hb-LZqO@%MN->&0q`U2QM!?D^o$>5Mz! z5yL_hTAk#6H~oQ5qpzK7s7V{Y%j>_c6qc@RRYWW_MDNL{5wp^z@EYyD>bo!MJi#WS zHx$&?|1U=W`~K6Ef&I3da!VC~wH=7-ZVl$S<+Waty2VabQ6jU%{-FJw35wg!Yw29K zjF(P0$JXtv^5(Xx`h~@S*UcpF-G=c9F&~se#zHsZs&T(}u2!ZBDov6WeacNbRD~$u z<|Nw2a0(dOn8egvcT@0A8bGVQ^c~nIjiOfjch{k0w?&2uVXmtZRWv&?@YgRHT!5fO}&u7iN#}YiVRTNDw{tr;Xfh)7n1Wru*;sV6Iq- zLG6PyBC6cGtBt!(|G$zcghWKbNTjGW+LG%6?~f|pBIOggd%GdI=VRPmLmXmemRB(o z+NbosvPHOCDNR?=iEVcjZ8-ky5P#<8#hG!*`iu28Ch3m=a_x23kYF$?nNtF5d7N4i z?Fv#>Re8J%X&z5Wq!_XIzi~_-;IEJFuvZIiDGed!#=k6u) zmCoO<)E_#c7;CUP@~rb+7{ndT#U1L#w>lFZvlSPKd-$qX!I+NDc+t!unEg)2g_HuT zLeOo)B4Z3RKnaRz+J2qc-8RXgMvPe5T*o@?CVs%%S4X#YHt|21I?w;h(K^$SZ1kVn zcaWfP7n;d&pTCpAZy)TWk9`>N-aI=i%e&y9Ejckmhsgx%I!IcSfrwY8EiCVY*E21^ zMuUX6oMB+l0LHW~HtFAHIF~2ko;Pow?Ff;1Zx$2y^K)8Qy5n)p6m?UO%8YQCh*}0d zWKHo=+f!nD)L5Vhd-Kv%XbQi*4&qpyncHx1bJ?_IUneFT|8s{%^!0oiNpOf&HyxM} zC$k5Q{^0-mGkiq0@JEW*v1_tQ&kNZ{-|_?k5t^aC1_Z}D7Y27P!=*D}x&hS(A`-z{ zS#z2a;?_BhB;+n?Nn`He?eN%D`AHy617B5(HMCC+m}MCSDBzFCa8wZFV455pGct{sNTV*q9ScSls%!$7DrmnV)(VFkaorA{BXz~s(%Kb&P`1S zd-d?{GCzXd`uWLux2!}j;0FGOK53kNZr9(v2tr1Mczh=6{OzbBv$&bJhKCNtmfPmqT|XHJhO3VL|JE3bmzBN0GFz@`4JRg+HDMa zCD$Brm^zE4Edd&(HY8{0(6nE<0WF%|bG&>fX~!0^`UOBuAie^kKU7Br(l7Wt?zacD z5u&L5{0_UZ%MJBUK@OF)Z+4R|ZRrfu^Kk!{G>?KZ41p6ja zLb}?JqQ&N@sznK3o-|;9h}%z7yniBP#jHBT;Iu!s5vQGZP}66_o)ErOOL=|1vZFVr z4R8N=$|{gDb<|<$;xRs1`*AgDwIIxN9k?lO2clmnXfMg7!x&OmTEbZ27rD>OTcar`^|Dj)K9ysni>}V)48UDIk(XNRSjZXJc+1hOT%gsC+?a4!n9`I|=0>y2j+kBf z;TFn6b*dg;M2DrSOg26j8^u)WW`+<)i<*IS6X0yx3cw$gNM!~FawVp?vr7EE?)!R+ zrJ2RW=KXyq_r2ZFww#~ZG5Pj@C{- zT8x{|V8xt}&oWkB5r@A;l1XfJElkiJ9L;ARi zLBRQsR}{U3b_+tF0Si%ji(01qac;uUf;*c|oDmlm1x7i2^2DGAthQb^0uBMZN76@4 zICLfbpA^>wuYOOiN$_)4oAS*`^ME9NEc#O_Vdmkv2Um$zC$3VJFmfLy;OH;?e2L7J z^V*Mm^5Q2fb&FC*o@CTlp7ik5P9qu?s&JdAQUqmpXh3f);}HSO*@pU!DO91}wLdAy z_2Vlakii#}t|@9l@a%~F-@;MSBQ((c1<{Y?e9dstVgW4(K~|p}%8vYEbev65YQmnM zu(b%XYPpC%jKOq3@p0r@amK01CDvbA+t+PgB$Y3gsXcKEE-rrqjXz!IZW1a|ZCRaOX;obS)u?^5Dz$ml zL9;baWTz^^+T&0ne2baRKf4co0%a^xk5Rx5s44l%Tgm~~l%Kz|`>dmUnt;jfH_|DL z3%mzs&$SYpv69xX53nz+_3Y(u?y`r-{6SFvHd}b`SA#&c^!t{&8`PuL-XERsd80^QQ6tHt64J@#R2QHf=O*E=~O!2A16Hw+fE~J8!)1_bd)^huI0svt7|* z`ahG32pe52s)&GeQKSY11(hbfS0R)D zp(vpS>0p3RLk--WnRmW#?t8C)xUzIfV$L~x@845>M&=9W?^*7ZI!g1`(=QK?*qD`W z`GW}c#df{Q}{h4u?pk z)#{-6@{iWUW|p?Ye3=QV+_UHKEUEaj3d}GhSxg0Wpv9_RvVT z4>oIOGcWifS9;nCdQqS&XTKaWbo8@yLwlkcoGn<>eLOaO=d2)%>f(=(sL@eNun9)* zDhf`4NCa~r6uwRs7%MKk51Hbb*wNe=HiW0MQ3=d{!cx>kE&nkvAHJ7@o=`iOWX=f$ ziR9X(iiv=3l)%9+`WzexEzlhWB;m8YAX=s*egT0DSdHiMCiR|$g4jZP4wioc9sbUB z2$VXKVJy4H2O=5L&#iiAxAmZ?8KAsCye%y+&t9`stOb@`ergEpS(L^<$_atXb4x;7 z5qf@t!1OEG!eF-3tOz0yEP)j|7I3yIu)Y3w@=j0ljpUroOsDur-gh?wnH*-~FFt>H zVeN0FgsKpb=H7LiC$6&sW)lUJ4{-C0SZYqdd*ll7zCDglWLL_BYz1-&ioP?cfC>aE z*%fX_ip42TM}cyZ59g%sp#0R^pJ<4jcr-bBbi6@$B~FCJ8O+jh)5^e{EtnY{*EEqW zCj2-i0smKub02kG3g`+4o z!$XgQ${DA0RZNcBLk9dEu8y*SSYq#APP*dliBUsnBjo6 z10@#BuBS7p`i3BOYZu@V%**Wq zpm&Ueh2>~N?MU{fR#ndQK!{_L`i{EDP9^THTNUjQ!+Dy8YO;qy!{6- z;)A|{*o!E}hR6fe5>n0UQ}r6{f(==Ix)+396@lhswHGCUVz^Q1o`~fcCdF@yAk~u< z;fH4693gu+pr-~E99dUyzu@Lh6;Et-r}RkWe69n4mps*Nk2i7CaRdzfS*yJ`C2lkS zt)Ja$@-6=ezIQQT593m!Eb2|?fZuz|LF~y}^e)wXQo9xn+SuTwyf=7H-P(|bk&EBS zr6@nWsQZ!JPybgm0mSWj-PWM7kYFLpoM63OTFlPvklR8<>~C#uPXHxGD#_JBK|C#~ zPb@8=HB5U%CClfjzB7Q+`hMFb%iGOW3lJ={JTUp_*2CShID7yKZ6-oo= z4@KIz`o!DEIJy^n4o2|x>@4|D!c~K^biy}(?ep{aIR|8dW$hzmMrE}r*_S3mR(0e< zld`CnNMy{C3)6K>$9{XTn?B7>(18`y)gL2RxwHN;ab0s0@g9bQ_P?Sg4NhlxPet^=my`-x zlb+bzWKR~Icf|favAzd_f^r^u7`Pc&X}C9W3^0lN#cuUfx9?O^YiXQJPjMY};^ zPOBKu8OABF*BdsqKXDXb0<;9uGBW2ucoAYctO%SsFrW{R8)WJr#Y`%tRJXq9ebPr! zBX*~e8zhkL4~CsRe1ocB^+-W(Gqu&ITVzwN(5L&RF?wFL*hJgz@=i;hVaZi+Zju<0 z`Q`4nT!zP-RTu+VGljlCb8VMWQFf(4w9F7G!D=N1#pEnD3%Xx3&vK5a!V%nMx=>Oh z4fk>XX4HrwaW?tmw@PZuhv1at(YhoM?v!h|yJ0I=fE4lj@z!zjU#xL>@Si*^%l<0# zJ9_@VAJZ;lzgL%)Q)z9MK7#){RX>*eTB##5u#AHr^FD;>Rrnz3m;tN!Zj#OL5ttAm zH?hWq^+cEvm#|;W)GJYt5j}eGyUMi<#>vs=v3P-_H38<*JF+jHiFqJ>2SCLR!l(6i z@Wcp}*Z)T$K;ET+DP!6^lcmMO?qA43LSeub@KMb+tv9Rs0HHuDRU8v6Uw_HvP;&4$xZ#8{ z_f;$-d;Sswh8(`SQaKQ;Nlafx%Wg80nKreFQQ_CoUTwY4uuebq<@jH(n_7AZe7Uk3J7;|S% z@^DHLIQCNd)@g*bbi1kdS4#QL=VPUOy1&wF?dMe-?`pj7t2yMkMj{qHGeEf+-#DXN zk=E|7TyB>=Yp;UWvf^oPc$Er!<8pVIptF@r$m8Bu zA&03AyI{-Soe`_GyJeT6(IeevcWYL5cL^*H0^Spb>mS&-&Gtv|ni{!$$?Q9Jfz*bW z%iWNeGy!n_pq=(SD>D;@i#Rof#OfO!ojd!ru;;0g?m#od7?xxvrlPTSGg9buPIfl; zu+SOSv;7e3F$075t$j5?N+I~b!}&nfRi8z~^DS)IrDREC7^eavS}q#m9rKIB@1?Dn z@htc3uz~tF*R#3l7)36I>5@68hEK(ssXn>_z1@3Zdc)N>YmSbFPjFVjkGR&dnkLW|It2SQ2*x* z`;nw<`6pJaxHFx*UB@!Bx?BWokIdq56cgNhJsxsE&age&$L-Y*%i`SB@O1?qd@G22 zRQ^^gZSor2RSn__L}(^>oY>q?6Vzs#+dJt@z70NKfjfm%B&t@nG<`8{4TD|0J{jbL zQ?CB~H5aq@%ikS`hK@sy%FOo5!WZBo$7TJKjC;|_@a)4~U;{N!Sx(Aig)CW@OMCHd zXf!l{Jx!yfU8rND56z89nWsesRXrOmUlb_9E%f5p^>@7FT)%f+Z23b+M`w#{=iUj6 z6x+lR1=U@a+0KOC{_xA4Cqu_ zl}ArvZ%n^IARd`VyE<&`yXZD2c0`RFGqk5CvWN~XONxtotXs4yt1vsKL#5iyv5~|$ zihjVXzM$m{#XjGDq|xFPBsTlO?+{E=6+eR-QDJQH8*(t3aG}I0 zygjrkbCopqKqI^hIC+R;ex}~EoRNtZ{Cqz7eQKzWLE=9LUpX~ZZr~GrR2q6&ioaD@ z^K+LBrV8{D1)#&ZGCiiLBGSg%#(P?vIqc2YSuRm+M>|-$O49R#{1;`z-jE z&U(8;VrJ#xq7-Y!yu0M9bF4BCh}dFWcels3bM$Rgp zFQB4j-`xHB;MxUnjVzLrjJT(KcQfkkUw7#L^+z98kM4l%kM(>1dkxuzJl0w{ywD;9 zJ!Sdh`~o{0ja^;ZlI61ioO>0{(vWP$b)dUll0k9Qh^kCT6A5#yZK$K}G?p!fWwzZZ zE6{HxXA0`~euHIoVxNFdP_f*MN!tGL=^daF^Ff2^-$< z!$g{tY9+8hTUOxbZ`_)$gxPTxcd|hnScf67Yy~tM4E%+j_0Gt)leS~_rOO64cRIU} z?`WXq#9dKFMV16LP!*8P?%2)#CP(oHQOuaHZsWQy&%2_S~@yVMFf5}8!j75CGDn{7zX95 z8h>M^!#+`0naKXQa} zj*S{V1!2+jmJ5V~33Q@1I}uW|{qcx7pTT%6VJ@@Iw!9W2*RfRabOKJ^Zo!aW{Y2~P4y7?3-5>gk7R$D%t^gmbGkT{O}rtOJ+ zlRr!5#?^@-)YN@G{=J}GNQ_|HxOZoBq5)3w_BYjlxxFwFD&KRoKbEK2CT+bX^X=u+ zLRh-d8!o@hp4xkUx|DNmC8gikXvfN-PBDC)x?9QbKD=$s+2J6@cjg%zUsivrGkO>- zCfW9fO<7G;mykX5x%@MnlOkHM#C7S;){u44EpW{-Ywijk9D0#e`GdCz7K@^?|7+Ge(}fn$nw&*nAL)OsiDLJfK_u7Es*@}5ZuKL z!DB1Sa?TfhO3LPao)vzcKFHheddwD&k}Xd8Ga27rR>w3WZr^6}S!Y6YqgQuifO(T~ zH3d6Z7KqT(A$ztEmu|vt<4fJn=H7>G(bgq%?Lqcc1-I|nPQb6l{s|U*u%CS68qR^TZ|+&g2>RTc5Wk#TXBlcyk|S7>d5kzq5^MUw1vJH7D)D*!|I= z*&viZ;e+bXsO*=Fi;-;YkPFFoGvAI+tGagwTYsB<+v-(0wFasSl##LlGRAS<>i(v4 zI!-pF3Zf++DMyY6rsAB|(vO#qpzy0cX~loUi> zvaM7{C7sT2*(HniDVLkr=c*zD-R#>R#l+%#Vqc1_bv=G#Ge2ZygA1|QhA745;3;XP z0@g(`!zm{TsZ6C;>rR#!+}uW<7eFI!mpRd(dTz28zUdzC%96VwDHChN{x~`MtqrdB zR-%i&{g(=6?f$B&ZN>`Ojtv!A*^Nwhw)i&2;}ckfa%3Q)u){Kp`HlYwK?PMmG9B^G z{u--fZtUCTs)VUGwGvEk*wUdKB~iccqm3W%f1w@}z}ac4%q!{wp9L17pz^!)LWU<<|LA2wU&J z?@Kpz%35JI%uM#8)?oPnYEd*~sNY!e3Ae)h22M?FQ2xq6l~Q#(P2@M0QJ#L)>nMi>%G4YJ@gd?*Eja*c1q1LCPwMqVa6xrEPF|AMM78_ilFb z+FR!Dpv6h#tYrnf%we|8FE+YO?XiJPA>GTXqJ`A)!Bnk}{u3<|wJ4tR%G+-hpaM_% zDt+VaQ1$(>1aebz^X(kgYngEzUpZD#3`>IRGAM7ytlSE;Pu*=!qfql&$toiq3*Q7amG6f2MtGZT zA`}KM?lUNFyM@9z_nb0l0@xyS4RNK>FuM&PUEWPPT&S?2XS(|VM@>6b;Nbh!U4K~o zu1-vF?}CNI81^Xnh?>`lDaeWK5-l(WUG#U=rssL_l~NVkg1=@Y_UyTZvBi~@L(x2l zcD&KafpzQ8`l!E-ix+QKz~2dF zB7;@#y+OI0_xQ%OOd79I2v|?Z&}doM^xc^Zi!~+cCjk!-u6m-}iDtlS)qf63o#efc zn~jUSIBw?$ONrvfm_5pm$9mDGdPh!Gy{SR&wmzl@kq3 zudtt;dEeh}NLK68Y4qqaox@)W{p0Sn+V_aLl+ig9q+m?Q_-KKO8T0JdUxC^j7;uz!8%V)|aEofi zmr5T0=o2t!tYY5Cq?_>3F=FSy+Mri=0eqnB33Yp?)H&ohQu?Jr-&@Tp4^kgg-ixJ1 zuU+NYps(cB;8|FHbjdHE_ZB_KQ3l{5510T!VG?~IT=ifxM-8Orf}9lJrERKx;k_7& zytKG?H?U4ZjCHk|{($g_Q^q&pXRf|i#wCVzpCfo0v&z!9zXM+|syP!Y!W%)*U*SSA z3mwgJ3vraOTQiNf@Bye9xlTWep7q*0X8DBpRNRg@1^dT^VdE&VfN@L;Ic2ONFi_H` z>y7J@cygQ4f9;@D-!**P&2l^9&4A3)WyW}s6;~SV&l`WVuylL9#_gAZ^dVDg(QtLE+hXPQAji@U-WKkz+L!GuTU72=@+9WY z{*p_vN6Q#bvBM~;hB7=nED?ZN)2ttyPaP{DFRt;5$&M;54LSiybA1TTi3OKa_yKo`Zv9 zz`tv_E{~ZwM#r9AfFlE;23dzPTPF;jt=?T;M?*^jOm*+aBASO!^Sz z(22ed&t{4rE0JGTDrVx#+0GK6*lFA1IIK0VV$L(0@(8y6}mZzqUxrR>&ie6Fz?bb%MOGPR4Pa z_f=pGD%DWKS2I#RGM>-4nZ9*=BtdbzaoXB2Z8FFvr7lozEf318p8TYA+3Qz1?4Zi( zwoJNPO51lijd)p&>*I&rmNt%Ot$&;jB5F_c`8M+^s0S9oWMm#0k7P?8D{b347_aw7 zDWeN=5+0_SM_Aaiw!N`Y>&JsDuPY(88a46)rD!FCy-1g=&$cvNl7slZ<-ZhPI-j2} z#~R;urIf!iywBIcMlM2OVltu_|3TR86?yz13Jl0-#<{gU5DdW!3dX4=$D7kEyt1_P{FVz9}0^){@FL-c5RX&auR2Qgox%LySSDd7qw?HNC;h@Vy?(DIJ@go$YIALuIqT zDNJ2p?}3I!;qOWt%V?O->|2(;SQd}*OCzD%P5|&thoHCHy8|XUC4 zUPpm>9jFjkd9&is-=paQ<-)Tx?PXn!_8IR&{v0%OO}~I2ya~fQbU2JWi0wqD=ka5y zYyWLWpKPP|lB)9r^|x@LJw{@WgZ*g5-3~c~N!E)l8T_@(s|mT0(-Ea~o&KYYT6^~c zyJ}ZS=hWksG#M^|nJ+CrKN%90P7s>6U zb?zqXI|21lI-|G8LQcM)YK3qonjF=s6H^|Mq1-U@xms0Dchp`2C z0fNy3?pp}66ataD(2(x}rK5R6nN&7>| z7ufj(Elb~hgPAiN%acP5B-ae;?VoJq*Hn{Sct;GjG4v)MC};H=1_PFw8!H&KfT9^i z2x+=?ZVegfc7z9D%wfx&@T;6j?|Y?)@3_}yAQ>uNqMVF z!?W{5@D&z1p-D^PstJuJr2cDT`{{}repT+#bwBm-bc!6J`tjGoR$mvkrLL*D8&PbH zr+FpA^F?L|C2+mMf;*UL8&zSk)5elx*hE{5SbgBpA zfbiDSjMC+#Q>c(*2Rc+YeNvvmd1nsp7@P}`@U!Q!w8>Oul&6?dtFxD@`$-Sv+kmSF zGWfF2(AJH9Fsn}N7{eg|!%6P<)SRM+6Bdkg%YT1a(p53Zcw#eA?SVit6>Bc@$+^L4Io)HyQNs9w;g*XV(IUQLkcK_fBV%p!@9H6VVH-B&lf$qq;}g;H`7VfaWAdAx z#!^^%bib=s)p8iWuiX-VX>_PfA&Z+7_F|b>=>~{ha_1Keh?Jn2zQfZcUVD`bpQuER zbGbIyo9H5sD|(bHy!oB$W23Lzoh8qD1O3B>eEnDyNsJpx`xz=2D$0w;3p+s9@I*N|mo&XURQFAK3 z=BCro^cVlW7<2Is;s-iV2beI)r&cyyBt$XF(S{{G0_w=%tYZI3>1z-5&Z z`Uf8p`ASR-WaqYM{bJ-6ycsI)nw;NrMEn|hJq1;98(#yU>>d&qHP2=@J<6Lk<)eGF zwACr*yz$&8;OyG`FoRu>Vn|V=N{Tf9McSu@cvqE)v@(^5y740Qxu#7MPj=CbrZo{3 zf61IG;gU+R%_&En!iSJQd)BEF3U1o5uJVY?U97K^C^3D}t#%L~+X@1HdXR_YlPNrB zdpSsv!}X)S`DQ1z8Qf#`kSdGsFVXO1M6JX^ps}QMrr8FwHB2AnD5zQO zdSt54n3T|m>x)twK*D!Mf5%t7Ze^@-f)lD&{v?AYIdHsutj8TlaTF=2`w#qaWN`rx z`{%szzc00-*dpWi8tGMg>jG!|AtdDpk>J$R1y=}2YSf5JmvmcH8T?R0H^zG4oIkDx zSs8aYqjz{294nl^Jo&ygmOz|TNJ&p$w)7dP3<_s4V=*x<)ftPQM*Mp7T(n*K;T&gX zA%~ft%ezUh-(PYxTNX?ul|zMokGbKZ!yi%ve%nH*i6+vo(t}k_L)Qz^h-uwBc+kY+ z0uDei9c}xr_&ym))?w6N3EWXrH`=9w5sP|9n|eZ)7gWrdK7p|^N7>86i4eT+yRl6( z#mJfERXfdRRoqKh8Lz34x8un4n^&=lNQ8Ir(E_=Oi(U<{;$#skp2S^?KS=I;;2H0Sl@W zf7UR)E_s~BHR~&5xHZYA;<;Ji@ibbr(w6J?if~32JuzoFYq)aJ>*?KBMA>q;peGAN zlf_D>fwzk#)i-;hCXdwR?v8k_vRfvrQnmBa=rSu^DYui#si(~?rj{G6;E{}xSU+>B zwgxqAWxZuRCcm7dhHF5GhFkf__82^^XCK$;yf}sSW=NBs_xLe*VHIvdl zhIk4gK#_X7kW;5R{Rj3d-@sME+0BsI-)ml&Pxt@?9o+E#oZtzQwz_otRG0j!6v`oG zAG{5aHt|}^t@bi&)Bn)iF!^X|ZDL@s5KZSCiVVOWu0ZiiG`5n?S0((BB`M2S=nH~K z@aSzpHOZlnVmYXq+Qc$cTo0kqaL7jS3=JH7zr8ug!!OPKcuW^_PE|nBKCC%%MzMKzhJ65_SG)l4`E#5KdTcI(O^HGKCbyO<-o0T(=j{O0)$?C_% z{|F-}L^A;v|HvOtzq{d}_;k)?u5VjYj~m40#MpFas8p~>w56Ubv)}2o8pi~tG zUUMSR3+L)Gq64Gr+(Az5RwDFz!VxIg?hbu)4EvkFi24W z!_G{{x&GYxZD)M2{A#VD?U~*N#{#Cc8W)_|PN*5MO;81TR@=u5#yvrp1$e|j?7x~P z^4H$2(y&7#!=!gnHCw-`?(szB;-eAVRWGBbO-FX0kHwg|Q3M*5;m|bq{`=t0rdsdu zD*y6p;O6h%BTFNNr4;Jt8Mw;+bZ~T~e-4 z_{7JcKhm>zx`&!U$mx^P%VAzS92v)!KFV7A*D^l5aqME&R(u_w#mb|%sa2{iQ;lT> zlk+K0^2b;x6(<3Y0x3fJP4j>)IA?MtigQ`6U}&P=#i0pW_iSejXSav*&wIySVA>98 z09v26J+=Sqi1`M=j69#?({_#qWl5Di*BzC$E=EZNU^|9#9>G&=(r&$vc5`NYF?psd z;K)HTPV~UlQelE?2y9RIlTTx;o*&!(7)U-pB(s6CZ9|kk4Vv(AE6js&Dr*SL4VBEd zqM??yzzER(yvzGc_bqrVKl|H~;bT^}Ua~B&j8+uR*EtUg@+-_`LXj(y?A%t<20`-W zjFL>mW=H@!@&K%}qj`4*hl4rk;z-o?BXB3}U5aTB@2j@pm&#ePaIQVSrg~72UQ^&1 zqrD_e(AsHG!Y?2(B5hF9vU(@A>58te>I3rr7fU+X*2eYclnHU5KX4P%HoYX5y7sg0 zh&t-A#G`7v3#;r0vR5V&TMc{0zDsK)rjt2&u#B9kAh3NKl1n~5aJBkM$$92ibuZCs z-XDic4r+($P+mA<2GqDWEaOhzEtCUq2vLc!(no$aO|iihhp|W%B%nKbq>d(;136hJ zVngA5Zr#4lt-j_le_$>Qi`7_p?v4X%udl1y**)p3yO>*uyrEmvd$`tiwA7y)@>)>$I>pg76#Y4*mlrvCUm!NpXj3B?3w_A|LjeM z6K1KuF&nLgcDzychH?HN!Kscm$n3sUz$W7SrD9sM@thAK@0jIb#*H_`nEbYF=WiMo z%m*xM{=R59plDMF(edw39JFg1+WD}e&*P*<;qIN~_k-eho#&-H?|q<7(W&#fNf@bIB>Cu5CGE9{7% z%fh)TAAM4z#vZt2$>vVSzw5A^_z4pH3P6A}PvF2(kKRu>z$J z-q)Kj1CrgXKbR^Te}P%6?J&dU=}65BN8Lbr9(l)w_;p`MAN|woFDm1DZU0oYIsdt8x-vHC#(8-y7r@k6FhGJo-LRFn{%ok$nLa6#=)k+}M5XA6x9 zS!{|mp?ac=VIaXe`E{4%AOxKfB`<0@<6>2B?e?mw!*9Nj;Su-dBCwT^Fdf7UmuVoL zIG2U$N^|Kz+u-u00p+pC%bd6UV6PPdhg@REb!Jrlc~_IAJaM*H@^+3JmZ-CbSoFril&EE84?Ap@6M`#nj7akh+-yJxgc>s`S2X=?7? zHfaWFY&#Un$}SOom004PltuP+)iv$~5~c3?Y3iaPw~9 z1(vLSa{04fk*AD_3QpC748FGlFX*4h{~4+4=wr#U`)BNv#_bEXHja*9i21da6{U7( z!l;mj{mpz_Sy`bz=P6?&e` zJw>Mx8vv8a_I6kncN%R|pQ+X_V1-L1MxC`v?&v9ruSXJUt12Xwbq87&0uXT@Admjd zv{J94Au{a;wNxm)UF7(PLv6u%M#ovVufj1MXwU;4!{_|dDQK(2ZN6tkC6B!gqKL5R zx95m_-r)UBQGE3IFi@7kL3hT@*%~ zTLz9MVOK_d&!%6p8HrfptIGW$D^P53?xtTGfWapQl$-`Ks0oHF@%pCpUBh|(3h&bg zpI3Mw4L^@X&i{Pzp>fTqp!yk9LR@_7n#4DVp;lt+1+4>#EWh{Aw)5qC7O)YXmseKg zT6}Fu9iPp{>Y)$4e;OCkOtHnF4{Bi#~*1@%{I?_fQiz zKC$oLVpp*vb%5arwJ92OG%amjE6dH{9$7!M!KpR((PkKs3&IV#Ikc?d1IR%~&9czL zRdZ>{mv)Fsd8^oCJ(_p)y6)pR9xn}Lfnnd}LxXox(!^k7#~6jNXHKx#l@G}?0_U5K z7R$4mOWIZ$(X_=}V9uZCz`F^cvw-gXw<$vNl)n0QlFh$mG?x5d0EoI$>eYN&7;tXN zol{BS#PIffpN2rpW2^N?jnE<~rCaa=+q4vFR&Fk7CZSaJXon!@Hzu6N9iS)h(lXi( z>vBFO=lzkv_k0OsE}EPG%g-{nC#d|wCWoS&m!zVXe#~vh&A(XqxI+EyMk_vbLvG?% za;$Q8powqmgxVbon}Pnp*Htzk=95){;k$#3T~!gckNFCNgC!38R=?t90u3>@?9L-& z<&pr(Fw!h^Q?0n{w{}I8O3(27@}W`bb!109wsO$KtjFU8BzrTWjseHET$)%h{d4Kg zHlaB!)2!uOU*LAP^vfkDgB9_iins{Gj!wCz{ixe8TEyB~ECx`&uw^B4f*QVfopU#u zZqGtO#kks(Lpa_25!h}UQ3cbROS4^@Qwm&MfiR80{P$T=*V5!Uk*tNZsDov3hyCA< zS^)|1?4t>7kYnhYt3BicJDUo850Z9?F8gSBRFF7!@XcxI3sjr%nD?EL;Xh)8qwm-L z2c9|ozc1f$iUL6-!Drrsq*>xC14MoP8X6`*pv@u;gGYF6)zVYzIf1 z4t)(?R5mQ&tlFezJFWzaF2@0&M4GEAW_xFomH$R%avI>O`q})R%vHF`^Kai|-^o89 zpto*mAFD-nam?LpxfbxAFC#ph8tuv=ogxfV%M&NElx~M}F0KKq!@^#tw=;8FLX$q7 z8J~==qd}JQa#MP%pY(*lUKQxxRymZ8RofV?bu2y0+o0iiX`jK@CAu^be!gn5;)X1Z zj5mau3Q~j`xatzO$pP!2f-P1VC2;EgLb*A=^l9#t3y2@68YCHSTaMHQ7%9)Ue(yr3(*NWC3X@7*njk6H|^ z8{4zsGxc5kRCj$pKz>c^xlr7p8xqHXc@0hX?1gfD&5J}7RAqz3u|5tZ1zP7e3{&!- zdu#$Hf~26PbTv$Xh%Y1+K!JY^GvjvkvP^S&n~8h+olPrM2>DLiRcfaI-sl;zHMuD& z@V@|*kt(pgEI$;umODO^K%`Fc30a76=QFdHJ5JxgT28?X>rTO!OW6X7DvRagz^64d zy_R>yt)ovL9@vG$ZRdH9xO;40X4! zkXQsj+)W2Bo8i1MRz!XNhKze1)VF8Qe(M=?Ze0^veMz7o;Z5u99XD&vDK__RaSU5w zs3BKZ{=6JU8|PL83${pim6KO^<3GogJIRFBKLHO zUQosv)AvcXIlg;qeTTS4KDc`l;}|X(dzfr2gB{s`g^Jaq1E!u#DZ|m_>$XoC#VgwI z$jD;fsDihOZ)Opamx%S<<&L*_4n74Yi(z`}&Y~7%o((eo-@1e?fK_@3Kg;7ZZfX?9 zgCKN%`g6Z3$RC~0msMb0xD7Z1NQ_3gqi7l9B-Q8|*Zewr1HHKm*vdqCBw=iPls_r& z@U-(C<3L=^vl1^MV-?LY25cjHl7*JXqh+B2Sq`@4@AT}_+-fteqZYc*-otXI(IVF% za#D%GXEo4s{W#lOHhZ*&J_*~RSXq$NCNR9cG@Rg?L4!g$+8cX9ZgkzBqmk<_cKFFc zNxB%)x!Jx@DY0=`CY!4bM)b!*9$hSva+-avE$MCE7&p7TXGgwg{d0binZK(`<)!M7 zz7fTnaK5cW)dE)sm0Muu+Km*0jV^JB$6lnY)i0n%_Gc*>TaC~!S62)Kdj}caovxb^ zi#i}{L2F*(VwlbiBDKGUEPfqVBZ0Q?JZas7zC$+e%Sp_?n84$WMj?y0rE<4I^8zBJ zHpQHy66U#Ax1GeyHIBNO_DU)|?wv$&j+2&>t^cJMr(#o771Y`ri+E*YI%fw*sDKF~ zMyk!sxqs&JGejGkPWQYG;#_PCfYQA(1=Z!}|sNk@Qz0 zC0*2Z)e`gcHkLW7925g(Nt_f*?Kts`(h4X-6xtQToauy#`-h-`2dn%0ynFju}S zY(?B+vqt?Y?!=JqF}0=)vCcwUo!rvv?)K;&C%@WNUFIxNyI4`DQSLcRznk9H3%fa@ z{&Fy~E9JO1jeW@OFP~#3IwNeWCD#v~AOeWXx$QcmF&@RRA$`6;+FD5&d8*DIqaG9eJR#AtlIAeWT`i;Jl-5>_bseS0$eGGI;FA+|^W@CPWI# zSI>*rWj`6J*;6cQ@>XqHYSU(g~ILga6aAtI*L1i1D#5l>s0v@M#T@V4zPv* ze+Mo%ZV$?PF`hQ*8P8-ydIkTa|B?0@INpAhAm!eNh}iHuEXAP3K6WD!`uN40!WiO3J~M*PtN78YQ&ofz6$Rc#8>$fMc&RY#udPMrqM0RYH? zJauzz=9u_PO!I%Wk}XsYb21bN8^;^zba7bUJy{F`l9B2nso3cdW>roW7I?bHQw@zV zkVH(Sf^MQ>OF%c2dh7u!l)gsl7fQZNKzTT&}Q!p^}W^LbQZFq*nHHH zqB8sDF(6u=qURUleM0%e%`Ek-4h-)uSOEJ|-HtRdt(*%9k1OT?xnBa@34Jc_=T3t( z1K))Y*bc>euNtI$6B;!@PZ7CYQjHQ-d-QKB2X={0{q5U(0q%l@(BsJ#G|gM5HDm8773 z=8}PN3&b997Z{tEXd_}2iNDzjz3*sj8j@%dPw`8L<^L6^viBr0-UcuMVA|Hx(3q&E zHJGV~V|2pqbck?jy$n!!YzrQkar=X_NN;s;VFQmSEYeD>Cu7feym6FslZ5YIdTi`< z85=cKksy=ZJHZ^d^SuaVz95W5Q3ls+ro1mwio}ZQ`tYP3lQkK}~-j zYgT#57H;DYL?O|pIKN3Rakzn~kX;Gamv`U2fo5L9Z0oB&paAgoxoDHHd8!w88wELjtctS@U$^1`*aNEDHl)}Y zN`Xv;3tR5&N@{Uk3_%cV)`Yw0G5v0F6{p{C{rM|jy5jxpT=gJ|rOzyj z{A%^&bi>hpL)!=~by!|ccLq@ink_pfGZRbDf+w@DNG7Ct zv!{!xK9gb(4$GHQpM+43?f5Km`)sBXYjaX(v+{RVi~={qlo4Ga_}V!+tL>EkrrZ(A z<{zA8wnWZ}2EEG8e_~IfbF!E%Pd0JA8gNP2Dd>6D}8ex|L6k1%7q_7&`_wrBK~#JlCaSOwL-suGPE3+H#JQc))ouIpP88V( zJ>LZ-L-Chs=M1{d(N8vAfD(Ia#|d;RkODoCgl4oM~0-cRS&`%=X$JdZhI$avctH}ORZcq{^ms@JZo%Ne_IGd z?yGkiFG;1JNPYBlskrVg1N%Ki<`#2JI){i`+*VFBj zITf}CHf0aw-ZDwavF+JrOg6IgNqS;wn?vn_1xhcASkL5PsP(M@!N|(K^{6f09zy0~wqL{v{fsoO_(c8^}6`>vT zx~=fEWxDm;EP1;Dr|I!VN~{7iE?WF9#3MVd$r5|~wgO-gdGw7R<%vKT{tsJk9u0N> z|NoP4m5`LB7{wKpo$Q8+Xb~+}n5@|*+4p4_N}^1blqG8$E!M$U$IjS?#9-`W9}I>W zyYF+Z_xtnSe!qV@b2`qcV_vW4a(~?Kx4Zw{0)r)Cs?!sM_ilv?h~^Z{tjMjLLHHPO zUQ3x9CJ;sGo27aCi+!Adtut!dS8?guwbW3A z(}%K5gu2;|66f7C=jRgfcO%b@m_@|&vxECKN>%bJmXpCms}c!Pv-Z( zuDIrg0PR_e@GCpp2_Dy~rS2W2C_wybve@QWjNXNzi6x;B|ET)ZwhPbAKeV9DX3gD> zp5C6r{@i;*S81QLI}=ZYKfYi-rqwI0LU7k||HEJ=K@ak*a+7Lw;aRnZ@kNxwfLs^T=m|4QAis*zk@f8m!QK_1b`Bj%BLtcAE!e> zCPz4?7Mp39X%0QxRpqPhTy#-S zV4IL+VW*YvM!`QMCn$b>GErBKgv7)>p!Y~z=ITDBD*j3O@N2G*LGDkhIOfkq&BG1a z>#>yl7@wIN3Zxp)#YdgcpF3s38|lu3K3>+r@iXUMB|fAm;o5 z{Ea1GNsN><@~c))fu`Q5$hfYpQF(dG&p8}8J+-~Pe9&uBp@f6a)vf+D7rwE0U)V4t zBJVj3>pCPTIeqbzr4AET&aX#} zDio~767QRt{){Wa7vntm>+|k4zPVdy|I6F$0)+>>?2%G)@rY|zpIeIRdAx39^OPoS z)o~-`MD@rctN!Z;Vj^2NbgQmxo#?>}DaP(GPRPyAO9%8Ld>rGH%YZLvTnz#FpGMFy#LMUo+@-l4&;}YA zQLRaa)DGIqmG(gk#!{$?>_6fRn`0=Jz%Rf=M`F~mDB?90eV2y?^MjY1NT71?6(A)k zGWv?jK=H)iqzn?nU46!_N}d5t+r)+J;>y63p9C(}kz?DrW3LeutY1NBKf_ZZ(fskW zPz#T|dO%lK7cED9ocC+4aK@TipXb}=(=Ffrd_=C_L)$M^2q0^o4sMP9J^@=wXH1)E zHxgXxXS-tC=8i4~v^=qX8GCAGou1HnIJx#p@E`_m_uCer6*GGAyWPSX)@ypWF3S z<61h`y`XH61F5jsu~jI!!FI~$@#zfZc3DZ)54mu92DX)c7{y~t?5}R4_2*>86MY?$ zIZ^_JVYIy+x}S@k6W72F9JaE5)=BR*mjDY~1~X=#k&;S;XwGEPi749a)@%ml)LUH> zn1$*LSaE1iX0jA7E^WC^V4K`*j^Vj^@3F+!YgATZN8jCzKN|BZq`%=ya8Gi%wS$BB z$mct&FPvp>3V#=i(Ny@`t>ItCN&jJjy_60TEPumUD4<3PIKCO^sNG)ey$8Vj1WkMS!T=I z0Ov*4%;08mu|j8X34b3TC(JSx_+W5Thg7Qx`YLY6I6U*)FP^^D2$SZ^`FJxy#eXIl z9@yAVdnrfnhK?!j>+~ZUH$OzpAy{ic7vv~aYQV-f#hijE+T^s8Kze+8s^C(p`*mp+ z5`uUn$V-T1Y1~uQ`bBrlFPxQ%G7@VJ-@qq{>gc7}$qoTJ3BnU$xSAs6@N%m&Xg09< zH{^)Ty#N^@K>c!@c3fx0n!qf8{j7rnF=5t3wN(*2|CkB3eoCK7)5M zdPiV&DW6G{3}K;NO0VhQM+819`+?MJf48SiU9A6OQr)*B%2-xT`R<)`N-W|np&QSS zzrMa0AP+25#L~={*KoA8>H+opvI}QRz@W*WnldI-IvVH{^F83{(}mD{1e#I}E|$JW zRl(6+{nG1yIws#Y0-94h)9ma2^8$=;jN|22&njtai!dBVBnE72cb{^A)U9$~83gl4 zAyB}x`ul;A&)`XLSNHa-kMXa&^>yKg2W=4U*Ize0Y~BHI3lcXne1ii4H2!qX)8YLD zN}*+uz(pLBs$uIB#W%4L2>UNhOi`i;{bg0@8eZDXU;q+^Qu@0Qs~Bw>&AN~C;SX2s z((43BYwo~MFAt*C`ur<2{v5uejvltV;-WlkhQMYZ<{cAFfbiVZQh{e!B z-0nfWN!7_29U;+=(E_>b{i)@Aig?4u7P4AnOE;#~O(a6cvuhR@eh=Avj(v(edUp9rM#GO#t=LXTP7g9deeQl z>5IU3aM4IV^`S{nt@(Vra+|^(MXem=nI6lIj(TqlETP1yeOM`DsGKYyN5G&T#%L*6 zz|*A>`yJN@+Z^-LNk7pbOtZ+!(r-cz-`E@=$z9}7p>n|yNzeoYefbXd3T;##IYVZN zF7dPwZ`f&#-8~zXeA(#JL`nKm6k`JVCWNNkL`|j?8K_Y_8d)p5ED?A3Y8Eg7d}{lB zyP35RnRU67wo~fX{xVyd?Y^un=>ZF=u%YO}9mg2S6~(6~xcp-SL8V))@;bOGIId9X zH3xgE`{2*(BUS&vi%f(lzIMw0Cu-!-zdlZ!Z+`8uWC2=Q(%`S(9(56Z7a2*;2N*0- zz~8Hi6o^@)SKa|;h!a0;pN-o;r{j{j?J`y%iR6hH@I);w1Rqbl%E{>;@Te<05}9*s zFJf%*IfsnEPHJzy?eolqL2xF_Ry486(sn;um!@~nQ?5vs(#WW6W?wzVIO0|69wtE7 zoE|s-!KGjl?<1AG)h$F}D;)sKp@xi9S+}{z(EH?`bAcbV8wFLXS<)|fb+7J$=TOCR zPDr@oLjkEEHoSapfSsCB2g7YdMMc@B8uNTE_X72RdX16!uLszh(>#<2r^zj=M_al! zIz|9&3~e&oE`Lt?z?7)$B$E<_y14BLDjRs4OQMZDi7Tgm8Nt7+^BvvSZ5~r{8QOld zcq&~ImL}xAIZChgTlC6wjwJTj+LZfWt1Dw8GFO8oB$B@}5(cLdTs(TR6kh-jaPnvApCdhdqMfSKsTNG=TiCor z+bANsIMDs&wS+g5ms-yDmSb&-iL{GnqHa$3&HQX%e``50y)^FZ`6ys~Pq+Ue*5jKkjn%jc{0bOrjsk}QiCv^weP#rtpgkQ-yRIxL(91IImR?ld> zn({wZ4hIK^z-&`O4wF_LrbNmd-%xU1T;5f~^;NIz!|>n*m-4cX_V_|$FE@fw>!mf| zY%B3?A4Mj@?pH;0`E$Bp%h+N`gdwn)H|?#?_Q#k1;W9lKb#2-T#9l*vZWHr9vlc7} zoWY;5qMW|z(wUgkRt?QdesA0Fi}>Vx$77G-D|bRyTnKXGYT{41+P+!&lK08ZZ-wK< zo~L2cAOMT76OQVmm2c=36YSo13fs<=aUi5D<_B$u1E0q>K`zrdR4qHHqbufaKmUS{ z-m~*aJNqD{e2g{#ADuN0ft~WEqzp$XKmN?rAAvQXonG5x_!3rMF7ww+BM_~MM#4*< z^a<~sc3!)#*w{No2XqV-M`#fbwuI>)WtTn_56@_HCP@ovB&}u#S`2&+$P9j|`e*vR zK{KY9$28yb)K82K+H@bpOi~dn7d=X``u*^qMwxI32tTvdSOWP}1Fc>Z@>E#xBnM)@zFpLD6bM#y1nL#2N6W>||l z8uAhhQFh)p8B}EC{YZt4M!#VOD-|!v09}4mz-SvD1*PVdpy8t&+m89AwvUGPb*F?- z%Lm6*&Xa6n4x|0uFzgW3hS;rI3N%q{ThQ%n6y+=Dm2;m=Syg8Z~H7@KuF6PvF!*LfUu;AycC zPrR)SO6p9jaVYj8ExN>Z0fXLpEN4u6;;^btQwC;&b#J^n#P zLJvHM4|vAB_!{uH zcz5~C1>FylSgAVwHm%&@C+KjxQMxp%LmF!X#)Fi+k{t2(*t4~(YSBjRlNx45F5r9F z!paOA<=;Vk*{ym)^3>Fq;vfWAxetrDI|wgL__#o=X}Uy>r*6qkCHDB6<4Qr9!Qpsw z?zW)PS`uYXjFc%H2(cf0i3CeS>34pW+3M|-C$5vD5WGE%TNEcNz z>-R-F)n+Ec^CfpEox|{4O-L!Bqsk4W$FT$FkzrEBO9NaurrHuVN(||^5dD|uQ8lyX z)k7=($#ndxp0w-(-NxxeD=lAa(T7@4TQIzuVxKvNk_cq}UEl#^OLKF|&~+CBuD#0# z?{?rwjXa4wFmdkBE*G*0aq#dcJfpJtql;nn*thpET|ow~go&Uckp}OJhM&|->v*Ly zp=(J^RnzKLcp*|?f2yK$m2oneh;bqJ*?A2g-m6;wbsMLZ?a~~&b%SOQ=qrS{FZF0G72=Bpvjwv=N%2gYu0V8i)m?WgQB!_R%LmjuFdGsm zaXKliu#bu(gyR&6vZ<_Fg)zZWqIx^m+ne;X=h)QL9j`A7)2b)T1|Hc{I*zH}3$ONW2G$)-!^ zpX=8~B$E1v8L;IdGF(zjkhWA2romedjfPlxyY3t0+f$-)9LeQx&;LsI zUoWDmo+3I;b+BK`z`)#hiG#{rhdnS?*-S)ej{L>h@KVQo{sTO^$l1}M&-)ov0ld+U z&{!$J_G?u*Z|*jGCCC(}ce23#3eo@SCI{i|)m(m)i;%W=qET77PM81G5&yj5fKAf* zv2og8Gmh9X*>&tt*RLX#mdp{LhWk1-KMZE>`xFQDtBzRz;k3e~Lf0|#ZYvWVc9`$aqK9=x0OnG7 z0EF3#qAzD{8vUF6DcrCoKYXh*#b!^AJ8GN+YdwjRDe*u7H05WFSAeA45NSE|~H-`1O1hzKHLta==Ni@Opd zyy?B%Y+M{jr2%9D_VwEE5QzTjq9B3s_d&C|=GddN{G_hHt|!K-PZZ%6yO$BQ-Lrs+ zokPEMv>?LatKQ37e-yh5CQE(A27|Mo(%ol(#HJ?5Wr)%sRMtwHmbzL{N=)^%r_|a$ zbhe3P>R+=Hki_rN9z7Vho4()8OKKf$&|I;60g)frbRreF^g6ZXr#<6TYzBuetFNVa zU#lI^sH`a}`uB``F6JlqsNllC-T#Haz$lRsgf8N9KINcWm;1iMQBm^G`QBjTSn1C$ zt5)4?Ekm5C*r6i(d0w?zG16p!b>!4L-XbU)?6KiC1!=}-xEJIqS@3@8N;p$Qt-npv zK#?_c+vjVT@9GQP^?7E6L(ZYoQzm@LINs#s%DJ!SC)o6beSRky2nI;|gMfLnU2|o^ zsf@1&z`}jQiZ`r*TRX^rjXa<*QRmHEBW3N|n{@{&E51_I^c-_ueSSmIYwZfFHqm;P zHVP}WsuQ+u5pMnVrn-~>T{`Qt>Ow461?6cpIk7^$RjxI01YWJ63N`U*q097 zK*3%zeD*n5M&je02(9JLr3v@z*^NLwXn?{S1MA0X4U+|3MW z(ziyqE0^bpb1n>#OQH?q)^-j>rM zzmh(^VFyzOJa1F3GAhK=_qoC9Xq4}$cyymUJt)P%Xpme21UDZcX~zqDNZPWV~*ps>L(M2XnZ;8|ek!chW&Vy{p_DI#$`m_cwxVxrl99P03DpG1BDxfkJxp60r%59`cZ7hcAFZ5p=Gd_}l| zb8&dm_(ayGW@VsstylTvxw(d7gLTrv&wTK*FmA(SBcd|(^_aZhp#Ie}k~-QHFyfFe zmuRZK68;?WjALjmWJU%b1&~8Do8)gLjl-W@yq~0raZtl&qi~HI?+0RJsy8PsQT!El zqrZ%La|E)wR!{q2p?15!v$gt&2SuVaAn8&bea>g`q8ATVl_R#K3J|@c6J9|HU=_y{klA<&^y-l&^{+Bh5jpC>MG@>fz+>@7N>dQ*e?>{6xaJx0_7 z<`Vj#`n&Yv9#iVm!s4M@eLQNb6F?vE8`9&`JYOpa*%kiLGCbN_k`_C%5dd(YxGBdF zGO|L8ZNqDL%z&@?Dlf_h@*Lr3Dn57{%SK?j zIp}LatGm_*jCPfh&H*{AI~dK28m(0E_6yFhe$MCnJgGPl|FAM63xdu*6MSfUz~PsJ z&$K~OM^WVdFTQcaOe$G`EBBt=xU7pE%)d*h1Kqo8J}yhn3x<63dJqOcxdThr6)Ph% zqUQLq1%w`xAGA^zcW#qidQp3FTwb#qOyT*)#~kQFYXEO`PtR)Hx!k+cYDg%u0D^KukPLAdT)K>HmMm$cH1qWj;BQ3@i^hKU} zrbQ(8@X)Vtw-DFXuA@dL6!Yd*lWe13MOKI3M6|RG16$&3pchBX5w93bl5E}&l&i%< z)uOCbzNLY}&t#Ro;)qsAJg=eZIZ?gsg3|c%R~?pN5aQO>)@YTUe!p7aW7l&JFwt`o zUP%Yso!1GsKQy}OH~Ar~0iS-b5YHTJms8GdI~XXpav@nRQRyi+i~4oh;WN<5WY)jB zW=A_x7&~hz2C%ET-I~+n3#CR?<}+sVpej@<^`dNwEoe)&O}9H-L7O85V^o@S>v=x= zxNlN5|%IRQoN3ATxL7XgKr9Fqvp-%AKB8KL#1|3%x&nbamZ=0~fU zFe{9|n%o9-F?rEusK#6y{=zn818=V6HW{n0{)w{cLLu#omI`vk)=|~}hw>)u-F-Ff zeBI3y0KTa-Wj0OJ@Lim%g2DRCrEW=adbtZau;VZFiIRYqrFYfD-W);uFtKq(+)QKr z6|XYiCgb0{a9cM6&H?Kny@+^@Q5zvSUJ8IR@7`d&9N}bO zlcyUL(V|b>2X`>s1}cBU-nvym4?GXIf1d44AWoH5Yen(2{U~t*@HsL&$&Nc7`+1#^ zt~wU4ReoqCR%t%xR?gk_`q|x*h#qnaM9prNzLca+?0TOJ4OuM%ws)t%-PI4PV#vRpFlR7r3E8{hZH#Vy$w%>9-A9BDp!t+ihH3^NP+c#-Zu2doN@gXWUTxzEhmy zanxhdwdh@_w1JcuqEw;ld=87@Lh59M%`;KU0-4lvi2-+ak;w=+Y62Ov^vFnBfvg>t z`^Y=`A>4_-{k4`qYDj*1tV^`D%GUI39&59y9mI%`1_K;Oe8Y>rnMaCq!)R5fPGhSC z4|R}bYkiX^6;))q+SsiP&$cTJ+Z_#L5G*~&k6}agcAaYRT={y<5i>q=jY@M+ka)8! znj78;Bdvux(TZVDt4CoD@dCoBkLQMJ?97uIJ!xvyk-Mn&G=`6E+lBEWpu5EpCbZpx>{bP4>R}8bk&u~ju0z-xPI>a5 zF@S$L_~e-X^>O8dZIjIx8PJ}yY#~lD+UpX~N_8P(t~dH8M2x94w6n;X7z@82tK)IV zJCD?tVx}~9!b$@-7G$`ZR!v*>(&<$aqT3!f8b2pFaYkPl5{s`*mT*66;n{kA1mOcG zm%FS_o<4)DIc6lFX&7zmDMV!Sl$0&}_{p|&WRp`}UpCs~im%=C2S>I3oE&>X0S#e` z+xs9p?Qh_^O}Rzb4W}O&6b_k?l4us;x^!h`2F$c8)od-5w_Anms=Z`YStpK6A=W1z znYwS)UF2dHe5I$Unge9l>u!j#hv9af6^gsV{6`%f^7=)78a#MnU6I$XP(KkhZgPU>flHo zP<8m?T#D^2VzB%qYjCMNDp#uGI`xIR*&ssQE6((SjYBK)d^-h998i(`{?o(CPOp@! zto&>IFcMyIWQ(+P+SVRUi&hxT5r;{=ijslxYsw~xpm+}SWm{~t47@yD2MRtSFmn3| ziJ(Hg%1@22V-Sg|A-dUu!ozi5u3P;Hiea6dAO1(D6%~a5qbcyK-84Pjb@prunc-20 zxN07G|D%%W_A^PJl?ugWr<5;)`m zn0{^yDXR#qY{Hcs7wec%!W%DY?_zmOn6n^9jpKH1V&w=`j%vRj6(@&v-C8$)oK^*V zXQ;?H_CvST+w0Zlzr+JqQ|l)aJ615m!=luhM=Bm02>8KW)QY;4oMY=?YD>_qH|0Hx z&#uenIGMaq*3cacv4fYAwDXd2vo66(Lo~?JhC-v+z;iYICf8*j z(8R<=^8xETlv`Q>Tnw~Y6j5Va(oxXM$lJXRsUCQS1w>SjnjUD=wbtoRS>$A!iJ2Zn zc~t6cb>Zi7CMy*SvHEbqhyVxP44 z|Mp*_)?XR;pD$b|B2}B~-hX%|?MKi=mxS5lu*63f1pPz__bcat7r2Spe!?#gv$X0) zs$S$=uh{Gy+wGJWtp3|R*g|@mM%rtt*PCTDgy8HB0R?F!NKd~*J|8;6w>RN8*HGdg z%Xz!MgDIC#n{I+62i{=%ndGyabR5rK^{K_Ry4IM_tSg6iO4%xHYiTYYYsCZ`)F&og z&YxAOUVQ_yWlM}vYvEX6hF5C(phT6QMzbA29n715(T?_+fIvbnVT%Y8gV&9gC8^(X zF>Y>bnIgqamQ4f2h}(@fV$2T!V^~deyKlE{cQ;4{=Z~~^`*Ty9ETUDF(}pxoJQ`f= zwCT6|ap={d`$|G8X)rV91Nf`$ruN9v5?s6>wFWMVpUd;ThBBeLhF;LmX7 z!l%wy_qCZX+fg-}Q2_6_&Y>zT0^a4cVN(f=uj=$<-1w+z2;*RF4}q@lik!W7pO>9$~3B_pv>BL4ruF!+7QrnCJ$Rt9V9-J@*gSac&VAR&LY{Z z;BczOWki*W-P+?EFVzm1`m))jE^N03;eHgAv}1`2TRdV>owkhvITn@5xolhz5S<5L zlTY1BA<$7jFe)FIo%!J<)dK9VvV4uJN}>Dl%ufcFSUv5%`mJZ~yb)Mp=~CGEVB4`G zRsOm-e|9HA1gQ$%kj6sQ++jiPPqQ2uy|QH7s`~Dz6O!R-NgE&8XJDTSF`Ky)N%wIE z_Nnh(G!th}S_200+kJm6IbRgd@bhH-LsBv_zUq&;z>p=rC9vhG@CmbZM%$1ry}5l+ z9y%4PqnOjmQ zE07&``79+XYed?HRs;+thZG})-DlXXj}`Da3zyQp?p%`M%n_t#PftI!XR1yoM_zp5 zwC}H(Hqm5m=Q|+&=ampd&)_jK zsXM*(tA@q1HMv1EFTZf&sy;f|l`dmv7M1FwtYs=_k8rxlloQt9i`WB(p?bwp{Gor3 zFNqp0U7s^hHRLR2@1;j>f<|8gc!>rTQZHLAV?M5eOpW`>jew;9VbCiH{ttANhg8y* zoP~Zj`2hIi_XiGIpLQzzrQ$r$9Xw-TjVlx_b*ft>5D+y}`8X}nNzk53|rAkmf%`Z)4azZn#nq}_N7n! zeC~7v7C^tFcW&=R{vTYT4XNH4n~f6cX{8%xk6^JpdFQGAYUCH2N4+F^AU?*AT$P*S zojQ|eJ}AwllGCOE>%vw>RKr$Zst#1d^>?=ZZBwvJBIQaoTBx#cjY{CJkE=pwLDSrqE3=?-) zL*mjl@S1SW&rZ0jfq8D={9>Y%hWOwV0|%8l@@y)j{}iM$cTGujk`qq>{q4kx?QRdLm-ximP?#SEMt0xJ`Il=@E2Pvq< z0Aa2Upxn4D4Ley~##6(xg8!f%SRHH=^mQBgK@Vl*9DARdYKqpQEI!M3!@YzL11D6+ z`R&%V#79vAZzNKL zk!${S?G=MJwhbqessuKfN0wtoXPNdML#!7aE?ce>*x7Hr6;M=EOfwXe@IDgs&8MO! zs#RTJa9iM0!zZh`U-P>!Ij_IIjyTZQs}2Eyk<&b%;l^gjdgl3e4J{W!%&q(Wa<=^3 zA-Q~0q|C_ddFcLU$?ev<7CbAjxMIR0N5V)rlqjF-jTvA}8+3!{m1A!r_o>=C*dfXP z1cC#gY?nsu#cn$+)6ZADTflzZyO+SLSnaTuS6-&h$2LVxPa(*<^m37ul^70U0uI?iJ(- zcH)-|?bQq>QGHRd905H6#xr%6%!t$Gi=BU#NlQmPV{Nk1R1|!6i4>hUzF33@cnx#! z3aO=Q_jIpTf*1tt=uJ@-ua5JFo%=pNSbk-hq@7+l=K;k35oqifO5Ds81+!hK7-Rnj52?E2(~g4P?MQ497Y-BR)Ce^ud)mO zrtTlASu1jel^?crDL)*Bb(4mkOn=g^Z`{R}$v?wm*O(AK*5k(O8wT>smKD{v;Y>5E zXtc^_T!)ixMp9Un3#csIjFB@B3@fo09x_Aex3T6Bkr;(FjeU&mLU}z^L~wD#wsS29 zoR+V46<#PcPF7(agHD=cV*v#w| z?^njr1)!VXv#e+MCRZ|qtT;(y&Ggf_D}ty>><_L~R~DOqY|5sXbsKN*?WDZsbp7^) zfjCBW0lhZrc8E(~`P_L+vF*f87Q3dOM<2=ZdiDHCOrBmcRc}7!c2%#v?zF=lY5=*e zI1%q5(SPwkA}g}I$-Lv}*e7k;XK)58%htgorm{jHAvjc_TX!_>_s!Fc_e`Z8oyqRK zBw7z+HtAInZh0UA)E#zNzKYh@PzB^-A29l6M1Qx}GG(B{3@!N+io3Riu05`5URJRd zo(KnxbNjQveK?!y)ojODa!ByWC*-Ea75}Dr_>8cQ$RhU~_Kj^Z90FZAQ@S)I`Bo-2 zZHs$O1x>OyH#ZlG|BOv2JU4o*T=9e0e+_vYmOK=c-bB@XkE0hy2>TA4J+DJ#3kiPP zHCm%1brWN3>{@e&1?TD9yJD6k!|ar_Z|8B*^e@xv?3b)xzi<1Fh^+s*CnU>kj4c`t zf+j>6?djBdPL;0XY^RX6oI;T=ltl?%JJqA#oBa6I2 zXQAsNtkXuLjO+GEED(PFa+%2|6^3F1*4q;Wk}&%8ow*o4I$bhMi%3$XdBGe1E06st^5Q>M#H7%Fee{1-Xd{20 z-@^OeHsnN1UvBB>X&$kK!+8voDYE?t&yPbFw1pz-ckD;)A0&vVGn=d-*L(EEY}UCp zKytwim&efeNBh>a(#Ec(O#GsC-TJ7V73q<7a#XmN|JJM(uuWRj1WCK-NHASzTKyw$ z@Y&+K-Pyn^!!Jn!uGL#Jh7xC^_^nahQBG@R=>|kRO?{Nyn+QZTNLr{gJK@u0;7meI zwu=?_68l(bpMQBmfK#~zJj#z|p3!saqgQinvCs~kLYetg)SapP*tG=q(1qB+pQqwu zXuJg(iU4wz50zLb+n8)Ro5$X~0Tz8-*{)^MHmEiI{yFF>VNl36y%$42i#rh@v$l6n zUl{P*2jaok)5MsB6*@g5xf`U}ToS^$tZgymsmQtBvf@<(OPx_2L9s~{faPIDXR4U+ zz;gh3qbu?t8|(L`uQ+G9j4+Cz9aC(nW0_@UgJ0>2NXQgr1^Bd z-GaW${P_HNXu{nqKSF>1O1d!5?!;{~7m;=P$0YO6(T7*q1tP-2qZJTb2)si&y^R+i$hQBWZi)^oo9;viy?el78)%e`&Zh%P6=@Q-?3#wtLL;04G$< zsPVPo-@8lX@=$F_Uz&HR5rT(HEqX=6#hTfnS1(SM&t2Ldj_|o^Wv2S__fEJX3pVj; zM3W_MW3)1M=|RT!UliEX2je9qM1FWyh~-Ad$+05K*zjukg!Tk!a=(zbeRY4~15N$7 zCd7OCpX)cQpyI&7kTz`Y)Fv_H+pk5w@Nc1=@6~zgjU{mSgm2gjp45VYg2r4EX};pd zG#;JXuboq+!aAmM>{ahLb}3OfNK<|(u+ER+ z3ZcV>#`;f$YLc-{$+(1oj#;}~_lV7Cvlww7*T?u&`!@e;TQ{{kL#>Owej)V4dDB&B zYLu|9GH=AFz8Ss-`)OZBy$G3Pmfn#5vt?20UN>@V#{!d4sg;0japg{4^l>55g;q~1 zEGiYjpMI1dAML7jA-XTsqwJp{inLa$5&86u1baCFl*JjIJ?tqv0zD65Y4Xp~!;^ug z_ha7W&UQRqar6K(=E(Q{?0beqdBtttM^7cMs@~JDr~K;d)Y~a4D#BjMOXy8FiLS_d zO`K8RPU=g01X6THCUd_Nc+s98X1y~W#im^sLNV>Rc#TXPBANj8cZ@H>R?(;XGYe6g$XFg>`UJvGWyV>!&3 zF;N7anA4Mx-86iW-&XYP78|P}fd;8F?5aiWF8)OGY{O%{~lkQ27G1l1aScfn^tPFf{2$Iw%y?KpeMymM#8s6HgcX+24@y z@WAi7FG7f!I_wp~aqnYhZX zK#7qy8b^5DpG|Y)qyK95w@)@m@c7uF;^nv$O+ZlqKhXFV!iAWyF%e&?7_B-I6ZK&H zG`v>og$G~#vQ}xLU8+PoL_Ox_`T-RDBNO&;JAc zk?J9Dv}A;r&Cm9g?NFTxC6%Y9CD5x=1yvHqZhJvf?HRb3vDA4MD;^gO@%ll1hU_F})3QSf)C@fq zpCEzqtF{w4%R8oIB?vn?_r`DF_sn=8U?v`~-DB+VWm9i&i+;*@IJX%O2v!cx#AqEc z5(!k5o{k$?!cZzFu3ekWd%HL!>i(jR)U-Pum?vgfC-hgB%`gbiR8Zth%J@{PUn`HR zkOG(I$%2ZTE8QeUDT4>wdPX^GOh%FGCIof|#iKqOxF8mQtdsPsW99c=wdsl-Dt7FR zwCo6P@>k@KJFiWDiS!`e?0Yh2RDwgf@Rc)^T?-K&BY*kXJ5T~ zm6yS&%+nik|B9foHuGv}_J1S&E@P*%4hlvo(_WNsv>G85M7OJAa-g{9byr_@b^bAa zOg&#?9UKDDu0r#&>UN`ns51V&FE0Jx=teVT8T`dHL0fCf8VN*FM$@5WZC+T8N`KCV zCqT1ppuL56+D@O&ZlFPiHhp60rx9WykWi=zUhY)s^1PDKTKK}7|}IOzZEznz_( z8~$SjH~erHaehS~c=MEWQ&Jm=Z4ErZhRX1_1H8Qs<%8|^_@iUf>y-G?BIT8%=PD)3 zw%^q-RxrP2i0b&z9e-x$d(3vKAnc@X=ZB5OyveC|P7thv792uL$u@WS=ydy$lRXc% zWIR(IaHT02o62{&vdqLa-1e_!W?u)zrni1vr*45v9F!J_SkshX4jcenk4i+Qlhj3P z$*z)D!^)O%8GDOx9{Kf46Vh_|XVoJGy3F#WYiChMyyEa%TGo(>0FO7N%3|%t<%&sC z9D7$o*6TLhL!E}o9gH;m(#}nPP#QH$LhQeCw(Lbc!`T7AmkIu;a79*huCF!b2>eli z$XBB|TkxAqlL46at)-4qDJRAFL6~K(Uu#ACCF9Thhytl7+;Oa3ju6;7M}|C_XklFH zPp154j#E=tI~2&~q;|*)JCBF1Qw@V;00qKlSG_U|C-X zuI-9*NKd15ufH(xoOHKv>c3UT6SrsL0>LD*qIdKfTCt`CVuF48>GkQY=USRpAbFT!iHfRWY4-S2@7QcP^cd|* z1>1d%4D@N2!PEA8j4W$p_{wxwr!9j#*xl9fisLq2u=K_AT1c5|2my z=g{3Rv3xL#v$VMIr+($lMjG0SeL8$qS&Lqzs#I{oXd#+=ne<3ar z4|-oh;|I?i$#=nxKU;*U%8TS#u7wwdcGXd3cQeeRx!(fwE@NBWMj( zQ+!F^!zhSt8~^y}!ct9k*2@uCW;VCyOWwr3x#PLZYMCabbDZ2Hf4|rfYIA;jZ^v40 zuH=sPlXyy54U_EYZ8Std_K;T6dB@3T)NA)|o6AM)tNIy+`!Lf6DJ`QOU2DgUv z`G)?U00giIn&iv(AMrX7W5K7<7`QSzeQPzhDu>;N@x%km*dJ`0T zJx#zm!aCB}bEr8AyMT!3wtK)petfY)F(V2|rvDMEiZfM+`8_pdCuaWtu*|4K8@_dYO8!1+<}Q)1pmc=fR=|(({H%k}C{LV?AgwVeC>onb zIQQ>>-A)}J4@E6if!W5lrB`j5Z(ABaU=lCel#Ri6teSUb%SIQs=Ac8#KDknZUiGlN zvk0-cy3rzE1FXtNFZf^RC+vU?_D&{^}T3>M0N8WeHczfV- z_N?o@q0pnx)~IFFKahV4aFr_9(=PJhXRBNbG(P;=y2~)(`pNiIMwIhaoF4vY92u?sDcJpp8EL;=;dI+?7ne3r2&m#rriNOsluux~qJijsE;7`}UEVqnDxWUlT2d zN+>7Yr))ImC2Sit{nl8$;^dzvwB`jOXSdryb8o51%274~l)6tNy2V6Jj80;4`Me5& zXSPEvB_t#?+W4n@4@G|enpd^f7CHCe+_@;LExUDNZ)2G;~ok82M&?bt4 zJ_7+Oy9u=gn@nWd)4($|_uY88GVLGd6*Lc+4ee>#s9O13s$M-bxHWRw)i5Us7$&D4 zyV~!F+J;+p2fPgYKWbOO4JpT~hB<2N$y>TEl8@yCzC3f3DZo@tzTwf~c+IQ+>=_5^ z<{i+Sbm(4@Xgb$j<&O&EhdX@^XLzk)X0tde{LU7I9kp10yU+8-;`lxKnEmmg%tvOc z9ChBDf~>EfS(f2d-BR0){g+j1dz-YF(E-&1w+8~p7W+Kqjkxks@kPv!cOQfYUPJM0hk+ESNNI@o`8h$dsit5g>NtJ^oV z-hpD@xXlW81FoaxD1(t#)2B zd(51S78#utTB)pjkw~L3>_1B;{ZZ{A0|>h`#By?R;BX3a;{15!I|P$qee0oyJ%lme zC+ST`?x%XcIEA_?SOQwDRYGjomFWJ-2;-(2I^rbzIa1KXSrxG_`@1Im->%T>Hm#cX zm%jIAAE2IoK2MppONNb_Dw$Re?%0Cx%a>RYrl_0$=LKk*%Kv{|opoGOegFRf1ug|a zMClS#R7yaa5mI`IVA4Hc>ga|M3Q|&H&&nC! z3u1GCbX5T=0oCxm=3~R$HIb7(+}wqX-7B@*zZ|VJICncA`#+AP(5IT}S@kX}4(?B& zqG9jIm3fL~F{{eNul*m#=)|?3Pby8HQRRMK14;h!^Xbt{N@Z*tnkbDyzN4p=q#@Ap z53^UFeqK>*p3nzUGbX7*3u^j`JJ=ndPbrL?W~&WV26h5|YTQ!>u-vCY9KJ1 z1YDLl0Hja@anuE~7q$P1vO3aP!i&g3ApF4HZysJm!C zu#r~xpd4dWJ?%T8{a7*3*!ux@`Ds=VbTvqx2c9fc=sVmWbeG&m%AP#nF`TBe zGm-ehLThr_go9Q6z)gFzLrl~B`)NCC&W)%0V8+m&p4VTJ-gZ2uC4A&N$b1ekRlr?3 zc3_ZwXJwj;Hf&WwyK3YItm}h=G=vt}Wg58#jxpY4;?K{Gui4w#x?S==Q8Lp`jbD^)q% zzghOXr+4eibEu}$OVW(-ai5DW518tzRdSvRDm(jN?)YvBI<^7g{e`88bk=uB323<0M%s!>u5sZCixrAjA*XFA^D-A%vVUFo`->>k zk=LuOUpX;N7gyuJK8(0O87{7i@GcoVZ!S=aaU``YiKhc#X+?(g1Y$V%di<0;A}gcc zu|#~1hp8XBAnnr1Lg!RpuRt0Cwy~ps&rhf5uR(una6O!HWdVR4*R6VX zwyna${)Ro{qXlb9Zpabr&|xrN@98zJ7LZ`eDT?&7GyW4IJV_-JAO6;R87NHy1cV}p zbR*ri-n$PLJgs|MizEjAvVaG~ zp0%SLxE^C2OZ`*9*k+O{)dz-Akh5l>y591eDMLN5xOs&*AZHz34Js!C07)rl*TmCd zx1>hbzIv@K#NCaAb)sA@EA48+ZoVH(f4_x)!~-M2COy?f0K3WByeN53G2uxj>zy0g zoBnkctYKXf!(s4f^73Y~IP1zrGKh9#D~=I;NnUFCRpp_?ckef@$j(F*^RBv@lTX{t zIh)ZA%E#o^dq-ibstB9iuJZH;>^oa{L3FML#~$4(XMpAyZZah$Wv;69H{ao)Gu38B z>$9DUZm7O@R&3&9pGvcyaipGJukt-)<@Y-8Ib?M>t|RtF z)*SuNtLdOsgtb&JYY+|ouidp0uJ>JmGqNHB2=RF__;_g+#c9A0_Cf~zDl6DdsOHZy z=nS@;VKCRM{!ZH%Ut&RrPJ=55eTm}w#j8wuThSq;BSn;Y> z5-Ax@R94C=))N&c;hw25Ebl8^axJHuopL=V!y)G=>*!!s#O|#q3%7+t28FKRQ5)f1 zePTEyZP)J73H$MViDWU-&7*cT*h&hT-PDq)YyUEzmwm0f>j0q^V7vlU3!YVQ!}dBn z`?x>h?4bH%TLr#xn`}W9&=&?H@~H{&Xy~epq0r*9phTbX8ED*x1o_@q6{+SHF)Wm& z&+1E-+&+j`d*#;q<;9Ig4HQB{X7FsY;GtXKPO~6!`3}?Hk1Z=^lae1Z<`qu!2G8x! zI6N}W45vaNOmlGZ?K`WArZx>Au+g8gG${8X@=?cjoR;W-(8kl-h>Tpj{7;0Mn~Ht9Uk zshYb5OjCzaZ~X@y-`aa4RcB>@t_B%!RXAcJZ1=STUj_26@q6EjY?MuVnuBvOzMGSL zV^+7;F*9!3yU~OX*b&*J`9$_s(;Sf>3!eAICyE`Ye8gBu88^X*gG}~S0h?7=Gp{&K zuIdwUYgXYbJ)ANQLm>qYct=D);rlx!MH%@S{h4%mDDkk^J+D6AVK6pQ;a*cT0db+5 z12tuOc=b%p9q^deYbo$<37odV-H=VrAe4y*uXJ0rW$ny;Oz_Fdq=vLfZ{qJ7GF7ec zklX##QDYxwoebeeZN9cWYlo}i5AA;}M7g8JreZN8UOu*qopE!kmZqn!Z_WzBjM}LiDa+j6^sep>OlZGIQvzg7)u9%`XKl#CSI+4^Bz z4`z)?Jfco{0^*hK-kQQb{^Eay#>g3lBml}(BE0zJycD^qsVF>Jpvc1VL}fq1DE*0r zb7qunzDOILzG-6*{p#r?MnI*jI$1atYk=qE3hifFkBSmKP=HQQVa;W!r+bo~kT-AMpnhzRq$}yxou_!|b5T4G z&h0-((c~T5s{ya^m0AJO?YmwW*-8?3SCp*s6XpQlf39l9ExtZ5Ew8o^Xqq=u>H z&hd(K5`D7(+1j9TX&>ZJ#YN4X%hj!H|FePWj*Xh@vK)4>5@LeaW=dJ?gTF#Y+iQz| zNUJBz!QEL5ElsNi%QN|i#5kK5L}c~fg1SxyATG`cBr)8VxRRLE;?;|c0A?2Ni`!a{C@zRFv zoli0!NLd}rT99RtG$6(gP&r@&)(r%2Y|L0?Z9{#Imxbxyc^Wu3WzLQtrh7lh{zk?W9pt2s=AFg#V|!Q5@oR*|tzPOMVD0oYIgU=I)D{@6!0ZVe zH8QYo=y$uTvrSc7V-<_BKN@YiH?GmOWv#xKLf8E(twy-mUf?TuFITEi+(WT47ZsQ7 z=s|8hBaL%a(kXI#RWH_rwZtg`?2U24YbxfI%QfdK%tquzJ+giUr5)~eg%CH4>^aIw zk1TRQ3UUuS#~(&)Mq2Qp)Q~HfIhq-TW{=LD`d8D`CL?OXM5(s)U9$THA7)G_SERmt zo{D`bPL|m4`{dSDtR(X?u&*!SLfu`fdxbq%O6KS1-`*2AozNWE$eYsdW@k0Xi&ZVk zaRI$qX59?KW||#~G;7p=hLp+fGep`f^U(0tRGv1%*XiDdFVM&p9YTolSFk&{;b78} z@nP)n7K#s^;$8|Y*@4uy#E)m-lSi9Zn?xj0wJ=W)e>vds7?0nnifWD1I|iCe30CA4(V!bfb=J5v`u)|05OSamaC{9Ep^W?*Cu17myCbB!VebOn@oBeP!8*DVr9{H^3-+ z^szHj4^KOwl+IcpvGbBID|{fduN%)^p6$DRq_oE#nADlNl(P2U*svqME?fA z$R#fBswBy}wI*V1knx2`^oheOXx(Zb%pHZ%vur)gK@u=bWMH%}#o-28L8>gvA|6JpzM2cBBziakd8}k zr845?7dB##fGl-8aj~tx!!{@wRGM5*V*J?Anb&mJ-YLbLpse|0NccnkC1Cq}!$jqX z+zy2bC5CUUQbLtF%wYOGP+k#TLSQ5$&3|zRE1&ckg_P4nU`-3O$gx-Ub@nqW77zr( zsTpDmw~`|Vq(rp(S4f+tU&qDdO&MiW$aw|IapG#qQF{|nCr}U}hu|-<0E?_q$Q&!Y zjjt@JwSPPD`C$|Lg7lV^g0yr`Cqey?q%JToNP1lG2=ltw`@QinY^7%Mh$=|zpdVPE znwp}x)N;8(?0%T!x;Z=kH~B!g_|v;irT&`x`C{78>ye85s=P~YN;4j_#xy4_fthN};ZH+@pSW+p-E73WT&?KX1^F95x9(e>)U0~kY9sPtYlk5g`5?#uUH$V|&dRrFvZ)+{A1u;v${V)L9*_ZW`_br;k$08|_4kQc3ZaEA#&ES}kfLra*@u&}D)2#NOIg z_|~j${a+K(@1Z_bK5BZ4YTp47Q=lkIh^liuVHNQx*T{R-FDRf@c=knSbniLrXa(e+ z36mq!thO2$x%{m)Fg&aP3#+8-IevLO8-DJPk__+)2a3x^Iw}fZR2?5JhM_Z9?pp%L z86O|@3CBIE%ruJ2sEyxPu%%oJi}<66XmO6msxoi;k1P?fb&Y)A7wfI;-oSFA(^53^ z3MCSIib4ULM}9Ufv5x*4eosyQ)XsDTvg-Z0wBQ=Y)LBX5sXcT?E8(%}92uZ@*}?RO zthd(yijPEis#g1rJCb?EU7X^N@U%6s&S4R1H@f0#^+3Q7;a)_yJA#*{z;MC8og&$X zX2G)PQ6*ycR-uWfTfDUHnsPwgPsx%={zgJyfe4;&bt)!Bt zU9qhlqFJiKZ&0IPufnevk@tlyz#q&ye!g5Pdmig&1o5E>8kf@ual=#x4G+0CP->K- z>ypyF8J4%pv4720pvOkyByz*EvX3ZZNBnHf zsNulBoV|BO|7#nJX?gAc3H0E~g=ccCVL3F$qKBi5L7{I$lwHZRzWIN!tv@=B2Ig(q{rWx!1(q4YL-2WsVrdWj1V5 zVv>;`KH+zAMYCa<-YbKnL8@Bi&CzRk!SkfY{y>RJU;(1BA*< z=Ty*6k7Y~Z@7DZE*U*$$;Qhx8k7l`jd*5d zI7CNcjqW|?%JYG4D;ibh1hu`#prkdbbIF%m*0&k9Q&Yr6A%2dsh7J7M_v5fUInUW^J>o{{j_=uP!NN(qPzz9{)@_Qi22}=$S@2gEq2JzzU~RW`W}*pgD!NWrJYP{h z_p6Xg&{09SlAAW^@hr0A8w z+o^EuM&6m4djeno!P5SoOy?Uv0j4*$p4nT+GENf6qZz{#waf>KITpiB3tQ2BNiP=j zcC_QBOF%O(sTT3ZwXHYVz1`HuJbW{my^1gd(!+ccDviTqh|4z_d11r_rFm2)mmU@>t?J-DO(~<1w43(9 z-`|NDZ+i`Tya0>rVtAD)hbo5)8v0V8ZP~jXKk^iN(JQ&5Y1WSoQ2N`rlr{j7QA=>f zq;x5d3IF&DV-XORx˒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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_22_0.png b/docs/lena_imagenet_files/lena_imagenet_22_0.png deleted file mode 100644 index 05a3eaf39fffeed505d4edc9304ee325d2e87f63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31815 zcmZsj2UJsO*S4K;tQfE%NF94YiqcycMMOb@fDn2H8A?Dvx|D=bDN0olks7IymWU7n z2_z#3C@u6z36UBgga8Qy2!a3Lyx)5D`+nDAv0w@0obx=-zW04!JJ0Sw3_<%P_V3uS z19a==b@LrNel-I=O!n>uzH`X^cQEkjH~(w5?(PNth420ADe(2a2RCi}ckB>4y#4V@ zHx0S5W5@41Ze726_hIH7Eu_sJir8AjW<<`7$Y_tSnu*Sm=QJSqem{8a=K0^<@0gwc zJ>}S4ORv7-vWsS2C*Qt1DL~)V>*|*Ob-!rjwF?=0Pdth|`z`X5M&h{Y2=8HB#fO58 z%|F259qN=iP5-IkG;In8DF|#*rnF^g2hZE1*nUldF){LL)Gs@BygfzkXM=#(D1P1k zI`H*h-%bLT_WMpT;G%XMuYUULjvb%>F*v$o#~;ySVrFR48AWfaR^EZoJ73FzWT<++b_khFS*f8QIuz=--R6qG|Lfdu;Fc@%@Y^qT zmF_P&{po>y>Zi-hzZmuyJRtMZr2{Jrxk7=;L_QJ*{vL|EYXcLS-NUdKTi&GSK zCYO;{JjvJpWQz=SpZVE9qb~Nw z5mTM6K6*x)yv>Kx@w~Z#BTY$qn-9hL2n;Gih8#Mt97pjDo#&BL#2f;;o>I!l{;rGc z$6NBp6Tqt8}(W&h1J6S60DNGX^O# zvg_)4f*I4~&5^b_kk3Q?ZnZ3(kSp3qp;>GC>UKg;ll{FtE=pKXG~k^=E-7r zNH1`o?l&h&SGiGS_%o&v9(Y<%M%|>m&xJMMB-l}QC*bTX@S|1Ri*;q4N*>9M*bE6{ zhtZ8)WOnSxyW`-|Y;DFp*)o?pn$UZ253omX+h13GaH#K@xBuHvljQ5FX@2hR=R=1l zz9ctT`#TwN%GVtm3zh?^7zarjn(q#L)*Z-(xOe;kIlM76vQjl&HMQ6~1MT?x>|dUT zgZ34zNmA|oO~mP8?7A*Q`l-NX>EKrb?+>}l#8L2C4;TIvM^DYd6XWREb=!1{F^(~J z&-rERUa1o%kJ;BHm)@#eb>wumb#vZwzdDk_L&VAJeb_``&5rvZn08L3HPAqAg<6=C zw_Pliyt(XD`fSK`agiz?u`yeY`7!}6x5wY&*b02&r>x<~SBeT>iNQYNsbKc2LNZoZ|F?RBMbL^coC4!`gESO z9%_YdTYk?VfG&buc%p=nOY-TSOohob4LUcsRRd^Zod1Z*u>#q&{ng2S} zQxnH7ng}~ruz-j%cc1s_1TP?NW=D*L?kFYa{K@S@8lJ>C_;N#|IDkPby~TzVE`&xGqB}rj0|is78<$u!KJnStD+;wsPVHAIu5liy!GuH;^zjLx655MRxa97!wj~L==bh2aUG6=A4 zjJkA353ht@k7{=9$UNSZjvP;&xb^Y&cA43&@WX}YU^UIaiRpv#)hs_PCv^7}`mp7& z@e(TSbu-2mcQKw?YGbh`#iU|oeebW-`%S)7X|88DdJR@yh-Z$i3LU$2p6qnW-Ixj! z=tRfFG-#;GQW)0mn9M2T6opBuAEOt-Ojmb0mP%j`*HkR|uG^Y|*Zvac^Dz7mppZLY zw;LQf7ctQ-c$uzV9CCvcRyB2;HBf;jCNTe*8>ncow)W^Udh;)-}?(7Wr{%mDQ^ue~a*9s02O%kNf zv{X_a&)WQCW~o!|;S+fmB}g|xS!?fWgHBR~KW~2Re~(IJ67=v_9r(`A}E=HSP|FTYu<>k&e{N z3+eLsul9hb9_}Qr4@pMO)s+g1K!`IJrzmX8lCa)DHEjKlk1)PCaguZ;XQ&a%Z#0!< zvU<>_G35%ygNme3h~Cb!8{NVbSKqy+a%$nteg#fPK%VK1($8^^eK$AOy2iO{{>O}0 zj3PD7SK-TQk&i2{m9hM;C6ONAPV&;lPnX~Czi$9f4tKXrx-45|Ix1IgPHDDfy<;Re zMzPz*_Up)w-71sni^UOQy=d&gNuA}I6ne9SYl*gk>RhRGE26P5o2_zsT7OYu@RC5g zK9)!}LauaI8@(la6LgUlhI1>+sZ^c6+dodBmN_R7^2FTfKsLJb;*Sm3a zl5q?)a4@tX8f1X7Ll+D9@6uOzXF9z0GH@=Jr(UXDA0_Wh(pkFcj4g2jMckeaZdA-3 zW_k7vkPuYgLs}FOTqQ=oX}Tlh-WEbeo85O?&oV^}4%0L_S9p46Yp0K8b&Z+Uz~} z3X-;dQ7vnbYIK0S10C(%Uutut37Kvq_NJG?>8W4WVEx8!u#zx;Hz-q4-Q%;5@YXeX zwDvBuzpOR1%(BEPYOyInvLZY0w65?5^1QTg(U|sQ&%K{wUf+c*TNOh|ODQQl_})gS z`sBO)?fh7IkWb3H;@8=%yWb25$IP@9ru1pEzOeQ(;KMM z-&`;izWOEvl5Lj7XOs2fp;$-hCK4y~V!KF*ZB6ZOsIbDU#G%(mCR@uh+BCbvh3G6t z@>V+EzX7CvJ!xpWY_ox5k?GYPjw4_u(oxp;WZ~ZN7^MXPJ3=qieun*uMBgJD{(jmY zP1vp#)t}aegP-U%FvJ6ixsSJKy$ov5xj<|lT{mL0SE|PX4N1_zj8ow2h@K5OGGb6m zAAjOpb4uDz*E?E!EBS1cuVj5lVAf~LngP^H=*X&ST|nB6C_=Q11$teiH?%I6Edv(NOm3XMpEkx#DN-8cdN)rDyu`0hTxa^ zAUp&3t*}kMZaScGZ7k(wYz-SiG~?p?7afvSBU3FvD+xZ~c}%b3Jn33h9S1Egze$~R znNUW+!;A7gU!7<{<^Y&f%!g{F{Q zT3;(=1Lq@GgJv2!%*gjt`tfr9y9x`&J84Uc9`a!<7mSIp7ey&-Wljk*OW3?OvWy9i zTFf0leqjU-vUk!63TrZ;f+x)6Y-wiD-@^Q6-Kx8-YqAiMyMgg`I}K@WK< z=)0UeF1@`QdT;tQh1W-aD&X^Ye@W^f*qhe9wSRbh{H9GpPj4v#QtO``W8XX9hIhgY zT!M(_UHOv(yTS3wfwR3zBQ^eR%@l_5ZQPkh5FV1{31hC-w6_HRVr6@6j;Q4c9acLp zU9}GM)Nhu9&(y104)*_g8YgNn`|Cu(+QF#oU?Y5PC%XaY6OYrVtjnYNR|Yrp1BPM` zt5l}h4q|EZs<#>NuaE{Z`2Mu^o78;rKB&E~K>#XSSwu$X>sPhjuDe1YdYUEn&j+JX zVnLf)$AYp~%eGQ&*Odv3tr3Z0}5vQNO7PpiMR7*+4g=yyh)R z$aY`ZO?NkNr15(Wmd&3+Ilg5aWG!S9|EP}sTq##0B01}3xvq`HPWH&D+=iwqckqYJ8xxh0fBvW)nr>^DqG#4| zO1=(z2D`4I({RihRFw&9X;>b#=S_-YT!({_X4HHu!64Yb{?nObyC8j4Rx&0%jqh=v z?6vRnUcwN+tDY{ITmc`*s~mQuRMa?p!g=Clcr`-Gp4Ej4r7P2UNkIZzBVz^y@F?_f zq)RX#bm3ih;;$gwI$hi(V_~%OD1qj>Sf1}?wQ(5-)M_OK>3Zy}nqxCcPgVL_5{xc< z`lkobS^U6}b`48QSAm<0s~>;7SlQq|(+D2=L;FfbV-Gp*nEd|n;i&t>KI}oGeOe|k zv5u0SiQwYI=<-3Cj-LHzY4gLo{BgGCV$69e4@OTO5Q3h1m)qwPn35~uc%l5@`+45s zK4g(-4e2G`&Q^L#?sQ6Yzp50Jr*7F7vROf^gjOj;m${cnn_Q9HG3Lkf{dKwu*BnoE6N zbh0iU-DI=LTboK9Hi8qWGR8GEv6ca_sR^H-szKR)#!Nu)%mpGLk!aE)Zz6k_@ZN=d z?OoAmY?U!+&%{DjLdLLLUFHhKY~4Q3NnEfA15|w1xK*k3p{8}4RAGjy0MWUt5N8o+ zHx2Y_pN+%k2cu8p>z*LRaGyx?Ybq1K_DB}W&A@FD?Hji?J->OVGgDRK#VaK4g1RF`#k4H9Re7_owKJHA&>&X5G;1?-eM_ zERH2*9sN;u{>OLx{sb!)$CLDAnh5JEguEJ8!b`jj59kIJAyD=_l*iH{2?b(n7ZZFA zjBg3(TcB}5=6U(a#DCkiRnD#fd+ zx0Onx5;h&Def$*r1PXBClT53dKVE@;37|)Eo_fP)&}^ghis^6G{S&WBVLPf40BK>d zSTLhfClVO3$w9GK*H-3fl1<5HO=9PnY7>P*)9H<)yIJ?>LC8Y`FROg$GPHiq^K5?j z?8n*=PQA4r{_tq6TBNN}r!x_@QS)uvSuBlH;nOpE4`z3(>^BK{bJ_U@xBA(UbJ2^y z0j7=2x(f#BH^d$}dwcIVaQOyF+M!%`=b=|dWR50W?|;8)lkS+rRC;N``E@t8khV#M8AU4NYm_d4=EV5WPT1e|7~ z2zmKr40FC@O>bSDw5ws;ReNkl)dr(aM^T)LThzPEeJZNUBBx4L{ZU96P3aV7CKy4O z<}A0qIAusc3b!X0wLa_C`P@5hPnJEibSThnxdxY4XR`q|is+YvVh%X7xIV`iyJkb$ zPiXbhE24=f;o@Jn_NuNcJA20wWS3L{dirSsk61I zByNH0Na{DM`8W>w0$R4- z$ykw2Lf=k1+(dXd`Do{!+-7)GlGXiH16hCfGp`kFi`ji`bAVmtG|bAa3f#CnD(Aj_ zHHm(huagoqzKm)He6t4Yq@=@rw*?>EyKM11`6dKno$@%5ELN{rTo~EEt0| z$5Z$Q_^S~|baaDum+2#oW)J;%<^PEjNE6qyo;~7Y^3#*olth4fTi5wFFG| zD@tH@t)d`P1x>vlklFlWn;A_~_+t*eq;fr{2N_uKAuzzm7dS*_0#!?=jLigh{}T1m zecMwlF{m7eu4ESaib!i6ZIW1;6U!p>71>s3yedlKIB6l+w(Gi{{iV~sfZ0Fi?QHn0 zR|$Sm*1URcDx+aFQG0&xcyVJu#+1G>P@0&nK`OTzT(tTd&HRB(C8k`&jRoksPvk{; zH*@$qy}(gx`6M#8+c=MJE=KLAcKcVr4iImp$KK%)bNS)x+?lTN-4`O!vq(9d!HcT* z3ql8vbN~xhJn!G|2k@mFrQ0`5L3tq(;2s924>4G0gBC;FysB?rlm*2D$5hjx^w&$- z^L-tyj@~JMDz0`uflxh`bJ*8P@!yjS31O8uq81iLCJ_^)$2V7#wlw1L-ZTjs54*LF z1zg+cV*iFVIjhpW&Y*qqlS-I*sB*==BWELh9iG~kd{o)>Pw;~GOYF(AT*i1^81DwJ zAe!@v9g0amz=qpia~QnUS1ewa&;K0LW!~UnYf#J&ti1aR<0tvGez-$h*^4blRLRqG z%ee+yeoMiM9wbTR7GKCj?atN-@e@ZYd@IhmsVBfV5e}cwhMnjV0-R4oM$ZIhUU!2?_%+48M;mzT}jBwY0rY_GnM9Z%BZ#50dzM#{(#bEYQ$Pg<$h2d9=1dWB4qIv+TCPZmUf=GNxKy;YaT`PG8rerNhlP%4m@ z`O4v5 zQf4WebCmj37sW6eaq_Gsc6PlctnY;_Aoltc-(}=_AA;k2=%f}#XQn#+vB6LgH?B%! zkrADy>=y0&toDp<#7ap8$w&~+HyG-gzIe#h*E_WewaD=I5}6<-i4?ag5HH0GE@%8C zIHrv?*lj9k5w}3emy0=XpX?C{S`N>C9pG`(sXPBx*Ld-u=xRspw$gOYnq4VqEm}V$ z!#(p}i&iqa8xi5^`|dhA3h@SFcYGST%(vIadS%@3Nf$Z7YXG8`+#%kuzo~e{oU<%* zeJyp{E!C7R^IvUzPejm$$ITnUBrsn31GVTfp>X%>6j72hGO?;azfw?}$8U{LlNjk~ zUgMM_NqLQ(op;2kfux`9P41b@;Io&eD)_{#Y?e#ZYb&KyxIIX2HcV%0gOk?`FGv8x zyfv`0;Ww|AXaa$$RMTcfe`1U6vNaU+a*6HUFAB9k)Fg4Z8c-M?vK4Vc2us7sv$*n8 z{?C-GlU0VtDRB}PyE+}8_3f#=f?+w~kX@p?E42nMZ7MK5PUKwjy| zMdhrn;{!bc zDA~HVC^>zH#+#Fp=6fI&f#J(A#r$aJ*}@fEZj5(>AScc#LcoNXu1o5U^q1K|!!tq+ zlJv5s=s=9Zt-h*tE@eurv@DlSub?DGIG(-z=3o=4SUoCeG7en%KP*6+S{yX!a|r1! z_FE!wkHI@#VHx; zilLcP8LRyw?jtYH80QWR;eFVvn&EEK-f&W65Z*iewFWb6NmIk?^RsTwy^dIp3Hfz4 zu`=P2O{QKE<7Ru>IMatgL2B>#J!TZKy`i9}p_?cLsUx?S7*3cZ)HIP0ZL z<}Kkj`mo4AaX#IhcGm0THOO}Qlk}gsPjR$Xc|!&BdI?|G>tO7G5c(BlJbf*uNa!>g zV#uFaQtLdtSd4k^>bmWR52&er!Ou*;j;>zTSjr-8r|3!$2Neswq|5~eX@>*-mxP(~ zKwLee8G5|FBzH6zf+8uY_OF;|6p?q)Xm!B)mVEM3T>#y}$1Ylq1 z4oSq`&PwbUZ9saxyVtAG7{;3ijhETsSDgJNf)^Xb#1LSCa4$mET>oJS6e~Oq=-5f0 zuX|mA@SrJ1L{?#a7$7xVP0XNCYM;$ZI#u$^nj;IZylEUw=^clzc~k55Z+V~tD?ZMe zJBG>v7E&`x=ppCCNz)sM?LniR?DxV^8c{HQhYC?!q#9Kp09i58^U zUXWFc*ykr%pXYoc5}hcm-M>h8hcXDeiY@dX8fiymq$oD`cYi~MOv=Fq*e31)T0;GNs9^7zOc=uR6yR&b{i{#oLOK;vB%v@f&@u*wF;-5@4UzZ;G<}=p2ViE z-^5LB^-I>@|NB)LDGu7c3>wJNi$DgTTvvHlGSN9Zvq;=g;!A!Xw0~NqC|YL^{BlRt zLdwZAxPpui(W1t8v9lc3*YZ3jgJ}g3rv?xA7nf%Wk9heGxTHpvXG@YeS!}MezvJ(! zk?8PMbZk%?gtagdR6r)y& zwq{%S)B4AKI8*IT;qx_&8%dH968p#XV}t{7AXi^Z1JGy?kfe))2)m(YfD^c}(BPnp zpR!9&a|mB-bkg~(X%>ok2v{Wb)i7z6Zu^t;ZAk?{7`maEGL#}z%v24oY=fM*MVd9* zgN9_yE>Ecd_U#d;IsaUh2owKYE?!Oa$0ngO^+9%Y+u#j-UsAjcT8FXi$042Cx<_^7 zqcC!19TzBf2b=y0F6_TUx1Kf{`D^9_qyQb1#>@E~lsXxpW{N`!*7KX!x)%?hs6}=j zw3~VGN<{R4-(J&gZY3VK9H%hmc?|u_+#s%G4J7#yu+W#39C03&K%mYscX;q|ms6%> zM^C>BO(8m?C3u)he}5H1?WA82fH-iFCF}1>1H+#p`W!`HT;_!e$0BBvu2X%aQa^mF zkeKSZ+&9yMZulB=$bz_7xM0!awb_>bHpdRwH4~SPvgBL`t*-X89{ihK2zxnC&BRP( zTdl%f-lPox4L1?Fc@!LAv83a440?6OZ9J(9DL+{I=f}rN{m*B&`G!(PPvbM3ToA@F zYT>TK9`@BSxo*|U%+SPMb`I4O`K8xQzKIuZ#twUC&&a;#-nx|_j$1AF;78nNY zCbKTBM-f}wD33U!YP3`8EGjj2YNmWVg5&3BplYak4)#-O15{XSdsb**Xum1TBuh&* z9=FqD=CGy1Z+&g|fk+I<1M(4ula7IhO<7ZAWyjO)RjLxgHF*W8juK6FRrmLe_xkz6 zLQ8~}`s*-Y@(6m!`B;qFtPvlFGt6jM%IZ}6ZC(0e`PLeQOpSlJK#lo@6-^j zw8AjZ#dl=uYRB{DX?6i&I=Vb}?dZ%#*Y;wfL!LVKp{KrvD*vR%!-rqDc`~=Gz}Hy- zH@5Q6PLZ#G>%e09L=agtA{D?0SVFMXYrPggkMw8dXHve5x_2fG!K1AJ<>K=;-KMNe zoP2FJ7cJ@i9srDnmZ>lw{IH*KIS9z?+>X;52xt^1d$IZ+M4>sljG1l64g>o3q>af+~*gk)DY_d z+Tp7Y?k?x1XQl(_({z6fn42SpXsd?(RoM>kW^SxC1_~diNcx%`GIgA|*d)n%BD?XH z7Q)C;{2!0$YKk6xe=)il*U z1|joC!hFQ3jakdi^17$qO@0B#7`Be%L?0)mCEYNY=ae^5?*E&rri?Js=@weS?v)FA z$5E@F&egAO3CLSwO_nGdJNSqj&BsE|Hf$9!Qo@PDVyKzty`0AV#Z^-bIaiHKi*rIg zu1h*wAq$=<^AW?g6m3a))FSTuGPDC@rGT6YXU8t(;mbu!$%(j zZo`f|vwnl#jWteQp@-Y;Y@Gpsw(P*D1CYX7)_QmO#%;!gT7V=gGH5TgqaE2|p`F2q zFY9k~kz}kf3DY4lVb+3IaR$ez^-M=W>Jv0!);nq%xP4pM5l*c! zoKeboj4w#}dsxPU2&tJC(a?_VU}cgs!%+LoI9EV6a2q_9l|w$XZl`HGLj39CKOFmg zes-7Vu_fTFb5ABPkNwzY<|y`ska`qaI*VUOYX?R8O7eJZY03?&z)2bQJvRh0Vt|fR z0>l=1cq6**X^I^51|E0P5FLit<&k{iz92k9I3<|aS%H1qbFq`q2q~H7muYuk>sAJV z=-YXlYi-63orWPEu1%)KECRN6eYN)sSDM&&$Gm6%UuBua09BK&v^gpgAx=Y!eqJY# z?itJVRuTzV@A=8a(g3|ad5j&-HVXT;&x>m0v6WrfVnUoyw5z%l512KS8xhI=5H=Ml zZ$de-iEwZ9d?spUzH;P89rEA8nRA@f;Flq-6>vUYZ>2mbsvJnGm5G9tp@vl&8yPH4 z59l!gc{`}mQ>?XBN*t%8+^G}23bY!6!wcPD{`Wu;Q2(q|wyIuz@NYhn^gbIR9z7oc zqC=&JTM40&^1 zX){l6Jx^&9@Z2SI=jDAuj4LFqt{Qiw!2YQjdLJor!96XsgIiVApcIG3vw;&P5oOw1 z*-j8iE3+;?Nho8h$0+={0T9nY%l37zkC1xr3@(m06GwKFpZfNBT1FAt#+cZ7!Loviw zOvGwTA}a33X65(Hm`96ATdPS$j?ZG%S+QlK>J`=3k{TFn}$o>)}qhBy8bPJ%p0vT2qZK%bsMX zbV<}(03bR{oKL}9{FtWvC&l{wOu}F=8*SDNK;nzjE3z9OWh2X{`gK;nJ-J0;w7v-} zSO{eHPu{=ZM*xTPT%tw@s9ocsDPd!Fa_+)6XWdftVdqkVp34~1 zaS(UpD|U6+ntA#jRe(;I_6^PS=;#8nGROPc+N0zxLS2O$Mc5g21P8=)O8xeRC^ot# z2-r0Ho$2epOwQ5C1l=4XZpPn^(Uo2U|1Z zRs+v%>*k;^f~+ZBZ5+v&ZP_r~N&fQz?c~P`;cninZ)MW0g3BfRngm9rPx!c`Q+S^x zG^$*WI?Z2Vo5A;*QdFN*zTL2H`rm81=^A?AXv8u!LbM5pDw5`nS&)(wd1`aiI0eFa zLYYG&&f}KcW1|I8!=eB)3cxt4$6GW6XS46nFO*5NI!F8 zBGV|}XMNL2Kr`D%_nePZoQ#-Cb0dV#mqU1EQ`grxFQ#q+i1Zc`?)jTEO2apopWyZA zjPdL1ct%^=k*0KP@N92UwwDEV6|!ZSwZ&Ybr?)+6Sp!W%#r`|Yv6qo>((61=Dj|Gd z(0JqK<&lK{2b+qYSy)x2P36674_D{3mIwK%GAj|xE2U)FU8Z>I)bAY^+j}# z>UIPx`NT%=3_s@;V3-sLidlUgKeCONwmUv7O*%8^?OYk~nW`qbS%G;uNUD!WC3+bq zb0k~-_j9`u21xwwj*nWqva}pBC4RkKwtLZugxZ)mcPk?Jdp{iX+Xw)aP14=*E4{+( zZJHcdgD-&>LORlp4<-z*uhUw_$I+&C# zIgFrap?}qjA=cT?j+}2jOBN}b*=HFxG6Cp3VitjPGV}xJr}JgB_LnL2M_@vPj+PJcMTSDr?_;8) z>#ODC;#W%eVY2}tk^rB4ZpN3sxq>&8;=PPMZ#+jGUYLE`&3*^%D{P2hsLmDfu^59- z?lyNFw6{Dzf4MZG_i7+r%<9d6A9N}o^-cq!=iN{3xT0=S0tI;PBTb}q&U9CvQ|SWCPkCzzc%am@uJV3TWPfl>!exl&3;-ONv|` ze;#N@njF>pmL^*PgQ{9u2H*t5`Sx86 zF(NU($pBcn)5Wz4aKR2WlahhZp4eawRr>rzzcmoBN>=7@=Bp{7^o?PHgYVxzS1t9} zi2#28;j!K#&RvtBVfhp4knWh`JZvg``jl*K9pY~cYUN=} zqN+}xuUok9@HJxKgNu{Sw(wgi`z8H=yrhHI*QTy7y8x7 zYwfw%lp}<`{l*m<*Grm*48$Cc>dw!gQ8J5behtBcztnkIzRQbZbF(DIE=boKt8N=e z*~)GZaXr8d>Kad^K>8pA%vBIs_kN+K@?DSd0cq5|G}Y zfi*Tc`g{t^QorO-*sX>Vn!?$R9}kItP2fkF@60|iu-qq8SK$Z1=U^ppld9l%72ESa z+nIF$oe;>3CB2@Cop^PbiYw~WNh%yNaKE6bY1Y1QX1S>Bmr&sRUL)HKxBP+s$Z${T zK=(M8E1YYgV+MD(Q@Ru;&-m4Fm4|^YpqoC8#0>5B(lblh>2hpKc$%clghB3p(E=UVY@gu5H>qX;p)~ zH8>(bsw|A6dmlJHW8X{JE+z4*mnLR%Nt@PPoEy&`jBJmIS?j+g2~~T?6xyz`dN|Lc zyNd@S15PrepknnUVX_w@{HHr}^2x{ZQ$Rn}n);Buo5@)reX*i)^{ZWmvaBzj=_w+T zDm9-AuvV=$Qd%)q>u*xnXUkF`-@9JG(XYeb+#<(G__fl!L8|a~or;xwKCeWWMwfyJV{d-1CTu(SD@x;emk@MEi$OE9(qhE$U+kCuBsQ%$LRi#Is zigkCq;b9Z{j4Hsvm>XMvB2k{gsZ%~6bEqGRTo7`48zsc5qfY_jcHZKto5(dOxptxA zR(fyk@4AlRtw-hQROc?nVR*^khu7=|)voJ#Mo3LFXTPG*%hpuJ=QU)?)X=3@^GcXz z`dDKeFabg@hV=Q~wcXM?1GK5XeEL4x2*BZaPuXv@B@TF?J;>IxfMF2}CP()Lu?8)< zHB22KM|7$MTqFz%Tf9p@xrbe_rj&?O^AcgqRIzD9JTU6ve)psvk)H*z*vQoeQsEYqW;5TZf>__rAKqAG%cfK)oU3) zblYNw5!7+*eTr3RpCtosZ3wiY^7Ko>86MW{(4cIsz>B_dJ=2;7B@YnQX8L`hq!PQM z*7`}749?l%-yb|K@o9^;3%uqXvxj2R*POyLd|5w)+#g<=<8CNf$b}j=w zh*mtASI4&8%$mAB@u{A?g2Ni%-P+RuI8%=UjKzUNhoysuFOPB7Hg?LR`d?1nO@$#t z0_<9e7TT||+nJxb*I@6WTEMl|7F9I*Q+aZaW_7#fooq@?Q7aFgamp}JWo7t`QQNZS zM!Ci|jNFfy=WXTa#}Gz@3n*B|@V^=3@JT@jbN^0P-^5qhG2z12z}imrCvid?i$d-c zSWc4Rm{(~708MBZp1F13{3rN%TR?Ybh4}YIEu?cPTN@OojYdV}<@l{d*{#c=!{4XT z`ajr{J6-Wr_XiHsI`)|YNl#htRPFh!MC$uz(W>pm+VN;`Fs3*vcIcnr&mH?-z^gw7 zYs%&~zA^6M&GSm4yHyTM+1+-3+JtwQejOA712WLb@mX6bceKAlr*-q0cv(Ggd>GCe zfz1LS?N7eNnd49XcQxXENY85zSZtwhvgnEPJr`Kr(&?5StKMC?23=ldcQ2XI@-5>u zMU}zaw>gJFX1(%99Zt3lR~>YO1BHE`^OkOZ=YwZ0-F>so~z{9s4IWJG7Xkz|i77_dRUDNH74ev_b{EnJNWf?lp9HQ^0S~zyTQ8 zSucQ)CYVAmbb3#bET16JT#W_IKZ~Ibiwq#9qKyD`!PF6-%H^;0pf)SV$v=$(txI%- zHOe_2q5)gOL!22<42er`bh-pcV)z4jvAzoyr7nS6@jG4eYh$WJL?1$tv1H z%3Qdl$?Kv59ZhUNGn-s2b#RMq>y2dzZ(J@Z`?d1SBcJ44#(6}hk5|`Uyl^i;F5OqT z!nrvyVO1TuYhPX2P%-<yt;w_R+$rAb? zf}%K5VK)W5%#oMJIR{8ic%zWsp;Enp!&FYB!uvV6;g+KUvdk&Bcp;0?@TaBIe;m_x^9tR)j2TaZ-#y(y4Y#5Kh>mIHB8C?V>zt*C{0x#C3T70a#60$Tg zU1imDAxmPJe?D;CLX2;}EsiNDJ-yIO$S6|}jpAl8O* zPTOA7G^tgQTszLNAlZ67PqZj|+cSQOrx`x|-mXCZp{-_`MCkpnz1YfL1cu)oQ^C!= zyZ%O8zWCV1mF5hE;!@sZrZNAP*lBEW=$zP(Cx+AAC{Dm^cd5YQH7V!o@xbc`K~(?gE-HIRlwH)+DH@0?={kQ zmj4;|*O!+{r1ja7hSlvEa2d4Iv%7=#lo%)g>GdvhX4JSPvrRFFxQH1wxIgu(1tIkP zElWN*QLRNKPXByhN>H%^U>SvizGQ0no(#>zR$tTAh4K+-hJ>!0l_d+868(^G_6X|s ze&sX(IvD??lkzT}D`silaqOrk0ziY1vlr-3*D8RUKD2cf?fF5m4z;I0B`L1}LyQ%%0LvT(*G7yO_ zmO!q2sm7~$<@cYq^9@T4pVGw>Wx8Q2wbS(c=&+5WVU})ifOKng(qg&J6N`W-NIqUf z7A)1YJ?94u2cqB^zX`&WD*#p~aY4cHrvC4;tN-k&{~B`xn3~?wjt2&uMwC_@#&Dw7 zE`mHKg8F3gqrCP!n}kS=&MF&jqipRaUd@SQw zg~sW!vR`(WHD1jqKlk6c@kb9v{_ff@AxkQmg=F=V4=Zli;10eMVQl-D@wnLzs21GK zA0+A#VpL;Dk{Cp{;wPlYQg502p)kqhp7Jc_`7Swt&S2B zi!PrcubMl0CA`i0EV#J54*pJq<`F8z(f%Uw!1hd69~_8-Gx$|ziXg-G+ z?X)~R7#(yZ@24314-LxL46LkW$-xts=apQU{^^o11HSiSjL4oKZ2-IK$~|F9{`M|N zs6Q%pTR{THuZu(|*U~Q(rI0_{5MY~yM&VGqvHK0y1qFRiinz+1lzw{5h_THlexv*9 z&4vrW@XUR{cj~j2y!fDftVKb#36o3DbBu1Tw8bmr7mNz7?x%-HboBT?)zh1~jLx}D z{zqr&Co}awgK)~4W`m7Z{tw#5I{MQ6ds`1PfQA{ce_3zR0R9JaZs@s1_MHF2%6Kb) z8qpD{6C|THPRB!maSmMwr?1cyCDTNz*pBBL9s-H=cTPg@S~ECl?0XU{&jthCKerl~ zXR|}A$mS@B2~E1Ytr3Rv4_ER9fZx&Zu&2-@B_cU_&-NQ;Os}jjGXdQ?<-W!$$zwd} z^&Szl%=B#BAR9fJx>-o#RrTncm*!g?4V9r%o^x(%{#e@@-s}VJF(tLx^Ed)8{Z2b4 z=d9PBZ~8g_4RwAcJ+Oy0xU7ylMTG6OZYb1BK++LBgQOv#H-AcDh;jSwd;(0YhKB&~ z53K0`n}#Q(U5~)cfO{s@MELyPCh&7}%%PGI!>rWWi8D@f`to4=r&o+(7Air{^v>RO z*o(EZ9Mx8?7#$r2BK#xtMsjSn2sg|Eohl>>Ot3Vt_lU^E%P_?BWI@Fp1_Jr1`G()aWJI+p6eq^|-qGVK1$^C;}= zWKQl-X8`ZMiu1OYKS#DGYW}qSHa9Vgc}ZZ2rtK_zl5X$cuIjY$|Jpk5xF*l`?c1ug ziVG>A$Z!G5w6aG)1XQ-NH$_l3h$QU91t_2(%8(H@L}p}5SS<)B$X*gg3J76^8D_w9SsXE97%>QL zO_7(ZbGx<_4jcBQ^m_&GbScuiE>~}F&eR!KJdck>EPXmJTH1e)?HL96d*@*LyC8cc zVX*8%J33mRXHV2yp5X=P$dAyqpPER706OX1i)qNG!9Cndz!?V3o zHnP6Rb!`!v@|A+hEVnSDTF(QBPh@Gi%CVV=QTk& zXeUC;r)zud@w>_A~u$sMU-ZyV~<6>y+;!>aELuU3)V z+=sOCJTO&E77;_=k?2FDk^#3G#Acb9Yk9rvhml_fs?ik|59uqO&BA5iF9JCdKHjwm z66gbzGLkDuZV$hrQqMzWV%B4+QU&(!LP%Gu?yN$A+A~a_^NNq{uOQJ~X-PX9JYr(B zCZp;*^WKeevk4xp1tTNY45Slc;m^HCTqNOdJVYh1ps16#<0W0-9C0oL{5svq2 zgjg8XUGG5{PE){C6ew8~=UIRSB?M{Z2+7NDlgm-9!Al!5E}@Gxb0|F17^KS15!`?y zU|k6n9Qf*6M|_>%#xjUY*10|gR$HU&U6Q>W(ff$|&CSG+*X(Yul%ofjg!OL7RLhmP z33p6+eA}V}3MqAfk)>Fd5pP@g^YLD;ohq_f2r}n$^gjEr#H5A?@ZtHJ1H{$q9=MjK zQpL$^SvPQIh#DK#k&eMsivuOkBH=<5mwWK-xmJ?G&`~ICdd>cWL6VdihnZnJAgip6 zEKmlGr-v@(9sNStm#3Eo=Fd6b`0Qfqd)m19mM;v3*5&H0B^X_MRnu3?YPcG}MVIZr z4e}Bw(ZQ=-IO5`lUec!iNu1|JeA-A^mL84~ln_Nm{B4)$0}k#_(l{HL>zN}`6j`@u z_ORxSco5`+3U+k<(3Tbj*J0?+=H)v>wF5)ybcOVwJPFNtjV~qpTVlnJf9qJDGM>>@ zVEEcrYXk|R$k~T}B?ej+f&pUew|T(oDafPe$Gj5eRaplEac()x)`yl@vBvEQx9x`Q zCDENu*XoUX6)U}FE?}>!hUE!Jv;jtbWQ@TW zS%gelT4RQ%KV~_e#MyxN?a2Wsj_YQIDEiV17>>C?TtS`XNcjdES9M%k6T??vtjKSL zjp<_LIp4Jq8)WOJ#@?Q9s#$T+mvcO5zIaorWNGa)f0CxJ`SkMC+TcSYadSD2Iv<6l zPTRLyIW6KD$u6v>33ZUqV=;4d#(hKv3W$LF6hhYcUUy4(TU z7N?8TD?K&~h8H^uA0HQf>$RsHus;wI`~oFnh4Z!f7ELASTCkR}Bjy+plan!Xhw&~) z{9n*uwyxnDmhCU$;`PTpPoNSVEjwzkYZ{Jw(<|OGq=rz?503g(Tt`fbM`#7L!ue`* zNX~QCxO0q3n^@DZxa6az<%!GhYBt;(*Z3xm+@GGg{8#aj2!*m8=M|dSTDe#JfsDcz8x>Q(60RvG^zRZ zd5x|GtVv~(7lp{$zzAV_v5uaH{d0uTjNRGNF*miJa!*wIeIyhn8a%fx6S7C9WE9bZizShf9)a+|_ zVDV;3Op4|aCR(4?5IZls%f0Vs4h{6w#vJxl!L0&_2wqNv2^Fl>OuJEB5t;EmCxcK? zOY}-l$C!9zip3i#=dbN6l9Nx;s&Y%Gc`Ys)kogipo zG6E9XtxvBf9Y%-8T^o^$o~a$@VC&PK*sfO6O;s-nA(08~v}!ahq)MA#+vE>(+)<2G(kN%|9d2}$2W^-@#Ba2Red$`_5-#g%-vYu^D zm2kBpq%GLDJk`z0AWc?vd)#z9{i0j`Vg~sQX8h`gc`m$4&lbZm)U?YY?sHI~wlV7x z4a_~9zGQ>Rmeiy{c{iN?TIQDMb7ti<85wgU!K`4M)xzP_H)Ule9>*cw#*ftn+mUVwvHc|AwQWF%9s z`1jxYzUEZ6s`atUJV!4kcs@+La##H%?S5p?16XzkKk|hM5O#K_s5re*yibdhK$0>$ zn+S7jSBMflmwqnMR3^(nj^PpF#*I8a!4;0GnJiub=tOEGknhrG`f5eTg=)=kN0=~W z9Wa@b-9ByAW2V|R!osipVy+8$guYF?Z`reEzSH158@Ldec~u{q(|-E z#b-F@aYlRs!I*ycUNI_?j@jh{Fp?<<*Id+_UjG0A6h!q8o3G`VY@o9?m`x8+no%nd z1!^O1{;8NBkUjWw4LYNuGW@PqDR+A`M>XO)Yf@L*hL6q5wj0?GR{Lu<)fQ zEqu2>adJ?=xoL?-d!!;2ofO_Fx=s1Wt$YyG8u)#E*|Wzz`Jqkk+_KR3qj#`VGvxg* zUuK^$i9Fx7P`(K(C9uk*GxX*{*+pR%Jf%eOL{ld_Cf$i@MmS|XjeK;lt9I-ZBP>nJ z^1#0CAzQxxLy0Oa?AMYqQrI~@vgrfvZ$^Qb+tq;yu_RT%Y_X98`nC zm6DEKm?5T4uH6TBDnvrVZx;;*8f|S{z^SSY-KkY4r5)><@>&Fbo%L*6BjJ5s&?eo> zGAXT?uk9?azVJPY+3iURAxhASufI6CQPf?CqYhlnR=|6u4m6&O)+aoh*-#~i@QIJc4LzueU(;bsJwWvF~ z+)kR^d*En5fnw>3^rr}p>gFE^ZpD%b@Pf)%muEUmetFg*-W{Wk>ntg3%~cE)+H6Yd zc6rN)2+WMeR6n_qR72Iz(RRZH8PZ4JXEF6wPieVvERr;Y)DgYF&tdP<-r&@$V}hvH zoO7M*w;U&p&RZlHDE;bYYrwRY*-0`gqS}-ioweHG z!omPe$5QIR_jmDMYhUk#O3!##I+9r;blKeB#N&v28g92 zU`gO|9bytT|8V(52@33r;94ImLz z!gFM=>sA=!mNH67TN6?@{0GlGTSoq5PLeTZ|C6#>B$783cwYjUOpZQr_IF_!9bu`y zqvQ9c$VaYaJk@FQ$~r6LGVq|D)ktM+MKB>|bHI{ySOYy@F3k0#?3D-epUa1dQ-2-c z`LZcTiOXem1CxF*th;I1HBt=TO84{d8A(Vg8YvkB&i^vBn?0ASrqydnTu3G!CpyU{ z^x2NZk=H#y{s6}{+8%D zCc>OJZRprI)=f_iJwSVZ%kiXA#+<0|4tm#)flK*>hcuxY-i-YYmFvraC`_g-clxWh zBGL+MQ|^ikJBTF+1Jn=Q^W{McTi5WDqFU?=HF^frx9h!S)dv3Yk)CEVk~@w0);Iwnf;Q>a2r^87=Xr&uUj4P3jj&Wfm6 z&+Zo3onqHqQE_m2H`ud)c~dj~KlV@4_{e2|@UHo>a2UzD&Q?5$i6my3X{aTEy+2cu zynlR_cw!9Dxz2rUcrF*61Zn1mI6sL_ikQE){%LXS*s~7R8k;P^gT+{kC|$<(mdA8) zi7HkUvlwc<1=W*yiOjv;FjfvEDiC};QmeAxUxKnzoljc9z6u9SL_Nm-N!~MBo1*`6ILA@dy0^k3#p;t`_zFRi z=c!7a=2H&1rOI|3tqgOnUVN82*r^<6%YRVH;N}+>6^kU;8*({ba@h@G!azJ|kwKIE z`s}^<$F!a^SzY;^fjRxZ41T>jnh2 zm~42O-ol>7#1zMJ6@Be+(s4c3wW(}sDVbZI-Bffq>q*KFZ zl%ukea1%HPk!`P!fj3^o>wb$ekf1$MY1!%}jSo&gO&EMt`flb7J-V!t_rl?ug8mm!(;vCPQ6CSG-Yb-BF7m#099gL6fC*_d z;5EjHf3V|%&QjqY#uww^6Qtdy0)4@KB!aS*Ir5pBW9A2oD^cN^26flhvWDRqpDpT^ z+@}#ObkK%Jx821}*TVb0(6fceX!NlwJVZu6Telu-mw0K@6hf9j%HS-qW;PkG86zZ# zb1D++yzaRh=YDR>qIwDN`;({UC!v(;YwHvKe$sA@{POVFuZj|;tU+pd2@6q2iCk47 zc%;x!uyKwIlGtNZ;Gn7|n)B!Z+sY7QN2k4dGVd6^y*NaqsVY}OMiFu{z01%}8OZo7 z+3Hy0BD>pn?9;6a`0Bn^9e$Z<_-tlFy5vEX+V{Wx|Fb7gr<}-`B(BKwb0@r(>N!HO zuXr#HBwN8Q*hs6!$knrj&9z^>?C?!Faj<_PX$%N1J_FkY4ry?t(JEamu#JT$EJi)n zOWA$DpejNhnQRSpti6pF%&=IKcsK(+^A}$QYT|^FME_{|RH@XaLNSZa(2S#q(`ll~ z4<%f{@)ZXMKgXN6kE5YO(a7k@?f*-i3hTd?{V9{j+8zr}V{IITmc9%8V{3VF@!uNUyz5Q_C&j+n^>=HR(^nWw zx9XYv3R#k|SUjT&k>VP@Ax3@MEHkIauB%f5L6gZ<7=y-9z2J(`FBC;qDs#x4;GXg< z#-8s$M-=h=(81OE#EO6P_-jAA%9;U+vo8x>RM~{(tGmYGn#&|H5%j5h*W#7)#Q(!0 zP{Sd_memWK#hT_kF&L1Uo`g_Q$ym)AtC=aK5C5JeF2a;`QcxdS2rSi$qj16ct!swo zr8Pk=q~MDA(}=0j<}B96>;dSo{pD#!`e0&VMZDU&o<=~f5)&d4I7`f#imv)yeMyIdJ zs^z@TWXdyH%upvo2^-R;{6bkCY(1%n@ki1ay!0`prr>NriH6WF^K(fRg|0({uq3>S zNNB0yO~f;MZL5Rdlu$R8U1=zVQ{3D~ZCrHPbr{Rm7&vD6=q)d$hEFzR`Iv|M zVxuJ5(PD-)3qvK&+~RLm&B-la0M-7A%1PukY)(bznpW`PCJHCBM^L;aSs4@pT83+K zW}R+SKhG}Q-($$GV5mc0U>B&;5hvTE4_p$Dd1r;)K>PiS=E=%qk{)haBrhav-J;7+ zH!XQQ@SnCnItf85NHKBIU$#f@tIiAF&hPFZPf9AreE${fU8F^&0&wb)@5$}Gdu6qc zEPBJBlf&KIH276?kf?g`AMM(sytVITtUsR6l~bPiUAJ%C-0T?j!J-ajG!L)w!R|gM z!WZm1pQpaPh={VEf9)$W_}*H%51&D7FSj%rl7@8>nUp`rn5zTJWVr_in1cM$A2<+j z5qP!g_+l%SvXCIt2eLB9bl1qTru}~l9;}c6v3=6hKzd#R@1sSP&O=s?g~-Rpn_LYjf8@6kAfpC?tCespU$ zB;Va0V#oxj=Zq;8g}22{Wrlxe7~Upl%d&@ox0jIDxB!-=P}irK#rBXvLGwOlq#It; z?9k`EN)Z2JS#QwPj`S2wVuaI4^fgivl@kJ%N5;CpI)%ZoShY;z7%v%BB3K%3;l#cG zGmn4*Q9OeW1W@(X=IXlqiEVq%0WZJ4HE)I$e-V_r1S$di0ovS=OB>fVPdQ@Vc=E1M z6?XjT0usIEqKNCC@-|p4rmFLEJPbrK-C9yfKUw@_4S`Fwfwa4%d+ya>QK_aCmBufi3<;8A0HFfI0mI^6;CAFywqp`)`OU-#2mqZVp&h?cxLDw><r#@Omn+hYoz3<2{HJ{Dee^+phaAsyR)w}| zC;I~T9NncYHO&TiE*RF;)pfXFJ$v8VS{Q5BHDZXSW)k+FKIz!S%r)iH^pwA0Xbh7& zct(~9p657pdsbQQ-2<`l@K|=wVPs8Ql$F0k6vh=bQV9`M=@%$76e+fT-l^fmDeFqd zp6p3?gAs&o;+lQtcjS$D0E=W`9=y z5FuiSt|KwiY^Qb|DPO%%Iu@G7b+Z2mTSiw615N!;YAP!ce$B>ncOPQPyLAedW9o-& zRS%74RsIK%*eAW0!;THvt0o4y0$&?lV`@FlF55fT&C90H<2u8^-5zqP=tEi|0ND`t z7TuH2+ScrdJ5Sf?+1al|Je;%av?&eau0xINuhJpC!H@PV#6ygqRYT!r@{zOhFEqP2 zse`(>&#b@rOV?1<+0-8%@Hapy{;;F}tAnqFa*Nh0xDHAKh z$b;4iM6}Ub5=qpTv}@}x3%fYvn4-2>zHxNTbi%4o?tP4JLK-JeZ+rdylK9H`S9y(| z2Js=7&gI9Y?2FjW5`*W_1GHW?;;M36(l+f?p?4XHY|uz3J@b2LMQk6c9zSX}WUuiP zqK0O8g;=dDH%D7eofC5@7+EVX_3j`E)jaYu&`9XsUyP2AjEoZcp(>D#meRy2=CEl~ z_>T-s6+2B+amN&=NK?q{u$EDWuh88FEJEC~b0#|3qJ~cOEMv0Ytm$*`9J&FSHtapT zS$CNl$DM_g_|8y!K~fJlJtKt;F^B#&TcvS}j|<@|{z4)*jm%%PE|+umip8bBgfKe< zZ{IgHd$%joLUYLrWVWh2T8fDLJ90Jw3>6neD;H`ftFr^g=wnnF-G_DE@aoBJpZ>la z1>;8@a-_REP|Z&b7p>u(r0qrnwqVvDF#gL%6iMsf@3ZhiRiU$8f1l9DSpO}y6&44h-4mTXW2U;yTU_kjlWov3W(g6%pvAwQ9@u&4x5j3sx`MdxFY!pRyh)Y# zo2h-u@r#k6lF!)#?nl|5{`Fvi{k0G4dlnB`9$rjYI0HLm>V-kg%NHKKI&&c)Gq}_7 z*IOdOhsJg9Fkj5jeWJeS?D3srL3FF4kr!PIK$8?GLWLEdo z<>C6foTjhT2S2MT(kPw#3o=^=#?YN3)z4!tW8AK6k0-~5bB)Xv&x zar1T&dtFag8;W@5uy0dM(lLegKR=d~lq90Tpz$j*Of{5kznk&R+5NmvGqaJt8b-l+ zSy_vmQt(Q$gmXwVeGFD7_pilU9_|Vk@ky@ns>vomMfiJx_T7-@VD&rOj?#<5a(6S` zj){y^8A`yVn`Jl5(@NN@(C21nr z;f}>!$%uP!q|Y71*hTxzR!P`OJNIX9i$4hX!SxZ6JM{GD)eV#G9rdVeNk`WQHz@rv-&9cp1wZ6QdIpCoKPe; zJ(0f8g0cfE0-vYFH`#Z_Q}Qunb2TT^4R_2 zWWD(`B%nY&(R8TS5d(@lTSdVd8X5zrx%d51RkW2EyE}-9zu^;>IdP4ilk=kd{QTe8 z2=1}Hvr-o3;pek*bHxitRjG;^h)neh?l$%2lPB0#r)Qxbk#cX(UbogL6&UyQIYQr< zT2(bUsvI6ZebFX$k7DKSWnAS4@%T?A^-8yroI8zvO|IE6AT6}>179N_bjsmruC031 z-{`fq*V+`YmQ|>k=wQ@cw|MQ_=2gBDFZfE$z$P@XC9yV73NN1rn>rt(rvEaAbi5=b z)%Vd8HExS*Moj9bWAm{x9+|-?)t!quRDR_{Iz>rO3G$y{`b|V*&~CJ$BH2J(PUOJ2 zr0?3C%bl40FCW|faM#jRWJOPPdBM;;B$#r_G@rHcX?qlblHCe%)0YD%i%EelF#b_z zyNd9sxo1deH;%E)bdSIwJE0X<)0n))#??D@yhb(pMi{5V9V~}d$#jz}I*Z)|zW!y3{yB$+KLsfV+>&-xk{r!jmj(W6L zcK6lrZ&U$RzA+TCXJTVxm%w`Z{P|5EpK_R@sBW&!i=I1|1A{XDZRX~%F(ls|1f+1Th6;LSoRy86}1&TL*`}WN{ zQwSH5n=8bkgO%+m(y8$byAp_-GWuq1M1d1$E_eF)h7>0@CEldu$>!xe4Sn7Gws zDp_@_h-8<8i=Ckv;S5zOyT%(|oU$36n79Y$NiEL57xado!{A5Hspo)0dFCtpG0CDy z*$B}`yXf#pzjxyCI6Un)4Gq_`a&q3x&N?%=<6ms**6+e1_v!_4i%&pItm~sjj7Ze$ z*C&`a%1$O?#2!$H5;~6=yf zuOO9hQ%~;=STsMuIZs62&8twhzwc6kV0&0FMfD1uE#M`tvs0IaN9Mr=*S>@2192Iq zE3?Mb7xJ`Ydo6_JFV;vEE7{$gRx~DfQXEIOw*1@NS93q{&pP%IAu6Ql+?LSkP}qdDXV3tsJK!TcgpAHejVA{441Oc3pf63cvjgt zIT zb9&e3p3(ToqSE_!*FLod_d^8dhK{rwd(m2W%PP%Tsa5`qh@(yUx8`&k>hR)^TxsAD z+KbgO>Rc1tfBDYGUsF9ZhxW55396^ z$fQhN;qm26NAMk*eE$8L`ZV$;d1bc0tB7(X&)g4wjfjE$`}gy$3UYI>`ni97Cs3n^ z*^+)ev+lD)UqcLFWl>k$+mVU+{^-$}!@?tr{8WUm zGI(1Tos=}+uK=q_GXC@x+ne%nEMAafkZ^Z#$+IJY4d6V`_NX7C;jlBG)eQrlKI+NP z>V6}eG)AF2j|5)Z7QBbzrQFb z$b>Xcoh-1M;=7%3rM5x(;=cOtx6cbMvZBti2xB9om_MV7E!rJAJ*R?fGc}ASL;haX z-$-^y@$T%2qi6ck3c4N@e4Ch1STM5tF0Jm=DA`7agWg?nkbqR(OWoY|{tI_v7F+)5r}Imj}$^EfH9(%V=C&oTOEw z|zQhQ|G))lUXEop7Ym=)01W`}yK%1Fc)p&oHMA!`@d3NTk{QRTH zZOba(*mao0^7Z!2$%WYR?7homiaCD@3YNx?z~a^ZL!vbPtVMfY6bCRH_IJvq?7GPVuLd&nqM494F)>-N^Xs>*|Q~R0S zhyw2_E9F^qVz1N}%`<+Atx}uRl#`yuYdp zHmq|gVg^4_^1O%H*hS1QyWhQgHyK|rz+OzOv3z-EvP4&{21D0$-r3@Bmj25&GpT3w z>n+4l(b)&QLls_91(v95ALUjH&cC29+Jq~2*(5PauhB1GG+_r7%HYPcHOybBlD&5Q zdXOE|Q{hDPHvbPxMW;_R42j~uCYEwZB3@b=)bA5*+ACo!AG&K#W<73HyT-wA$Z_hNRnwpgm(MIBH8R%M8QJBbz$4gQxTZG-Smu zVxyOriB5Q*(uaUP^A_i)1V+?q1Vtum^Y@D>Sg@t`wQXIc+>WOM@v68=Gr^ z+$1W927X~(HD$AxXj9o48TCb6$oeO?4gb9+!>%YgIAyvbb$d#lw&HeN#2{5KSbHqQ zn|-}I)SH-PT9JM=wV%m+I;7s(NO>)->x3*;3O18AcTg-taY6$vmlu6e$@QO2zy&35}! zZTyquhvdnf)6DauQ#TRc_i>Cp;pPJ+rUQGQ8#X9f^GEN@JUMl02@c6+v?Gx*F*kf1 z{#JCiI(LfkPewC(Bb~G)^!;B@`ZiSw=f&QHaxgLmj>f&uh~nW4Z+o9x+C}Bw*sTJ8 z+p!RdGdH^eJHzzp<(oItgNvQmn)8ecqRzO>o?5juiu2_>|ERn@r7JkVP&QHg9i_6 z!IO9ev*j)0y^!1=6Sj8u8}=PoKbxQNU@o$;I$D{3rVosepRd}Z!fUzPBd`p@iDmrWf8HxyH;4bdMB&05=8Ovvq!gvpmy*Q=0fN6vZ<)P^Qz= z)RYd*2IG!FSvqlS&l$}&f~aaD=3dCZACi@&2Gx3tr?z&OxP-(%-;bW-2&6YgUj^7^ zHs*-vXtvKyO(&Qmpqp}Va8R>liO9S&^sEnW6_b#_>A~4{OT`6fW3?zot(zOBfkWt?PncD`nUe1h={)sp#d~J?Umnew*l}PD=sOi zZefA7wX#>YYbZ96wue(v1TWXE|Qhz{C9HNv?2z{ZS$txDa}GSQz#DLd$TNtRGp zcm-;w=-yt#&n+!ckiz \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_24_0.png b/docs/lena_imagenet_files/lena_imagenet_24_0.png deleted file mode 100644 index 85b6e9eb73ac2d9933e7b82ba8221164e635a726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69889 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 LZFs5D{lNbRe`H9a diff --git a/docs/lena_imagenet_files/lena_imagenet_24_0.text b/docs/lena_imagenet_files/lena_imagenet_24_0.text deleted file mode 100644 index 2a654e67644..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_24_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_26_0.png b/docs/lena_imagenet_files/lena_imagenet_26_0.png deleted file mode 100644 index 11bf0b1d66b814ddb08de7997f3e9ce8c5502b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76025 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 |cLqSr$FQ{56 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�O2p(nnRQnc431ixXQNwy@QD|K>d6$tu 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 aN~8pJQd^_gX|Yn^2W4SvUUu@_t^WZxUNW!% diff --git a/docs/lena_imagenet_files/lena_imagenet_26_0.text b/docs/lena_imagenet_files/lena_imagenet_26_0.text deleted file mode 100644 index 7e26ebe0995..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_26_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_28_0.png b/docs/lena_imagenet_files/lena_imagenet_28_0.png deleted file mode 100644 index f4d9edfcedf0373e64da44eb24310954b5d90bf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28800 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 diff --git a/docs/lena_imagenet_files/lena_imagenet_28_0.text b/docs/lena_imagenet_files/lena_imagenet_28_0.text deleted file mode 100644 index c46e63fcbfc..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_28_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_30_0.png b/docs/lena_imagenet_files/lena_imagenet_30_0.png deleted file mode 100644 index 3aaafbfb75912d14a89cab6a95019fbc03fedf79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20702 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_32_0.png b/docs/lena_imagenet_files/lena_imagenet_32_0.png deleted file mode 100644 index eb2e780085bb67cbf01ddc6bfdda0f2d7c96993e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22051 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_34_0.png b/docs/lena_imagenet_files/lena_imagenet_34_0.png deleted file mode 100644 index b7202f165546c9a8506db4a43947b32c89d8ba74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23550 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 diff --git a/docs/lena_imagenet_files/lena_imagenet_34_0.text b/docs/lena_imagenet_files/lena_imagenet_34_0.text deleted file mode 100644 index 15547e6865a..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_34_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_36_0.text b/docs/lena_imagenet_files/lena_imagenet_36_0.text deleted file mode 100644 index 1f4f70709b9..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_36_0.text +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_36_1.png b/docs/lena_imagenet_files/lena_imagenet_36_1.png deleted file mode 100644 index fd4f04cbb3a10969c2fa6a922179dad1af01f874..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12819 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 \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_39_0.text b/docs/lena_imagenet_files/lena_imagenet_39_0.text deleted file mode 100644 index 7592550f00b..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_39_0.text +++ /dev/null @@ -1,3 +0,0 @@ -['n02808304 bath towel' 'n02869837 bonnet, poke bonnet' - 'n03124170 cowboy hat, ten-gallon hat' 'n04259630 sombrero' - 'n04209133 shower cap'] diff --git a/docs/lena_imagenet_files/lena_imagenet_8_0.text b/docs/lena_imagenet_files/lena_imagenet_8_0.text deleted file mode 100644 index 6ee93358dbd..00000000000 --- a/docs/lena_imagenet_files/lena_imagenet_8_0.text +++ /dev/null @@ -1,15 +0,0 @@ -[('data', (10, 3, 227, 227)), - ('conv1', (10, 96, 55, 55)), - ('pool1', (10, 96, 27, 27)), - ('norm1', (10, 96, 27, 27)), - ('conv2', (10, 256, 27, 27)), - ('pool2', (10, 256, 13, 13)), - ('norm2', (10, 256, 13, 13)), - ('conv3', (10, 384, 13, 13)), - ('conv4', (10, 384, 13, 13)), - ('conv5', (10, 256, 13, 13)), - ('pool5', (10, 256, 6, 6)), - ('fc6', (10, 4096, 1, 1)), - ('fc7', (10, 4096, 1, 1)), - ('fc8', (10, 1000, 1, 1)), - ('prob', (10, 1000, 1, 1))] \ No newline at end of file diff --git a/docs/license.md b/docs/license.md deleted file mode 100644 index 935072f229f..00000000000 --- a/docs/license.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: default -title: Caffe ---- - -License -================ - -[Return](index.html) - -Copyright (c) 2014, The Regents of the University of California (Regents) -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docs/selective_search_demo_files/selective_search_demo_11_0.text b/docs/selective_search_demo_files/selective_search_demo_11_0.text deleted file mode 100644 index 4a3d909d248..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_11_0.text +++ /dev/null @@ -1,17 +0,0 @@ -Top detection: -name -tiger cat 0.882021 -tiger 0.075015 -tabby 0.024404 -lynx 0.012947 -Egyptian cat 0.004409 -dtype: float32 - -10th detection: -name -tiger cat 0.681169 -Pembroke 0.063924 -dingo 0.050501 -golden retriever 0.027614 -tabby 0.021413 -dtype: float32 diff --git a/docs/selective_search_demo_files/selective_search_demo_11_1.text b/docs/selective_search_demo_files/selective_search_demo_11_1.text deleted file mode 100644 index 6a948db6dda..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_11_1.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/selective_search_demo_files/selective_search_demo_11_2.png b/docs/selective_search_demo_files/selective_search_demo_11_2.png deleted file mode 100644 index 076f6e508a649d52c741a12b63f18a0c442d0d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132366 zcmV)|KzzT6P)>0y&8GB?$ zn_I1x)ZI^aKmBa~XZi12?Nz7h>}xI>27)zVF4}5={;#`J6z5k^zu%|6=X-vK67oFH zxp3ja&n@xe{s0#)T=;lhgusOhKj$t&;KGHUa~C0S;lj_kix9YQ;pf~%2wb@EbMEgY z1ityrZ*t|z6}Gpx`GY_BgTIdeFABka{2OQzV)qdvADR%3opFDH@@)= zu3o+RQ4VwA!iA5>M_viM_10T#ZEdl(wuYi8{N``|CV%#4fA&!ibK$~;kH|+J0;i{^ zEH5wrhvTKCB~DLIKk8vFT)6NN`N%^+5QLBVlou{s_S^_$BCWf#wzl67TLAL1lLmL>8aqgbxs?DC|Hk_`ZcM#V$DP?sY=>66NlZo_q-3E?q<9n- z1%h#oeU>0N0j(<=xZ@dOno%xE^v=eFiApXcy!cw1o%1f68<#-Tu%ix&o}i00cD}t! zI@1W9h)P|-nTE)^%KDWyhev1B7u)>WfBAK0S%?=zgwscy9q+QVaE%}i$+DDUsYH_d z1k)21R@eFK@4SgJ%CI7dS*CE~m0Lu)&D87ThbfQWoZyEM?dv7hpDXhC&Jnt&^YRPV z2!fp5{YNY`JYIU~i~RAweuGA<#DhBn^lFK%YisPhyG!UtWPO3=%@Sp)#^7v%J+_fk zh2iN0NdT>=qgD-S%NDU|lZp|!AW;xg#9Sa%HFQJA%rx9EXSHT9nDrUVe4J@Y|E-Ky ze)|Q6{yx6%q6<0;%c~q8&(MSka-LGJwfWHxAEVVJmRCx&%5?-;r&gY0=h0JyaK>C) z;m`l4V}8c>7^P$CQ&Xo={=p0 z+79z8OB5o9FmcI(8L1=T`yr-PWM)S={gk9@qv#TA>rDqR=VA+l&-dqZ?pB8eg<;~8m|QY@933?`&A1(bwxy+Ru1 zOwVU1m4Gzyh!P!l;*uySWlLi;m{OiA5V%tsttP>d&G+7alTuybwXa>Fb9zS6s!?q= z@RJzF>64BFR6V6qU#36y*?s3n7^+LHSY^IhMSNkN`yZSkCwd++@))r_~8ccg9nB_X1@d&G;`G z>5hQ9B=f=E0eaD-P_XDlJyKW1$$UH~K*&D~WLXu_6oWL(@s2&lhc=sEY+{uqMnjKC zSGaO%mBZaVf=NQLsj*}=aorvx*JW*Mi-uIBw=(2#Z-=2h!6=)|Z>=)%UEJuH)C{q~)0qy3EZ%BTENFC&CuDhqEP+um8F&-sHs=^lhKQL$ zd%lWepQ8&Z^+ug5SFex@FdQ8qsu@w@@$R457)u(8oKjyXa&|IC&Ln>Imw%l<{l=f; zyAo%+4x6hhm`eszuZKVKsV~-vk{Hi%m_|0ul?pFE_Zs&38Byd@E)_T)oN_$vFggz@ z>oSsSG1|8gav8&rsn!h4ibl6L!p~whHW$&8D$~Ikt2b8YI_LCv28>1_RjYw-yQE3R z{8Aa;j}UVZBq(oIs4kRw@5lF9sIPK%+Gk;-iCh)=>aYJ2M+Z;&@%P{06VKh?Wbl-g zjq7M;i|OHz!`pZ9XEvT-kSGDAIhDxEn4G30vB33Lu2QUsbPk?i>N+c%Ykc$H-R9C( z8BGijH3OkiI;36Dxs_Ed&<7 zV2~scW~o5 zF0HzTBFaROK&4P%>(Vl{Mv?CMIg86xX44a#*h7}@_1@x+dk3*?YWYBR@F%Y7ZwfQ=!uJQ0-hq_j0*qvZV zDwVQ9l4dwFhibLScrwH)%WS=Hi98GFdjszOXh5^lU}3YtDC)3zX^ZK2pSN8mkPBFrfu`wrL4xahl*%|*YNI=MQ(l|v>K-Od=DTNF)StCjkEHh>Exi&{f9nvVq&;*h=BTsW8TOdko{3wG^ z#Y-wwGY32IYk+1uG!*1cY3{2^5{7RR2MK%oeaejn8`qYx$^~p^#B;Aa%fNFf zS1j^8MiC@Rr5bjUFbjQ36_bitW;Tn-(j2>IBkLL~YMmc{_XDmyyNb^U!%*4STH?LO z`$Tz6=Bs2;fU1d^(feTBuTJhzv)4VxdE-o?};4n`y+fyj-~5|Q~zlZS_6gdk@9s)3kJ zFtnU}W-y%v)MObib`c9BWC5NI@ALB4*Qu43`QD%W7)w)dLz#jlVbv`@_r*mf(*rbF z>60zoegIKQP7bkxDr=NW1(F~F0dz}Y zsafT;cZOma=u(OwWUOp0GBgt^>vi6}pHp5i`P^$aczCkQ>p%V;pa1;JYbjEXojai6{wCbd@B`SXpTk*&%AxK+y#>0|GC^&=oQyWGg4P zGW;awAN|u;Nwk=uGec|S#6h1IUwa9ow#37Ghd84US&@j6oG*U;I)0XbETCEvW~;<- z;*mV~l&ift4!x`WE%OBII zm#EKGD9&4$^Cp4?lZj2Gq>(EE<#riS6*$;EL^6HO?HNn$5{7QFIKRT_>5OULp=`*U zJeXn+eO`R+2BXQ4Nk1p{V*)=VRbs4)!FUidJe!bBGqM=6M8MER;y9vQwP@B`jM9kT z{^!3po;ZBsOLKV3rwD>bmde!1C4w`N z-lKB_S)rs`j7J`sFHmnaaDy3oMMu{yy1O=U7@_MXk}4C&DQOx&E)q*Vxt=mjL)5Z{ z7y7up39V|Ku|4DI(Jtj$i__yN3v+Gyy)K~_3Gl-n$9n;$o>5s;iR26?ciFnK#MAeBM1D?dzJ*!VIeM%A6Dxs_Ed(%Pq)b6H z6!I)14q`M}CyWxvAyaaUqDH-G;!J%)-zN_DjG^T;j^zUk}=`Rr#^#KE_2*DqC1;l6?8;3 zrq^-F@|-M55pshx7syB`nkIF%!Gm}9X_YJ--{Hoy>zIuS$2*6}#VPy85%ZNc+m|kL z=iL(opi-{lOkHBvM^q$?T*7QtUjgRoBW}E0CyHg3=G*j#r`Thkh58!z?>(henWMe2%GLSL^Z)$CU-FAz{w#m> zf4+mE8dR$iv&oQQ*XQ034(aR+DVqvbQR2ztE{&FmtT-fbKq>@WyR=TFROQSLPy~S+ zmsXiyEThOW$G0csiH3G5CUFhyLyu~^M&nWmKZy`j3GgYE74lFbPb9*~M^kmQqQQ9L za(L2VGW2=x-a~G@dX31)nSXA9&iNswN`rI~aQMygLmG)%d5ZgJlCJ!;Qo7Oh^ov7 zKkBl+xs0F*oSh#aWI0B;#$+@jwlicz?4eDTC#aT25=8`Iiec#JCivcmzXV1}0!6?H z1IA*=z@H+CpeYK97-N|Q(o|wP&dGfU-57i1QPvCSM#R!`ll8S_{BajWRd7O|^_5#Z zesYSn&}4tmB@{u>1#Bne(%L**TkG84+ar|~)~_vMl}!4FHW~`mipl=&A?{J~vlRkX zp-h%!n7%P$UJtq?5)Glj#(*q!T(JWGRxHA;&tYn=o@{eD-TMz?wpy zQ=hNm1`*rWE;I2bxcxqoqH{1f<UrT;cKEN4Swo_i%#Kosgvxo!OAu>I(Ot{w2?S zvBVF)J79L^qsuw*G$oki__LTR+siC{Vvdm)v41q6Ip4%67I1v9h(q{^KJgGexc|EH5wMc_Zw|L6h_kLpm3b1pz~aU<%J%zJzDT zjQuVkGT)rz#`Q%cBj*17$JFL6s*N&&FveOc@n`@08_2OqNtUsS7Mq_iIX(>Vy^z+G z1q4l@-e@D63g?{xmoKj{zfj|JcuN0t!q$47mCbDmWf{lqbK0M`&UZ#Adh9!h7 ztSwwqei*neJl-=V&|1d4!MlT6&9UmLhl}(Kupx?K0c9t};!1LNUZJbUMdf96v=+ zLxgFO?)y{bN+qVlDVnCCDgl|0bN$wJ_MRS7tkziCC}YVgZWhuPJ;Iqsl-bCNNUrLL zmci1Ec{Hs|qf*8WI+W`oSs3Gn5v77blx0YgjG(I6lM(H?3iXmmUm4-}T`FrOjyvbP z`r2zWx64djo0Cq=(()?Xi>vt4DU)taX}*q|CzNXqilrKZ@hLG=tddV= zN|K{X8c~`P2?8&^{7K$_x`VZ1k}BZG5oSRoQxg(7Wg5;1GT3|UFx?;F4h+v-Zp)(QJSy$=JOyQIaEN7WQO}h=Qc$EG{-7&QY2Y`$xxkfluHhWSPuh zY}4tED9zVsT`F;O{*cE{jvy*yjix;Po=dT!arxyn%sJ3YDu<73)J&$o)5i@GDprBL zok!@3NUbGNZWMU(=#Z1WF2zPlB&WRj#vLkiWlrx;xv|-#dvrw2T0%B_SU?M%#SE5Mdn^;^O>*Q#Gct)x?&O;Imc%c z^3e_P2pXkKp{+HDZHd#T6Kp4B zV2{u$3bpw%y9dYU3W!>ctg3wFv!CVZllO4E30W9ZtC-9!&7&#?dvBkTxcSdkWAKx& z6lku@QK%Kz{mzs)&QTSU)3I3le+xyBGzDYORFWF0iwA8-3vxjY5sX;U4=t_waiu z8=Gwc&4XA)l>~n6H-DMi_ugZ0vdiuxfu;2thH7#B+Os@3yNg-eMrsx5`d#v=Lu?pq zFRZhByhm-#B25GOg9K;V;l=B(keKt7%^V@lxc6Rw7Jk@B(u)R>5YU{f5#<33%X2Jl zU!vMFm;@b4Bpe>xWp(3|d~o{-XNLnUELydYC`ge3$4|&J18cs@LURSRnKE^bF?AEC zFY@NU>mlVCLMoHzB5~r=Y*nF|@xteCa^xNoB@sqZp}AON>P>MSm!egMC}VA2;&@M^ zBx$r4+t`yHp)XMuEz*KXQ85_`8u=imR%#GuF(cPOwJM;wTz__hG`4A!3rt0w+FYIS zuFdY@%ro5S@(;iIpOfk^iBH%+*yF2T{W?E*{Rgb9Y*Mb*=yzSBFyhJ$jUctLyEetr!)}PE61rdlk*FRMwZTETqFB7b~fH)_kA86Fq z3+%pmPGj5Rna^$V#t**F*3t$yT4jV>q_CwjO-GEwnAt31=EaP?h_$T>qv?e0OAXva zN5~v(r%$80%IMt@IRPhU33*jvuB2gTITJf&xNoCZR9Y>_a)HH06;To}j51P|aqF3z zeD_b^Vakx{I3f!E<7@F_3xTwmF-q^_DxV>+a;`6JvvcPWq9jmnXo$MN@-xe{Rx0d1 z?J_t^31x-OV1gjTeEP*#;F8W+Z@OxPPzHq5(mfknNEi2VhJaiF&w#+YgOjg z3Y>R`=vooIArJ*3d%LIn_|7iPwH8xvLcOHZXcYVXI z@N7&Hd{{9UQjybxAwpF{&?KB7Ab&C-NMcM$X4Z93Q-R~bn8no=4pTxmq0{SO6*L4X zLAO*a1O}1E$R8r91@v5{v7w^WE&S9ao@8`K1F}4%HMf8+SX}+wb3F4o4>3;oN~6ZN z{_T%Ad(`3J(G(*QS*SJ;i!iV!eEKV2WR^Jm?OShg<@!x>S;uu_zH{_L8qEf&r1G!+ zmp`GhEg)zKrG|zT*BEY`vC%Y9(laX3gxs`PY0I4Yee$A9Dva3pl+V#Opjr`FTWOHh zbljVL7B0<^2_o;uPk8>T%h>*i-lKg=*HkuF>R4igGmV*F*P9{d-sk}6#+vw@x~wantalqxE4RQ%Ym&|uc6Fb_D(viuU{dI zY?f{;U}-WpUs`AXw8!@IOAJ$&NAGqJCJIU}k_rM+BJjamk2!vD!lds}uyQ8H0ctLC z?fN!ng8}3jCD|lPMf3_dk;mpUEpj6wS0k*Vg`fG@LCnZa5K@JbBCxr=z;xE7ye?tr z8eZbEd;gfhi9}?MS^dm%9L2DKX%PyCnU#C0i&|WH$W*NR6WBDn#DY*+lSK<7$N5#-sSf9h5I`mGv z#9_?J;yS}~o5+(rcmMz(07*naRIMv(>>fX5V`~K=b8*K5Ru&f6d(veb=Tzs`S-QH! zH1OyRY%~e{{sgPwF|%iwri3U8glBgE0gDUsJlQ$n$G1P=$-Pq!4+d=BoMZXQ5@55swMD5sht&X~kdY`Z)ujc#{hjY| z^U4hrMInq6+U-TmqQb%16FP$)^>&G3wZPHf6j>@$vf5Oeb1cj+kOVVae@cCE5iiSG z-@eJ#^(v>wcbJSz{IlQxB%$LXDISp!AZ9UPo-n_%%;r{$iF1H3_E=k7XB;14$SQ~L z52#h^*h6^zJMXcv+NP!zaAyunt5wP^lShX~7)29FfW32@U-^eGQZPIuD5tglXtCSxkk}wi1dMu<{$PS? zD3}W=ul|EiVHrhw{VtL3^7O$8pM3rkbh_s_-WWFwSz2CUJeyz|0?x3D>d$EURZe$@ z+`YZaxDz3oGI~j6{>mbko?l0+>j;KKqg6sPbBd)RQ!k-+ViSfbRzt;gBkJ>YtR<7) z*_3pWpk*?GAThr=$Hbms){4{{4SXkJ8u)zqzxWb6qaEtYOC(~9Jq$^+9A`GB-}i9+ zfT`nxB4U^Z{qX>;T>v3P@>5)UMnNmlKOgen{EPpND2_QfKcdl|XD~YB{{CBNHH~t! z!sRR5-2UM`?1M4Rcz{`v5cHV7z0c4&$Df91n9PC^vSMHuRTRn?R+-cO0f)!CXr@K8 z(8ll1I62Mut8c!=3|xbj2vYJ$bgCGoRz9L#APXpZL_u2D|T#_^1EFuiy$X4|k7QSXm+Ra_UN(2lo#+c{ii?z$Nxm z(lEu)OrkLQ*$RQp=WA$&PJjFq&xZNtCVM}!*}1!mKt`VD7?w!GEHXJxSiQW+i@)(K zCy&obXEEz@^SJf|1eGk28SW;euE6ruHDo1bp$@}?1+=n?K!#=% zh~j`a^r@D0s-+SiygOxOei5x0v$nX-pZwA5lnj~7QE>+jlc7twTBJWdr7>?I89wd# zI+eOfb>1XbVw7AUjUp^lMK21>Mj3Iav3~6;swCnEK3*15UAFKImmmu7J7bK3Upfv8^*n zK(3T|aMb6sUwVPJzxj~v`#lUr0(VOP?3{Y5MlM8nUPv5AxLJgv7nwY=QPBufmqdxl zwGfgV!BBAqQw&u`DX3&5U;N9z#3~ACB>^v)p;;1{lwepIDISw? z2PuSGYa0yCPH8oCY|<&L7Nm8a?i{0+1tcVVGjzH?5&3R$bw@n$}fs3RyTQ}>jfH((MJS-WzXAcxy;Kc;3{w9A`B6CGJ9^7#H9 zYFeV(^^vp~rC7kKS2#YKvT@5I6D2%9$FwAt7Fu}GjFX3BK6UF7UgVHO7FyLpS1nH8 z8xo8o^rnVdHHn3YXI^enFU+|A#(i#HzRcm1J#<|IU1M`~liPoN7sVGo+&!ynv z|KwYQAKSA7FaOpmdQ~S0BGOc))|lhF|J&=_dTEW-n{DpzJ;fIsuFPMdcjh7*P@1dK zu;%#d|NC!Q)Jz8bA-3MguoBT zfojpf={or50++5`p*ucAPQV@nB)))d7$lj*bU2~9rehW%jaBS}fI`ValT>q7u1+-g5oT*1JjWNn9m1dbR%t*Zed*oAU)R{Rpd7|JRN7Nb;VlxC+ z#3;0AEY>(b-XU=`W|I^W6K^_2%uI(>_M4fL0Pvt%PDl!Z1{Hs_eWwMo3j!W(B)r zLn1+vp~@PPB2sNO5S0wqk%>Z)#106%2~wnD+aZ%lhVOtgO>sPt`Q;{!W*K`VqDnf7 zBqK&5E9F(TR#utyQ{q6za|MRy8OhAVKR1}3=0xL=*vpXO9IK#U523%C5=J@G(S%9Y zWo`Qkc|{_rWn|Wrjq7tX){CT4P9ke)nvSYME`=xs6~)v@DlWhJ&p%0L*5UE~4ndN0 zbTlSIWo>JP&iDu~4=A?l1bK!NW*nRjC^u^yPiCBVC)Da?o_T(q)82@eK79+soZj&e ze-g32xJJ#aP%(;xZbGqO(d!P0LZ~%LAJ;Uw@Kf-yZ5G;^UnAFJ2IF&@?Kw`*`YbI} znaw5~9Cm40Ym`)pJ9i&YT+S(IMIPTiM{UR`M#?kS<`6RQeUH|1kw8=^x9e#2Dq#?! zDJn@2kYp~09fwH#aC@aHsko7VB*_pQl`Uo`0sYy4imszy*O~5n#Dg4Jl|WT6WtqZ~PNG>%W0^;21c{Zc3hnh0cE=@?RPsE>pQJo|`h-$R!S>EDY6<05ohw^c_=|t@ zU2fgD%#-`)G;4JnFN9n{(QMbbdP4B$=JD_; zxs>6J9V&X8dw+X^WJ)x)3T(fyf;$^A=ng1a1@Z`5wVq#eV%!K=V9-6&u5?ckQ6DBA}Lao zsA#aQOimmqsjuP|28xbA(TgIz>xF@$K>?!|MUxsugP@6Ow{c^|jxAXeDTy=BywBPD z?0J0W_kHHM7bgOWim2M6sI>lo=jQwSu4nz$Z>{f_v%_6R=Ouy(*Pf{&2nvdMM3x&Y)~jT)Ky#%EX-WU&f~C$Xw$tJGVw=JFfZj?2 zLDaeP_C6c6P40ZWMdPZ<+O-V^Pev3O+`M&(X3ybd@{sYQk1WY#LdojV6{<>;58r)2 zGD*?uDRR9e4m3{h%#acVq=d=#|Fx*^FRc>z;d>vFl`1!%StE>HM6o1}Q(EmVwb}~0 zTBqJz<;Jb+C_#<0hf@qwp|{keR;R%`OzQVCb{g9P~E>)w(mFF&TF+b$it1E22vdY^J z-{$ZAhhJpEJ~zIwMCZ9W7ycYS4!QQ3Hl_0E{|YhH7#{}APdubZp>6k2V~K@!l}Zf~ zKSD}nqFIQP<~XWI?9LJ8jE(C(qBKR<6Vho(7G*RlHHZ>S!(u-17!CW_bsbERQcB5! z1V`0)@a`$OUtkpyqem{^`$xC&jtc5#m(kd#yVk>OSzLMc8uMU?J3gjNGnSnt+U6pU z_m7yCIn{+jF9cK;&nniA1xuO#gJw z(ZP`2y$f==ptaa0N^+7iflR@_NI1M0l0_2V`(N&o#40a+{!RRBiljwUDiypSV{jp$ zOLfA2O3Sfn$p-m}$i46Flk`L4X~a){{0V>dFW(^*>%8>ZTYUAae+x-)Pz?(=9kQ~j zas6{0UikboeD$@jak@K1H3Vv_Hbt%Ygt0DvancXHha2|vbJ)C@Bi_8 zSe}Mcvv}#vOFTH*Vt+5@`qfR6bbzKAWU9o)VMuVCVmdOWogr!>sSl1Svwe4fSZY{` zgBOlK5>YiBXVau?%1n30sJ=!#ODNJ5Q7DidlOijq)eT~QPV9>mr9e@O>E5a^PJAeH zmfKZwWTsnVIz5|tn)2%F&v5tl7N5C!jkkAq8UHXKnI(vdj3}2>n=~kSWEG84^3AY^fL@qrBbU?Z>$i9B7OG+u_)O2;W7SE#&7<6Z?Jv(QzB$uxbZ5( z$($@1a{8o?;Zzw;UHaPrUw-pV)N0AW`97a~YyanPY+ZGbDquR`4rKiK6uZ_S_7hZD z#!X@jQ6&!}6kEXa6Bbr$j3!eQQwOo6D%P2wOo=Bk3rh~+EW?*eUijPw>q|HIpZ@8; z;O19a41x(tsxd!^Pz4pkHqlIx{$PSXPHC-ls5ESn`V70K(rq@lcl!ahZGjZiXm(g^ ztumX1Z0&536(y}j5yOU>v4JX^yz{5`aKw~KU8c9Wz{8zWdYv|9nd7IkOPvlMzVn2| zk#@_ zmO>l~4AMT&z0pPxQ$D&qKzLFon2b;@6Uiu1w20Tg{ya(MvE10;!S-#U(kH^jv?^%A z0zr`B$5ZmcB+d-x(HRxngrgh+0i~AWG-8Ze8_jfx@|0GyNjQ&q|Hro}a)p&ET@Fsh zy!GZ=Xll+s`3FC5CAWILN@-^pEs^;oqheJEiUd)R(FC2@I7AXN6t!S=qt4w=2ADMs zMJW*^gU}6#1`$#uP}LoDMIp8t(oJpAx6$J;JKk|9?L+E;4$UW^bHl!&yOEe69r z)sBs3X*AkP4E+nx5~9MVVk^w29$5fZRYt}p%W@{u8MbL6$RfR!I#Dzx&7M|vXGdf5 zvjDB4u(Gni>10Hj%OJ!=u@4A@aY2}7tS+^lO3%+@#=`_}9FZyo%@qUNl!$^7B$?2a zsAA$@1Za{%^SK0c5KEoZiy3<^i`@?HPR{O!=Uji~3iX8+gR^ta`xh);bx?E*VJ`9N zSD)i-vQ0W2;Kx3KY_PI?8QZFGcyh=rh}gMz%%zPDGOOg3mtLa3cfmjV&;Rw$nD?ud z1Xh2u%0}-x=ffkiBn3&N6u=98R+g67f7mBDi731TLo|r|7$sE*NZ9;Jlf&HsgfjIP zb6OP#MUXgr;^CiUH0m17WsUJk%6L1bEM$bTpePDT0g6OGw{_Aq#Hy*NQb8e!)EC_Gs-f>Ji9EvjT*PP1Y2;#W4=n?GTW%f$~vvZ0AT@mRmK z#K~YlZ%w9qt4edR%WOCzBgPF}C=(j>9$BK|1qpuQk>)Dx#wNQ5TP!WKu+WIo7)30w zswKzg=Pax&2UC>53#n|$XV-u^iprKZGlFR!q6v&q@; znDgO;*+jrpO@eWRJ4mVaWC}T9eZ@vMn%sQ;5`X%?zKb_WkVP5Ff~IBT4#qS)buPbl znfo6+=3+ZUE)0Y$A}e#WC4oXI5tN*oS*4sSoR6kBO9p0F#;MlPq^C0+C6Uwll zU2hY51+r>@m@{){lx0b!Q6m>qBn1W+eN$LH3~4Q{`EfG#RzrBA(Ovb56T;_-x?j}E|w=CaPkQGk>? zWLbu(sw8=YC?p_D#7RO$u#h!@+(-~B0zo;$&wb_-4cAX-t*A_nH7=e6bl?6lh(p^249pL-7)9!^Uo_obG!>QBLo2huLI| zCN!9wrp(WVEM09QiV`o}e1Vzg62xOv1%hcrSr%B1!`^8hCvqsW0HH2Y3L-_8aDIA0 zC}yaNLd~hO*ly9b7P-CiF`gd~l?k0|b%G*B1g5hHu>`9Hx@IyN$M|J}Le8siT;sUE zN1VyrynKthZ{I_RR0dBj2>Jp-3}!_mndW@(!}pOJ9@n2=rW9lzymN@Ko>6EXQ5F!) za+yWE^f}l%MKd%q3KXS4kVQ}ua$=N<$+(=b z`dJ692|}W?b9>6sZ5KtcSn781&Jxb<6eu}lNq}i7D2j?yDyXK3RWazaJNRydUxZZJ zHolUwKbwIiQ)C&9N|os#BAVv3YCUYt#68QHJaH*T1sWNeTykagGHM!h&WZ9Ws=`yZd+%>vX~gZaeg!Q1=XT5e$}4sAsvoO%dJiZ^muURb2!=p613I6WOOI(I)6 z!@vF8UuPW7m;_U{?;r8&Uw(;r4vt%97RULbT!+?^8tG@zy!7^=a={uqA{@xT4! zKjZs<^fr~MOd-#yIx0z&F&g>IFEVE1Ig%n1hCXGMqN^IZq+~?)#4!oL^ALIb(N1S&xw%0a*~y4Gl>a5d;C#uuv6^gU18j z|KkrRg92Srs3~?MKvi3XgChRnab^-Y_Zf{Brhdo(MHk~M8U+*6K3%-*PmNO zG$X1txOJ;Xlq8&7jBvw@ova!wDP zkog(s{UO(Hu3-oXJ0DH>KXEY%6T6|4R|S$XXEK>1MIm*kP8#LRCsQ2W2Q2qG zOon~@;Dl?>H>h`NjJ+9Gzt|!42NZp9(i+lV^#zKlOc)iQC=@`R=j25}JdTkR2}zWQCjq8rKvp7Z z3aTa&iwPMiqM#7We8f^lR3$`1A`c2$jW*4y#pv*yTBSnh7Hpl*80{aTNhXDma_Pz{ zPj(Iv%M{yG@n<1YS(3{ck}TlPW(1K2Wl2d%RAz)xis(xeMT)B=#6^s{+9PuNXp#a+ zj#uPFVSpn$D5-*)>WFEMs_IO<0$DO}J&)>w4WbIM%>DbP2x`gos~f!g-WGuvB1jWQ3;a+_b+(mrFEQJ6;@VPdHelG z#Hm8;yOagwIn2+e*oI9oj_9p*dA$7uxgvckhICBLY9=+0WG(pZQ3kiZ{DMq6}5nF-!?Ll^6_XG?!!qEr(jp3)fbO(hxBV7)L&fmn>ui#{B>p2SZZv zrgLIaid@1S3uv-JnE2>I6xpx`qZ z#7|eVR~K-n6J$bOe7()1lVcv;%hgVbK7Onkh#PZ7sF z{^-X@p~Uus9l~<_3%U49s|3WjWOc2DsaZ@80;2vLO|~#Zo%PNp)6+TGG^cQLG69kz zr6_VFK|m~_j0-40kb$y9lXTKF$BiRON=)5G6htaD167xhHHAow$(5MXlYKNJqgK;- z^2vn3gE`4DsJTg@LbX-L&3sB#B?@v>K}L~ekPPZe2IfM6-H=dK&{dh-&j>~dN+MGh z1)8d389H(XXLm0!r3xSu_#v_+QLkt;dnS^Z;d&F|EF?_=!qlUXGYTQaFhs)0rP0x7 zuRWEQ{_gia#;DhrgbAS1?KKc`iKX=wG9hB>&j{Rr1Ob1VQqdbc**?G@yI6)!8iOAM zjJ<&G{_rjbTQRf2oO$FTkTRd7H0(Nc-J-jwGB3wme!fku^64YPQXz8v(k4c#^6Kk1 z`0?%cxcs>msTncyb{Pc`+Cql2E`b80euSCJl!EwgnyVS5kw8UYF!ot$)oFLDh>A|# z(im)o^mop&?TC>-#HvPQlE?L%mvB>;I16cN7AFq}NL6U}3~F)(#m|`!J&cM@A*4jn z7)eg3v<&JCHJr9Xcdd<86|k!^D_1)#UbX41USi|gHLkz7#_{wBFP!kndpoojHP8x5 zUBaEYNMulP(Yh(NqqES{S-M%p=;Szy9Tsm?u~(|x{K7SCM`E-+#+`UfCkbAV6VEbC zu|hnGSm>-F2_lZ33UNe|^${eGBFiza3(U;` zSrQq#1@jeSmHi?E4glY8`bMgOEX8%8klf41w`#$*K^<8EMb1n`>OrJ!| z4kX&nC8Ss)a^t5R%~C*=B=X{^M3SsX$f`go<%m*2S|%utMj;mHhDHzuL{Uf>hLq%# zYEil2DoT0v{0hP|w^_WV-~ zLZKy-$&h9#S)3u~B2o@X@YG1d4+5qWmv*~Fl%_~xLK4PYe{G#CPmztB?qwZ&LqS?p zF&DsYY1my2sUB152|W9SOFZ|5OFZ|5HjSk^ZcrdgHn%@GV7;<}RO(EJE{bkqb`(}$ zTEST{QEU}~oR#HOimc#^Uwn(+N{43Kq}{QwtYwyaub{DvWtfO*ftE{D8W!C}38RuC zDhaQ=c9V)z5+)-ydc9A@@WmItL{SO|n#B+P^)|XD<8*7h{?^OXs#R(=2X`tmJn`Ay z8PHtO=&rS}ZOAhZRfg`W#P}kot{N0cK^#v}>8#XQY+m7TOQXUDYFQ_VEPn9a zdn|Q&EG~3#x(?N)8jH`>xU>HdS%GS`%6Ky2&YcIufydg~67_l$360(DBm7yy>@38c zCm2?Rhj&jY{1Vp-IT;K|g%Z2w(A&JkU;pM?MC7<(fE)V=f<`)z(Q7K1STNo7aP&<~ z!@)8u+<$n;Y#Ra%IV;J5 zYoA@?JeqUk%FCF34R2UrSS?l?tLU;xt5aubV-?NLnTJyrR-0HgolFop8yB4J+U)&g z&T#wZt;qk+@k@Im)D~qF!6flRghF`wjx9aSc&R9omOe5XX)2P2DMFbclmen4AqodbCk361v@mY?&UE(aE%rn-WHL*pT*>1+p zqY;WMkVq1C6H2kfv@}#xMU)NlFhNu$PA3;sS{7xZ6K;D5semHdq_c!LNf0PWvk1pB z5mb;Ji9&)}TO-R8Ezk;O&OGiDWf55-@uUBC@8@tdHw|um zsmtc&WgMZ#AOG_|N0toyc|s|seBn#i$ORP_x=(MU0A!QVNJg!ReC; zjkON5(5JP~K`3J8!x`Im`z-b(YOM;cUvPdtMN>q|TtX;BLNTSX>d@&_xHuTmYu7Q` zRU|Rz@N^fwFgbc}!p2gY>S`BVGx_lQ4=GiVxj&;?H4)VU#1g$*k_IxSuQNLKsX7|| zIKZh`B!x^^rep+ES1cAbpj)wt$2xES=`LUU8?SLZdBED`Cgb~aKKkk>w5%Yh-qjPQi!Hlq?tsKrI?zIESZ#ogsN%Cl0Z=u$fAI48z_!SN`lsuP^to& zr8AxSWQ9PKW{7%;?6}yii1kgA-*Y;5*0EeXrepeT9i^*WcI6|t)&D{EES9fx+SOO}bm zamc03HIl60e0+@4C@D3VyTPYocB4$-XkigVc?1n;+q^w_EVjj<)I!`4s?RJYanp5wXG+R{! zA;R~3s&$QYUa)uX3FrF*V()1)SgTdJ{>HOJdCvL%nC&}zB$13|)>+)FQ(0`HG%7SV z7fAF1$X5X_s6H4J>JDToFI%;{8Lz5tTUYY+`WCDPu{(U zQ08PoOv7@>{giU1;~k|GLk%hS3C#)hTM4-#pwvZ1GmpV&NJ)VxOT>PTn2WgCoJ5`Q z!e8l;s2;VtLOk-hdwu?|%P2AO6`x9(*{!uqvF*=JeKDEVkoJB6?r_FnJ12Kb6ir96O5A>iJDOt~DrQSZHcGr{N;pWU8dYkd!84nyR5XY4 z!zVo1y+f^{vb5M`b90UT!(ArhDUNM$cHv@I7a5OT8to>vPMc1vjS#|M>zv|L;GKW| zA+uADA}D!o;Z=_A&p6+5kp+X+S`RNs$m5b|7Ez=*#08sIHZYn3Ml)tFxVBD zoWP(jB0CXs11>$k#Pe_5#IzM0(L_uIDvpkyW$g8*v@bWPt(n-1Huc3NZoJi|aZAM7 za7hb~VxFqVW?)>C2_kVOu-Kx^6uMmeBag@>MI*gJLLiN*|y8p-cr6mCg zm8mx+N^>qfyM)k&*I#>yXJ77-v&~=ow_hYrp~w_!O9q!-Y7-M+NE(%jj^&gTLV{gY zsCH#aE5naw#D2i?YLl1Wx`d!U^}C;iQzE}4nk6iB>Uh(TUa!vR*hR<{zV|0TA$0}9 zX+##~OfF`OE?jU`oYWvbDUcG0&T11;FVN~GhNIxeA?w%HsV-I#Rf!~up58rmf%|t3 zh^7Ifa~E4}v%cKo;y7VG&N&E%l7Urn>Q|_S2a{! z_^!e!RUH<$3@{c|h!^c}w z;=&}81yU_%^=1{Zle7NPWgec+S>JqtO0z+n&6%I{ku!~EUBsKGWO;$v)TlHJ#`6(5 zGC`Cx9{3bk>Qr7kv26Z90ld zB@v0D3DvgFbUI{hc@@nxune0l2-y1R7SX_?Rywq;2A1aFSQ?rjk_{8GdB#8Zul^%i z*DL(+J3ky4SX7pz}zkVH?NvdX+fE=0Ds9$_{t>Q`*0jJWo>HJa-ZtCt+E zT<f-yK19_>G1d3BMGetO6xarwsY zzQ`mF=sjaGi7)v4*Iwqva~r($>`j*18$^*n6yhA!id&tjiMA-=&m3s3R#&VsRHBSh|m=&l9DVBn7KZiR~D((Yaqu==3`8= zq|8z@MPPYh16|QLIh`YkC4#8aXw`|8Iqh3IApy43fLP<=aEg!@SaOY;VUo;JF5kS# zjV~{=cY1+tD$HY_et&`_XDlw(F*KRjcUfI*(yrTlvb)FG>43T^@XGUx^e#2Hh~^|& zPKk^^2g8IXTjx-wsA`FbhNc-TE?grBJ-p-p^yhH=wZH!z`r|X|Ed!$z**hQ6tJ_=* zE@&_H=noGuRf*BTDLe1@sF}>nmFU)L#ASw{Wkj=*^T!clmgCqp{Aq-()JWnONmN)| z>2SP#NUc^QN)voPpt(|K@k)yl7*7HOC1K~`88BkX32Fi()p99hmt zOP_|*#C2l~Tfs0TVmYU>Xn`U!iy|u30JUCW|K5bE)gl`v3{Nt=K}hCj6iH5=WL)|B z5-YtX{)NW<@1N6Ks1Rl+oF7jx+Z9^%9xL5dKDock;n{$Nn-aR6^U3$89PIDWzFYxW zB50=8u#C?ZghQy{4dSp@BBli~S@w%y_W z`+Hbj5ijyd#2KQfL-|z5BnuO&Er-e2XEq85$1&NwK#xs?K;UNYChz_EBk~}j(`_+0 zbcu#JX`0bmuHbnALpLEArQj(jQvn&6dOmfdjyLo1#x8#3(pz8WVth)DLcOub`Pm62 z8MTT|;7!=rXc4(H2BR6eBw?!}?S_G1SLwEHF*q79ngqn;6p4T=$n<)P#8HAQ8#J3M z_<@h4r1T&B$3K5~YX1dcG{HNGs46ukBbQPx$itGOCnt1P7s!GPC5LM-F5(J4um6?L zbNjmwX|!b;3n^;WAd3=2u|SkzGAf9I7$MII{e&Wu5R#HG2@rLO<<%7eaYPV@j1ME0 zSE^)6jAkWdp+alr60<@;OdNuX5qT+6C<2yYa<+SlEjlQLf>Bqgv|(>+524IyEa}8z z%A0@n4GzwZX*o3#WyYk_`xBgNr=#ZZwY z0aR!*wQ7+@IS3+!P!f0vmu~iu9EtsVhcug2%oQ1JrBx(=en_uc5?GD~`wa z&p6qRS-Mt1X~Sd|V#+$vFhWdVIGV9}X_c*qM^sD+xgv1#&d-kyD~>^H(PDBjqt>cY zshX_5+T~(vnS+}qcKjaLYft1c|dZJVlUK@EscTOM>Rz%4VAJek#d>idtYG zc%u=vR^@PbglvnLa!#3;WOJE|i*u}|#?Bv2e#X3Ctu4aq->6_W8)&k?`FOx&FDDr$ zh=M|`Q)4!rP?j>!zjB46*&c%ABgiV@x`R;*Niq%MjQM!ZLbFAorX)#5n54|- zDOyDUEk{Wew3g254HJ}rt$QKM-5UKT9^IbK-}vTd_}&LQgfka^UQl`gRk68cmSy;VYUt8X@q49m>mr_3=zm_lvUz! z%-D?)^r!m>wF-FYjQyYd{N3_}-?+}%$sR#pKsQwyohpNIpSq=Db_^ar9&=@70ZbR8 zuHlYSPCtq;WSP8`@cFNsG^Gxmu0jxcsNxtUU+3*VKj+>(7eP&^SQRwILe^AvpBy7u zu(aM}z?iRn=>|_mC!9VBnVpHea(#vKlM_M-G^NST!(Cb{7FV9V&d2ZGX5;cQ%j+wI zfsdO^N%1gh265^kiY2vr3sHb{7Eq)al30Q}zX{T_et2Y-MhN&Nor|2|*)+SfkyyZti(qyksVsC8TDl0fy6#p64>NUlIt zwZN?K;PySFnuycVIG=}XY%I`StMK^2Ba|{jkpwigLRmt`GO=nFCkJEve#Ct2p{p{Q zqoF7TmeC-IO3E}N83ri2PUIF(O*KT3(2Ecyk@4viK`aqb=np68rb;fRjHe?kOGFY= zlDHtx60$-<6h$t5w#oM1kak69Fm(wskA-HHUZq9G-Z1da(r~m=H>zjD|quE!Z_!2dw^jSC_LW zTD`^0%}5H7D2_4o3Xao4E@b8x9&@IA{wvoQhBH3=*d=pIia(R4~vqnP(; z+6~T62ly8z-t5!QMrMT6Rw^uSs!WDcP(6x61x3@4V+AXhPzn*fUg3Ot!HchdhUw@5 z?Wzd%3U}^~dFyi$aZ%xXRPyM)N`Jn^;5?k_(7=2}w*Y=eSAA`eq$j*V+2`F{Y_9>Q7i&?NI1*qGG~eHb)6cbWKK+ zY(Ck2!p6oT_z{+FG8v9J*pB&k{*xE@o_|7-NF+&)t|{0nbu=lXvDS;b6rBu(M%KfFu*#TL)J zxXx(u08{6GXYRdXbW5)@y=Uj}=loZ$Q&lIY?mm4wiA^@iCMAxBM4O~(v^)|WbYU3q z%#{fNzVKKuV97TI3|KH`tP29dn9>YpB#Ih}A}O=gWao5psH#)B>d$HC?2982BeMkp z8W_|9_RZcK-_47)_S)a~uJ=VrWQ2*x>pyyz%h%^3r2LT05p|cs& zb2pJx2{MU9i-?ks_aFQZJHAX%YCwH@-o=UgsO%_y)iGyT8kL zJmzG@k|+Y@c@57A$^3-*#bvhdJVG^90y{>E1rP;9Bt!`kQlczFlN7=rKvhLVMFvDJ zKC?_{x}X~DpWGu~G>`-XMe3|>N2A*dxOm|lu6aVY zJHa#*p84V`uJ17$9a3qmV@)OQ{NN$>u7I0F6iX6UKQ~XlB;a`y@Kd%Q1}KJ1CJQ7) zY@A&{5C+7tK;WwMyAJi*Je^^WwT&faPKQ*9Dc39LdWEgc9cFHXa)Bg? z5G4`c3z)e!IYVZ85K$_~bdG6sSgvccxPK7k7h`3kArWACQPXg9_mLOj{-Y_Hk|Pm( z^n$_DU%JA;K4xXU&Ec?zYX@}qPk5@a$j-HGtIZPU&usA8cRyly81bq9>?ykT0kQ(RB;h16qlXc*?Eq60h}?uE zOevQOsD%u<4W8n$_r1Tt?(az!dhx{)yA&{cXPf^{)f)^{;=OKmOxC2H;Qr zy_6$gR6$J%Nhwx})K*OT;h0(G zFc|KmD|upH#4Mz=>Wf&L7DAx#(L4LhhB9Nz#fcp1^CeEEGZFIE_R=NtZJCQtuG3y@@Xn8K6FD)FE8$FB z?%mjhSj3$sOeP`YW1pk@WB#9i|2Cb2E>e*4&Uao%ltff1V{KuT)wvp>W}`M>(ofJW zlS160|1e{+8`HZtL5>wvBtjQ-rA(G6*tUZr3mCeIQB@F)1VIJ?fzbB}W}v19-mwQm zi8vDY;a`5h`KM3w>OXr0vr$CKbOJx1Kd|t+5@A1~T$EWnRVNf9+$^R)o#El5R%B9D z_<1S*_u~n4yIoqX767eQi*C0I!13`hi;IgteQ$Abk)xxdk6lC21nP?gWJN$WBraaL z%EEF3FZS@x=iP!gQ-=prXhuLk-M9F6ssj>p2gI2$QLUpqD;xGVs!(oeUIVRjFOR~RMbGp zP;wIMmrhY_=UKT>Ml*HhHmcY~pGSj_7p9P6XjJFvZH;;T4{x#cy*{RIVjWMxO_^U> zMJ-88y)n5~NORGoJDrlG5$?=lG8r>Fj=2BmfUN4FoleM#5&K7dX1xGSR3TJIVu^+I z3LBqX;JvN4xO;F1+ZtdfI+xF1pdjj;nJZ$=`ed@m+Nl*hBF>&YjU*=MxrC$fK58lD z!c!F%S`}(WjG`p8*B7bJFCfVhzVA^fRhji>v}z@m<{M~5nL@KnCW~l_POc(x=Gq*d zJHzpPzVzy+ne=V8e|&;4Q1J#fQYtd(JH%Q-5C}|;286MXAOM1Z?T@I;6>;PMTXZPT zo7k>L>;(8?K-h~gL>WcMIDKvjy{Yp4<{QYm$apYDl{_|1x6y_vv1=3SF)qhk{nce& z`0`~gytv5Xr8nJmZyLKgW3H;CfS>$it01 z1o5#Hl$z;mez-$4NCA@cNRTMV2bs-9rxa;Ta>>_*&s zbBF%J4#NW*cMzb8CJT)cw|_F??i-Kz)C<>f-Iyc@(Uq8^y#aCLQ>kdAVhqX@&rKKy z39{7Sjc@OB?}J-J<1y7-nXUIFZokvP6m#f#3Co_55|XcI^!gTsVu`Isdu(oR;(0c4 z0L@yPxyBmh@*K>UK;*91Dp2OPgSL{&vHK_LlU=2sWl z+&NfChzjPYQ>af(PareXbnDi`2B;NY7NA$;i=FaE2_S`!E z_{(3SIA<_-Nhc`|Xe`&kQW(A!0{{H4uaA$vm!3eY)uPks&~CRmIXR)(Yyz;bu)x8= z!B5{iJUnD!Vc}!f$Q4qIdY*GvF7ft{?=U_YvaxZF%>$RlLXlFwK;P>jmlZH1vT=qq zGjWe5sJVpFxd|NDRcOC%#B2AXpP1R*AjptCz=;i|&@<0*||gW^nJmP{~eI-NTb!z~9y zs5DF1Q;$H1C{=ZeNOQ56JTArgILL*e>!ZKh%$Ifar@#T!p42qo-r#?GKe zU97NhPC%>pm{}Rw3^?pKJpZ4cB|OTw_r@Wim@t3IWcliK_HXVXjY~uf*gqOktR;v- z%%JPAS})_e4v!9Zkjr_BhD0F6C~1T&$#`*$VW>=}A+nN?FD??;W1e~PGVi|efYsA= zX0sX9T7`#Od*tOj#X=7Ke4fFkN0u18@?U=jOPw&B9g##Hk3Jf*_QW#U$_OzZW7~ON ze5S#jA0DuDr2ulm{=*(-P9vJSXa$Y^y#r2NnI{WlVmHQ*9j1en`Na~u{bPy?d8}f{ z>E{=bSwO)-6(AKXBH!i^2#f({Pg~}zV$7_Fl1+Eht17Ro_Xe( zk6pv8RWRx$hLJ<-bQLu(5Gn~PS8A+Xs-xCY8Y=~&B<0Fer%+|+>~^W-^2k8q3v67N zL#ru7a>ha5Wq-E|;+QMHvWT$~qShr`-^Fu76h#67WLZTPHPS4@3q7=&NKlxv{6vdP zby&Nf>RyWL6bF+W#jWpxf!69^m$MM^1^3}jhA zmJDJ!BsBx3?hHS4Sw7oDEaXu=9c$u{X(4LfM9Z55S%eov2&q7p$rN&bZJ8cMAcZuV zb*kk8l}zW}yAKdlkzy@RlBwL^K4v_$QAC5HTqGRH96suD`-2^ZyT{yl;{ZQU$P}I9 z{)}6<9x@*Gxp46mrl`?2AJ4Q0BcCvFI2fNmIc4{x!>Q9x@Y3ghnVpA2j*hoK7Q;*s zNC`>f6d4eOj8se!6d6&`dF1#+C7sbM&vDP>d*AWcwnBOXnTlB;H}BB860mx{fMdCo zO_3|tO2qkH{OUfHHId~fs*K_(W(6`eV{COXO_fHoKpc7mwokoOqG09-T^B-uG>)0r z7Fi5VkdjFnc}-zD9iVC|lZnk_GDZ>e^hd|ERv?h4*qMu%k61ocq|z4fV~^&NMy5cL zdTfmza^&=}+$nxyK{2KNgh(KzjQ8?9`q7w#jMW#4jNKu-?~josg>d4c*HjEyL{Z`J zVHdX-;q*iNUV@Sd^oBzw-U*|j&G^ve&7a(6^Zp6LVGo&vVZTFBH@Nx1g#AY@PBbOX zXEYZY^!g_V!U!j@d9c0D?OU4+4jtxBSNP5U;gdf%pMP#A@an6t^4e>!F&GS3T3X__ zfBU!jt>5}BzV@}R@%z93`#(J*1h{bF0$=;u*SK)u0$<~+(_fPLN>rOAcJB_U z2qnBuM5&S|kOh_&%g9QO-S8n~5w26g-H_f@YVyuAxH|WuQz${F&L&%f-EYiddj)07r3`|mr@R5A;q;r zqW*+gSL67|Lds^yX`b=^ltMwqDaz<)QxwU9vcUD1R*AemS(uSY8rFhCF{d$$9xFB9 zc<=$nDTSr^Iie&$&?07Df+&ISTj-S{rCfoN-jK!lb@WmN*B{`A0$~tR)J0Y+3#dwg zxk8nr<6}-{Cuow1nafcvbxfXSPM;wSeTrs>G?_Xx)LKkyv5GykNdlF) z7c(2%7^X&=W~^=0@I0SdagLd65&AZ}55|1rljpg!_W((5@WM-HxV>|i`!`2umdKM& zU1oFd9%ZA9FL}sOMS{f89l5GMl^-5`n;=4%bIY{t#+50Mg+NDRozE>cmT zP%4rMDJ9q7?e8A){4cMg%?JGG|J?f-96#}2U1QKcCMV>udm0;8BNncj?A-6LeQUs# zt809;eTX5N%(YrXiO6&o(tWs#7@CA)#M#e8G@CVaBgFPB0uSnyCi{mYhEs!_P-XAI z7NHHU4^Mo0nT&+Z`+am1GC!tm zI3&tqYHEYd-iU?O68CRTD5Ns3AL5eGIF)1NOod76B5vn7zH^8Wi3o~>SyTzdm?(;g z)D$^OXtWCSY>%>3AXO~PGX*~N^b6d+eGAzTSzA2CUwrFb(ojH+QamxD`COSsqsUTq zj+4$l)#VndR^aIFE+flDtbtiHc~4DODQLlq$xAj=XtwS;TAm@0IK9;crwP;BZL`683)nC{V#g$0u^ zOvn|gEL1l5i+}enNsuC@AS(jsIgl+FZVU#faHVKGz<=JI^1~e7zF{rkeI(vVc?E9 zeQAxYhg;< zu`FDa5{v`pYKzDkOu`AODPw2~s!?VzbjTM3rUwI_I)9nlH*Qm$uV6VdbQ4Td#IbzD z#6*^4#zT*Ky^1BwuzCUImcjTqV|>d-Mkh&p%v=uL5Rg@o;cUk0^K-;$gy`u!_{%+1 zMI^tVA+D;p0|&Dp^70p+C1>iq`K@>9ZB4N=jVsTcrZ4R=*VZWH3J7+@!`XpSx9@1ROVM{TY8dIx@y!OtU1cHJg$rz@{ zY-FRRB6FwbXl~@G&6oK0zj&K7S69*N72IHkmZh9OyTTGT$4xl`>b7E zB2+A{eQKR)7BU<;XnBKt$s`s%j(c0odLjECPBCN!QBtv@m?VuTCMAydh9qK&P?gcE z0YW8Z`$vyZG8OakW2>)|eT$R3DV?n$^A{@wjzE|ybUQ<&Vg%-t3+wAlr#%odTCFm> z4+qq%bMzA%L3R*zlQ4~NCq70&LsB)4HV4R6f%L?pQY;{(88R`>mPg(wLe52&BYfH8 z`LA5&U;dA;Q>o{9@)MW&@%#H2s>;EGW7bcv@N{FDT(W~Gn%sYLnS|z`-f}~WL?wxS;+6Im_ zCRKDqT|zHO__$p9ObfGGV0bj3eQCnr5We`83n&GR-8%#RyMO-6y#3lH%gq|2>6lNw z{5&4uyAFa7A(U0*yht!}Si0C|Z>xhEi9Gw6%gk`F-H3}9R&kh6o2wCY69iGBu$;qC zGv?-s>>PI~}yUR#NgU1;@6CB?(zqAQow;E%xsGw?BiU zTKr!qXv=IK%#h1P+{i*uP43@2Aq`c^iiFWBgDw#G7O9YuCKjc9ozY1^cgrG~Cg^z` zHw^KzDY7Obt0vaOqcxXD(G;rd6>Q5U^J5m5TTHzUMn1=|8xW-#m!4i>;0`$G^^g^b zTCIVmK;U@`2mH+9^| zA(c$-zj=u4Di8{c9$8pNA)_M)T~%qUi)4Pn!J9Ki_Y&Meieo336^J#TvzN}&YBdS7 z5ZAUTdYrMhX%VF=j=RTaU%7~~2w5#-=~{zWjwuuc0y`ry;M8i1d`ToqryL)4 z2{VOTw+9T4ect%~UF=cJU@)RsR#6HHUDqNoY78eKrIy35{N{P`>tkO2FF(giU;GqG zQAVj{h!vTGlOaacLC*{9bm7XUH@G#}=cBg|xp;nqo$fYLO-5-)G|!uO<_M+I<5#JbL>GFAQjHG_WQ!95-O< zr96M-I(zR-$od7m1BquZpJi>mPG>Nte!59#m@=M3NO=jfte_eqcmhB9_xC;)!*f^X zFm#u<|7eHFhX-7HVHIy?6ZbPbTftOv^lm(2y49uI53pt)QEYPa%{{zcMjGYNbd7SZ z3aN;K$+RC4dnxth63b7l&^|YZsEt65ICFWC(^ty07b={)(B#^SO)B*qkM16@)LNjZ z=g8Hn6y|m0QcS*7M2I31CuM56)E8=W{2@X~WaJJg7zVT13|WNO3z?m`1V<2@l*wf( zo+n_a3W+qL+%|}l2tmk@WeHgj5t59TUbu$WkqAcuc~wD>0*YpanE3>ri0o^8c=Imu zqD%d1m8U*`0Y|ct%P9*REfO(ePHz%A*5mzzc!n`ABQ*m)_tmHP>es$NCd$OA!pT98 zz5NHcL7%>TgdIdQ7Me`G8Fy~q;8E`(?d2+`&Q@tw%G}-B<@ZO zvN4-?21G*;q7-}J(mCor{yJ4lC}?E1$>5>G>dNcE8SZa!c- zbqV8)d`n|u4|(t16Dkdjvukr4-RqK5WU6MBEELG=Ik86HQ{&$YgpDfFq*ke5y6=<3Y@M zXp1rHpVgrT+b3P7o=w##qR9#N$fBjsb9@hqzRA&z2>KFdmg{)4h&cA~g@B1YB+6X8 z8K|N{9D8_~&({7flVE~iXduainMAEvr%`U>cmbjWgDso7+~VPzkC=@d!pLE3{~l-} ztE+9oIHk~(874=lRS8vw^^JLQhRX3t7emY8rV&X#K{ph#EG8Jln5KvjWH@^|M?Xoi zk0NwKCrL6SStN=*6dAtrCx3-9P_cR$juBwi4CJDLo-5)VC5#_r)bt`f?-)ny&<(eF z{!3R`zCOpj@qHTS6ne7(BReL`LTZa8%58(N3~z4U;{W)gKch1lasU1fvLbSJ`4W!h zv44M`AASEL?%g^>S4*5*zl>lhEYG)ja`h_b7tYcaa^zF}=jP%stOz{y#2nRjfl|9n z6o4#9h=Pca3M5X((N2$IR)a}`8mYvV!o80kae4g=cE@Ghn^I}zNfMR8aYW=QJbHA% z(XBC8S62|KDN?P#*s)3Uh{<$@VH8o-1R0q#YtK+>H+kmeCn@SCa^j<;9;a8Ax&PsZ zJaK-5bOOWu8AYvuqCy;J7oxij-zJ#`*Du*Vt6 zG-SD@v;81pxGN!xDq$?*`_5xQ6j4Ez6xL6zaq9FEi5M_Bjwx$JWF&MULqj6=JQfxj z6wLzaOs3&2)BQoh=G!iJ-`}HLDA8`0dE)E>qdkux(pY@5{;?P;@{BZ`a^YEl<>w?a zb3k*!q_gkfA10g}dJKjGBxJ0;lq)MMEY#Z!`yN>WT21AtuRcMRixC4IQuja?)uVsH0|N;6O3O<8Wu6HIfY7HEjbsmAyJ>>WfD zQZYa>CG;b;s+v<0@b)kE)$VN0g;Tr z4*`iNOfY4GBu!DmgtbenBug=FDPc4SNrQ|?b5PI1m5Xbfsurl$Ow>Zk>gp1jp>eQd z69g&6yhIj3Dk_Y77S=-Qug~@j=CeN^%CbVw26b1z1;mo6WL6F3`Lbu6d6Gj5Hpd@ zH@A>d8FDE`(`50&91jj3u>NEbwPAxkYu~Oph)*YN+gm0aY#tyrk4sj~8vT+t! z7r@tW#tw#5#1L{!$3CWBWqGNEAlb}j1LDBO9a|6xl=PJO(*iGkCC{19=BYm!bMBK( z>gPn_EW~w2G?g4iL1E)cj^4l~PE#DqBUjeYizNbaLhGE!&hQ@fg(@p+iriKwiIP7Ktku*~|INYVRVzPR+hJ!`zLWxg){uA_1Y(g(%Jhln^fI_9l+wX6o z>Sa3JAya#XJsMHU6-ncm#pMl@a)Yt!lP}iz%OAbQ=f8NJ-~8`iL96McvWiiZK#b^j zhZGW*Gjk@U8d5Sc=H~J&E|e)P)Vc79i;R*fL)9#?x80%9sIfWPCNdMWvPyozWaLe--2~q?NTL|S)Ct0n zBu)_pf#G;edn#WRiw%Oe&p=NNc9L~%kvEfISW`@22Lbq&i7h?9iLWPoWXv|D8gYk5j*E$k@5 z^<5N2qdyoj=}#%>mxVx?|j40z%4k>azYz zWir{r&tb*PiCz z{P|z7v}huw0uS!>IDKXVJMb_Jl_=@5{hH6y&tBoy;UlyxAc$kCd7W5ISzK>pb*A(V z669vc(xOQsMZH&7e1< zxAn7y;PR^#GBM-$wnyxUoL;Syi6Kco#FJcfS;Tb&f;1yGLrS9sN=d}M*%-YUpcpE1 z~Q59N6xR z#ie=nkB%vo3XCRW1i?m%@}z-EV#x@C%13W)QE$``O>mQp2Rl2IQi;3o-D06!;bg}m z6JummXX5(oKRChEH8MG%dA`ctaFd0qPLe64iOk9F0CPUa(ZLKc1TjgN%gwWUf1kzG zB55KKdof*q%w*(ZmNe?k5ZeZ`93dn=X06Cxp;}GJ*IQer8E2aHe|oBBG5Ys@oW(R$e9M? znM)QA5Mz;hw|gusr^KdDG?CCV?XhpYAE9azqrQ!)spRSsx~?V)a9+S^>KsVfhaAb^%@2SzB2n7BhOoEshQ* z2(p2piA44c(8(D&hQkR4F}f*GDCz`_7%kH&YC4DSby)sngZB9n$O57$Go4rnsz&05 zsH%)8i}*>1V&pjKk7=)!m{>!q3pru|EPu>2N>QbhdZmn=#w?vHaaNWH9G~kiw<)(% z9*u8OUeZZN8B#7~8ajx^$Nx2^S;}#D!ouPrhi(TqvgvLWk((APD`i|lP-RR_KvXl# zyhOJ*CYu!L4u;IF7dh-5Q*V~Jf6JoL$Wd8br1eW4rAEZdvDq^ZKrR(`PSwMTcK{Kd{F5BE+JY+nY5-1zb zvq+ZkFaGd*T)DADnFuE5KizlWvqJ*f&hq;Vfb)K!*b}nzQsIwMA!?d zM8$GFVt1oOyX|nE#T*?!;l`_dYD*w}u+S6<;H2n9&i3IJD#%Ee3$im!D-2k(#5WFV zEm#gxChL@)O9AK06u(i@+-tC2#XOqM_{H4@&jw>=qnM~;qePp@vlYs~^ZVEM&JR9f zd%wv}x65=i;r!N`^-R&cBv{YpxIPR&nsTDg@%j!b5bV6L!{fgiQYeimHNBw2Doc=M z!6K>HJLphL!*r#QPK8|yqCl{i7R2Qmv#yv7By|Lit??qor#ZE1(AooArR1ZW!M&34z#sredW_Fj zsErQivkc{hOrBbN_-~(Z`K^#^&$qepddTf}C#>TELE`e}H?FbBACWm3((@Rf#`wZx z?`j_%3UW0fTa-9FMrNEEmK>?v|rV^0<9r#bsy3XsaC6*js2r9PgDsh2A{T^DU~ge=(FZ{T|&2fl;U z0wonY2QGSDk*o{{m)Z;#F&jHBdsfKg;g~e7>2}+Ue@ZTXW<_8mjdG53D2I*$QC)#j>9wkgt!^gu^YIp25DY!aQza~-h^JK%W4U=DOrxz zBtt{ku{hk>r^*c9``#md`8RJcS)Q}C-D7+&rq|x(d^lj0t_dSe{nSdC(Isj%vr^>oIIFCKC>ct~Bq%kR9-7aNjQ zvBbjQdNu&%dd2Ab@QXkHJn#L5nOxWkWW5(#P)WdG%cv|9AQaZ z$6+>FQzS$74h}eZ`~*uvRul+RBb7}jh)C<4a614`kxj?UCK;aTAQLzn&FM7);>8Np zY7p#oxpnk_7hb%IYZPbqXWV=D19Z#K>PEC$pRP``9L%s>ha$JA1Wc<_+B+p;CHUZ* z35(H;cBkfRU*F*F`vtRyIo<6hrKu^=R8_|8DBz3zHpAJP)3c0*j#&Lj@uMFN@!S@E z!=s)F3QO_czkLK7C3NAdUwxYg#}5g&18&`Uit;pjS3?|Iaeg|YszMHSpJSO#84PCp z{5wC#zxe%c(SNRmzpJUrl61c2aNDC5^{_m}Y*iAraz=@C^e zIJ-YY*pl8W+xT@#p63joOz3nvh^iu;ls`2WKeNW*<_mqYb%w5L6cT9!2X8f)FK5VZ zfxBrlJE@2o3T%xp8>Dl|=xB`c9NfRIoSm*kUO1dSSW}i6jnE^nESkM8@oYdVuqmya z*T4K6$HTk4{L*#Sc}1F)%x6>bVnvBYYlnX8I?o=Qv3_c(RvB5EqAUmLDQcA=9YdO5 ztVS!-U_D%+w4$SfzNp0^U*gSVEKZb%|64)3|BZY>j7otkW1_44qDg z#cWBL7hL=D4)$Kg=wybj6phG`EG){j!f|}O+Glb$<+U5TWR+%M5>lOT>B=tSlQ|-8 z6K6ASe7T7!6R30E`{zH|7;If}*swzmUyFD&I_B5^lUI0l`jnfu5{7qu8extn9NIk} zHFp^w#|+~o(sEH9fecfk4V!;@<1%0S(%1MW|LhOBV+q>ZeMZM;tW!xOEz&BZprXiX zw)YQlH*4-aI>N`}<#!Hg_7%79-sj-*4x_VkT$=3e?J_!_vs@I6PS25v!LB02Zo%F= zJx&K>Y?a~KHg#%o`tgPHbfW`}zG8J+qZg85nv)h44c{YhT!zV<7hb)_;K@13szhpq zs4Lp-4rvyXS1ArYPT+%+(b~7!`I5j|8_th4Z+!j@{^$>WK;w$d8}ID$7ysh}kl^+N zeq>>HYP=1b&5a%EN?~fvyqGgz4KK!;yE~-ooMyXEkqWME_W9mleh<6tvnmW`ZHRD+%AZns#2FDe+u43EoQpOo^ zHD~umht_tB#k62GC`e}sv+)vBCp20XZX24H1sjKw&Y=U5#_vSjefS9B*qjVcDD#xO z6j;)Q!lL1}@futF<-h!xXMeF|bbrkBY)zR;ge}RkoUD?xHnw^7%~!E(LuuBu4niuo zKvuBZZ!$a1Ie)aKRbN7%O78sW5#x{6=p%z36nKTr^2ri=D!Kh&fL>}uCGhi#4KKp7 z6!+sXCr>9d8V;6lhz?!0ueT}6oNQfD%mstT6UYozmJwJs`@0+Xs>UkCg<9@4n?<^! zObvV89!5BnvWAA>+7~w1{hY&Bf8`o;d%?+S#Lm_Roh_R}%&|I}X?Y9+KDjxdy>oyF zqfd?D;mZL|*ko3YdF3l@9zQF&b!WwH?-IZA>xWbltk59Kiq0huLxn3EU<6KGv%h_b zY>;!<*kp1x;eY<0{u`Qg!pYH)G;u*oa$$3@xr@pLzHPIZk2$_GV!ykA<(1g>1=Y4; z+Z^3IMd46{CC}DV=Gi&vVoHFEYbz`_2Lyv>6YR=R%ppl?gj2I|*~bq!d$7*tV^ORy`kfp(P1! z=ib@kkN?$Qp=UXxvy?OupNsaXb=S! zQWi9O4KkBch&ju8!8wFTe=a=O^5FWt09!Kt5d}j6^#Y zwUPv`#cW)Vja_u1C{sgsuaDg}7}v%#7H7i=wJx}F?KB|+ z=n$$l*DgPYH#rEDdli5>5!>34AsKPKA&#=po{#Fy^#3=LA@A=OR z35=&>oG>CyYl=iunwk$jeuyi4c0wPMl*C0rvQpHgAX_a-mP4|W;R(+tZb^4M>@CYZ*6lrnIfdcWICm{X@6=AQz;Nz8T+pU z>|Ph#cuml1x|CJU=3c;~+c){SZv>DECd)a$_K!YKalK^!tAb^guv#tIZWp*=e1ZDv z9mF2|&fohIWm2$SC6va1Cn$x+juf-(oM^+4rBixQL^93U>;!Z=KA(H*Mc#e)6Pj*= zVo_076=ADE(00(G1l!;$@P(pUWcWoBx%Aiw`Z&r#s*+x316hEmK`Mcfno^fo%BI`f zz-URc*~C;Dtu>aEC|^*b5jNC;LH<8qMZmm)g~&)tc$JrdatuH5Wg#A`q+_OpfNDbE2k;7g<=^aQ@>2O9ptG z5rORT=36^h*qoo*OePS|GWsgOMG)9FJ~r#~8O122oTUg~lKCl7FT_%ku%QT=5c!I| z-99F;$+5|oCG`q+yZcaSx*JU*Rb%^b<8#-D%QdsOBTiQ({u#n?XL{_!K0Y02^FGYV}u+`oj5E2_$nBniqEtk+8{Wze-|IEeY)AAZ2U z|ASAM=Sv6_8i%ZMiCS$&Lrt?2vYdF#?}W@g)@;~5N4JM`8ZCx5$B0u+SFNa)32(mq zI-8A%lTT9OY3Ea8cr~z?Jt}zk;R;oFlvAH}Ai1<3B2>g|R`cYeg7LUuIx@`GC){{B z!uD+b*6+PcXV1Y&GOX4C)AbBnp5W2rAN=+&(=i%hz?FiM)%mh8emBmfrVuYk~~M)iZZ)EN7Lg9s|eA#W}eO%4Hv}cDf7oG zymXsS-an$QCAtgGbzRT>XPnrR?;5;#W;qB|Z@%ANt?;rdwO?QJk zw;qrzW9DZ|){Bb0-H$yl%n6<;@0;kEax?Eesz~iFZT%=KKE~*v6`<@BE*!M z$>7uF;{U_**&%`BgkE!lq7Y<>W;sr%YL|u+aAo5%erhv*y5P=t1|+&br5*48u9C#X3SHy`q07O+9=*Q83Tq0#rjj0IVxtp7vnz=< zZFXMV;JMefQ68KOo?^QK-*a(l3yKSy^WL^iW8WiG4W0B) zl2>2v;i-$IqVeRMx_%~pu#c}NS4sS!e8VG+0u-u~)~oc?gY>b}OqW_u@KIDf|0zD;kp z%VNA>^>Bfk2kiA)^tUZ)ca7Kg=w5Ac|Hl=N-!J)hfAB-ffkUh15idrc8bc)%TLH8h z0qN4^*@KwH(hx*@y!ZWQte#lRA4%$Y8{Y=U6SUhcwh#80Cn<#zY=l1fVosSQ{;S`5n-@ckx-bPoS1!%Up}L#0x;3SaOPY;{?fo8G+byahqcn!dZ!;d8(CJB3 zkWtA6H5pE$#@HIyxiFBnr66p%9J~}zW(C$-u{fIGRX&x}2nVVDo_UU~5~^2A|T=G?k9VI3RP)Momj z=0|@zpk?oqjvb=RBhW5JS4a(;-JfA3;CT*tzM|a{2vu-!y-yvK)JpK~58lVK9JWIT zS=MyIHjeUf3y-MssE44Z4wcCeR)XUjzVPKY@S_H4o>N-}-xX|ax53g(mt%sKhjJ>G ziz&171>1Wa`qy0CT|w`~2!AtXxH!RfUGgGESWwh4&7F|OW<*vldGT{sdH(e)496?_ zH!NZ?=c5m9Bdik7ujy_%{K~Jtju)&cRvB$Sq9$YSQk!S3POx)MGVX zaqVD>*>L))F?{^MV`a6l3@pw;)-_Q~+oy2=03ZNKL_t)u$F19UaYBL9mTX=3*nZB! z3pTlXd&$$sF;DN0xcU9Z=!xOrN)JRv+w0HlN=i7Ad+GR9TF) z6i#GgH(_TdppqJGL!mOVn%~GaXRDd z^eGikEgElZ)j?kuJ@Fc+% zitdg}l85M2A*u_O+wrpnx)gl#kKW_+U)$#TYaxlrDb@Q8*l8;Ik5TP|IPQ< zeO|NE-ea{|@Mx)sDnTYSu6Fq3qeon8?QyI}SdPPTxgyInI?E`;nw`xSx+^e?f@xfW zFKGrowo~xN*ZVxYKP4fi*$9Z5eU6S!F2+7}O|CSK@=3CasM+A&kM2{~Py`xP82s8N zPuA3`M(2ijS>o;*OgcbGpK4jq-q~cGRE)+`+Lr<6Ofq5zoJ|$!Hz3%u~`u zhSU~`o6^_}@I9C1WQng0*EU|{2RAt0M-d360QW6|bnN zsj2Wh8)bv3YpN>477mUJ*}9~)+2j7;1esS@#^vCW&*^(94?bSd-goJ|;Pd*IKF1^* zktb`cBIfqfM4o zdH27{?KRmx^oYwbxk%{rL$a*m zWKiOz9-iA^aA!)(4OyPe**V;2Jxa*cn((EPR^Q_A@OkdveZW?C2iI|#uO`$*NffyZ zXDhB=xx^1|KV-Es^g0o(cAwet3Q;d{Ttn0nG`)yMc*uL-et;-*926!`(Lx{t#VarD zv2sQjv1Yyotr}Q?#n}f_HnzGPAJ2I0i+fnM$I0+6DhHVZc z_1%X!%Laqh2v7OEvg7g(zjU3=&|pv>vw=1hi^YN{x)_;CDT&t!o^O#> z1|-x)&CmVL8@&5x?^0zpZ~W~&PS4h`60~jzmhl2tYP22k+TIQBKRRY~HfMK#mpD0R zwaVykx5+EX?0kXIhV-mL=K`y$>FjNQELk{nqE3(X!x`nMrgjv@sc85SVc>Io_Z(L` zC>s`ozgY$U8B-f>?}nJV##EaA+lpEi99+A~(`S$9Ho7EL#pF20_G`+OMl37(PLs1| z3w$LJk)eIvK?Z_lT$1D!b?s0W7TR3+6t=g(3SByp%Y2+N8yGy-Cg}Poug2&MUn-_2 zGd!h|CVm&N)@ts4GcucT%NK!#wEE&x!8r_;!%O-9}T7HM~XG5ai2I+W7 zGAqc|6-sH^ofc&-Nme;hmw0}}bUw!mJak#&*)CO8p_EIOmy|_`ur!VnkS7Uy&u_4M zwZ&2{8CMf}8*P%ACZ6PUx0-}R-2dnZ3utwH;%J5R1pThVhyQ%_6LH-A`wl7<_{|C{ z^BJrXnj1}uMNW;NnAS8*O^u>TCFy$2L4TLC#S99~fBhRT^7@r+I)R7nHt_u(w(C$M zQC5w#EHE`13)@y0A<1;cN8kH^LR%aS&p8_wBuen%*XoL`bcwT!qN=H?3fp#ZHhuQr+U4lIrBdSt@arpS#kJ)%p;kGo5AfSo_NwUNZ6*@CGWrz$6qE=*Cf)tXx zsOWW?cSR7AKmP4u)*I$mfx z)yQ6rx9=gUgnVw1pV!Qf=jgJ+b$v>s(Y3~N1#f=gZ9cj6F;Xbj%QaCWLQ2JKKBLka z*YVii=`mlX#A(dt<%p=S2%CcA(GyS{%L-FqzJAS~q-~GxpRu3Q03mfP>#tS5ll6368M1@nV7 z^abXEhL|olzC0Dlu(t_+7MiA zVH-^*Qxp)`5vI)WL&+-3=v?x!oruw3ieqY&ClFSJu4{_A!TfQ`Zof@*#ipp|6oo-( z2a$T5+?vp61=xPV_SFNHMUJvH>txOPnN4RW#A+|FlWnfKyQs+GkN@bqIG#hpQ>1lH z(|5S?_9Yf(!F*5>4`Qxe+vU-RM+h4}_e%#nI(p3D99nI`YAC4|n#0dU1bs~%O8T8H zRS{CxQ- zckdoXgHnpcVukOARFp(v#5zf!7UW5eas{QVxOR0Lry($5#iCr&+3YbpUot&f({FYt z^#u{ek(y*8Sgv!*MuIuvizx*XWzIU6mdo#KnpYtbwV=MhL z_8dr(lFxlrF+8%k{@f16Zg6&U%+bj?mL1aY6}?_SGLIQdON_60?sI!Qe0;`wG@%2ZIH0w_+E@m z8(isl%&QgGZnVhG4I6Enq@FW5PpPtFy4?*HqXpwfH81TnIZINoHO;WglLtrin!C)B zB`c;3=TltUK}!o|*C-`Ok`yp}_`ywHfBg+U`te7UMa9;3kLhfQsWh=(qicP!u5BqC zAFf{Cq%2}eQ_}4;aB*3uBbu!?t?O+T( z{(xpD;L2eaC%VvaID7PrRWZlZlA!jO)ipb|#cNKJ>s=qq+dx_sdwW+=BBBtWYmF&$ z@*<-u67qOWmCo>^7Sd@@3-B9ld><@jV@gAs&(Koh2N88G`PIMsHTr+$@xOlOd)&&W zZ1*;)bWs(`+vds1fZ_R=(Dl)kV7^@7H8e^ZtU5)7Hm$xxnWscf z2#!q@!Kl!TXERh=;f77_Jh)G-BKF?ukh)_`0J^G?RhzylNEb_#15z}2a`zM|9M1B4 zG}|pO3RBl4WrAf{SXPZv3eRh>T+LBR@$ttW^U@2?ap(RW44TS-sVs_8&GFm@wNsO1hTiTb>tadWsPP7ZPb&kXo08d&VrnlW zTV{AB;VgEt?{RRWNu_J9zwI)Zj!~VQ&7CGP5X|0Jl&g}4 z@OXOnDM8yu=$ds6s;+5oHgG!uXGep-p8hDLEiVX4NsX>9(6q5?Y$+hNv0QcG%sd$~ zJexArhK(B%FZk&||1&EBN>~I9Nn&Cq;}Tbt1d&0h8ZVUSYQcP6fmXO~M43yB1>;Xv z)T@dqKGU_!d6^LQEIjG6oE2vOi8v31~6<__nNmKP=y^98M~CXVHxEsa$xNDTF= zq_S&-Es5~asn24#V()s$(?`$H=|zJr3_@rYNI%CIO*+4T(Qo^sNtx&9Iwe`GSu0IemH1u-Dr2MT5HC|2*Ed)m|6~kxm9ZScWXP61g*WiSZ4y^tEoXkf^{r; z`;BYdt!@!07ncw+1p|Rh9gNl&%+MOLRf@DPNJ_SEK@D{Vv-3Go*u+RE;)G&cBc9tQ z%@#jB7yp0H?*GVh_q<@&lX%M!3*)lek4RQiUVDC%n~!2nr%R$J90 zQWx~LyNpLOo<2)az9gwjoG@au)#Ciwgx*e@N9QwMcy0@Kv1W0aAxjASjId*q<&v%a z9`}FnlziqO;}Uc3^5lHXwX1u$si581Vp86uza1efm%PyEVU6QP=&)jYYm?bxLJ)X_ zeVa0zlP0j&*kq85DC&xNSrU3}R;wwxw)o=ZJtk>N#*)`xY4F`|9^qJBR#k-zYYwls z@w%IgPnMiKTw!!h+vzizO;EOlEyTraI!$m~pZQ{iloqZRf;8Ox_zrKqbCqSX;B-)s zRw<2Mi}`qsk%9_ARhBq*fT#^};iHNjKK$`*UV3#KyB}eKnzPXnPUK=lNwX0Uc6{#s z`A^1B#vw`w#^WHqWW*8C~B+c@dkNmpFa=F|!9#EZ3#bCBg}io{#N$D4|&`=5#t6 zM81boHquh$S%Gp4Mq7A(leb=bi`U8$NAlOmFbAm!ya-dI6h(=yG?pcqPNz)93v^zh z9GBI4L|Pb*k58D2CTC2zKRqF|A}U|=!|xyQ(>#^NdH&j_7U&NN2?&)}-s4AgHkG zfNBY=GQB9gbBnxOQD!*}+ou-r$@_QFn>Avi!K2%ANXO{9LYFn3>p)%M2LalYNF=5< z_`XY478p|_Ylmc+veoM{oejD6(shKJA^#($1D{zD=tqK%?1PTQ8B`%aERPHuh^Hg$u6@bQ6edJ@9{N!@3!ZjcK6*{8JtJj37?7{6e1)3CKp)yo_)?-5#_eB0gz2KVOpBhW@Ze-$@DOkeq@`2OjVI z^+T3fLu)K2f0H5_7ytH{+1&{nTU#tvF;3voNYJk3g%>^vt;65`)e=W5$||QZEso<5 z$1$Gg(Y7r~lF;dfc)rVPKX{MZ&u-#Y6?HC1;{w}O2qaRiIT@oUB3`CAQj)EX_`*+J z=dITt!6YR!1wqFlFATlSE~Tw`{P@vR?_pi!^t%JR&IYO*6HE$5+aun2ea0}12oAo7 z>4xmy+~D}sgQg%UD=uEV$$6uYdW(6ixic%dG?uttgsCk_yhKz9UdOPtdy~ndy99#) z-A+hjB)%VDq(n=w+M{S%;$?!88II!;_II#hkGiTbtw9QK90yuMn&en(iFy%ryPi3q z^?GlNZQ0r1;nL-6IId!~nBz1DBw5N&ec~p`BIcEM-=)9MBt1!9Z1K>2$eq*sT)laT zEoX;SoRZ8k@EcTDf$y`oe~|~@c^7x=a^o`xyz|3H3`PNBt4DbrgRxlYl0P(*t)+{k zR6co;(&>a)47RnTX@YGnMy_4_+1VVWC0SCTr9%+7%w}^&<6Y88PPYwt_ni+@l6;7S8QQX?OcKx@ z(t&27=?xWiS>t*dQ&kkL$DKE3NFSP!!`5bxqj}8YC}-3iP){?oaWJLDwhgnz3QNmq zqtEGklJUj{-+lWvwDRcmMy#eWu96@W^VyPX7cNuVV`K;X!HC&%MXwu@Bo>_-rgsy{ zqGJD2!p4>)YZ^S?W9&vGX@;o+#$CnH(GlHFhvh1z_6j;)LzP)}b_e8Qj&UVkvnm#~nE5=s_%(7E9Z-(TnoGQ){jz{PQ#FK6OaEzZc&-_n?A%;tE=>Zm}W5GtT99Lh}Lb{yiYqLB`9S@YIg zcQLW$JX;~mihj3?z@W8Do(banCyd+yc{_nR#?&p1G+19zoL49-=yXF|ElFepl_ife zx}is%D%v*T>c>CE8xI~czP`!5qx*P~%XAXsw3?_a!j)S$ZTBb-Tk=o(#XvwuJL+Tdp-aV&iN{kyIjKErnKwx~Z)@5>&OJ6E(K6Aj2K8zX$x1!VOP|jDp^JfY2g>4@FV9ERtUijp*>}>Y=PeRU5SKGCw|K=USJ@>ylc~PRsaU4^Y! z3Tma0TA`GrYz5Y6!YCvfY*95i6cx6yq-jQD5;_|@XfGs_m(prG*kNf8@&0WmYqR| zyjh?^!K#{YaBT;x9r9{HV_Oh4-JKq4(@@MM<UrQ!{zDAk;34xS%c+z0f6e2Bh^8D-|z(`bFM(?M?Qz z=D)vl#7`GBA3f6X|9?^df8{9t$7=(oPQh!hB_H~q@ihl8aJl|ji}VcPsAYR!66Y;% z{m5aDE%HY2m7CYNy|=-^#${gr-gjw@q7e?Iaab&4E)TkFhLU@)y^7QV?N|;jZZVy& zTXdBd5Cj2MTC}V2tt2u403ZNKL_t&$cFpLUHwE2JmmrJ?JDb#Ktf{Gs0&Q!Oc!5RW zcpZAtfV!?J>Wa|w@f;UNt#c$^;E_M+EVOk)pq(`U$8|A6v|(43hPE`)_8v_U$=`Z)9lM2uF>{ML*#uGg-TbXm+(+R~%%Zc&~`JotW05!YOJ zW`o+V`S=$v(YvUrymmbhQ?A=`A3k_Y7zX^i`=@;QpQr)=@PU`=mVbAYlax>A7<41e z?qvsm04G7%zO1?O%m$zN^es9&pI|xLWuw=ycVP*uBW{I0+wKnMvx2m2na2rvlF-qH zYX?J=Bbgl^aWXxntO_dAQnf8nw~H|rlf`7KIeE4ozUoIE!cLE2Z;WXnUQT%L{wrkX z_b8_4n6lt}IY;^)uJ2&WjC482(UQ>fG3~mss;YCcY`MlBbO#s|bz@krR(L^xkdmsZ z$nt_L%kVsRtw?gSo^M$jeBa}X&p*e1`!D`$Mu$_rd~h9=Hk{t85HlYy?NTp%_V;$^ zZ7RmwAw`?f>v{ATP|Yf2ZCR}{s;Wk7&1|}$DO;AwoY57Z;DRJP=;3!FEQ-PwxPiv= z9URvI0f8T&m3q=LW(oQMIpAW`V!AQ_Z%Pl*vI(o-~Md?X0sVD zz4Q_{Z{FnRfBxrLEEXSp=GTAy*ST@y2DfhA;!pqdPoI9`qQE2$b*1TcI^^dSy}Czv z-0-76dqj3@aB4wO)s!+LUKAA5mdFY4`cUf@M9ZyPmwEY5Ud4AkT*pN=Em5EdJ04Nw zv7Aq-i-O$?Tc|*Bd~%KsVNo74x*W0l+!*UwLa)oPGomdlwo!a8{pij6ry!q8a>83r zKW1tN8HL!=!SnX{-~ZRg{K5ZlpR>QH*xA^k>G}M#FK!dK4%Tzl6l|eKV;$nEX1a>` z{`bGny|;hF&oZXdbIP*77=y*Z(_Q9g zbI#8mu{b|M*Co|*3ROv2WGv?AoE{xgBuj)XsLF(7wIt{bX<9>(75JWq6#_2`shWnW zHFWy}!XTh1OHNPMbN$jRp*9kfev(sCT-@H|Uw`rQeCgUAS1Qewj$+v9v6z%tYnUA7 z-2Lm4^EU+holUxJNR{PaK`H?TwCkZ94=F7u7;g1(B7@%#5K)7X24NIigAr6<+7^_g zYSsf!0@uYC0*%F29@(TMKKn0F9dI0n-~7$r@KlgLI^Uga+`Tx{6tD?po z!O-!j@`Ak9n4=iuG<0_?UUx|^bU8UH5TT&sx&%XyyqI(O*@&W1h`Gn|bVXGt!a+zk zvP5n`nJuV_3>{dS%Fye(%+5}65{XxJNV5zXODs8BSwb0+H4WCZw4y?KF5dt5QPMw3 z@rqNw}1zLdt(lo{OJgTO}wG!Xg zgkFcbDJk-b&Y;UG&anoR@|mwz1inWcmnb3d19v@T*zvHoA8>lDXSc-1Gcxf==TSd`I77N4*&BHPOuS-wlyXI2}`yR{X644B3)VeXOl?xot5*IN}BoNga!dx{ij#ik` zAP^{}NYeykS}Y&UHvEyEz|PJNpZe6N0O)i&Jp1gk93CF>$AA3CeEsWR2jJ^p|2lv8 zhkppbAN|oE@k_t-OE`|h<;$13e*HQxzx?ut&ilgix9~klUYD4vAuugL&=Tzm^o53U zRG@kZ;daA#5LDd?5oUBR)^wj~=v)UI=EU&|V-#nT1=b2MiYzavsulep zU?bXMXZr%f&OV|V;Z$2p?q|$TGn%?3%Lrn_CDe@%#X#HBGy2xQWvkV+=|uj9oJ|tyU|Vxp6fNDs0IeOetU@~u zrddvPjLAk zmfN>K#@6gzmdHoP-xOR1eu4Cx99`C+Z zarfwi&ZbM%v}|l_v3QhX%Lc5WXv~7(s2FGzQ21IKZ_9FaFmq&+(bV8T$Xo#ZZ($(wyhrfB5XFhh3)1xVm4?k@6 zZ-mcq^pySRcKfLL8MCC~@^F)RY1ugtc>O6!X4v+(q26XuEa+!7xSG}3lqN~&`96V= zU^15R8D%Bu4~9(R3aKQc!9FV7qBGhDQ&A^NdXZ0{$0W%FVJ)4`fW<7q_catb$!tP* zG(c&OxL9G*45=N$;Ra!+gK8>VWl_F|F+N%<5Q01}FhE_`I8xy$g%pyr(__M@i_|V< zQ&SWrj^iM_00pFVgV6>pG(}P1I3A7GXkoc=>k7BteUqU+;I(PO;o~J`R&!x*jHzL{ zEZF<_9`orj{Xw6q&WOEx# zM>0E~Gw64bu3@!m@q>_b)zI(u@w7n&8S`mFecC6|bGCMeoGzCHkW@!z5 zhhcZXYOz477E6WaMzpOWi3M#_;DddTo#1reQu6 zcv}m$Z?x?0KF7TWIp;~k!L6$l>PH+;j;PC;cs8To@6dbl4Arebq#pgzfH;nkT99Tb z(fA@&G{o&~puCpLTYXHC(X=&we}JbN>bA!BL#h_su8-f{rZO3sacHFhArJ<%S_7@> z&TSZf= zANyXuFaIDVP}enI``Xv|0a#oAlamv6c6K;EK4xocYyH6N@AK%<-yzH% zKYq;q{{Dx~nI#ocR5YeWX@R3W&X-G^uE*@Gra6aFqaer{#j4=!t%7Seb`Y7O zXqL1^fovU$Sdq(?y=VHIms7e|H;}oYS{Pd4(TNhzVEWRwZ~g;y$!8KYk^cAOPd{KwMGcLZu@oDvjNuL z!jt1t(^`YD4c2P1EJtZYHwr0=3fHknp;;wM6qbW4+i>s03_^K4ed>M~>oA)waUw;v z8FTGf$U7~6{+;imaz(K)6xTk@(R9LiyvbRrW>tbw8U6d4d%{-Lk74s~?^#UT# z!y80+n-?i%hbRi^^meK00x2r$B12;cWQ!CMZCa{TLL<&-(-LVc!dj}<5V~tcs-%PC z`_xT>)`l!wuEAxli*{V7J=&&0KG|o-)g(zmKAo|#xkrT|s|vJs@I4Px*BH}6YcWFL zxGq&&qoXdAHEEvVjk|no(B+M;E5E|++qe1EU;Wh&*1!7Iukx*LeG7nZed}8vD2K0p^{f2;@Bcnk zRdN6ReeT@3!)HJH*$!%Lb`phnB2$!yG)3h13u{2eW_ROU|hI-lId;eiYe5y$w zE4KSx4(~2`?K@M<%BM^;wt`Miu({tQGZk?eW1X7PrVI`?q2n=GB^1U|mL-lO(VmOz zduYd{H3o!55TRti=GF%1v-yX9FMw3wx|*^oIN0B%*X`pdy>=0WBF_qXHyh3q!kK^+T+q2pyNLejne}2nDrW$K+1f#mFB0 z(LUM@u)+}f>lX0Q{vK|3i17lv!6yFTB82;Rn>X<{Zy^VlQQhk#)>0#JdYhE8gVAF~ zySGuDEt0$>%QKc)j^~9`SxuXl&>CnBbx~8K8O!+s)3j(;Q&~Y_3`W7}{1`A8V=!&| zB*AGA!eDHJ=Xv;nkFkcPYN*N<9rlo}&nG_lA}?-@+1zwlr780>NqXiGpVoN3hwFM| zi=4N9_#WT?&b#!w9eiUkaZcoDR%bI@4N5{?wbWHflNEH_0I!jFrC=OrE`4STXUAnZ zTM}(}3^Lz9z zdL&WI&L_8!kzjk<#psgl8y%V`#u;hqy5z#uZTvkC6V`OyF6G;r_*FxC;*-_}s|AkK zxLQ-C4OPzUATbsLqrf#3C%nA9x$CRG16l;UD39dv`C4%J?gr~)ef>M z2@MRw2qBy&iW;nu_@R$d4%TX1KSKB}n-_1>yZ9-3mp{+ejemx_ahcTk5X^yo|l!9qd zN+E=xEK2IKAn-%tyu^2Xwl40{4HTDm0=l6lnXC|5$z;v}F zuXA>GB1|Tzb4lAutg$E&poBx<1ay0S>b50I4bHGjScKPyb`hZNx|jM zJbil9-lxmA_?TyI-l8l^&d;YTm+P!{7=|=W!}j(z zRaLIZF>T9iI_G@4qDV8+JZISNu}W451WjW;u<}jY;JTW+YLQZZ;0dhb{07(c5kh|8 z@++mt^Y@dO>-csZBD_zG>Cx}^nayTkEw1(vR?z9YSYhZ5J7jf2r{m*C9on?uyD#7S z&~<;}_C;QMTP~;_zX{pL; zT{<)kZ41lA3akJH%F(n<%f{vg!kTqXK}tLw;Dvowt8;?xkSr_l9T!~CvgO|Q-sM}b z|Bz+i^5E?y*{sALM(kbR;`sCkBV63Rz?dZ^nrp)?e)OM?h@2q`O`R7wVam5md~9tHen8z+)P*H29&_OfJs!Oh)AKye7AJVV2SrWK8Bso}D4UE` zcEZkh#Dlw24)*p?%{hZkhrX-mxPqgiqN)W-xm0D!d6_U6Z86>(GMO*AygP!YD1ptb z9(kV8=|nty_<$&i5W*l;%g3Mn7-we_c6N5ivWzQNuCQ7yxqJ5xAn0~O$~>jp4RKwE z@nFn!HbX0irdd}2thHFP_L|zZ#rJ)*)>vz4+xm%>)OgPNwpCR@r_-UTYwEhBZX1MM z$Em*KqJ)IH#ZwxqB(AGbT9B0m-Cju9W>lu)d|9HC7;T@PM4Bv~-jlv50;aXW@w|1L zZl3YQFFZrhrmW6ZbcbW!ImdRsKwM@fMeHAPb(wWMyrm>S1*5mKOpgTbPm0Fy27wZO`TDm|fXSA<&QcpINM;4D@wu?S%W{#UrNhQ}fDxLkHcXc>N|(Iw+yTCVEK3Ojm*J?(aIirh zx9p6^DEahl(T?Ec^byA=kC>bvkry$Rn$bp|#d1!k(?Kak7=|dN(Ar^pdzbzF1I8O0 zT)21v-}g`gwzoFe+uH%wq##vQqO_znHLj-!LKm>KrlPKkC$6ViTcEn3E=$7DCrx9T zy2N7WMn0WRh*kn23~f^)M2nCX@5w{e>-E;nL#;sxNwP}8I8<3pH|#z2y8YnC*owO1 z*@JDa>k8?*v_eri0V3K!xE<;uUpGxT4i?KYUXbN0(jvjE84^%RA+L@r^i@n5w6DT_2_PFAhpXPPH7DkRfW`=-f)Q24nj!syd;iutX0%cLL#j+fge7B z>k8TyvwW2 zr8U#{rVRQD>pp#3(k#aFHOs{cB{e6fhlD}Ii!Z)N+eq%-y+@j+yzs&c93CFh?RM$+ z`zR&Xr9UC4n+DysAR0C{dQ?qCnx%wcNL`osL65p>h~pI3b&*mbeU~&T@H~&QDsiO4 zU@#ypQk*B*Z`bt+T^FGhH?Cb_)F1NT!F|pbbAoO_;J9pVY%w{X;z`BD{R56p957gMGPrOF(c2(vETYJ%O-ta11Kv?d4w%Ce-X1-((1#8#Y~7gWuRQ8YxEnqhCu zg-(a9EX4~$j^3W)h=8JQxOQp8OrA4auDH0lK`AW{Uq8h0BEqrH;%LFn&OVRt&#`9h z`FO5ik<73{BZXw!@1T^S+i`j4wa2t+KyfA*-|FD+!}&+Ni$5_Xa5_0=Ykz|@u^1}I z`@DVk1V>7citC@az+e2w@3AxJus!TDPZRtNpQdPNs&$4|DZ_jk13xp&$Lwo_Kd15xq0&@4<6nl2pq7QgROnqs-`HPZZ(8{ zx@XkCG-P^yM6M-~tzl(3k8{$rW^_Sw`3rjpTvWBega3Gk-HxGLF4^e!XzCKT6H=`# zMO8A(6ZSe?WT(R-Q*7CQtf&Y*ur{P2qbwFo&hMeLM^&#`cA7RonHud03UX9&&g{Vt zFv%GkzK5Yjdk)(5@WT#OUQjhH#t5WkJ@&k62)hx&SQ;$87jSxZPF=Mu;~9f~53O9P zDxs|d>byV)tV@JSfRtEjtWtQ&L-ho+$&|`S+)~mgMOjR_+Ev_%W4h6ZWw~VcV3$WH zhqNIKdoGjtlzJ5+aTx9?Y@2ZLxdR@&cS2+$x+4dqp+5*XdSeESzz_RmaSRUxsvR@X zo7{c<4q+LvR5j|_M<)h`p-2)|`zjyNmk+{<3&u(-#&=Z|>x z!5zN*<)32jU_=mjT)A?Aviev34kX_5|+y)Qc9E%OeYiCw#9LLs@hQ1E&JP>gi>(z;to={jD|ymki7fuyLg^Q z7=~DDky0R~pf~8^haO(&5_CKQ-^X=bkdo18OsCi5@$oU!`JC2*qkTZo0JXKazDH{t zhNC{+PKQYQR7t^fI;GotdN`oGr`w9t<3mPWjZ`gqyW-0g4Dr1KTWkB>;FO9JI$YRjx>u>D=at!vcyNZU}=F-A;z^!QEU4z6<}$amZ;aGYz=8!;YS^e_G!z8B3|MLjwtPdyhs?2BTNNbo0m!Ak|GtDwjvrR?jPP`IPR?bTG|ZN zDr{UsuIWb}{h^QWJLC(+@oNhnzw(HVif{v$<)lPs|A?m&4+ed{ zZcUudi8>K=nGr?n-T^2@u{UBQJ<^_iw~u3g+`cW;E$2CFN2+Z~Md@S`EdJiX~+ zna`+9M$i>_o`)2c8_!*!L301_9_Ne4q{Wm@*Cz-$6xaIGaqE&gaB&Lbuzcs-Erv^~b}fuRD9lMGrmi z;1pf%zbOeFOK;al5^?yqEt5Mdnyls1pZqjG{lZsye4G((Y*8DHCG7dKG8g|_12r6EmIQMDE4lOuw@i@#+V z?|1M5jcGK!&}TV`(MD31D>nB=XkRlNcPa99h@y}*)~qzb`+r zaKJ&~D#^`jyJ*!?m6G|S;B<9{KLVtp=UEo>M|}2YF5(J@?Y%K><4}^~yDrKaLN_Fy zCiDkGIy-`Q?oUaZii7S5V{$xCFpM@)D4?ZuGsag2ymS1Jrb+NsO%MjSy1|Pyj#QMz z)7|3Z`C~SET}<6!nIyQgoSFh@44XR&T_e; zKN#`o?0ije?RqSWgj#uY#v5ddDHku^B#c6gDM^x;$>bbsEM-{{MLyw{M_j}hYe=ga ztp%gr0M}2D0t^aS8(gJ9OR6TralCa>ZMi^UI6gjPnPiMNHnBJ$1+y}zYMx##o*X|t zs+`R#YFb|W{B0H|kC+@EQ)z`NESvo?$8m`~zsz&DpW`pT^De}+?;hT8#DPeCw?LbQkrNQwcBEN@{8tDp@RZuIi9&Q*gefxF% zY{7DRLf}b~QsT4$d0~*+rN}E>ZNSs0AfRc$lL68ItRcpgm3U#q?2os|la$d$pSh{{ zzrOvKY=i+!!mN0Ar!ZjV~78C_g^`v+Ia7ArbIm)2G&*CSoVbh|x@){v$p))X|xaCrKdPbb{EeT&s<#%wwx47)&$q<-pk7iId?_0p!ars91m3X*2su{Rn-DAz#>NtR`_D9UDyQRoi(WJ$XA zP^>{H%_@!&29)O!NR4nMvTf=5Awo&cCM$ZwE~CMaWj!Td)C`=ECeKlJo3c1(GA+5Z zF`^PR+ZPVVi*tHm$mx4a^0FmPbL#pCr6rDX$+8;hN&5XRlgVT~I`1RoC#D1rPY(&Y z65A0t!eJalY)2lOdl7rBN0H}L4`M$5)BiVf?-6uccAn=wJLi+bpVQ6V_ulS{MgwT% zP@)-4f-+^7<&sm$L88rxv&&VK$^)0n9=beH$rPPRrc4cNQxs_cq8k8-MmIX#zJ2@V z@W+$G&S`BAP8SWce-Ij|s<~!ojrKbGtnaM#eed_Y4c>kK0qvScf31yFN{mMtX0GGZ zbn1;3Cxbcb+ZL4;vUT8*DIsZ?kr1J)3UaOz#0iRIFg)`qVwsn3-Xb0?aaD;(*Vx$G zVElB~o*F)^M1Q#?)&%ep5!mVm4p0zPZkH5@4D(Q5qtN3fFOY^x!F@;gG}U zhgfzE(=aHD94ZA}SCJ(hCCO3C64$bbmMMQU&!!(+_l4^lJbC})-^b3z8mY(#mops2VLT4mbo<Y!wB1RpROfvRg-2EK0RRl`WJ?$I@LY zNk)=&WON)w;`H|SNQcib4TVYtyIx0CB$70xNK#zaMu?nTR;hJ*Xr>2cMY>#26ssJ8 ztg2X+y{hv&4yR#2CNdh1iJ@vJ0)oIt69$$Hj$T_`6J#CRv`C_aEX`H|u}sD^4T_>9 zFLDe`Lr+pfumpLP-_Z?=PP-yX6Bcnov(e)8c+70-Q@0d?*%@gpbNNDt)8{i@dG!`| z-@e1;3k_UU-W@FY@@ua_A@TZme}E)w$TB##g{o;7hKYoPB>!}tz$X?2G7(b+6^1Ee zdM2ag7{@JGPGiy_r@vX_;wyVR84daDXD+jth7=+u4HZncM7Lc|PDWVuO}r|{=wy@@ zq~(lOPeBNoDm6d_sa{~{HqV|9S!-^CCh?>9-{aQJ3ly3_sS?5@VKSR>`Qko`c7F6+ z`3DG8Ng_>Sgj9h6f|4>W$mNPgrwyjc^OGZzBqj&~9LL6SJ*sL&fYD5oPP;{;?$BN9 z^4>eQsf3{0?GgAswrj5Z8oO(lh6$ozI-R1(D*e_Ps-aOD6>$->b!mgA4-cs%K@gNE zmB2C;`rA$B*@8;WkmM3S2EpsF zfYI~>x2{s;3AWRrwdZl6eu-CZT;tN^OKjA-2tpQzcZf5EO0z)osHBo$F(eNJizLL4 z5>O2!6g*w0%p}yTK(162$HP`l@~T2L4a!nMS8bF^L!zWA1vNvUZMKmV4UK{*2$0eQ zNm5WX^-mkJ6wN|aO{CQU0mIZ*!J#NIbPG|edIH*=29xm+6czH4G%Z%W54MeCyJSKT z1OcsXpGww<(+op5kTjJf@hL?{Rat+UTdK;6%GS{XovnJ4=^`YUEoeARmT^Q`6?E6y z1fvw)jBzx0;-_@>9Ar&HS4&zg!A4ufuyaoQ1huL#yo!epPti;rMKeJzsW~-5-)BA> zQma|S@n2+}fL*dk0#xA;hYFgaa`rr8?~2LwS9W=Lc+B|zjGH(2IedObkqOESC^d9h zr9#l^dqnA!_Lf4eZDE@#VYEb66e=Nea^`ce*&)s|{3PJgrOOm?j;tvdwuUAfRC$hL zcG$hLLpFb%MYy2VIsa~~nL2S+q8SqHUYjtAFjR>uFR@GuNrf_(c<;j>vE6%t&=1J6 zbVa2p5@g`Ywaa*>j;$#;hJu{V`0C4-`Q~5w%lzGc@cTS@_=vnLKWa*=Pgx7%O%>47A#V}@s(Hk{HtH2)965+BQl@7EQpo? z#d3*JZ_OvWMpJRp-~di`}&RflRymBy%ff-Y4k6)3Was+ovfK~puT z1e#IDNJAv6j%_O>aZDV}&@=@_U0H*zdM8RWU8mM=p=b`01YsC}BqJ*lN(EIVk>m+w zk>fUM6h($y36^so)7CI`k2p!l5ZDb5RaOYX5P^(kx?~@fa`U`El@x*?Aj?)10OB(~%t$TgYgJiCpE>>oSXAKzF-ATE#4r zoXra!x+_zv8DIRy=Xm4$Z&7QysAa|FD+fGz@`$2HF^#{#B|^KQW4INXqOkDCxNZ#+ zg{v2D@%DqK3?3#3se#$-GRhO?p-*0w)ao`uEg8&4lv2*#)jEYXrKl2QRiRdEqG_v4 zx@+r*T)|Zu^y)2!N5^DI#4-t}G(nDF8T!2Xh1Up{0bvlbv)7|6&(D&Js-%!gBu!;J zTOc%rB+oHj4;hKcbViWO5ab-6JZCzc(rUGkBnihg+1uYilo^IDsJSYxA>+srHACWe zf9JQb+>(n|4^U)nC4!+MOJgj{q`$V#wQE-i(-4uBeEy}+b7lQ12noa0Fl?F0VnDE* za&~sc$;k;@yDeH>hnHV{f#cB=oSMrQzHy5|dW_Oh2}o$KxomE>Sl@2a`v?;AXNRnv zf27>;x*W9j_|(=-{+s{ozvS1x_A_)039%d?g;T=tl*!;2OVxS!;XU5`lOJ&Rt@rux z*#qvs^B%{e0b!Id7|eKhf57u+1A-`}QVPl{q?!z2ct)CqAWCf2rD4_(lr-E1vJm9) zn5u}F&E||pLzItX)|C)crJyVeOvgqu4f4FC607p9ZF#tjHo9G-k~K6{L)Uc-RYjE* z#*-;&ksp655yB z#A-nzMl?1Q5;3PpQ}R4uI5@?tIT)r)t^OA{C*b=9VW43<6`t*3NCHi`{K4cG5JVBHtw&Re*A&MwT zvJA(vFbr!2mdQ(6woDkzs5KiHmP3*iNE#r4sH%_5KP61l!O(O(+oC8FEXP4HOiEQE zmq1k&ic+QwbLy@~oE1c2gb;#KQBYNrIF8AplsrvwOdH+M(1oC9$<)ksrn3c_q+m5w zmSKfqlw7#b&!V6lWsXFdwB%?ed$xK<5Cx6sIl}Bui-HrPEqvpk5F+EqslU}A`|B!im8%k8I%dV?g8V|idMaY zC41bsaf>Gp582$>k_IdP!s`0jw+StGMFMJPv`vAfBB#15B~5w z#IeNA?iRLfl4T)zwnC%V8V!1D>wNcnuhZ&wd35&)mSJ*bcZYbK(py_+F&Ogb(Ic9d zZ5|%I&$TPBa(r@%q^N|;ieNFvsmTaSqP|^cHXc%m^Bai7PiQp#>;KAMqvyF)Y0UKO z6p=>cMb3PBL=sKO5|u?9FdUsQp2*z0{eZ9k@~<#@dWRtM@v;nm9)hA_ITE^50Xd`L zoJv&0S%O{n$mRnytw1CpUaO5FsT4^8h5%798qH`m8>DeWmc*Evf}|?QhJj`pRDk&r zHOg^ZDyc#UfuXOOggmcKnI~A5g{m27hDqJ4;}{xoEP%Q&RTWJD{qQEo^ zT*pN>^wssy(6MxtC|P2tI(e87WhwJwiE1k})E38wCuoL7qt+lt(Cyj8p~C&g6Dn1( z-l;>8kOeWhsgarron8YWU_PDVcq*nUGo1(QT0(Z^-DEtD;U}Ep zetdj#Issea;?*@4vmu`6lBEh!5kXm?%F3!SR+UJ~1X-Az9xZXYGG@cZt~(S`hV7XY z5u~9^g~lik&~%BqtC7bMb*qhL>CA#TikdTBCS16%$zZf(@4^O_VK6;gayD4t*%pp9 zV6%IPba6gi7pcV56*N;rH)Ld0C5?RyL+1GOIR^*(OlAQMyUp3*8NF_gAPkYH7@Rz( z-(O>Qdz-DzCV3K}$p*Qh^X^+e33Vq zX8y{D3RG{SfI*SwuLPTri&?3siKw&o81kfAi}J6ooYG zHi}S*6rDs~;)kc04GW_#bNR)K%vj*+8I$=jYyAc_7Y4&6a;{KwEUGN!^mNI>G;rPX zO-BCnzxf~X`@i$?`Ptz!mWvrh?h`GCJbe2-EU!ioBy6s2Gnkwr3Yq0%K)-LYw%(-X z$V7$)l|r6ISTz@^)JW2pv?$T^3Psg0Oq0L-E8j#DDv6}5psAIF5Hh}2GMkS`qZmoo za5_CGS9t(cHOSI*Rf4S~GLay$D*GwAhNQ~Ka>Zgf#6kweLbVMfNk^`vKUIu&x_u;( z5aub8u45`1)5!!+SFvj~6nRy7h|7X*x5IEa07;_NY=g2wxXE%%F;93t8=|=#^1$a8 zfAKHzC-1(^dZWjKdyjBiHO8|!X(e%KzehBYSj1zt);m0TdP3*QCQe*ps220_7*WKe zB4K`3aP8&>j$1>DavWVpOC@4IVPk!Z#d3^gLcRXe(|(`ab-?sEK04vz-bGBqW;8kD zY_Q@AIqgn^IGD4&(;HsI5rdVz3xOxx>YnCD-EuJ2zycmD33 zAF|eKkp>xOr$gq08S_YB*cy+I4_A1wt!)B7K#_7z2S-@0g~`KFL7mm8%vVW9hbV{uIS5(f+Pv-z$d54bgZ8keC!YD?T66{8uV45K-7K*A<$R*wN zO)SeIj-!>^v8sRgx#Gr5Gs|r>V|aP8tZi%O=P_Bz4!Ul)mYxmt?pne zCW$2>36=HrHP-r@+}c>I z@UtJAFa3nW>0^XkF&HkGhB;eXtG)!+GMO%BG+PEyQc&x(IT?;v#t~}W21Cd59Q-)O zbZqMDJ$BdD+1st87k60|{cwGrq)5)`fG)oDC8Gf+DkQG`wWS+@fkuYtW$e&SU zF-lwlVkI$_Rf=(&7%i*aa#_1TRTi=CrJ5>tJkjbt?xg_a#X^3z{a|PGMjO8 ztIN9Ap-^&k)8K`j9g;Gml$UJwJpAQfVA=52+9rde6QV3ZQY184LslgA_I9a+Od9({ zQB1>aq8bvSOwnXPDoRSRQe^3JMbGotXmlvk3`5pg4rU}Gz)~a>Q)N1s(Q@hp@e;S? z0Xjlb*xuYAi5IAD$s`;Q#xk1WlBNmTPw1K(9i7p1Z7joNHuIs9Nz#HKn&O%b9BYkQ zz0KWw_sPqW*?htJ`Yw}MOuN5DQ3~es1#z6va6INg%-{R%|ACA9yWG0wktO`x7yecLrC<6t*=SuvNUW$tfAcp#w(h~*chCJkjt*z!BEk2k zWL1UH>M)NAVxgf(CTgR>ILc7H29=~>8!AP^p->b`%Ooxn7PB$G_H*B4yVb+iWJCec zVv6tk7?w$yWlV=pseqya)37nLb*c)IvLFr(3`2q)I|51eagfX0UvYCRKdt z>tE%AJCD&Y@eGeLN!i`rVL6%d;e-3^9USoV$pg05TU0`#Rcj*W5wqC{$xyK@g|hHz zb?WGjMKl}GY}SA3Ui`##0)O=XypG%G(A(H&G?^gel%kZ0qZCzBaqAvgmSY(%j?tvs z*~8X*ERvGPM+4?jOeIuqT)jb26j+8vQDj6>OcrKTr9wLPxqfg7L5YTeqgkY(PhQ1D zd5GJr<8>M&YDDR!$X`q$JZ_#AQdrr8LV*EvPu;B=!(jf8!w|g9O6`c{^~dXJsPz(l~hqtGWiKfq{pY{zr%;)Glp@BU&+LZMr3G=s)Djr zCvVqDS}m5gN#1QBHoCYM_L!Owm^mlqglV}zwsqFGFMyDkPex1zhos>IiB+w4001BW zNklo<6*dEI{OfrrTy`W1Dt&9i_}M6d9*o z=k~*QaGMr&&!dnFB1LdCS`cIkFI>HbKb>%O?*K(qZ1fLU%vADJ!O(3E4lW?c3AMUL z8ZC$x0g7yK=iR42buWHmK_Dv=9zVE`KN+&Uz0GLmlNTvcRUt%4mZxZ%LA~Kprh>#T zkYb0Hv(8q3mprQQv}zga3=;<3lLG)>LADNT=H*&r=-7!Z1{}x3>^giCeQ+%oes{)A=dKCl8n}&(2+U`<1VqJD=7~0<9#g zJ6Id*q&1V&(RjKXac_LYhtD4ns2M-_@NL@L8~o_;U7jyzjF&0B-Yz#T+~VK=*M9@0 zP$ z?7@BQy6)?IpXclRWdiQ`Re7o2u}q8f^}8Q)j7lD=e89HDg&b^2#|nRL`iChbT6PG z)@ffh=$1&owTX)Gl{k-zPCZnOTEwcWJl%$>^~axUJmuybE#-#3fP{f_x)G6L$L0As zXv75J>xRq7<-Wu^N&bg-szW7f&X*IK9s3e@SSiD!KlA=?4K2SfsQ0ZLq9d~DIuw6S zVs0%WIq+c>;HaecV@WG-L`0QJ%9ckLYUJz}^Wr%iuaK#5dnq?Rf%L=j5u!_n3gCcNo{hZrA_Pjd4Nhgo-i!IurbzEY9Be)T1MGpjCm8B!QT$Imu0eI z5Vz&o&c*3End1%$P%St|Bz~yXrOM7#VicJFk?+6RJ^iSfwcP(V37x-tc#aNc^ZL8@ z4-sZr{Mrvt$Q{)R!$umO7o3JhTcFKcd+rZaPs06=r;olNe@^atZbypt`fp7_^ZNfu zJi2}(&WgibV`L^JFGWN5Z0LBQv?UHQf6FAUr|Msc=DcXKrQ{O5$!UC$O?08m(5&HAUI1_t`V6s>*df5NHJv|{ zMlMZxhXAjKOAmAV3=XLLxw^<06o$^u-971 z=kk1Ki^`6Qw_;G~(yoUO&AmjJl_eWe)57OdYAN)^=MAWr&rzX7?@uK8Xq30^K)v)8 zDEutV(M$3YJt%h=h-Z9Ac*77kB^_Wp@i_AG7by3iLM)%o&ttLQ zZ?C>f_)EOQzkR;V)?BpU_y$pGwDE)t15Kv*(k(7U2Z#^v2jF1f=wX4Z4GI)E32Vt_&_fBYj{!kgZlWQ zR21TDFk|w53wP5-#6lsZsqOnfyRFYgWye=5VFr<+>Fc79qmFC7r_uhQW3JiN{zs{h zU5Q7IcHhX21XuJf{;I!Y#)px$x>&$S;5i^rwQ95SX zFA?RpV{!Ms2b`z9jz?w*@doeHe|bLiuEu$|Jzg{2($a75*8Q(V`>$cDW#kg_mw`A# zdnh|F)lY}0MAsk$G*LCN!9l$%Uf$$vRa4@6AnE&$T8m(6%{J5!RZ27ht^_TQA-IRX zE0^9E%jyBm8DLTs=zaYRe=E?6G3mzYC{Xh=HB-ckjct+>`73pjx5loP+aCv z9$giDaM|d2H!i&Bf?TdeGX&rI#+9Apx4Y_Rif9;b@e&NSpt9KXICYUkp&}#62qG%4 zl$0C7+%}s2vkJkpt@AOuyZ_=w@Ta2&UiaMxeh=P_E>}$Cr7sVR;;&-;xx^HAK2Fz; ze>omzn*Pz*mHDOI5AVj_cfE{@7N@Ki>Bj}W|GvC@^B_hAvHM7SzBLqtvK>kKewSQ- zOoF~RR|ksAUnb0o7S%tBb(wV6xx1ZRZz~(XevKyN5pify(M%kjo7b8>yAKK? z(ivT8SED8rm&sdy+!F7yX7yTG`DQ6)es=8MKa(Zz8&0^!P(F@9oO6Cap2?;Nqo|^8 z7SgQ~ub9UgQJ|tm_NIyvYI7{RXo1zfXr+EsK*vSQsD+K`^aOCI9x2S0n;8i|JoAE; z(f|hltUCJWi9+i2pN8LMGB~+Ex4$q%z+)@keHgFvU&}@!)A5P4ZA4gX;GDMR#q_-A z3u?>S$?~NHd7O$=DOpmvb?oEfCJc8zHL26RZy(25Lb5>Sb8i2t+l+@RUZo2_eVV9p z3~M3A&K^D>#M@rwrfN&N=H88p38F!bp9fn!T`gO`+VWUu9P&6LQ$1v*M-2IyL(lL= zn$8)swiknBL+)l?ZT#OIetiQl$zialWG3*zH%}|Ea%GzSwC{>0@6Lp~^0SC9(NJYw zMz&7Dc`&2{ZI+om^9nbHmae*n1&kYaD0i>z;GRARL#RAuKJc0jI&)N z_NlOxVkm=Alr56CsZyF`HMugaeTCm*-cFNj-hB7J`7~xPYvN-t?VD472W>|{aht*dPy2`dL{MAD~@~C=(IsJXWB@>PF6Xu=jW>fwnL$ankB0+#U`{uP9#i*mrNZ{JO>$*QAGIF@6xVcZ5~=Qc7O* zlj-P^$qVM5pe({+Z32`u<6~sw9hR#@`lUdP4NXs6ng|563{7qE1i3Qf$YP zWP2de%DS3**GelrBRw_R6sJ1p{k#XXhnba)jx(~lnm4j0`SmA3Y!rckS*5P#1>${n z5maDIYbQR|b`E~Da3)Jt|G9x0Aza<1RQsi*tuu~4E4`C7mg6utF*myWGM&A4e<@e1 z(k4uDsO1G3QQra}gJ?j1?5nFMwq1m!^InuH@ObH97DeVK8%wv&M-1(8ftS~Pp<6+~)@BIj^cgeP1 zY%ySs?l#R_`;Y(7rJCd8^Z31f2~lNdxBgG}z1QetjeR2p~2Whmmsj)aVa&Q0A zoc274Ke(Y=AD*QaZyGBr+cxLdm$p~yH~O@|6&AhWQ@?@_ziAh;5TnvA@ny0ETwCyh zo!V&J`_9EJdT+cLLnVJ{T7+b@mf4_-Lkxz|uOBUl*qqv!I#vQN<6|)dSgnR2Wc$cM zvEu~|6!q`qS>-VWm`?s~WLD^0Z9VAXKlpMJRhss{>A9&(`ntYX-OraT~&15 z=C|#E6o|4Lc@$flG3J{1r?+=+LCO`smOLmZm&vN9Y2xOyL;558|I8a?kZuMRg}1#u zBt{c;HBvIMZf@4!#bpT;$TS{Fmo2iHZ-6tgH*dI}veCI-!uxso+y41A0(ky{lQ;@I z!)~f~WqiLN5sF{+OC-cEi2}77p;DVXg8V~?O^$4^p(ml0t|(XjP)aMET53Z_pTS>( z5uD7ARJs}@m#QE)zk2$j`f4Y3@pmZrQZcHhe0 z6w5;Qr|_Q#K8LQEm+uzGMFHT-Zu4D-vwYTzgZ3^J$l&95FiyB|y&rChdQZSE=lpQh zYA+-MW+Y+$V_^4AC8wAzS3MC~S*zYM7A&R2E#=tu<8cGmv@0N`%h6j>Qub=&0X-zG z!MqH7XP8;nQ3w0CHs>g2;?w;C$KL)^A|w@nfV{8FMYU*{rw1fXv*&o;?VF`X=_n5D z|IV&=V|lHYoEkrnrmUqkVOnOsX4%~_cC>lReEcRa{224Msd6E;OV``mHaW1~Mdxd| zX$SGLuTD*8vl0O9QheeyOMln2!rk-j-i~UCyY(Ph)|rwGi`~V>-oby7Fa8Odv-0tI zL50n(R|<8^hb0ps(9v=@QO3lyN#j{$V=&XA-%Zieqr6Jm3-h3#t@k??w{W5lN@?B^ z^0w~1)2%Y6LN{k-6RSK!Y27IHl2sS9#lyoaZ#T_GwlS)*MmF?5J)|n3-za%hlhK5O z_^pA4pTwQ%x3z(E)?9(?0+J89E9>80`for3`nC|k|MCy6BaFv(&weKl1P`9xpFB;x z?z;u+;Epj87oDG7D?7bp7}vYW5e$jl&`J7CO6I5{EyqSnJWn0Icpm1dtGlYLF~qSf zD>7cH>r#`H?yr=pn40`7&~_(kY69NLOHqDC)Xb;^e3!&ppQ|I3rw^b5LsJbG2nGxd zBOvcl`WFEZnyM8)%8q7;{jSLIbev>?>uIMjSlvSQlVgjr+1r)QJ9eGNr zLOu!lg^(`&>dJ9MA1Cy=;fv9z++V*0zkZ0}Xu0FNy?QMz72y8gJA+g#q)I-Qx^e6> zNRs*G*lZ=OSWYmmr;p?m=q`xolYT-kaEH7krKFToeo}`ydW^2#r~hjo z`z+6q?4|R|{(7FE@BHE~!^cCKAQ>}~fBxC8vQQZllgsXNb#3T`;>M$NDL2|-ke(aw zLYFTag#1$1d{z}8w!3a`Xv=+(KkgBQ!UFSF^M-#kpnJg=a(yCtBF~tNkX}?^mD2vz zIW_b1$mPUkNBr>GF~+)jziZ@V2Hhuoiuo%JxZKeDdGmU$fBfmXd-IpXQ`}P`y8PFF zW!0z(g`px;HbEia;^r9;FsxbhL;%fRIIJfh;fb(uV=k8)l8$lxo$VhYTr z0YE;xh}eiTr2(J$e-A=)iiA`4KlwH=_n;mhu~o}1Uty%(?5_tB)3qf_%E;I_2T^X! zuWW4Ybjt@6OeZkOU9AeXe%~xXS=M(<8{T0cMBwme)VB1LxAt=a<)ER(IOhCR01=xWB?t(dp%ghBhls+ zlsHY2PuKPNQpQ7oWPz@#_YV;;I?pKr#8GOmrb_$%?W9I_#YLYLnn~b@Z4X2V{O>Nbt`%3#ltdOpz8kW>2Ij! z$*knci7=h^wMEEXsEu5q*WQUf+90GVV0rT!ue&qy+lnoSt}I6y&X#N&$*mD^P>}`a zSIQg@8(B>SQG8tPs&f}hu|;Vp0yWorujJyk(z{9B)41p!56)httcCi?hCcpTzxi9Q z4f>+`1IRTt7LhW$^(UgYRtChNJz9pHpqfzsmr1}!0?lOzkW!$)fcWxg#B%4RQA=f* zsI_*dr-DB?q~|6ey7qGu!y-&!RB+YY$`}d+1T3n}*ck58RLX}2#}j^-VDu6~Fu_ys z7Jyca$(8tUn(Zq5TpRQXr4^4XXJ^1c5kNp(W<=!h_z%w9NK5Zi_AY)(dkn3##SyGf z=9CI4c!(ni-;AueWt*qT25D+C z(pOPuOcvQe*OxI@o&D};I-)OMTV?E0y>u>Tnjt=^-PqDM>Ds9=;!J~2lC`2O?6%u4 zP{TyiUvug>xudjNH%1#II^SG#I|lbToRF?1z2H3CST-M{;(JpdSJGd+Xx_SgAv8)M zR%e%2xl&xo%Wp{ePvFF69|xM^b^6FeFBZ3U%D7nV(sw-@lHmV6gmSZ}rFs6R%;vQ? z!^4Zj=Ukw*y!CE>C3pMq^WX@6M+dJq9JmHX7?D+>z6Q0J$&i*xt{uy@@m z(`upVA1kFWh;q%%T7qAaT8fT{yc}t)t-Pp$RlIz3{yOwQdq?Qk#WoNNijX!Dvbb^i z(+;(z96MhXdJ(eS|0q@%a^d*B(;Jg0Trw`ODO>33<${6Qz*dID_uYZ@?b|hX?}Ht1 ze#Kx}ps$4@#6Rvi#RR2+t)0d%;neIOTQst2RCqSe!5V_k6hmfar7&5M_!mQj)2 zMqkKEF-8tahtiDXc5*k^j-~=iPy^Kx)f(JONF|C7lf3CXfji11Ctj+pW$g6g>KHBT z`ZPdW7#kHUL_{5EwcqUZT-|m=B#E0EJJ)w9cXYGo*7eP?c-eq(X-#W)@2s^Px=eo9 zQ#D;lm9{?n?paGITHt<_l1^nCTj~&z@+ud-YG}@RNB`QHzWnWVb(?JPFWE^dMAlZ4 z9(n{qwb1Ir)EDEAr!j{$5K?l=yt88yPfZUi`R_K`&pDY*a#g4fd<+WQ`Uj@{xnd&Y z0mD9ZG}_%dh2;i3{2SEf%q0Z$)_PvPPi#bG)BR6z{kv&`!C?n3>K(n|M}vc;x}bvB z=I9#gjh7l2AhQ7qmxW{wM1d8;+s{v-^JCpH7Gr=eQ@4p;zutOk$G=XKzyNMq%@jfWD#mjUbnQ zhN!R@TM5TgW{=(dcnNpr=GL{JIaNiRKAEO#$BPb2E4|l%SZi@qntzp2Cjy{xA2U(SR=aLLGZO=8_4py5^I@ak|?{c^z7zqf$ynWcx~ z1tEpnH5vb&WM0mbe1HdBr)p{GrD5Uhzwaa!*~MRMWx2K~i=OEG#NY6rSd9704(BQ+ z?@^^jcFhBmi6?o(Y48>=V)UOCTxbm{k4giRciQ%u6jztyt zUKdY&B6sn1<+B}QX*?JVzYMR0LcIntmW72#PrWk;sYQ}(kll0eG7^^ z5-Dj;h@5%u3<+9@SoKocsAKavT-gwq1hGyj88f&J_7scwh+heAO}!MqWysGj&~yJf zK12(pURgOT<&lPEu=DZ4;Kfe#iu)Wq7>nEgDN^SM?EUFs)6iB;<~4v>feKswt%|s( zSJ&3<#4Mo8u9>^Q8miKdGD|Xh;Wi;FAuen0wHNK2HOqupIZKw^g^kv^ma&zG*ZEW6N;WTz>!Q^x4L+hBa**GX!wlp=s9=#f4sp95$^0S3&;cfqcb>(~&&?mZEH}0)5JfToNSR|2OJlmYxp%gE2tUJx&E%~H zw1QWphQBoC<*!}+izT*L#vRK@83y5(GC(3T;{u!(Zhac5(qbq;E>VUZVhx&Bpuz&c z2bZ*lTS_N13=~yg6E8@DQ>g(eEpr@yOo!Ro6PYU0p7D)w#LKn-6iSBuGxHP1;-fG* z7uhaHBDNidT|mG|Q6-)#A*|7PstN%zTeehga$NEkL1`@pIYDxsDW&a4vVX2AKjxZ6 zXeiTA8^Fp?e7tN{QY^xZg>TUw3d=iT<0{J zd4FEmLB@S6X#}4gZwRF7+t~hFHAm0?Nsr?fl z2RGjwfoPTHv58AzXLcmNr8pH^C zoidQy^KOQTgoGquZ`1_DAl6d%+2Nz4Gy_{4MVOIQHi3QB>HMj&I&Aplgalcs*SH*T z*_O5P?fX^=S0h{U<-@Z1wr2mWbMWP6Xn6QoQK_C*3#*+lOUXVjOW?H>)_i&J>9b15 zWIMLq^KAQ~2mGiZ%9HiJ={7b0&ZdrN(@WZEyFUysN@1U)Tsbs=_N_nZlS^~%|BQta zhdg!23!OeaN<67OMsMD3JzN(({(Vv{d>-Mcm06|5NqNG!$*Ex{d!9T@Nh&`&@VFZR zi7@VuaH=B`^F=9Y?E54!i_bfVO0ASI<#2j@W{FvXODVzJsO^EA0!lE z(Dm-C!=j6SvXiz77&u$PtMaCoX{UVH-|&YgQ6LzoL{(M&0<&##WRdUJcZyJE4#<(# z)Tmq0fXDF90=Wt!;as8*u6~`qPjd51w*Jm}xb~Q(tehDHODZa&2BmU)v})HL=i07qyfH54 z-gia0evDatbv8?&zNd*v$;fvG>Pz6r z`9JBqGGjmb!UI0V?P8(*%+nxUs#p-AkXAy%w07o9KI;qGg8EO_x|H2)XNR?omx52V zg69S9kGT9MYRib+1m>4_!hP3*A(W4Cq|(nOE;**qc*T~X#Q*OFD4h^-+TffeH2#b8 zTF~4iEuI%!aR$Yg!D_NaDDES;JIw@uDF{%>O0Z`U-S-SqX)b`cl9(#1Iv}OM6EBTk zyZP_JQcQLGt}ZP>9w~NJ+J^W)Diks^0{X`8U6gWwtTFrr)PLU;lxmS-;e&=ikXaD&8~b~Wfc_VAF}RPuHyWH+6hzL zV4v0>TpvoXqxDTW-Vhi%CohxSt~ZhRK#^o$6q4KJYV*xEs#YrL?e9Qdvz_n1X@iuj z*i|!mf3TOK^i-ffj{P@*0_ZV#*%V)m(?+dF;TNYDrJymVm0?GXbii+x-=0@9+6#cn z{&`y)8_Zea?Ah1Dj-$OnSIHVp^x_F!BbT$XaT^Y$A8-oyE-&Ijr?>W*mQWl7FMD7p zrxWkf?>r%y-X9q`=*6V-f*c}8A0Md^+KQ>vG&-ZlL1VIBHzH-*WRTRA@83r+&79ik z(b^GU)}s_SH2yMi_T+3yt#Iqxo7p>*)areWk;QyVJN=a;YMxb#poSo7 z7agoa9BSb$ytCceR@GO5RoMOg=|!Y1K`V&ZR7^Tj#elecazTVAKTErm{3weY1Xu`PExi6YtwL=NU(wn zU*%LR`Nrx@Zhh&nuR8TrK!Ks5-wJw zVJTPC+|i$8{Z&eiq3Mqq!akDK*tE+hM{Ne^QcU8!Zh#dCoC>ubi*d$zPWob8%j`qD6hHzgN`ow2$-$! zA#UF-wCft+D&_oi3afL-Zj(+t+Tmi(Fq(7gfJ<}bb1Aa*v83OHn%rKc?6oM7eVvkr zTJ{E@{pz!LX=L&QD2<%1`m`TBQLB}!hAF@duEIy!t`BLy=sX!k3P`Wf?F&PBf=|SW zqN75#`TrFLok*Equh>^3GCE}}(C}}PlXH^*d-wjNJ7cwTU+tk+$~)y)A5@ZkF*Y$f zBSbhZO~Zr~HLQQPCs=<;p=N?RCbO|ZDBzj(KgSWVyFneo0Q@Xu3pW`yxiW>W!TTm8 zR3)5$#!);MP%&)T@(ZDX@6a_IKz_C|AXkL$D3bgX$f7zANHK$lD|Py;Ws89;`*=Sf`9T^ST!4+@u4xgj4UkP9v+{I(8$v{ z7x8D;Xcc(yf82gH2u1(XUH|O=u({r|=o3j7JEOB-2|Q}{CPFC;sjlxVB+X0~ElirJ z$=v6c0Q2w-s*V|EO?Q3;}tgl zyXnHzM{##xUfAUBj{l^8a@9kp%6Z=TV`tDEvtCvB6-Q0oM2%7^k&pIgi~3J!24R*U zOG|&~`#cGEy>#lTA-1*dJUps+H4YHCbiN6noyClrjELOvg-6_%7N{5|lxn4!#N$4h z9TO^C%_kC=YrUr3!m21HW`4is-rCwWH1mtouyu5!4EN*RTeP2m^kmciBw)oiFQXgH z%XI1*xO^2FFMs!)&!~+8O7@`zW0RP>C7YG^z}4q`J-LPGCeHo-^nO(8vapd+a_pt7 zBm*l1Bezc=K#`x@i;P#jCB2jvy_MNjDR;OlWa?6n-&&Fbph^_Wgo(0hDkWXJJyX9P&5# zZ+bD%fv#c-E4hOCZ!2tqA|H*JAh6h$Z1!^@Kx`?B9P!?;JC+42el{_7H(Bz<95A+S zBIO7tB}ez`h*(=q$H>NfSRC$MJg4#~m$G5@GTMfjym`^Abt~ zx7(`aOxDl}b-s$sb+pWpPDo&m8wnG^1!qbz=-|bnVO6iqyJwW6vpW5QivR^y-{|2v zTV2d82;E_Vhws=rQCCmRK$74X$~oVH|3R6vDBmoFjoeyd^V>x)eNB35qU zJP``)kiv!LH^~Ue5@q+$@D5!4zRTM&V2L_K!*5xag>Fvfn2(g>+}C>?A8CHl;)gU61K zNLh^v`+jcd`>HJ{n_Ze|SXHO>ggk=zd87G{dY1Ll#d=Zrr{O>aAm06r#Z%*+^!p=! zH;ma(%iumEb|gEj69dZtHqhXV)fdODIqayD9|0oHVD~!TO|GFLGjivssZk-D{2x^l zN|S6Wg+XCFtsvpFbVN*Kupr5iq`xD?so_kc%12ad9%zouTZu(X{3LdSe$|LfF9UUArqy}iK>H6wzu&05M6fNxNp*($y zYB^H9o46DNHFr~?fUj#Jip3%yG=g)LxLwG)UaFECdEI{t zd;Ih2DIHA@w*W(_(APFeS=k>y(f+qGmWO@ZnWNdgAHuX^8H@VS(E=w;0YZD@Mc*vN z3Kzb1e^W^NmuaT_(eH25bAilTq6DmrElSWucE zWgB6$=J_L5JdCvQh*DsS>2#-u$Fo@zVMdZ1ojvqT0G4?g&LbvZ(KUL0PM%vM!l;FZ z$*{Pze zUE}mN^g>pd0*q`i;#0q4u3@K?(xg&WdktCu0W~-Vxq+b;;R^FucJ_o*xmsHd$ztIe z8P#G(tknFcq}+Il8R`{Cy=wI#vepd@v*Kit)G4q&0x2@$%T)eRK^LSlf;FU~%oZmi z?N=Zh7h6G9W-F{kW0{TD5|tIf-J;GM9b>CnwXuD@pIsl$#QkibSWgr&#L7#Fp2_|~ zfQnOLhKli(AFvc-O#z5u$wIY48jwqxY#jGwSZ<9l6SMb0DkNhvLT8FMo2-JonN`o0 zyvw-E(Zt2&ik6x9Q@ii^Q08^C%=;Gpz+XA`=+jEz|H_QYlH?`=WGkQKIvO@lMVXVH zp=V`xxP&48{#gT-9w&iohH0MrHv62B1)?SbpPJUTM@>%W+}5ZZ6DYZe!@+3n|bCyYAMy6HZ^Z7SK*t8 zvLH2=OcT>CFBC$KBR06EW$>ex?A85$@cxbjgKBQ1VxeI^$;`^PbvsE}FzhR^@~FBe zd@ouT&){=_teuT>xTHqRZhVxjY*f^8?aCsWY|VYj-TPW8y2Hw-F}_tms6zx{a7 za6cDFx}9n0`JGBb9K+51VgEI_n!t2<*GE!md6_?A+(CyCh(1(%d-6Jd|{$f`Q#~=&h+XK>yBjAa zj+liQzJHWUTJO8yWxNCz>|iR58l>-=MsD>~UlTW&ZTe4Xq+qN_XALEnT$H0OEZLUF zF*kJ&2w^6_(_G*Oi+wgLA5KZyfW_<*0p8~m)WR(Gwk8?jnGjn#vpKvL#>F|vOI+== zGj?34_(8i#Ol4$Ub<7)L`C7bED)2H{3szYJ8!bg5nZEPafF@J6Obm^F%f|WPIV#Zn zXWu;(awfdH3MGaOZ5p2xrlt7n7q|R9fZfvelDG@(;&6pWH*M-1%X>>NFCfLUjU z*_I4fB@tUwDc08e?A4~wYOtVJ_C3`|iqCk1IE>Z$;KhOet!bZM#{8e5R!o*dEcDeb zLE`&oPsWgwy^zHJ9jH%R-il;o5to>1p-(q~GDxn&%Bg-I4EM%2u|f6yEI*> z{>*2Hp5BZTl0&|5*QEAT#|-5USR(g2r&L8R06#w17nR#BpYO!a`)HI|rP=a8@*D1s zQnM2ZV`~U{?!LR4x9toTv)hfIjsy=VvT+^gff9f3ft&ck5*& z_SA${7wT0_Ze~~t}NXJV@ zD5)o3tB0XnQdyA{Fqm#SHas<@oZRyh0{%I`Peb2ziy}qf`MzNSX#7JBL8}!dHVK5D z)ke2g0`DPW6`?Y;K321aNQnc~;8iG5-Day|LK?S!(nVHpPrYW%q^*Qhz)&WfdKr|_ zQogSB?|GhO+6ouUtQ?Ey4BLpnKR3Z>CS$B6RTov~iw-Ev-!MP$lf9YELXdvasWjlHVxl{9xYf;dP>8(0r8tSCx( zIX&~sj&P**mQDQgx`}YSQ-{?SRa8C{_s*;Ed)dYDoH9!}F9Lfmc_w|{8b3CHZE@1qnSWHR4DibGpJGY;6tKn7+j+s=*xUfin{ z4G5w6h$tWFvM(;=5o}q$uH*8lY>w_O%-k4~oD*+)Chh}-7 zlMdR0e8fQ~1^I$a^uv3&8hdf%8|HEB{_1Jjm8-0OvSLa{4gI69PM(NUc|C2P@OxnD zP(0Jl3tD7diY;9!_s*Rh43@GdRm#nV(lx}l+N$^b4Svr#t{aPL8TJw@;}-Rq#-aw4 zCD|UcBgxwa*&*yLvZdC?LJ=AOK>`C?J}ovvBUdzAnn$zx-IskD z-)*)ZZ=y#6-kYl91u8<*VqF!~o7;^)g2Fd)Rkhv8D)?NW?Efe<#C{%*h^ti*0w6m( zWy{xVr+rhquS~7WLO)O6sZBj6)Y2}gN4hYXmuRu?=ncM7(r7D2A!xj_n%_o8H^@OM zkv`HdFV<~*#Fd(JwPq_nwWiw_$*8E<(_Mpp(}PoztEAdK&8!J-VmyA4?`nU7atY;4 zC)?)Op}`>F`!5y`)ctqe{gZq0Pl0{^+8WPg`Y&aIkDV=cvqBEC{=2^4lb?N#K0nYV z@sPLy%g^X?m%zsx(i7k_xxcfd@JKmFBM$hDx+B<7yE%`hHBe#mJ9`2jkz%E~h=BVk zG=NRVFcrYudK2;W7pG%}kffCAYl9t0MMZWbhk)$IN$a1BM?O54+2}_JcTEMc0SCT2 zBvT2uH0WtySK~u|r`fXkl?9%N<+Y$euuVkaDk;KBu|kxR^o%z91T6yk)L(J|CfVH9 z;4N%C_N5o$LNWWkDky9+tP9i6X22M0RUjeH@-x|5J7t7V) zdDE1{>8#6>Uzl(GRl7x&Ba!3RBv89{1llt?o6_`esI_(^x!=|B2J;h9vU6-lleh(b0 zmHF-T(x85P70*;cQPc+n1DEKG(?2j(Y3?j>X<#DCeLr}@Q#3GaJ7)}ekXU$BwyJuZ zKf-iuja1%iCPyss6V4W}^NBbza%d8y@}}8igJJ9t3dK}CDybH$)QV^3nbu#N5mrjA zy^5OiMuBWjKPld@weWg-SUvC8XlneXE|$|QZ{N(Ah8BeichtnRk<{LIuwgJkK&-VP;iP`Q4_#S*<(fbsKW`LaP zSV}TpR0zI}y?EIA+W2(ac!_RsX_bBWvlzThXt725bVmAQgCyHZQDa7bzQ#zBy})bX zzx-d-q`a3*Q#>Pp?yyUJ+Kv4+yOaQ5NAcQW2^D)PZ)qldBsbY7xfBLn1l?MeAlWBE znlVh~)t3mlTvl}v<4j!|Hl<(Woxm&s3o9Y!vaf()E%sM@5gG$mdLURyvTbR(!W{Ks z*!2E2m05l3+3abpymYrttP*Wdy3&CDtnAd$X%8~XiQ8#>wYYd$WZWP{(&#iOqicBR zmAqCV4Ux_atq!NlKWW+EGe&b-sD?<~PpnOUqnXOzE~l)MQm-59vE`6GTZ03(THY_} z^a$w6Zu0r-S60?J6DX-xEk(>((#Jcy}HF%g)C6{@I zMT1qo)ido(jTrKYOK5L}BZnp{yiXobml$8(^~9V{WXFg3^=k4U*I9_?op=LNF8>us zcyzr54Sb%g1Q8LAHKJ-U^u@^m1+3H65sVN4)MCH}AGd}=Bmm_+{E2%D3qM1beS|fg z4nkkruDw&ER&U6WkQw6}o9`>K07`Z01UshAF!piB6`U87 ztVYwTzkMX-WNf{?8I+ehL;aMpBe>mSSq+92wW=05c!D#Zu%IbuO-=Ukdbj8C_K1bn zy<;u-GH+A%DqAr0W-|C@(&BMWkXeA!XT=$sTshc))hM z5lp0<3*6#T+6Db$h-=!#uDy}h5&eL(1~$mqx@VBg=NcJ<3L?Kd~4Gl^M5NY5Jyg zz>D7M3LEiCm4?_(KUxWXzRtz`^XpSEuDu^3TOLBE(+Fa3Sf^?8$p_Eygy~oG$KW2uUe)xZWvqB=UjD zu2mGJZz`yg;`8rHkSvNkZ9LwuO09O0EvZxtM>Y`x#D=z{05W7r=BWz!$DuBS(Es4P zJZY(3nPgbx8E`HV%wZp<_$44UFP);^*RDuNM2&O&#ecSo?5rgkA`ASg?q6f==sc;| z@NuY)j8i)r`bW_#$cxgi<4)4H<%Gn5x~BB=l0o5{Lr+tCl=VlnoDabE6F2VhIugI@ zX4EFV~eBa~AHVVPm(DT;?QMFUk45 zc%*$_Zg!z$1LOR7>2C@{FZ;{y(0W&&wJ_X*bcz&6~9segeqy*x8D)T&(wF$NtvA^7fZ4 z;}v6f=z`v({TiGMWf-sQQ_3EhN-V2S=hGHR7yshP6&fX_Q$=hY#UhDV?Q(K$GcMsK zfD4q?P^`(kL{gz^*OX}i)ipEL!h1jd$RW}H1IZD$eMZw@B3K$8M;7kbm`X`ZP5Vuo z;3G!pMb#7GYnHxY^ot2HUEwc>HCtD(T=8EQX_Xp++lLpb67J0%YsxSp!!kPS%=7uG zqF={Hr;6G7wGsz#g1&A9vmpG3=D&_BBQ3_AC13;9!ZwnNIVgP|p(<@g$e}l?qgcg_d9Yy#3?zHULKxB9j9hhc3qF_=9uG14>@e zSH^TkuvMG(^~6?I%RWq{UAw*0!#98-Sh&h{!#Y5s24v)FWYd|rkG9JeixP?0Sg zmZ0}ju}1Zy>d1sIE7$*WQ}DuR)daG;Ma6I5 zo-h|(EUdZf!pQ$+61Qm8+vzpdR*R80*WqzQ-|emeY*7KizYrqDtIenpf_XhW*{nU5 zx3m(-1Gx6iXEljsr3Av|-HD&d0;ffdZC4lFg6y>9VTB$d{jY!oAO@4+fz&!vwj~bp zUf~}JM{<0PN{c||kXzyPah{4JUFS&dOhqGLej=`myK8HQzj~wh`>wVG8Pai%Y~ttn zg@qJc_@23`RQQUS!e&wY`Pd=p=U@NIn1-H;XXrv(4~>Y?^Z-TOn6!81jngCHd_8CS z@(C!Yt`&R^sPz4RmTYjS4Cqk|OAA6>2X2cw1wn;3|H)C?MeZ)J$xzV||4 zkyBY*<$($vt>MKr2Czuv)X6XG$6FJ@R3vs}x~PRV%JzNQ4S6i%-1=taS4Vw>R9h~% zY;kDT+sQW^g#6Uxog$JsS1z6Andovtp-IO>QEE750Kz~dAlH~6Ir)Htg%iMHfTno|nCxwU_ zs*ffYm}PnXQf?P_Nd;MoNRN1<%c}?0FTZ}w^>}ZZwz___J4{j<(&tV!9hM_MoMff} zW}PI!>9827;bYu*_33sWc)$A6FNpYlp+tjV$8wysPe!$wiV6<&Q`R!u{qu)Nv;Tc1 zZ8==EV-ZXPyZ@|aNQE>VywXFO;uv5-2Z?FQ!SAz1(7Zl&B?{FQ!)Vqsa+PO_b?E)s zuNw@n?78|*JTnuOpHEax=PP$RkFF&1daqY48EB6*cT2@qCTVo_enNzt^aMRzcJpFC z18E2Mn_JlTopHw~aH}t*e~cJ7$Itr4gb)V)+43&B!w`IXiTIjX7q%%EU)8}zh6X_8i-y@wN>6sE@!?5Q9is|FklAqp0!nV%-1-UnA%;L4;TeYyN zGkx2@NiAnBgJw|Vy0Lu_Lo|<$6+ZE#mJTK<%Z7qe!TZEa&`876`{hlIdTw8%Q31um z}&2#sCo$x2v>n{TseWpkzBq^h6hz0miYA!kt zDgeZyO(*jXQ+e)viiLaVS-y?zzu~e7tItJGBSp>Gwo8981$-LV?K$<{JZ_fo&axye zCfC=?L2_F!Uhn&coBNZlt*EFUE;+Wi<~bmAV^ColV}~tYHZ0L?Z2I~!gV{QbuYy`N zb8$ZA`Q{#TmI4+WK8`QO3n61K(i3`J7ixx2K&V9>;S1RI9qfULA#6Ff+ap{)C7T<^A1#ph5xw?qa= z$t@|PW7jF3J9OEtBg);Nhj#6t0r{7fauvP*4`D%`zQ2Ld)=+9PvMwQM5~gL6l_^2! zqt)xw>P;?PyoiDVsQ_7ttY`#5M3EOr6;wserH3w(6(y-GaNC;^h#I0KqUkahFCVhK zy~ScRrq%ACOEombX1VlmygB!d?$B<3xU$fX?M)N+=IUazNw!R~IclOw$&e_(1H90}8^iX-@WLwth9SfD${WM7 zAxQGV7HGkc;HJo?NOqGw6|3sit2f{K-n}<(&Y3aK5nf!%puyK@Q3oV|+i2S(!mJ>!GpeGbt&Ony1ClrZ&0;;9)9Xqs z*Aw3T;6t81f5v8+qbfF%Dsp=Mgx+Y2JWAMUw-CyN(as*0Wip%1kVFwbSmOvC4v+VN z`+qEEPbdk!6-J}M<;4cewm3LAWI7p>mK(}CWf@))g%xTk^P?Xg@a=D%P-H9YW{oCP z(A|gynYN4d8G7O`|Y`)~=awORD)P7j zQNnRNM5#n^Me?l1)HAaDYG!{npA!cWK@jkxU;Z*5eE2TUo;~9?zW(bthRFvXeMBMD zIMq7@ttSK)z#o4aP}NtfFV}U2s;QuegmHqBxCnVd;Kdy63^~1cj4sNyKu#!m=B@`Sx8d&n`IX z-C#YRpmanG%VB$ez;dxcQELLlB_jh@GvczsSN%E5Ghwn4~0BkYtS@aq0D1T)cdVrI<{nGpKVKW``}IM^t8S0 zgO?{KC_>3{?SZAUf4uj9+qQ4_wh4R>Lo=vT5!E*N^ubfQ-4;!!jcKXacH`>UAA;9L z0;!*{zda(#3fx7+mp}TD&mY{!)-_5oC$DRQEam#GTa0HH6k?M`ZXxPAJ*UTPFw?D2cO)h-`hc`4Dzfd6B9H=VLF-6b{fnUC+J$hd@`k08mO8= z=ttO=K@w_5|AJbl7otAlCkSf~lJu4yR{hWI^IP-~BGb;TEHjKo|w& zd4;BEL}iSiNn~}2CctDeq1karlNpBY@Z!bzY9db(2tA)0H*c_axW`}ki+`TK^*{eD zbV=byzVsv9ync+VYY3`HlBL|AKPM<&-5MPY4_~=otR$xA8x&DvxVuAM)R1QMjygoH z&-VU4MNzN`Jwh+#ouB$~g4iV&3uIFzqhQ!=kQWsvPd+D#V+=E+U+)O5Mb&S zg%Yuuuh?$y5C=KK-CeRQMAr-iTfy}@%;!>9k9Oi>FO=i zC`Ywrs=7u|3=Bg-5Jgl`rxHX|U7-?W4BNzLwz&+aRHBNYsECrrI&*0bdpuiBF$PV1 zZ%Mn~CoM93e~qTLxqj`K$>K_HveRjD^8AuK&UovsxB29IpJLbsnq`or33Zk;+S|b& zXLLGk+ARk^h_G87PA{gkn+?{Xk1C4PibARC93J21d*A#%qrQ%zx4Cg}hlbWf(JSIO zVm_W?nkKIM>TCK(@!Cj07NFf|VV4rV7qFgs2!cV9S0s6Ws#^57ddyb~+-Oa$R6KZ; zP}LHXrOW=cYq*||X$MYwr+`V&*>xNWS%G0wi=xp^^Z(N3* zF5?#ojmD65?vdp&q9~AMDTZaT-28x6S!0XxAm`=fIaHuXB0Jk7Jl`WtQY_oxgX0^B zbx2-CJbn6-z>laz*xAyl@&Z{ki4zygFfdyJrC4+8_HBOb$9|lw2#Di|&1Q|J{RChC z`fqS?KBlS!5K3xMMbuOTS)|SZ3i2#Rl_a7#B27yaRfbAJL}ZmL*xldf;P{xo{kQ)Y z!YHLyDjq%hg4txu%5`b=dvyCfO4Y&8y1*ZIvE8g+?N+?Ay$cl7a)=z`wUtZ!N$k1Z2GMs<1bz?=(b2IkHc#N7RyV7 zszwuKwsv<}jHg%U)oA?CTzqXcfkvat`NbGTSLn7oH1r1jZXeUIu2fjNJwnezmPHg* zAuCe$w}<3$NM0rc-kg@xAd3T}N}#S}HbIE4T6kH)_VFRU81UKi@A2a06Fz+BeGazw zxqI^sic)0ixy-!{>t)Dt=2Dd+-EId_x|)=H6=s_g6thOuBxGGBOER=dq^Vm_t5lW9 zbbdjaq|~{HPzN0DZ&SnyxmF>V5-(;GcJH*f{Z1QEkytDzT#V28?6Z$qOfIn$jc&6= z!*Tf9*S?0Ko77c_Vpj-OK`v#;N=a4asD?r*NQ7xZW8k1Qb#kes(Q9%2)^)DmyuqC} z@6zjyc>3@qvx_;cW|O;b-{O~k`RDle{{6qoul%K7;%i^~8gJeB5=!yvTF8x?ukISG z7K@HFDx58tBIGm#~kvJxpJnS=dn*j9@mNa^-F$c99cq?CC=6-FFvZy{DHRizP> z6=_`3ZFE@9mpE+)qv5b#Ef58TPd@vYFxl{8c8b|{*c}Zy`Qidow^3w~hG}v!9U~|T z8$aawom)h4LbUV<<{q)1LY$xqfLNm-AXg%nvjAW0GK)0QQf1?=$)bq5$dOAKRWezH zYgVpHElCK9Oh(P9yGs?On05m{jLFiBx+>AMnzV{YDJZLwdoL!C)QvqA=lBOBU$r(on15_nNR7*77 zV6vKFbsNNK!D`{rHyo5opv+#a3iU_v+DITHrH1o)dn80@ly{pN!Qjq9uZ*%kRTPO{OvAgE$zx$85@HWh%1wr8A zt(HtLFW4FN_^Ge`EZ1+nN4vdEqcxy4=+NwS&t z=QEm)z@Rro)-=K_#tnUX{Q+UPX0)f!uw;tV=Y#jI(Qo!C>I!3!vAu8d(T}`~t!tc} zo$>VP6TbcX-{JJ>BeFE$-S^+6QgilijBxq}$8U@f%@Vbdqc;@NDq-OUOr~qnDrUIb zMbb)=Jmx2V=I3d&27Ke|-=NcN^9z6W7x?90`HS4WdxuXy{g~OsITR_+pFZR}zxx@Z z_Ptl0x9h#SYmj9*h$58;U;oX2#KE;|WM#o($>D(qyBvy+RrPM>x zOaws%MWJDJ5kw7LG3j(W*mnEM0!aj{xswFb;48&;b&f$!q_D~ck)u?<4cBl0{H?T4rMYa@aFuuCQ6SS3; zkac zHX9d1H4rK|>}~Pp!4ZzAa=6oBYhZHyXq)M5PFm$8S%jj%?(Pt=4msRwa{YRjgTpq% zk%p{DJe{87`E$&`sFscA2kajWS$iu~OTH4N=$arZ z2%=6Dm3Tpf8!cIdXVgZ3pe4ka$80sF(X@E)-FFbBnl$xkIRD7C@MpgI z9>;sfuRQP1@BhIo_a}LbD#^5Eov*y{4)bT{NP>(Yfvl+bZVaf5#}h&~q~$bNt=Bw# zd5)h~NT$Wv<(!S@qlzY$VR3qT&Twmwx+-b)bhh_LY`l=c);@}=Q{*MP`v>?%$~@SR zOF8Ek9&NpYRof^Ow3`}LogqphmSeG8EKw@~xdL635%Pj=ql1_fh@{ljhGg}K%O}5$ zOh_q7_-R2=R}A}GSh|U2x5(0%s!B-GgfvYNWSLsj5M>?HZlM?kv-O&+5Rg?J5rMKO zs44J5pGLRK$@v+E-6YK_Y^RHt%*lnAQqFkuom3sg~nyhIlzBG<>#8r(X5gET4dH$F|>qStRB7#e|4LsQ2YG`V^E zI!ak{ZD&BwYVgk6cQFi&B1=(Jg~@t}pM`j-kD!QXwnmtQtk)hwSwZ${-+^9lK(q<4 zHJvbU@!To?CgIi_dkl6Q+;oN@mKcgktJy`>6?FYdUOmktvO1xZJW6rNG`hr4H2iwW zboz*w;}bsl zG3W{e(HO}}m;_Jx#`phso=rdD+MPb{y?=|%a!DT7q+!L`*%=>y|6^1|<&9gnX?KU% z%BvSnN&2ftPvd1ou!)#ot}w7@(xj^lsI#1F$49)pykz&_kXoqdwws)M@dtnR8mDz=WH%F z+`IEGS*8-FDf8(DQBaU2^$%t75`?0p=QODDjIzqH+BTIeQq>iw557m{>4Mc8=e} zkY$iGoJOCtR@py%7qPaPtX`lRDjRQusu?U6b3|DNMZsxllvTy~curc0+&p>{IZ9Y9 z$53b3hRUG5#dN$ulvJ8+6G_P_%aSOn$jgfR4;~U{K7y1nnVnEq9;zaN&_HkW*aQ`R zkRlZc>EeRK^GJdaNxm|@)hq*1l_`+8m@bi>CYdC$fBWVS&BfP70}d$-T~AKW1?Qr>>=7FnK>L@~Y>&}(%G!jPcKnT9Le*rPY>@#yIjYC%9S)K|uA znigS_LRF%P8ejeD&vWPQJ;KaGQXJecM5uEP_J`DD#My?T_GmO@Y(qy=B*GvdiZYBw z6IBx#rygQUXBB$@Jltdd)(%pyVD7$zs-&)Enog6+e2VKxC{x44Yp)p<|gCwGj_LnM6QSH zE?Bus9y~c^_xhV;h*Y9PE!N0_NY`|bC5@s|Sk41{FGP_|0)I^yCtR-Q#8r*cAJQ6( zcz(8Gu}K&n91v0RZ1MulY|wA_kz}1_yNj;dNTPxwYuKuVR7t3!j3`{G7}Y|BV`$W} z#qBTsJO^L>%k19!S(Nr3j@F?$I_B{9*Z9e={@WyTjXSq*Fg>5qGFmKWEBaeo=(PYS)5#^Zp(3gZX<3lfSLSIqZ{5Z)bzJ|F8kbs%XtgcIV-LqR$+DEQ z^Aj2kgN3)oi(JfxO_Zcq<`t=Z^!|?$y8&Cx9xAZe%oy%&FUNLg0fC< zeV4P#ml%#gCS)L$ShhyD?~vv`t&V{p<=nov&u@S8H~H{`59oBe$dW`}71*{-*K}x! zI%N=%yFTyVd5ib2f5^SPw_X{uBuWU>H0=ie<}dyg){B5?c!DSwAR8<;E@_@{etwSA zaHz|gt-%PxaMXKTi>Gc{=CcJg?Hm!z<-L%Pykk6l-;E4f(%#|Uh zsG=A$PRC*Y+Afk-V>C;4Z}m``HO(E3q}q^|5k;1x%Ao57VSG+u&e3*iR{4ti4_ECv4I0GaJaSq5>Qih`m^ zY#rW2F}f(m4vo=0cJBQQ{Tm10Wnmz-Z-vI!zu?G|TeOB7Wk3Nyku;{1F@RfD34ltqDI3nW=i5UjCn zgDi^?)tag*G2+@B+?$V2(k#*+fWuckDfhY9fqufkc;Vr^NW{^wzqLNDF9OAJeuh{Ln*{ zWI7FtV0?<1X8iP9f9{nrN6CUWZr)(0caw`3&*}9v1kt4MD;(LON(KBfLy|T6PK)c; zj#(`|!XQO8L<|e;p1{HNHhLK|>}a$siHwX|Ojs_*L~+RN+jscsul*#=MhjJGQs*Lf z@9rQfGM!$NW=m&l)In8cmKWz--|KSJ?J?{q+q#PdXz4E*b^VP2dif(Xp`wpcD$P$y;iuGp3hd*{z&Eh@jLc)vI4^|0rJDoPcg-WU0u(!2w|qk_Z)*q0nx(m@npxt{w33`3WDs{UPI* z6Z*HdSZ|h;bw#Js10c?Py!C{(rQpXdo)qB+9%-UuTlSSOW#p440Yz5hg$a$mLl_0T z_x?M4_Sxq+vPLdeJU%<2AsKYT1@W`rP$dE152@;$<$80a_EP2~X^n`+sNE%qVp>g=Oei^XKOxU6OmmOl`p!4G zc4I(eRI~CIeD!C3f=8#n$7(f!qJ+Ap)oJ7F2E&~#5~(I3;Ej7XD3yTgcL(fV+hOK! zcn{}q z{`!BngX0|HdJ(lEqBFd!C%fSPf5w0PH~%gEqkre`zV0yo6#t(g@TzowecgddWgUkM54RDd3Ps3i zI0|N2aoFr|yS>Mr?T`j@(qev9$n$-YG{g(m#7V;5&UKQwWHj1mKEI?tXmD|UhFAz_ zibb7@IBJ{BhyDH$awSlg5pfYy)&+76LYiWV8dYv^a(PLimiW=D)rS9d#bz@_l3v|5 z{Zss_kJt7(&}|-pAhDXRps1S}B_-z%d{%GuA7Yv|eGFBOIp-rAW8YX0e#_ ze6gU}Xp+VihS}orr%#a;gQ6@cvJIwT;jPv*8xCce6DMoJB*D-PR7oJqD_Y$yVHlEC zF1>z(vx_lxt&+hfD3f1SbBF0!OuDe|ZSSz6L=c5(eVv)Kx((IAa{>KfJykKJoW+<*GnmCRO@@X4Xf z2Txx;Iry&=#&-_6F}T5B`fL9UfA@d-4>)=B4rTHGqU8Li_*Vw6ttRlF{>`7IVKi9# zOQLuKV#dbZU^Z-2%R-e!;vhwlH3D}7LWN_tQM4wr`6Z%UQ$!(e9PTsf9`L;<4{=wQ z=!S*isLU5W0y2$OlSa!X4i?CgK$+JJxAr(YKc%8zHD7W4`fVOPKV#-j*gNRcZ8Xu= z34ir}7<2a|M=AbA|3a@Hg)A|9^N`>F>wkfz6cAS{GBw4EU6z|EN5}hY)-Hh`qG%dU zqsw%%LN#TIu;h(fw>e!sCI|z{yhfIFq9CK!>{ApOD{oDu$XL40WPCvqCv0{4G@TY3 z*TZ(2ltN8jB@|@HrA(RB6lqSY)xvHxcz*I6!;q-z9LsPZ7Z9nbRUN-93D#>44~{sr zyR-_GhGtMiA-1ZM7~SdlKo?au zL4e)wVA=v*YsByU_V2QF*rup*JlEy+@tZhK3)fvRK0BdloBX+-`(^&Yum3~JI>R(& zmYWOmQs#WIVbtj&1O4r7E~gW`BIfqtO=hQ$xN-e9AK$-Ex9bpi35|xy|N5UzURe`( zZ6xqt{GDGw6*Y1)CexQV4Gm4z3A2>7=c7s@{oWS77ZD~Q2q~c-)9>#SMIp72Qq%$m zodJ1RAU6%d*dioC?JOhiFLkQC;NDNa+REK_9hN?fxlL6tR%GAHn3vaG~Umo$4i zJ9|SG>lOYgz*JNkx=9+!wAyW!iv`FMj;e9k9r2BC{|@`d*Lie$!Dwrn+4%*dg8`M8 zQ%hHhJIz*~M-Ly;@3oNfoXzDNQ8IY@?z`N-e2lIuMD7ZwIY5>g)WmyE_ z2FJ0v98a-qi(Yq|jeAMMk*Nd)qtRkHxui@|q+CXCHBoen^>oQ-dzY2Bq}S_UX(p#% z`~e?*_*Gtd0e-YbswI?4Maoo!N@KWnMY4wMka{_)BxBhMswp$`$213Bp1*ibyVoHI zHq>>AB&+Q19r5ss#~keMv06?rEtAXD0>dzfqX2wOaY3W2b9#CPii{}3Vi{5uB3u0i z``f!be*6HrC6i_aLYko(4Gc}EDq;L`&M*GrFYurL(y#qXRu~KdiXn6Gkc@iK|kc0t> zD4+{6(L5lS`~3KaKSr5meEGe1XgdzOTl*AIjwUH+g39!?AYO?av~SSThBTTz3aw@t zdAyvRpeQA))s=W;nunB?k0_o6dz3ZQ0ieVdcT3vR!2n^`dDbTg%OIN*Hql)yj7br%$QfU0L`c7>nKaf>y1 zo$~y}33uMR$4a_nCAiF@8Ce;zUT=^^i<`%H3H+Ea@-R%3M~@!S?RK%0E~2RO;MqeQ zr$Z8#RJBY|0D_FB7^sSdsp)hyi^5MCwFj7$24&51vmi}l)~h+92v1);rDNGBh?t6w zsK|s_%<1GM>-B=j_o1xV-`T-#*odOYdNF6W(_!-RC61zz#Tj*$BMLH>VUp!nYDJYS zf+mA3V;VZ9TA|b#ZAans>|-w7PYLQv*6ula1Ij9+)fk|q8dgt75i8z)^9JAl)_2fl zh0T18CTf&nc_q%ONEnXII&`tRO$@`tU9HKpKa^`%1(WA2{NY--3gdGDi-P;46^_1NzBD2kd|lUaBR&d#6l5!a62#t=13#o+D-UqMhugqU1j z)}(34%Zn2vN95M^ZEV3{d=eAI0#Oo@L@Afg9?@yPdR+*-MiRKWe}{(BN27%o7B0*CcLB+JxVbmtRelL{BI*iy)8X{| zg5F>s&)sl2ImeF+&L(p-yGfN-q(OqNYuq}1lcK7aZcYi3C5o9*R4JqFYlKmZW|{Ol zBMuLa*x5P4b}ULEBP~*b*yZi_Z?JQ`Pn-v+nn02z2r?vj$nJ2&Xs}P@sSLLcn2b|= zFG3PjvM^zMF{RgS;=5B$o;+n|w1X}>gzK8isn3gx3+_Mrl)1lP5COe)3o7_4hFK5qXwVmld&}G3@Q2Di(Pz;n*E!n+-{k<9jg_B4L!`#~~Nf3v|mN zDiuV{q!wi)MWHAY1mQ|*UDq_KB1e)%+MO;{C6E*a85L)!fwdaLWt9L@LU%|)5)WhIPiJ= z#S0JwR_i5cR`K?`@6hVBc=*Lrnnsgg{*uDI;PI!QA_f|N>|gJZxfxY0vRVe*xc6f?O792e;_K5B*es|c7fC2cynv71eIHda5K(aKHfd5K zOFF7%6S_GR~!ztzEMHBc>$lZ&Tpq799f&T2ZxQXF&| zL~e@R>f&b+IWeMAaDM)bhGyaD2E9g`)n>tRy&x+hf+(QyLV}sgswf!Vx=y4@7=s3K z+aM9aYPE@r9L2C$haR#b00l~2;ix);R+pqKaDxz0mFTql%;yV=GNBeB%V99wMn<69 zZL-@N(Y7R-mO^i9$TCEvuOJ4F@~LH+RT8sU`}Eo)1QayYLQ$Kf#g#iy zjz}iRq-9NBONd$%t1+NA+@}&0k^=63`Vd=p$ci;O3LUG1CK-r=LaW)v4^p0-o}gO> zrC8DK_6VW`RW;do8^Sc8sznqV$EtgrfHd!aY>kX7^VVsP7!$YEQ5xoAPF^55-?j_Vwy59pFhG> zYdmj8zt>_k8nK=)iTwbvg0Fn}Ex!2T0lKaeBtB10pA)1xWABs;?+H%J;^S|AkL!o~ zREf*!$z#6#-QVNsqwjKl`Z;xePVU8+72MwM5rzq+qM@4tAAj$&ADD};j|9q`vMN~x zE+=OXS$XHI{VAKxf-rC?tBfF6QpO3kWus^+X%-WB9%Wflh&5RrQ|396C{f7*nNUyI4RIP!6)Ab`qc%#yXiA<3 zG@DJ_bxxM06oo*uIilO^^XSPVBw56;4c4*CJn#vMgscitlmej?kgA-d$dNUJv-yVqb(d+LK6$JJRqZFw%X7i4e*12 zrqiaZG`9AyF^^n=$fc??Y)3~?MS|3)5NgU8T8e||*m!}5q$=d4h#RaCWmv9f=vy}D z>r1?{Bq-;UYDki7kn)nq^^p~sFbffcnk-03;}W4%kxLaxxT*u`hDCdDfNAwG6caHm zSdS+NS&ERwh+;u0N$+`924hV5-`z4F+XMgwX|K+zRU z)56dVK7a5Btm1Q;Lz#krvMR0~533TR)x>C6Ec^&j(vU=0Eap6UdBG<0aMOUvVne6X zLe)hUs}%?}jYgY^=W^k#*u*}vbmblJ~|2 zQ&ef`O)SGguH`H1u}+&bi&?Fw>>nTT=-CrKdGIOQ2V0z+pRo2$De~efA_{ADY5y_L7!EitnM7XX?r_*7z9HZ+h zqNo#R3F}~uD2sTJ$7bcCnksJSlVmYYyM-TYc=t>1V%Qe7B(h$w5D+;!KEi4^vxc91|BlFE=mA>V)a~l3d6rq?EXbL9HpOiYyIz@Z@`>rH`t}1hWld zrZYcZv$|YSW+PZq@Nbo;z{;}$XkX_8>-Iu#|`JNrC& zIwr4mYD`E~3|U5|pez%LI-{h*(M^_@V~WJ5(`le;0&x^j1UX-Q`ztttMbGIGdl`%A zhSh3Ap5_QhXsStFh>RCAwsv>fJKE#3N1v0EQ;8*UoM1aP=jZ3hs)D3kxdCm$F%MsS z%p$m;s6&4Kr@xAp$7rR>@y-$bMjtPj5~nUvxTdI6j*gC*OfCsSm&JUJX*lSXLA%%F z@ySE}FXrCl*|zPf)B9Fk?zMKk_bKkF?mf4Bg{~xoAZ-jH1;&}k1h#R|Ak-o3Fg<$u z3qTRr4cwq@1s&lChmk@dDksR9=z*Rj^z_PGpL?oZm#eOq8gYZ@;vE=bD)-L@zN zf%b5pv=+H__jTex;8#EYMgFtn6OM!cH{D_j0+y~L>KdY|QHdJ4(;!~1_`#oji+nvN z6AE-qLLo+@0$C&#B~(L0%1e}7Vz0GJ8D$hvf?Nx%W^;z!K4p?4Dk>j6KV!Ieh#?uw zE@z~EO3P`3pdg}9WfhtvV#z8yrj3;qWWkn~FP_qIU8+2z*YELX-~4k-)1=#S+23uU ziWUFufBglDY{AifgJJ`Ec7i6}#BJ;m$1zT`$zUk*;6aDo!H_pk?~`q|^m`xgEDb+N z2co)QHhzKI=}<@onp_jcK3S1tnhsHxBGd|kC@{G`2dN~9YjOd|Dnievt~I2@CJ{x_ zDnQo-%Cg|uvori)LBp{~(-hOR=-Muu?TS(nkTB5{15MKjwmE~H9_Lq&h~tQ6%O&vE zxNV81?UH8&E8iz7Q(AffwZ!!50#z(fZI@tk`HCcD+K3gzRS30+QkNKpj;#zRvYfRa z;xD%}n{BEpLzhf$9367`;w6G4vRE!rR0GAdn1?Z5R+9T6-BuSb_L$E{9QB6eLr0`M*&7@ZM?Nj5OI~I~QASxq?4`((#&mT_RYkP)Htn4jc~Rr}YmA18w_PCV3P?FE zOU2R+#+NhfW&_JMSuR(!tOmXx(CW0gUW~}u&~59)b;b2^!L8FbNw+Kh=KuIxY*ob+ zU9za+<<*2Ni8whu;k7&W_}&kGz-TIN=afRcw5oLuS3>fU*AWAY?%@&UyKcXu7?Dq$#T94P?cpa-KNH5;w z%J(r$2g$T3WP?i8kQD>D42Z@)p=9Ct6BaKnY2P!bB^B2mK&D~XI%ypumNtgfq+LpQ zo=>m6OB8QeFXw2AP80+Pc}kYosEB0Yt5((0ECi(jz%&i~Bp?VQ9H)Wj`Mg|=h>H}( zHqjG_&3s1FZP7H^oK=r88@qh){JYfR2FuiWIekuZ$EL`22K_y3t3ebb6jgw~-O#jb zWKrVT({qx_<>A9y1e-aF<^P=`{coS2*iN9?>R_4mev8pjO6K|d1s9oCD06CX98r)#ux-@MCsa~_&cSxfO zRWgafm?#R7W$6`wvV^wXVRvW9+Fz3-8Hy^SD;f>k!ZvjbQ%6>HBw1y5XNPd@(brv0 zx;tnYSe1;Uwb<(%kZf`qib22KBF+L-O(sn9n2OBE}$n_cqg6?o%tf1jeraa#?#eHT@g==9rYmPVW<1c^^A zWz=;Ab&XI+^ehK871=C2c6N5zL@Ab`v7Ak~b+F6H@sP{Q=Y043|N52gK8k6!T5LB7 zz84~C5=oU1rZH}_MVcf;eu$50 zX*m}2@dQbd>6kVRT}L+>NLB;EQV7EZ=O6t8i)ZhVEGCT4pD`Vev2}$;v(LsCxjLKR zuf_y{Pn<;T_xCWQ7L$twcaBb(%;)&Nhiz*VMUHM5gh7a|XxN5@sp#BjIUKe7l9Z~X(l@1e^I0| zL~M%OB@T5E48kZzmUR}_6VfGrX5qh>_15_wJJx1(#RXc#93mcEe^d$86YG9hLq-quI6OE&R%G%jrzD_C zV)R^~YqV$?EpFeqhgsP8<1Jb(ad>#Z!O;nIC14oFE8jOk;h@>)M*om!&#xGE23V$v z>DVZeMyJ!kG))Sj!frNL1ZzGRow3d$7XFIqa>3#85vFahyW`@zBB!VOIHvlKlZzI4 zSRmvglp+n&qT6f}Y*vU>jUlK=Wddo1P*&)!PEux+LXP2TR7%ZcGH2N7U@Hc?pt0BA z$89t@KOf_HOGK$=JRXtd35&%9-Byt`iB`vc<%^Jp2(^GW^XWHw$RXT6`4r2Q2S!OL z6g+(GK6}j;O081WGFqd_HjHs?o6Cy}PVd~M(d%$|{erxRFq$^AwTCFnNUDr1tE73w z)nv{l%qayOr!}CKWe^3*ki#UrBgq+2Egk>A-@9$C8(Cc?-xh}farqMg1(Y=Xg z_t7UNgO#zfzux8ka9e$eE5U8~Cd&MVgZa0sW4}i>E(EmI_Qu!RfY$ zlQnr(V(4vd9zTFuMpX@DL8H~^a${$YJdKeR8K>Lj_;iS&sOY7{ZhJr$L>wO+Qk5mW zUYD{e$tW>w6(LW!eDVXbbdBE8s0sy3YeT7!Cjv!Qu=Yko@s_jaXYB9qAr=)6Zav_~ zZ@-UY_Sgg&%|Q>tw0QL7DOTe@!h^v$Nhk$@Z5$D%8HUy1yWjslAH00d+314H>q}(0 zV6pvx;SGnqn|ri(53rhD(tm`7h>k*G$4vbZUgaaTYJ$w;VE+c*!sB>&Oxx&^Y%|KF z!cZDaMjl@5BdQWfoS`digu9Xt77biv`l zDQOWh=ngp^+$2k5io77ND+E!+?(}$ZeMTwgR6@;cbcLhoG>tZv*v8gW4i1MTWzL;D z_t|(JNfl#SGRJ#+h%(H)EseGdwTx-2TwFdw)l}}>y-Qh_JbwIyi_s;ftkbodG*t&7 zim}}Wy`5d0o=YaxG+c*!cOS5xud#IlS(4~>yNpL8j*oAlNg7F5u$d%8i;QfQBSbll ztg)IbXt_=N$Y&8P=p776%M49~^T*Gr(u5*i69)my#fCV|$ikdl(J3tpZyPX~OxSJ~ zOkd8~cr}rz^Y%OM^ZxU9xE?>Hk}}G=U>!tkqb)(2VYk{OQA($46Nejof5CVD)wfyB zCJ41i5*4gATh7lX9PQr(p=7o=rzj;1TP2k<#)~OiKSWR@bkpYS;*wetX*Qc|gB4S6 zhSIW`u3tjwBdZl@Sy8GoS*>8{9mGWA?BWHY1@kmvv(Y)(e}e}PZsUb1yX|A1zV#8= z(x=nu5^QFln2SF-^O05qy=4<-2|*Z=7d3l_M>G%m(3EK%?s2{GSchwD!(h8yLoML8 zc5&TZq}m`_MYvWAp^$N%E}Gn+LloiQaF1TU zg>4(iYDL5B;7X_X69cK1*&PniG?~x~7+qdsX|G0+SF<&`U~%X09^p1Y0yNDe3NwnV zq}ShJ>#dO`k&}a4BuR=N`#7xzny#~0EI8Odpy{@V0uNo4>2zAWID1N(Mz{@|)pANz zS6HTvP{Ve$MHK`zQAIZtEZgAO*;CH0o>Gc6m0VMbC5kB$WpnJdjzG#{c8y%QbnTlI zu|T+qD1($u7@0k=P^)e)Q4%)S5z3 z31sBV)>~3w8D9}3Yc{KxqJUBqP-UGLj~+2F9cn+N*|0GTgPe@3@neF`HJka258itp z$Fd27Erw(B)(_rh6UA(|0g|XP=nc5{=IiwLb}{WH!<~I})1cv6jAm2%!#&a>Cnf9 zI^i>)y2E5~PEv)aI^4T|NSgYb9PeXWCPkVsna?QX3bkjF3p(Dm!f_1pJf_*~5G5JC z!464WpeizV@7`m4J)>_p{L~w_dHL)gxP1PC{a&9kFL?OyE|ekjs}TgBtb+TA9Sqh* zf@AB*%7CKC=yiLTp^KHRkerApThVqK%+J^8J2AUEJLIX1p9R>qhNg-*h6{m!tE(h= zO8QeR001BWNklQKzaQ2?|d3j~LIk^gD;lr%Mb~B+o^XB%~~B_IrJ< zubv0ZN&42LYY zGmN2vBMhlal`JbcK0M{>#U+ZaA?gb2<(iIWlEhm!+byOp@^hd4IbMzy%vKZPC`Q$E zma7$=;gIQcilk`hx`}Bt$nt`Px5P3u>{ge*d+Trcg!#9;!R2dyP8gEMC65s zX~@`y!y?;aC@^1aIXu2cl*VM0jG%zou<(nJ?rxX)W{E6%9(k1U z@booaJbBEEGDKB%TAdC-mgCwQ>+Lmb&!gGzunxmd%*CJBPGI4$sD%uH6uY7D=+QfD z!w_#9;srHTk>k(S+}XcFx-Qr*d=#Z5ju#YFLL3H!L4vHAeDMAw_WS#+XIrumOx0yJ zU6W)P)5RFKYjb-0gwWsO*fzH9vf8ZJge$TIy#?Q5F$}P_xNn{5nQ$Y3Q!T&65*4?LJYGq8l2n?J(%L8VkkicC_~ zZ2TCz*J8VXO(p7OcR{1gXAw|V~Zf-+7x==G80n$>oNqRPbEh@bh?&mdM3X;QIT zZs`r%v|A3YtuvpEc=OY*GoDUx?FLd^W2zPh2gjJMg=o~wk~Og`5JWje3hzC6!TT>C zb2+{SG3D9WBjT*)DhN4Gb1tF`PtVvr)wy}n$1qeH?JjeFOInB=3@oxZVgLAu<@S{k zN)5Pn7tfp0-)-~k@+FEX)9ExQssKqZ$jC5Fi{)rao=4Q1fLr?mqIk=_*X~j$5w@1 z>rsdaA{FasO{5BhN{!qwcy#vS6Law=Rs`IBn`N@4kSlU>G)?B_ppTW;>^L3zW`};K z&wM!|F9p8v^S{n`vZ34Pv)dhD$tvAWo5yEQ8SV~QFP4~!iKRG{S%t1jOeYfz-9i<0 z*7G$@vq>Iiq)CXSS+vXngZ2q-d!J2KvJPS-T_cV|u106bYK>y5Yj`IJtp#b&i)8?HEc?JiFzXXHo>oIWkLiK!@zMoV5^ZpcN6 zW~YUz%Sft7kR%+Q98dyJpFd~quTZ3%$3OZJa$4d@634qkyzPR`c8g(X^!q(}{Vv{O zfh5%EriLgB42M0gF0b*t6>+e|P;DeZX0ck5)fJmK<|+y)?KUe>;;Ib!(4X@D=9)+O zmiM+}&Nk-+s)xQOFuZAF=?0C4&B4(S-7#3K=X~a;-{i&RmXrNkc&mUg*wSnoZ2TE{ z9x-2BkY;15s-o$%sgji353mG@q2tif4fHVLc?Nuwxmu)u3k>a!iv?x{QNP1gkx6wTzu-VJQapkX_R zR0t_}UQC(E6p_d;|IDv5Fb3Sa_wg8g_zx@sWm)p@;X{7)S6`vHSF06Y{Nfk6efu`Q z^h>|QX7lgtkAMI7f1lISQ|{iq%U}NGUw&fDq{ztfoHWk~(v;Tj4i}Si+?GR4j#TML zqRjAU2dibX_7cpd$tGBHetu3Z$ZUc&t$q_pmkGm=VRwi1Y)uv?kc%j&sDg^O@^H*1 zQVpBc0;z&5PEiDj*=S6%^5{3(lyOPd>0?_idEsL>8q~6g-E`P^OVT1_<1Nt~ktB_| zv;PK$>aq^E)QX4~hm2NpYE32+ONz3D3c@HR%W9Ie;)ADu&2*7a))k6rlE)>QXi}%p zRBiOMqFj3X{onj+$SWj7iYiAmMRZ3;(``1J08!AndU4JCY{o(N2AxI=v6k3wJY+>; zyIHf@dK98UN(E}kWPZhBKIi7GlUFTCRq)sU>Mzh#8B4Kg*=_#iFMol_^#~P-PP2vU zn50?AgS)3xX-rK;XRpb2ea%sOm!9GfPXnN0vK@2t<^ebF9O3RX(QKWLX(8(hg$R@R zjLY#gdj~rV`#th1<&96jMqK*z4~AS#F8KLh_&J(Qn=FrT91GLbxP5q&(_6O~FXot* zNuK8%9UrsxHgq~|+HQ~U{_WrM@KbLR`yq!n_fQU1zWw6=4Oyub@B1EE zx52uc;|?u8^>eq_)?0#PfvD7!RY($gbedg8S2Oo2qLbk)3O};%?=mOUgBD>rZe}4x2OV{qtj1QrV_5&rJ;4H69rRtxw(Iv z$=MuB&l$J|H=8%mQ-S~Lpa16=c}6e}xP5$!w&`$jeoh#KgkDTpXV`AW!+Qg&+-JRA zvW{1To(~C}_K&dwV7nml&;P#_fj|7iKji-X`v}4-2*X#u`c=O8#V_*Y$rFC@7k`nj ze)X#WeE8vq{K=pE2_Js=A%Fhof6njx&hJoF)yKvRyd`eKM35^CQzOqZbkihABP3lx z(cozRkl2se9rTFHfKH>y@$L!7hbPDljUbEAEd|$UVVDl1=@eC$xqkVKVQ;|B;06u5 zg)Hg_nT#r0gptR3bw#V|l97^S9%Yr{nl`eikft@$<%S#u)o`JZ2*Qw~J10Cje~N6% zOlBhl0Xm&7t6)pKGXS%j@#qu zhfjc-*6x7kvpMtChCHtsjbCu{jbpy?=YK~b=S;!{x~6h{c8!>4$U@HL=#2ftA*Le` z`db3eN0LM~zK5c!Xqt?n8id<5=_X(?o?tc{vNUBIiOjZh1T81c5?;J~PMpQOxPFOd z+Zc^Dd7h(I70G4+dBntrQyW^X_2GZGPA`w^Tj2yQuFfS2|s@Khj>ZAY&Bsr z9}{O0rfD&okJttyKKsT!swic#no>}(SWoC2_IU1HfL_qw*Gy^xri>@#)QZM* z;j?=*WamZ)yQQ)A*XRwE*B`t=UFSUi=qZ+M(sT@js=&Y|^98z{CjK&{@G9z3Vm%+B zRT9gqF|KK$nks^%GFz_@4G~3?7+s!m*xezREO=vh$Y)RAWY2EnjbmKP!Cy#hR}rh# z3qpU6zus`Oe-km6>9&v1>lXdyKKuOxPWBEtxv@_g1xzl_xp~;5*VbvfCZGEJYshBG zY<5MQ#%xm$$^Lk3{C`jpxVpOH+u!~+zx~_4{ZCYqZ+`QeeEG{?2H?wI{xX01r+*5- zH@@)=e)Bhf6Gc%tIy&Okty{eP_S+vDR}(6dFaQxmp++o95K2tTBFhTmIAtGaA+xu)i)2VtYQf-eKwQ-LS;c6%BB^s^LuTbqkz@_q zJ!UcviHn>>5(u({r!Stdb7P<7c8ws)+&p=cV3T614zAnedNM*bZL%t(EOK;H=KZJN zM>9lPZkr;9x{}c(9aUCQRE168bFzPzcI%YKXV00hJtCpP?(cwX(rC0u!sL}UUo}t^ zmqv34a+68`%~oi%Y$lTnOiiQfy3}HcuIf}-f$8d8jIT+ngyGJB(A%O3DxFTB%juLf zD``3wMH*u&E=6TBUQYS>U%tog!5&GOP}CK&C{c+el~AG>HGVcCEthCo&5hvzLs40; zSCm=GYBoa!$OTT1Zx4R2xN~@y(yJM?I?T>T z7^X=fNDOxO8BZ77x%X*yJ3SVw8JaBfgSX!1!w(*lmnyH_f5>97=CgNx7F#qBikcgP zLkzXYeCDC*8Yd?QxVB2i(YYF*FhMP5~H=M(pqJ|I@nt{e7;l zuRk`fLi9yojm@xplZl-*q?~p3rgkxO4iDhY$Z5H-`7QeE9;QDzPjJ#nAD* z4ei!|!^0!I(C6jo2}zOi^yL#K!IntMz|lyQnz=vY`RpT*B6ebxy|KV&dPj(Uid?^{ z*t)Ls;rs8QsWPr%vC|r|KRkJb!^#DOT4B%`V(BirZnNGjk)#aENU_a`#q>El{T68+ zqo^{fsv;osD?jrK#F5YKU58#nLm;IL18m784^zC=7Jt3w#?FwssHiHiO^YxqNb4NI z%(?aY8(fYSWI;(DXGC$#a=qf9H)MRVrrGK7&ZGC~?R61tkwVG2|M~;!B&Dwp>03>L zXiCFTkOYad=VQ(vU(j{?v^q^{qo5K+vZ_YaG#ZWtykaVN%QHumSyyx&lihxsTQ?6ViWJk*nTvk~i@$;Fai|I&YfEJ)Ns#wLweM=_-=u-n^Z;I?rT zogxxw+b+jDH_%0cG8edi=K;6wp5jN(G1Z)S9B{+g{pj!q>TC$BY)JDZ9n!b{sFF%b~(AF@#5)IbgRwPPEM(aP$ul`4N(Np6p8uO1!67JZ|#ueF=4nx*9>OM5ssme zWd)_6^62F`h|n1fxt?D0>Cb$ctIF_&4AE4lS)hX_~Ay8Lpwq=e9USSlBF4W zTH@#qmab#;bX46UNEaA(&0;gcQks-ej%fI$B}A+HMj$m8(F z9;4BOz1BVc;#+UCS-m=w`hQgf-g@gTzWL2>^6hVbn0oW7%-Vk7!HSw z$7A~aJ^*`rdt6>#{?qqYS6A%q?R{+Q*Z;YLEGZa@h9!v=;D?MZ&uBJGwn50@!A;(K{s9O50cn(wh8bS5z_ww0J>~ZO{{$(jaSVsnj)iR~ z6rqgT*{5vxNYtE*_a1ZHJ;btfuDlsVlv279^Yxgf+e6oElDK5Eog*nSvsFkg*LZ$N z%WV?-F`BB=Xtj_l1zR_mjK;|$TV3-=~jmI?F&}(D;2k-rulaoDyz^4=hsxpPtAzS&}xpRvj{P26IwoRUeMB9=FckWWvTZ*b+ zHLK_!w;1kPtTtPY4{so=Cf?I$2#SU(n`nl?d@+A@by{a2%Lr0|nN^h0mX<6t4t@6a z_g(>6XpmL`5YDHMZ*zVc(?RJ!HELsS9x0 z5}7Qb+a;6f6ssA~)LgtMAkI97gB?Wim8q?6=oq?AOSSmu{U1}8Ds?3w8vrF)7$fEd zqpNEgPKVrIGnqc;^!6#^=?Yz_`NlW?H}+2tQ8k$&&*^oC_(4L$>?4*1J!^pM&iVYm zuo3G+6jkAW`kjCH*j)VgwgbQSd%wr!8Db5hC=vuAc`2Z(8td5vSE|YV zISL8m^DB;bPbeu!RiF2lAHYDQs3VHJLMml;+B+zMN_Vh}7ssr;Em@Y(ZaG|CJjXUf z+GYz<5mFId0bQ=>G;F$d4-$pUD^Nv=R?ER|I&=nok|e~GbtFVKn=Oi_A!#awBw;vR zUS7>!x#nsHR>LJp5>!=1mSt2$MK^RRIl)Udv|2s3k%yp_BuUKey(3zBi`WyndGiFv zHBmKz`Fuv2W}Kc5X*L{+^&ev?C6;ZauvMjuf zM;sS;{u0EDyaY*X@bLA|p=lBu&!?zCHYLy%in8E`@BEO1ySK>1jM@AO4S_+k#YZ1p zaddc}#e7C3$P|@8qwiw0noK8GWYL<%WKJb$^oIjfxxr^2zJ_gz1gik0vZ+)FduU^K z69>v{25gS2ZtxL`a4J+mqoB8&oY)5 zGa9l%Rn_$OhA4`{d^V%k8B(MY!{HujS}`8`RF%YdG(lHHB5#TBc@*V}FyA65Iwb|7 z{QuLi(7)ZOz1lG7oX~0?V>i2~ zsz#nxcwWTb&JA{lN61wlQ#`;iUFs-CrADd*23D776R=uMiM%y#t+-Ar%5!|rXSJMDQ?d4^ zEW8zuE}tWq23iF|sBn3CL7gXbI}Yo0hTU+vz8bST93o31P9vjbH@Ufg7elehlZal+ zVSjf(!?ww?1WPjrw;LuGQ_7@9pupQK`SH6yq(5vE#yNRa5T-FjS)mIyqtOzf231R$ z`(r*jdxmOTNV0}dCzM4*DaF_g6G5m^wGfGzrfn02A-bXCZ8r#cO_(ICQ^;kN$LB8y z%Mhp2CrC32pf*Le;g*++D-=P(F-@Xyju$SV&gq$Z#FGTOkcnnnEWKhnpR!niBsY;H zi-V(M-um9#G@S+p62W*uaJ{503zTuj?#>a7Mvtnh=nQ)l>xgik;?D!5LZC`Bk}9IA zM1pO|YCa?KBW?_j*@OXJ?&C#kCbI=MZ{DWgJS56%&ZiUXP76uXI3Hi2H*5+)VLV?^ zNU+H>61l=1_BsFHIVT6l1WC+K|Lo7>Zvyf#WwVShbelXbIoP?yn-4zE-J74n(i|GP zLc_KZYJt%Au`Hc9SiOSmtYhL$hETw2J^kdo{z>@`{J|gp5>+O$@n&d-jBG2UQHU58 zNUDmLqzw8!E-&WDYJqJuXf+(P%Hr|MM+ioREQ&Pj2BIM2*e%MUV7=O+C>5PSH5{YCv*$1A?{@Kn6^rGP{hdQh#iB@3vf4*7HO?k4UkN)j3r#hMg9z8QQ6z;p z%~(z6?CtF`_hyKyNEAn?hK5=gxOR(euptvyRJy`C_V~<=&ya34o{T=kbzG`iK-FJO z4_datu(Qi{9noz%JbwIy_OL}>XH3RZ+?Gw#X^>M;lr^eqlB5Dn+ae6+oSvL;_VR+N z&ZtD0sumEcnjqQGwz?EaMpY%)ZkIeM5f#YG6?Ii(YF!p_gkjlCo}6Pg4F;_}%31`m zCW}+D*rUiLvcjVhH%OLDiq8DmoL~FR|BgrBe-A?`8LuBBNIACAB}-})MdbW^#I4tF zu-dE;C6R{Srq}KA?vLN4JJ=yFN}_E-QB)Xii|5xPT8$22JVw_Hy1gNBo{%O17&5`a zr)RX06`NY{@ck_U5>00pS0A!J81U@*W6C1MZmLv<$b7j)(skk}LX1^Qqy!$TgejfvywyU$5&F~AKoxvgRefW%n zTQ>-+l%{O5ovmrMT~^CA2mALqd-e{JF5^iRolcj2t4-5r@Z|j`309$Hd zY9f=DBW@p`q9_KkY>-41lhp*()EKmOF^vvuKP4)1*4_d^fZg34T*E;~5<+jogM0ss zg|}t8Ij7liSuF#yM4(|gMA4SbcEM^p!;81P7(Jtqa!R=(t1~wKhCI&^YmqcaXec_3 zrpwvnnw9UPN*YxX(K1{Nxh7551XVzqitM#dA<@`OCumAdzhl#Hb+8nR(2LMC4NX(2 zNT>vl)oMhiX`|E~mw-Ck{44>GyPHUgG-KA|c5liva972+zX$EN?N_0UZ@nh<=M3!nyQ|G~h+sKK^&A|aJQRDRR z4%4d{9k)l{?V<}hhx;d7U0tJ!C3lB=91PotfMwVSNRXHGJ8jM$jj&W3ZyQjMQHtQ0 zE!tX>2gfHQ>6**g1s9_+n$@LN9j+!5s?uY%xMtArkjf?P{VuoPxPxqq9G~uSbh1a9 zhDb_{WU5$g6WuW}oDSY*$$qbiMn#^*v>P_AF0owCh$;`G*+p?%Ji7h>yAo+Sf&c&@ z07*naRAnNm8vFaF+`9WIUc5Zx;_3TGxO$H6AA^000~6Or54rD@PhzZP;s>$ zw&>C^`p`;frbbvqM0t!Psl;hUr#pm3$FVwe>^*L7Zt;_ltSm5P6Qi{;ON*ht&(ibR zl?$%!UQ^c*hTbwBTG*zBtV+aH3}Q}RMVy^aXb1>*0lKCT#WADtgr*kg_J+ukP8NiW zh8^Jcc7zb z0+OiGRyj}aKW4pM&`=S0AxC@19Q5~ycQIvAb9H^o_kZhi^0LGa0wh(!F*}SpeN0WE z&NCd@4*cpCu@^ zgD9)Sae`{-l;n8+j+3K(c3Y1u59nAuq$K8e&?k>0$|9pK3;fi>k34Q?mpp&}mNYML zoDNZ1FxuOvs9S18R_i6Z#A7u5mj!wN>5u>TkN^1pKj?pWfAS}P!cYG5Bm8KCWJ+Xp zg1`sCugxmFP0Zx}DIKSeASkRBmpnQDoG2=|oxfwcH(|1OfVW*?nFh21w%I{#RQjVs zf+ixZQgl-yjFxDU&3x^V);YbtOPnmInwZl0n(=5t1>|LoAS)!hko9s2LV-JKFdc{8E=SdMY|G{H-8&Rb zLe*r_JR`{pq*kZz^hlEezA*zSvW_H)sH%k~%UG&Kl@|2-1JWc#QYt!Km)T;D7y4vn z#U}KL(}G^tK@IvpA^2Au&#QZeaGiM9c4Q&E&Dl`ImaIg`nNM%wW5 z{m)R$0z-3X@Tgj!qG%ZO`@~+(q(4Q~G`7JOQEHe>&IpqYVV)yN21Q$u?B;|*j-idn z;|i&j2|S-&6!Y-$V4<%K1GpY zNh(rX(F!$+uA`_jmlrpfrivuiY=b3&RFdZT2ZFL~V&6w-8`3Ps)okvr76_t_JFp3} zgfLE6&(_q9h+(>Tx3`G0%6M;#)3s1Ffz5V9SxFeW%i7y=a4_cUuU|3f9blU-oAo>7 zroqu{Y;(Zl2cKhC5|--FC=ybWQHm1x?>}O-T=4M0Cy2ra%e!McG>XXdpikSjNTP}$ ziwvjxEUsoWCZf}|X=(vUQ8_$5V|=jBZnvRnDx%28bw`m?7#$oClo`&TPj56NDJzNw%BDp#4DQ`~ zz`^+*?!HV>d$e`McsORz*+*z)M*Sg4kP`$UrlT{SOwd#XMOD~%K5YY%EK-#fx~$`9 z2Hx!*LYdQKDS4H#OMUV-W4>I_AC5qjX;p>IHekE;5oL)|s#t9U3~kJ3Pk%&RfT`Im zFXucv{g^Ur5gUbr(E+3Wm>*_!a?l+i zmnL1?=4k(rBCkl(gvU>wG3<@eRU6xIQ4|Bm=wN6Tj%nk^0gt}>DO%5A7Y10GO0xB6 z;s{rPJ;P#R+PwbtmuRBQ_4_Mq%ciT37uA#1sRc#bP~5K0MTgZm$SiZkf4U2lliJJd#CFdpGf2VA~ z@1w`0b;Bmyl8Y^2lzg~c1)r7AcOP)Lf5^kLb2@gP$>b2zwAkP8vbcT8e0GCG z!=&Fqmo+TiCJQr~qT)~g+kdAOREEPN%0^~7+QZZ|;&8_{+>n(eck>0u=O^^WW7htL z>*Xc4n>o5}v-CYiN2f@lM$;5r-Mt}7cTC3jkf@-^SZ!`OIvdjITfY&D-`XVb^tWuf zJsTO3ww2f{H{@lGA?j3hgZ52im#j-jvc+P#q-_)OGC@{#^1PtPV$Sc~W3ygRW)-@s z@^1N(Ms8?nC>u~^1w+-S>WbEoPz;sbreZK0Q|BN21+6SIm`so~hwJM*#*+a_nvoyPM<#?(#2X1T=MteGv=w35L2{Ril>%4)WvH|P;WC2=g$wgzwBz2@Zp zL-IVPs!AsN2MAJ4m_*#&Ea`U#$g+&(nq;|0k%!2FMzX7DflSB<^MD}EQFM*Lc*5P{ zmbxxk&lgOldsG08#H0J?+`O7`c6g4a8Z=phDVcO^gDT2tix#yt=~*KLS)eE~5M`FP zcRV~kWp;5zRi-FyMb|P=B$1QD`-FK#Toee2%)s6w3>QRsNu2vgip=z2!rkpH+u4$) zkXX*{n0ZTV*M(Lf4s#4sqY^7#y?KdiI_Ry1O3uyIdqhP-6eZqYUNSk{N0cp2_D&IV zSZtSg;g+HW+i}_XOLSF1l2xp(%kAt2#gItzh^Oa|`RQN&HF;BDI1Z}fuwHwZriD8g z@atDEKxo)(JmOt|Bs2&jsFsbU8SMO!&Y(kopdn~Ag(RR1ECflx&^|fIN|J#fKq;4e`SMrXzyIBDrb>gy$4~k4`ByxB_8F?8qM0JA?HzRs-ChSt z(rE;Zb+{&pGM0CD{Q9TazphC@5k#^eBk&W-tfcGq(3CEQ=Ax=PG!VoAg;21G*2p?k zO@pcT$dd{|QOKlgHkW<(VUb7)j8st)?2x=Z3e;3`H;^i5#V^LQUrZwT<@Q~}- z9lOAzZY#nhrEZ|9MS9&SO>0mg5X2#2m>>%u%q-hY#B#pi?&b#9w6Kj1qM)GbDqnx~ zCAW7MD0a(gIY+7us$9d{cnrn{vQVL_8mrZo;b_WiHOIF5jE6(QbW7f(T+J^D5+5(v zG8nlihC;FPOS9P-5$Ci z(z6EK&aN2`hQ#3p%h9;GyFpPkG}Yj4ev4r^7>>(g8*#Z=khk@3#NxL`0{aICXoiNQ z2sCv?BQ(&o_`!yzji{S|h62mzV(JEEQ6dNuWtA};+{1MS1W`nV$ll2bnr7m8F_vjl zwG#KvpR(Epbb4c2!5~OWOs9)10&T|LUYG9Bg|=oo9eu;<4Te)Ak|Ij*W+e;-Bp5Q@_6_OYD~ z$H!;9_|@06O~b*#5lvIGH`?Qpb``ZQQPd>*KdwAOjKMuLNy&=p>(jp@(E4I;^#}9vq zSJZ5hTf~mc$=NY^Rep0yoN#bD<=xda5;D3Z@b=|D^6LE^i*-nt=ct;hh;BHHMq^Z2WV>B( zcyPdA&?nh#IqY@$^x*>>MdqWY&(KtZPd@pW!1FjgIw9Wqv}wT~{NQ)^2OV5iy+h@FI_uzrY1o9-nFtcHxF?wqP5~@VvJ)<&3sm;)jpY!D5GqSQp(;L3?(f62ik2pPiiqIPD9qzH+Es-UWB#IE5 zhV90~bzQPDXXob>SxVhRB*_J3wuGvrEhW~=EjOzL7k6)&&2QK{m}gtfPzE@M9b&gXR9iigh*SYG=` zMaf_O>7ViSFJ7~rZ|OPvShdS+zQlDzR{-iH2Y%pl zo_iRML!2d)dCq3D=Gl`^xVwFWYg-gm_F=6i>7;o{LxXABq?r$uKoV7eMkC4OF-Wvb z`VLK=A!;I?zeLD$29pj|8X*-TVZ3I&yrX0F7>>qd#f~fs7&rqE8fJGFtkzcy$2Nip zqHA#V{)(cgsYQ__56R1j$B!RzFgWGQpZ^oP(&uLR64?+)cL~4uhkwM*3#rST)1!yn z&7NcE2BKgQ$0=!Apz8{6USD$W_)}cF&(4p@@*LYWc>Df2s-h#xCW=}!?oK#8JtxdP zj_;lDy$|$-&+pH@8>p9ggYs`)Eqb&Gj1$U850Ok}71l-{a!l zhCle-e@7De>~wo%NCdW4K-oGQSS_Ii( z6U`Y7r<7$$r`x4Ua=g_Vx7Q;~6ZZT2C`E&53baDTdbOfyOU_Q7(3S;N9*}1ZPJhJV z{ZlTlFF1evF`ICUBpHZ`!oYTsD}hfw`>NtReGSLB7vI`WwL3*st7YYQ}0W*e)nig*JLy}WO{gy{=r8K z4o|uBR-_rcy8by!?QG}~9HQ0^s?fo4 zCfv>EGOfb(e4U@DCP-Ka`iZLA%vu~g}DYx@i6h%VO7QA0x^7`F#N-?7l z6AB??v0V@@ea4+3iXx!fDvi*R=b&hPzWVw(Wtk$D4Z0#R84Xblh560b$W=|5C2Uq# zboD-RCE#cpj%nkXDplOFKfK4=H*a|T=7OD<^4S;vhA?iS8t|9@^EvM?=L|c0yuY}h zv)?DR1-8|O``<5TKtL)(-bO;7p3r$6TTFaHU}Z1~lSU(vRp8yZ0r zFq=i(EN+qXmbdTTaeDfQp0&@gGr&}3vR%mCVveA;q@~Yb=pxk;nYUne@fy=H*@PZ> z6YM?=QK3{~of{`;A!q)=1!Xv1W3- z$Ct1F5kFkgw?w>~3mm_~u6HU?BhC76&MKKCmrDE%6NLUy~4^=QwL>)nviQ+k1 z?{}XTT$A}b#@3LY(!p*FzIgCGUcdesMdIP;J^W3;;cyS7k|^U6Sy0gx z8_iHC%M3+QI2;}`w0rdRK6M(gT&@^(CQwQYM3;`>Fmfk!j0uj?Bk&?<1teMFZuN%g zw8#B}bI$gk;LvC2P7qoZsnsbO5KSFFir9F!yng*F1hF89Jq*i1lytl(p%Dazdn1{3YIfl@4?a4;(lkg#l6Z&RH3_R4MIZ9u!9Bdq8r?S8KREhuw!Yrb zv<;h`M`t=DEmCyZz_c{F=77sr?@`2-%e&X;wvO+4gh2#NiJ(-pQq9)ip&KSio?%)h zebXU`w*2@fKf$tk%r0*jcSj_CLJ_3|+kl5h4{=qOs;DpxlcsFxclso0z>UA+;rG5^ zvE8A{2GMRynnv_pm#*osoiBNKc8~RPN1heG5sTj%2|WAwhy41*Tl&2Lx~d}9B1eM* zqy)sO#&P@q}IVHgi^rJ z754T9T)ugO?|VExdq%OVP%+6ef!m8a!aJXCQ9-#R%Ve?yqFqkM8PV(YiTyQadqcXa zLS00Z<&Ijf`LF-Se`4>+F`5BZzr*GAhSt@|A_ZIM@nmujF%_}(9dHfNVj4NZ zwhfx5Bv=Q0{p%N8-rSMY;Kc=^EOUHzh?lO38=oxmupNon?1nT=Fgh|(n<8lfd($yR zRUiloaayBl2JhdzCC_ViSxUF>@cQ{HiY#L=8ME-0^m;aiYS58&$|UCPi&q>^57?|$ zG)>L0Kj5oZZ^$GA#oWVmhKQPmqG*_k$eILsSK?yk|tBcAty(tm`ax{$(eTUQwuHcFJBNR8+!dNe&T%-mYP#n z5@lJ?7CE{g;W!RUe~qZrgrSGySct8FE=ydzdV!{XNB~wHjYhQSjQTXSNLg3tqD)z) zWNk&iJ3x^nG|51f6tXO%YD&hFJvRQ9Gz%&71h>=0&}2HULz0GE-oC|h6{_+>ajB^r z)Kx*JH>4><_68$#RV2$}OwFL@>|q!N^O;Y-(Z2xs>0^MPc zlY@J>)`SO#AMxzb4>>t`f`G(uGNH_K+Pp#%MNC5=PJL8K=ltnsto{o4zw zY)4r}7?Mt~^*K8_<8=QC4^BSgaQ`Wm-G@d-s6-6eqOCyFY?3G-O=5~HCf<7Fc}TRJ zQRf+DkkV0APW#8~b{nGLj!N)R^_Hb~O_c8lQy;^&QB{qKoVeN{sx4`i&2DNypT%42?(U z_t|<&2GcQhB{CkJ(RU9JF?s*ylAhV&<0s!C+_k7u58FK8{kuyxn+0;MfMOQX}EwbOzLlL@kuGw3KIORn${($TaqB-Bfz@h-pcvS8kIBK5ZR8Z-+4%ajIL_bd4f=ZE*bQ?;}7a}p5Uh*yTT``c0~DxybRG4 zi8$WiZ)e4|29d!p_W37uEW6HBlJSLMvsneB2)rL2T$pZj&OTD6j32fcQkE65csrW zLR*Ra>dU`Jq(u@-(k!G>W&9@K&cCG0cc`L)AMV&Yn-G%n^8F=kE%WrjeU48iJow@< z4}bU>w&alS3RKCYE*k_%!L&rKZ{Jb`1yz=Ed+{YjnjzK&R0VClMHUnUWWuOmv7R%W zx(KE~QJ2Vaz}5AabUFqHgJZ&Ag{4Rcc}W)5eER(#f7pRH2}PEp8YXSikX0FitfBTg zByGye7cY4D;FO!|OS%IKK})#4ddKm-GlZhXwM|S(C0y+=)IQhOmz+*c>6<2h|5v|2 z7ggfr7E4k=&hXYZ)K!Vm8z2r{%)yYV5;z#&7!@VML`zFIK3&I zg9FYE4;WbvmZmf4j>rpf{ffRap$S9`S*F)>&@7p@X;>{6bh}+z z4Why$$+qa4L>8rtI|mG$1B6nh&OeArQ>#StN{lP zpRwA-WLZX2mCWXM7?y_Had5j1MH#W(%#kIDG6PzH$PYL^Iwp#0ylsG@x2*k3$|hzN z1-!X>iPIH0J3D7~cZt#(2(`#p|NM7!HJg*s1IE35#HJ-rcg*Hj6t%{%H^h(}_C|Z; zQOxn-F^*=lKR%$YBy4-a*@IK6Hu-Q;+c80^>FiC2w<&Lb_BGjR%O(j>%amYtOA&>H zQHmcYL}@^n`}AC!>sNPtd^Ba)w^164vIxkEfJVqMGzHflvh#CfSwU)bCgU-FGAGSE zRH;TSDzsYt@Yl@>)|-f%oXef(a}42 zcU%7aFMf*Y_K-E5AP7je303qjNB_gONCIQG4|##NyhHf|1X@5jpq|PlK82*vs21ByCyG>ty$-u*O~+6X8iA@-h*OPLa6wV2 z+K}`64_UuUsPc%_Y=vA|^c)+3n(OO1Z(d!}HX>z~k>)!T5u#N_DRkLJAxrNavZ7+^ zT|RpF5xvfUwryGOR_wwRR~IkXdMhS-hqTBjjl{7%;lKXqf9LYWoVOSM%w~JTE%)y|WpDh1_4^)FlUJ zN9_C$kzifd;^yiFj?|-LjlES^TU{5f{kFy3T|>|U#l5(D@L?nKQxvuAYhLQYAB z*5rP(rK}OkO^6y*$d&BX=vTw)VN9{MI~n>cOow5PHS}s4%XK|k80AD5tHtc@hBGn= z+R3s7s+v0Wdp2!wt7cQ;6O>Kfx~be@G+!c464i7HF{{)@Fhqi)YRckUQV70y{&yM` zmdH9#nOR1$q=Vh>#YdNa?@L2%zf`7S2;pOlf+Fk_nPhAb>zX8IbIb58pyJ6YLY?fM z3BTv@j4Gs78>C$$?OOnPPN7X{M(^Mqgz!6u5-f?($of~(l^ocBT8>C?-{WAJeRL_~ z!lc))z1U8ZRcY^bmp2%XJEyZiY`+#JRoB*|q5T{DrA-3j@Z(2Nc=cNM-|J~oe)Kq3 z?>L@!5XYs{`GD(fI>kIIo{y$Yi}B(7de7`_>=0eS$YRhTm(?UKJ{g$`4Ld##q8;Qu zR{;*tV*f| zdqQD~zxCdqKSp^Zy!OsL9vwqKtYO0L$B&OzorY7q?a`0;r3Sx^O8Qagq-CFnuxgOJWkd@Bji!g)pH8g_L z=+J6b2Baa8prb|AR2`h*qYRMZez{R-p_RY;S6YSsrD(8`nLd|7n>bFCGy6|1q-R=* zI*BPavPPhj$S`C6GJY3?4QW^sTLjXM7^5^8XrVf$Z9(!RVcWi6Z4af}Y^au6aGxh5FIJlyaOvr8vC*bSQijK*SFtxzpT03zNIc*ooHQym3Qqoi-= z9~OjQpM+@iA-IEOs*TU9L@BHAI*h3M-%aXbl?t?k0t*{Lme6-Wb@Wp%r5K}~65O-r z^BQm3O@ryx;24$@PV)FJMM3<%`6noj9a*EdNc9yik#R#vJz9zmbiE0n(#AVa z_ffCkKZrgyJJe?>Qq$NWzAn5zl!&Z|4LLf1K1e5NQ>cV6{r|;R@!tf?#f4>ozl{cn zbDr5%l4f|AiL1NKgh&!}F%#|LwFysimD0lHBjpoyk_E3hU==BR!7`y4y?MNqHWA(^iH% zC`#!+GTlR!4=%7p($?lW#y)?F4yS%i`@J8J%H`z!Yhpc-z&^6KZ_477oj;3;a+-ip zg_e_4Ogfcv1T5i1KT>1axJp-R;rN)K}CjJrB{Tp(mpJlvEMWpgtA{JsmTwIlCrUdj#?xzbsKKG)ob0$l5yVkAL(Ed9I>RlNsmX4eW@# z!(yCa4bp)3xP>n}0jn~55*zCrt_DN>cJAtZ`L33pJNKMnf*`uRN=2fjfzw@e>1G6p zRi!Gs$)M22sUUH2VKx*S2|Rsuhde=@BxRi)3itj@BH>@aWw&|OFr9@lS1j~?s?nK{u)vi)itrRC9KDmtMiuGOzb-3Ss<2r zQ?|H>sO8rAktf7fLdC3{_1&&cihGYzpQxBR7h6J+}?VT z-pazbDhqfQj+BBeRP~+Jg~(=32-iD&C!SZR;~nwAQokB`fIqd}ANkK%alp%fHC$gs zd+^v-YOnygL5S=1@zZPdlbi4O=`%KoEty$jZIBC$h8HCa{;)|{F-Pyc9vE#Fz(3o~ zk2hrzqn})B7`GC)W*y){u9;X%5am>%WTc&ylO11V52RC4OwEoMs#a+y`4-ESo9C>o zdGcA6Ho{?}5!S)Tg}#PCOdrhIXVVvKNPWkzm8rT#0e`77pFr-BXjK{QJS zy7vtEtR|!kZDtz8^tL!PSwG{+zRqoCq^jk(yxuxSipV8?UCxzP6q=9kybTo6L2pHv zOc@R#4Bw)h@5xZ$Fim3Bvwr__74#zJYLwZgs^A_!OY~hY&!6vmA(v=})To2IyNG3d zgt~S}vBtiK5sr8>E76f43YvY;HyYwxtFh(Rtr(>FC%10)AS-D*fV@q z-*`KT{UXF%CV6_Ae9fv|>6>Xw3rs)w7nz?>c8Dg`+^)Sg$jLbK{rtQ`uNQ~9kC zAmYZ3!$lY?js^T!1shmVN%&?uTKZ!H+o2aeaR$i3$1CsT?N7U|L^u3;Zu~~_s{|?5 z8PgpS?9)}d`ZVpAhME9t=);+&or!GiqQa0}~wzS^W1VyuJBgk*-|huia(FN;9@P zn4AT3(#AZK;pY#zG-ShZH32`DC>r#L;AG)P?ZXQFdxx?t7 z3mfZ95rG|`I8UEoxF7v5Ms!stH8&&Qm#Cme)UjHH&z;q4;^#XO;3b>!uQG&O z|6NG?S$CAhT}w;AuuJoh&-H(!BvS`oK9@Vh0d9NmmV;vrc^0b_4Z{r8tQ!pDOsj_` zYT}BTd_C^)J)m2sA&~F*dbJb_1X~2NiRlTf9^4`&7?1jVM`7?z%GxjbYP_~iDThGmp{2Yk zghbZ>8{OY07HMb@3kcMRr{CnWR%3`&79oLY5HjOvi`u zPp>(!CeD16;-8%9Mt^VhnTm&51Q}Qtw)K1c@bPs(`BiT2zTXUWI=o-$tWq^;EYD1& zjYhP5rL%P#{?OVc)~>Rn=-|(f+TY4bji5LbjZXJaBIJdawgPkZoB3cgbJ^@bsg!$v1vM1`R>L|_|x-VkWBnfc!X^-(tsAMJ`Jz{b@D376k9d`<-djM zPa7YcaWbQW?l$6<*!jSj@xuPt33%x&*eEI1(ihAnSCh4Vm?u9ZhTI|BksVbRGX%rG zeQvLl=YUjv&E)nRr^fd>#XXWX<+_Z&YM%-`>@FqcbO|$r3USGUIdbinlzZtRoKj;R zk>Y=^=a~CWamvXi-33ISGkyk1CGhPFq$S4CeD4r=M9kO98zBn=X)w?tuLkl+gm)BA zaCM}}(CZz?#cX%G`^+gv<5ksnPca)JqZ~mbY1SW#gq9fXnjA?FgXs%902Obpmqp z$`*509q#>Zf$mHcvUMsQ-(TG^pW}I`efum10gGS%>0N#AnhNT6@;TZS*q6Ib(J+3 zAxs$X(a^ADF4er!gGIi(JL)>aN_b=jFxIj%5a!Y;SxL?_V8+!gkqqvo0mY#c4CmT7 zAV|oHTkIfT%ROR*zcU=)I(;#ho%k=P(W*vx`|vp09~%oEn#fS;`*6bvHLihLHuzz! zcql;@qL)9G*U^qC+0}{@(6g@o;!@@r*gk$jkSG=C798M^iME2Tt-S;E)0T9&^vrFx z=IKIF1JSM6jd$3Zgja?hs;~ZPY7;&4iPU|y_x6&CVjYaluPlPFQ#3TsT&^CX2 z!az!f<4!e(-yQ& zHivbD`CDYUd?^{M8Fkeu)dhd*?5xIUK(BbnigL4>PJhAx`P0hBFZyO(X@8p#J2pgJ z4M8+`vbsX zJ?QBk%iDw+QD#Rvz#$NL6U-4iO&=v;okJ7Jj1bYFT&t4Z!J_vwh2l6Cc7(T73#*Hl z#O9FsHgn|c(n#CBC2V7+nlYR;`N789!noTnwo>U&&^bFa9a2c>nO4*6-#-JKv^(0R zzUwmCNqqZNBWBV1W3xK2S0Eo(3(I*`!scf9GOTK4Fp*${i#Dc-KxX7-2?0_COTvLx za`MJyU$7@*9>v7bk+pnRC~m|lk8X$_E>E7eL9XRu4h=Qw6xXKTbc~#t-*3`KsQ&_A zKliv`%W%SDpl!s|PWT&6`1$;n^|-OEQpY_qU)=E^t$e6v)r>21!@~iA)B3L;MfXb< z@*Q<;XS$2)WmxA0jszd+Ny=Et!eaItenxHptcj1nnci*n@sp+jQmlKFh&IPKRmCv9 z*8=?rT?QBJd-O>C+!REQ&To0iS~0S8r6NH$p{o~ZmNkV7)Et>=WfjrmUa=1Q4!!i% zIe}8GsJaD*YHhAnaB8M&dH-IxwScrx# zP$UrECro|5oB4sH>9OB7#;hXC=u^GB2Rg5&d^y0(qpL?}Iq<(!&`(~)5S0u;j#@WkT1Qc9FNLlS-l3*D{MZxLyTMcZk- zt9AIX)%cFCn$1Xb#eu!ff;B;A^5>wO({oXUG5|NVdqo;%iW7#~Iq_ff&h){xt+#h; zI%~pr3T=EGr8n=se)boy(Fc7e&5j+~@shne2MA&bg@|?Kb*NIC<@vY-`o^z6pY`5Y zvQC|yy4Bpl$l~I}o>eR=2KLqi!pe>l8Cf*w&Ef1-GdrtypJAo~(SCHHNL9`Z`%Oa* zlz9h^Ub6mR*Z#S2`uYRJ55@qb%;()fFZ3MHMM(8eH@m@iw=>frPfD*#h3xFW!y zXn%WmI+F}aU8u&z1Y|G}LTt@i7amGYo<-_ai7^b>Taw0F`Ass-lc~eAcszVYa$o>- zn(sdav$or5HcAMK&+{Ro3KaAvGWWNee#0syfehogIaT+oX!SaUc_S~NLX|i$$E57g zAs(8-nMGQvX>IK)EVDn9-CVnewKvBug3&T|X?8)z_P^?_Cpo|&C7&qq!StUA&o}?b z)h>G=H~acFNlut@2$;}q_p3}CJaDRLCw$`!aZ0VLJnvvv(8ERKFmObT3Uegm{`Bc; z6DSW*M9J21o?t0-(7)%Of@zU9IHYzzk9JG2kwK z|L?{ag8(FLnUt7EvMQNsl#@=}z7`$K7Qx-{aV$9bqnIIhwP};Bt?6~fY@8}lZB=Da zBzcOQbHNn{+#^=QE-gw>$qZ|FWVES%S`&~ffhS5Q5$gqqF}xQ5*fy8*dD_VYJkWyj z_rJN2Q7`pr?AGkin{1U=>@~FseSbg}Kq)7=Y3xoFa?R_z$J>H459qS1SXe}fg`8xf z`Ap=AErlxwi3|pVkKs&*F#c+G&TYPr&Z(W*QUt>$o#}2~ULz(x;>+6}NX>$Of|T(- z43DNkyv6HO?$0l(&$nBM_P+ezEWj{#1_PsF6F@pJCns_1E1emfGaM0*$=d_OF?4{vN54P$eF+losL7kdo>;iOCH zNSMIIl0y~By!|O4mj z9g5L=!M!Kgr5TB=dS)zSl5Fa;^sev1vClSq^`CECB0MpjxW9kM?De}~B$_nOH$hgdMP4^Yc% zFLpwsSOKjfX!-W|)#s&XIh1_c((^Hj00i7;eVE15z6W=tnG>3=j6sRq3W@+yT%YnX5=C>R~gcx@$yIU->)c1lMQxq z-kq(k*^GS(8R8ud7~Kl-UL;?m{h)-QS&VCTduxb*7b>)E1&}H| zRf*W3YSqkFXhzL8zk{2Oa4Q3pwfo|=h1$MFL>II*=o@)qV-NqgaJ7&5F)=`?sII)+0|Dl-+)L~5H6tZtgY;>jzgDXpbx?(Gu_hB@@{CM{tqboIDl z@MvxyU(;vUeNi_fGl|4Bd#8Y7a)eb`V=YV5+yLWdl&Rg0NW*uJ*cpT-2*=H@+GC@YAa4m zvLZJ+rNjUAOP$~N_>Fs$=@>%}j$CSo-v#Cc-{3rj;han*A`jH0-FUjuxqeCZ{vxr$ z^4It{S!*H+KWFO9Lc>2Hg|6+L3wzP7*9wwGX`t|UhAk-4(dWQd!fqe%iYMb}Mv1xeDVz2|X#n3R=!nNUwnW(+tgtD-sXWB7TR=QOBx=pg|ZKz$}_`%+v z_JX>WwqJyPOjfDG+wCecUHo`y*&lp-_NeNQm}9pRv;`vz+}&=GCb^y8;I zlFG;Q#wOrV@uLT+9X?mOS_6>}*P*MOSn1ux!(<)vz~1tS4xLwJIv0-Ce0F@XliCf& zkXr5(t)I(!uu@q|uH0h&IBC|Zf4;dh(~PGJ>1hx_P>`D@FBh`dUq;YnyrzumI_W$C z&C*(GPc5I+rBq*3&=;|qW9WC>0zf%2^J6IZb2LpTQ+aHGm%=mKg7Xg$It?6TJSv@t zz@yzW|8Y6xYaW10Bm0mO6sBjH>?_edW6349voxAhzt+*qsYrlX$C}4tw%i1my81js zum&I1=Uz#^u6<<)XBbE!Eazg3&ovucyZwNHt%kNqUtWB=W7ysPk3 z7si(T9P+VggJ^Ud-7VmSwA?@=^!=Yva?u(i9yhCn_bDrcp7?IuL8^3?>Of5X>1h3)E%B!!t#?^8 zyYLpRHmFYC42yc*{PhC22y69oPVCy2-KqQQX*d`f?1V`gL#>W`u@&@aK#(YPbaI*X1z0-*=-11lH!saTnH|}WGi9^rE+8a{TOi&Nm;@A~E zu<+GEcfz&zoe96DC)ktfxt&fZkI$Ok7YMU%jhq@C84^N8l-Cob9ku4YWk+HB9GyJ>Y1%9?pGo)knAJ#V3) zkkudXI8H3@DMLkg97j#7$OlQoMdCE0OVo1Kbb1=V)8*S=#*!ew8RCp&;mlV352X(U zs(H~tR1O9<3TuI4AbpM>Jc?ROQxAOvw03)*s0BFV_3@Zrm+X3VKfNS&Ua)^K{zx}2 zIl>~N4R%=Bz28Ca`q%y%g-!irf7>Q}jKzi}=bbPjS~YFWxk`h=HTr-tR6}|rTe%re zqgR8$pgcnuV>Nw3HC2kWaD|w%@CI>rg%sQC?C%GD%b`n%-@Z`|RPfu^fpf0y3p)11P5AEGP z!L~QPXD{9PWzu0GRMTFg7Z>l%0_wn97oBR0>r2)m4J2`fpPv_Akh>lZ>HU%Ebe7)M zZ>bm4dqUk>Gk&jrG~-*zx8}OaM9p*=@sAVxb+=dODvk$kxTbosP!d3AZYB-0{acE| z$Uh5#r4a}GTk~hN;t#l7dvqYeFRU{aHi##(=gO0CHBfdYx*jKb=qRp;X4Y{YuuXCL z%t+KN_6G93;1DUYvhISPDL+i>z5K{ZhvW->6}L!$)p2fpeOG>Z&?ZVRdo0pqV6 zvLsP5)>-+oy&{=GbomPL!GOl~A{$*vO2q{0VtZiNIo@l`K&@(wzlXcQx6ZLR@MViE0YN0ox4OI&0ci#0WCoP{{{XEisyYu~jXAiJ!|**piLM7cD=8aU)~1;VBUOwC3n(d= zQ)egI_)BDT(bsTfa39CU50EXaN+k0j$Ve0N)^!ZpW7bsiY1`H;67|dc8XiXtR!`!m z@4i1ozrBrvM@84`I_EM?jZ^+!HanZ9gz$Lod^5+WF&Ru33$gG6t53FylVOn`EulwG)Evl*AyqF>j4O*4mL)a~l}h z_O__k6;V~Ki^k9yUjN_Zw0dL45H$rY9Cfv6qH0A#9_uxXYF z^AFUipm!w$&0)3`UffS06J(MUr5v<>1OZjH5;#~(<7+NIN(S7fAzb5Vzg!NVTq{CZ zdxT<5P@G44gavF!%##;GOX6VwiZzq^x1N_H&SJ1uUD=U4=fH;!dPJ?4=cl7A89spg`WL*l^lW zx*TnkG_)C|?5$5plc!vv7uRE+iQLmxt$-#q%8PfO{_&2E6E^MDVA1g`fSI`!aib}T zYggo)mI9s%Ug1$m=91i2gjG1`sL;An4Gyw*D}rY4Ls_j!s}866gd7fG^+(S82aZ&C z>s#5=k0kn0DnvAk!VX7x1&(I=+0DZ70=pa8aW=xjv*av`!Cb?5Z zwS*wg*2cb9>hQe?)@PNkNK_MjN&B%1f)!h!{%H?PmAj*MzngcY`qM2(Ymuxm__9hH zX;PP7eSdlM+OO|7p>iK7H0&x(E>jKP^E;PMp4k0)Lfnm;xgd|F>Ur5hAr))`k%BLcKdzPSh)6+y1g58#?;I5_tB4I ziA|&aaNs>S`?fz5Z4*PcsT)6PeFb2SK4L#wKw_D6T2dnQisfVapC83QYsEfQV@!kh4u)VmLN65K$w+#@@fa zMR~?l>;Crv9tm^ME4__x_g<5+rTODf3b&Px7%-F7khS<8YO$op7VcTobA(muhAA^s zhK^rR?dlb%>?qYV0Y^*M@sGCkOb57_`lcnFQkqBbHW?Du^odE579t6K_rO49ZNiqp z|K>Pcequ%HyZJqlO*+w*(ZJq%;^&wCeYF3RqDm3&@kpf(f)fq{ z6`cwt3#gnHFjG$$Imc*N9E}_Yo&2P^#~HbCc|YOU6!qU|DEK1b8b*_zpiNk1U!%ZH zQ8DDfRe*!wbm9fGA|~)v0NU4C0Z~q5hU?1vn1+Y4{hTY6DX7Bja$wg12SHQO&W*F6 zu778vYT~+%7C&=$NJCfXWj1Ck43uRg;uS}Fb7z*Vw-y9C=~C*Wv9ZMl@bchv6iVhp zN4aQR8^GneH!GoBw_LY!kjspg(EV%PbE2wy$Lcn?yy|{`Ev}{Wk#hwur~dx1y#LdW z_(Dym)z8v&O%O-)QP%|U8(lv6r?eRAJQk`cD}4HnyMmy}b+KpRe|KI!wh^yqYH7%2}wnPT8yftm33s)$b5--RzIik z=g)C00>x`+@H)7~OES|k4H{R}L9odCgrZ>9aU7YXC03ePJKrP~h&3t11T zKJAoUfdGNtHI>-98j5W2TO@Z(GL$2a5#3^8VbL~%wj3iC2`G=fs)1cRJo+Ecx+mqR z1N%#IKBN7zYuscMdqBNATi^5kyytx$_?ol!`n>)cc)Hp?)EAEZP%rjaALOO-CW1vl zfnU_MA+OXXNOs76!@2 z@bE5OwHn~eF{YNl62BZYplrT{R;4>nGJhk4yEF)cE=wxsX^YqP4v+EjfPgDOB+Wph zAN3N}JtV_9Vz)%3?FPkwlX(*p zz{Vx&0rkIrrN??I-fhXEr@vX>z1G+uI6 zTt{!8Iazs02?OYEw2W1t%b3X{CfSVMRuqA)Gn6aCH@h2@W`J_Zr^$XBWhZpLu0|ZJ*}N^cS><) zg4uZLcZm3h72VXta4Hb0CzHokPcn}N3yqRCwUr_spRUTPTj~R((~#+5Il= zNZ^2wP+-}fU85AhLY{Gp$)88%#c>c`fEmx=4_)`clcJ9pUvi$0t)I3T#Wr?EQ=jIY zpNYgCmnQ%7`FG76bRQlBpD9s$m=Sx{{CsxzIj-%+`2)~m%VX8BQ8X-xaca6hj_S5< zP0w3Gvt$EQGYWlg%W!cHLtPpr@yYrzBAH~96$!LWn%ZP%EF9(v?N4i(@4iH3^2V6B zx!0R@V&RnPIa?XZx$_|q$P8LF7H|0x_(oLSM&!pIjAMF2r+`o1WUsuky}wVpQY7;u zT$xd`Z7u%cm=}Vx31ujD=!{96c;8Q^I{677NjHn?HS6d|w=`c8*U>i9QD_1O@!RtT zZCfRTfEikACKNPb7AOg^sC<5pQ6Nd6SyeS5F^j8>KK^^DnEc5`rDA>OCBz%`H^!Xy z`t5+XH{d)Pw;Hu;G~;6~ld-`JGaT2+O|LZjekb=We~krN^(;sP#;J4v~ue@FC(bbfb&Zn@-?rmX!>ZejmUNF109 zN=x1^ii7amNJ@=1DD;v^)%uqBe<9(Imj@_R1%cx>)&M*Ep(01DXsk)y0oJFaJWh*c zKO$6sYsXS%g0IHm86I`C*S|p~7Q@tl#~Pd3jSef0T@;jPx5{?#{Pixc(Q&m+8Ko&7N{vvl1vjv}8FYB+djl zIqu&JOnj+vfJ>8CHxD5L&9@g9Y8iKq7$PX{*IAQW{Xh5o(SGmx%Zo?cfw|vkViNth zrshcpDsB>>@Iud*i3sV~{KvX+IkI=*f9B$QgP_@Tuq=09Pg15~bD2>-UnU(<)cq?? z(up$gOG#sVCYnsj(!m+6InF)l(OgDx%Hm3^Ty?z~MBBm_(UV-JcDRmA%GuPQyq-qN+gX9~#Ua-(K;>_A1DiWH^1z?+Od)zjX_UK1VdOcl~8LZ%n3g723 z{6FrFx*G>R2p;&UemVmcqnTr*P+A z^HMGZJM?)8mBgB_b-bW8CLY*Omj9fbyIB8Q%Ez`v6tadZ{M@db`ljCY7joR1X}yTG z2$}oiJY%KxgoK=(F(= zub3-fv7=i1JQfn3qoIu#$%4m7TQP1Q)+a|06Kc6CRc=tK7aje^uNah!m@Md9lgBJW z6>yI8vmk*OS6TD-&UOl<(!dVfBSk}p}-Ti`t7J-fPCXzrR{=*ZZ3k;;{LhGf6bs3g6i|4a``5mNFiO?w(xrCS{ z8I=#YOdrW;^_d45lpJ|P@|~;J2YI3D<%J zi#baBN3SDnot(D)ha7&-Pv-q{S@!SXKX^q2&BWmbbU1FNOxhTuzewFSupbW&sHLy^ z%lMhosz9niX*LTS<)>zSaCIi@G^3W#5Bs^TyutYuEgp;-Wwloc**5yHrc>jTI(wKI z-sO-wCByLdOlpwpEW)aR72D&xsInsuEK$V;aqMCyk{vV+o>rF&YU!<$v@aU0qq?h$e33XsRtuP;b8;y6B6UNr=wh0gDVkX~N zd^%aM9N!sL$5#`;lV4&*VDRTRZYb|WEawJJ8&ZH-@}L> z`-y+;gBu>X>z;d`{q#Jt&Os1T2(@_0(M8ELy3hVRCKO8dQ>z^M))ZM|L}Qpuor!%* zy(07-J74`#1HzU=;Y{*-F$kk%Sz^8#HNC%)dG6ka`>fB(sbRvK1v-BUtF+ENk!(-x zEcf74ei?U9c8@Pc&bXf+c2fJdTs6uF9`DYqeSGd?L3vCgL2RIArDBbHBUK)i0&X&z zoXOzzxS^c_i)2>;!@>n!lEYg_uUchA_P~;$pP&B{6N4>k_^?Ce%x}Ej-rTBL`5i0H za?AX2I-5x3lB&PxE$QhGxFrUCzstALWrWOdOUrCBV#~{I%7Y>75FSN=Y}G^FBoC`} z$-K~RW_i}-Z^b{Sw{K|X$jY|S+N2m$jSISi;$xH}gCV(QIvj;zD@B@|Xg-CieBBaE ze?j|K_~$&D7nyo?>3&8M#JIvdgCRwm@iztN(_(Jb1DqI5nr__3 zPzcN8smcmXCZtY7&fDk0x6fimkc(VFt4MXV6wmR5VHR&|`7*Bb4RYoVh3?*{UWSBF zyQ5{tly^9JGFeK|=AG{W%-fuxLb`X{!AgS(R5|gf@5pQG z!Y5%9DQ<8DUc?=`++k6Psm`|SPi5-L8L?ilfr-fEsI|1ZuG&-+X4eX-unZPud~ic8 zsLazN`-X{Fza-OIqrl+*-A0YP%z|uSugHN!9Y4|vD~CV2_+UFqhJuP(cECiCUx_nE zhA>LLG+Vh&v4vT_tVW?LUsI*z!tc3(2N9JYak`vkPCp_TO4HsNq3J!dHs2F-#19+l zYbivG>r*NM9X}jVxrtSo>tjV9vpR0*lz&HS6Bc(1O!%?SG5niVwl!?>tmoj(bjSVE z8@qX6HzD^xY-3)9*FfOEr&k9q4@KUD6PL}~Vh+51Y&ZR#AI{10xAdTeV&aqYU$;2p zpl46t$CGAD8yk5Y9UW)I~d+EXv4=*o-l}OO#?|)K646gtE_wHOlT0*P3^Omec70~8I zxEwEX7MGL^@3<+esd002_a)HD-S1{P>*?!n4m0L#FE`r1-YE1~)vt{)m&VC!@~m-%9;voL*;Zou0>&>|y^t z8R+T#jbQv?vNw@^yxbUdx8`4+=dQ~_I5;#!N=a!6{1V+yfsJ`rFB+Z3)(#HQA;{Qo zv1NDt-KyV(1j+u?N&5QrO?qZ#l3gQ9gtVlUl~ogWuTl0#f1R%9TZ5%W`-S=10=c-6 z2z*B1-|FY5A4@6B00O0c_>>|IqMftT-re1`FfkE7y!qE;Z48Ab0BPw+n7n9CYEO?u zdV0F;{+|Ieh_tlwO!CErtDyI(q14{CjYzB?`PewT^m>ItgP^^z{lQh_~}oisK0uD;wMN++1Vh zt37%ISx=4;Mq~Ew-d?NE1!!w)3p0DAj#XAp4k!{D7^TZjpr4PtuRfnQaLy}#wPlI< z@nGy|kL#mujrsyND?QO*A`tM{$2seIWLHsXX2*1F_)}hfx#|so8C&2>_0|u->Yu`A z@2mlRge>-z!V8d=9B_o!0&or=hey1 z?l888x{t%c%S-3q95Wjf69nUZ_lWSeFxT@l!PQ6n1FV^+c`UY*vm=v5n*quQnI!# z`Jc);QMJT!y(_TJd_&;TwVVoIygL6oC*P}aei>;pzO$2wEWvtS;qzRJm(Jq>Nxl`S t)2=|{F{^rBq;`}=2W-Lrho7xMZ`Q?GbM(%oCI16n3NotFRgxyb{|A1K?DGHs diff --git a/docs/selective_search_demo_files/selective_search_demo_11_2.text b/docs/selective_search_demo_files/selective_search_demo_11_2.text deleted file mode 100644 index 768fa0f1432..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_11_2.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/selective_search_demo_files/selective_search_demo_16_0.png b/docs/selective_search_demo_files/selective_search_demo_16_0.png deleted file mode 100644 index 7694f1cd22ee73a24359db5f85509af643f9b0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127070 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 \ No newline at end of file diff --git a/docs/selective_search_demo_files/selective_search_demo_1_0.text b/docs/selective_search_demo_files/selective_search_demo_1_0.text deleted file mode 100644 index 3431df784ac..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_1_0.text +++ /dev/null @@ -1,158 +0,0 @@ - % Total % Received % Xferd Average Speed Time Time Time Current - Dload Upload Total Spent Left Speed - 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 212k 100 212k 0 0 166k 0 0:00:01 0:00:01 --:--:-- 267k -Loading Caffe model. -WARNING: Logging before InitGoogleLogging() is written to STDERR -I0213 01:19:34.836383 1959801216 net.cpp:66] Creating Layer conv1 -I0213 01:19:34.836407 1959801216 net.cpp:76] conv1 <- data -I0213 01:19:34.836422 1959801216 net.cpp:101] conv1 -> conv1 -I0213 01:19:36.050011 1959801216 net.cpp:116] Top shape: 96 55 55 -I0213 01:19:36.050045 1959801216 net.cpp:133] conv1 needs backward computation. -I0213 01:19:36.050055 1959801216 net.cpp:66] Creating Layer relu1 -I0213 01:19:36.050060 1959801216 net.cpp:76] relu1 <- conv1 -I0213 01:19:36.050066 1959801216 net.cpp:90] relu1 -> conv1 (in-place) -I0213 01:19:36.050075 1959801216 net.cpp:116] Top shape: 96 55 55 -I0213 01:19:36.050079 1959801216 net.cpp:133] relu1 needs backward computation. -I0213 01:19:36.050084 1959801216 net.cpp:66] Creating Layer pool1 -I0213 01:19:36.050088 1959801216 net.cpp:76] pool1 <- conv1 -I0213 01:19:36.050093 1959801216 net.cpp:101] pool1 -> pool1 -I0213 01:19:36.050101 1959801216 net.cpp:116] Top shape: 96 27 27 -I0213 01:19:36.050107 1959801216 net.cpp:133] pool1 needs backward computation. -I0213 01:19:36.050111 1959801216 net.cpp:66] Creating Layer norm1 -I0213 01:19:36.050115 1959801216 net.cpp:76] norm1 <- pool1 -I0213 01:19:36.050119 1959801216 net.cpp:101] norm1 -> norm1 -I0213 01:19:36.050127 1959801216 net.cpp:116] Top shape: 96 27 27 -I0213 01:19:36.050132 1959801216 net.cpp:133] norm1 needs backward computation. -I0213 01:19:36.050137 1959801216 net.cpp:66] Creating Layer pad2 -I0213 01:19:36.050142 1959801216 net.cpp:76] pad2 <- norm1 -I0213 01:19:36.050145 1959801216 net.cpp:101] pad2 -> pad2 -I0213 01:19:36.050151 1959801216 net.cpp:116] Top shape: 96 31 31 -I0213 01:19:36.050155 1959801216 net.cpp:133] pad2 needs backward computation. -I0213 01:19:36.050170 1959801216 net.cpp:66] Creating Layer conv2 -I0213 01:19:36.050174 1959801216 net.cpp:76] conv2 <- pad2 -I0213 01:19:36.050375 1959801216 net.cpp:101] conv2 -> conv2 -I0213 01:19:36.052516 1959801216 net.cpp:116] Top shape: 256 27 27 -I0213 01:19:36.052526 1959801216 net.cpp:133] conv2 needs backward computation. -I0213 01:19:36.052533 1959801216 net.cpp:66] Creating Layer relu2 -I0213 01:19:36.052538 1959801216 net.cpp:76] relu2 <- conv2 -I0213 01:19:36.052543 1959801216 net.cpp:90] relu2 -> conv2 (in-place) -I0213 01:19:36.052548 1959801216 net.cpp:116] Top shape: 256 27 27 -I0213 01:19:36.052552 1959801216 net.cpp:133] relu2 needs backward computation. -I0213 01:19:36.052557 1959801216 net.cpp:66] Creating Layer pool2 -I0213 01:19:36.052561 1959801216 net.cpp:76] pool2 <- conv2 -I0213 01:19:36.052567 1959801216 net.cpp:101] pool2 -> pool2 -I0213 01:19:36.052572 1959801216 net.cpp:116] Top shape: 256 13 13 -I0213 01:19:36.052577 1959801216 net.cpp:133] pool2 needs backward computation. -I0213 01:19:36.052583 1959801216 net.cpp:66] Creating Layer norm2 -I0213 01:19:36.052587 1959801216 net.cpp:76] norm2 <- pool2 -I0213 01:19:36.052592 1959801216 net.cpp:101] norm2 -> norm2 -I0213 01:19:36.052597 1959801216 net.cpp:116] Top shape: 256 13 13 -I0213 01:19:36.052602 1959801216 net.cpp:133] norm2 needs backward computation. -I0213 01:19:36.052608 1959801216 net.cpp:66] Creating Layer pad3 -I0213 01:19:36.052613 1959801216 net.cpp:76] pad3 <- norm2 -I0213 01:19:36.052618 1959801216 net.cpp:101] pad3 -> pad3 -I0213 01:19:36.052623 1959801216 net.cpp:116] Top shape: 256 15 15 -I0213 01:19:36.052628 1959801216 net.cpp:133] pad3 needs backward computation. -I0213 01:19:36.052633 1959801216 net.cpp:66] Creating Layer conv3 -I0213 01:19:36.052636 1959801216 net.cpp:76] conv3 <- pad3 -I0213 01:19:36.052641 1959801216 net.cpp:101] conv3 -> conv3 -I0213 01:19:36.058481 1959801216 net.cpp:116] Top shape: 384 13 13 -I0213 01:19:36.058501 1959801216 net.cpp:133] conv3 needs backward computation. -I0213 01:19:36.058508 1959801216 net.cpp:66] Creating Layer relu3 -I0213 01:19:36.058513 1959801216 net.cpp:76] relu3 <- conv3 -I0213 01:19:36.058521 1959801216 net.cpp:90] relu3 -> conv3 (in-place) -I0213 01:19:36.058526 1959801216 net.cpp:116] Top shape: 384 13 13 -I0213 01:19:36.058529 1959801216 net.cpp:133] relu3 needs backward computation. -I0213 01:19:36.058534 1959801216 net.cpp:66] Creating Layer pad4 -I0213 01:19:36.058538 1959801216 net.cpp:76] pad4 <- conv3 -I0213 01:19:36.058543 1959801216 net.cpp:101] pad4 -> pad4 -I0213 01:19:36.058554 1959801216 net.cpp:116] Top shape: 384 15 15 -I0213 01:19:36.058559 1959801216 net.cpp:133] pad4 needs backward computation. -I0213 01:19:36.058564 1959801216 net.cpp:66] Creating Layer conv4 -I0213 01:19:36.058568 1959801216 net.cpp:76] conv4 <- pad4 -I0213 01:19:36.058573 1959801216 net.cpp:101] conv4 -> conv4 -I0213 01:19:36.063360 1959801216 net.cpp:116] Top shape: 384 13 13 -I0213 01:19:36.063379 1959801216 net.cpp:133] conv4 needs backward computation. -I0213 01:19:36.063385 1959801216 net.cpp:66] Creating Layer relu4 -I0213 01:19:36.063391 1959801216 net.cpp:76] relu4 <- conv4 -I0213 01:19:36.063397 1959801216 net.cpp:90] relu4 -> conv4 (in-place) -I0213 01:19:36.063402 1959801216 net.cpp:116] Top shape: 384 13 13 -I0213 01:19:36.063406 1959801216 net.cpp:133] relu4 needs backward computation. -I0213 01:19:36.063411 1959801216 net.cpp:66] Creating Layer pad5 -I0213 01:19:36.063416 1959801216 net.cpp:76] pad5 <- conv4 -I0213 01:19:36.063421 1959801216 net.cpp:101] pad5 -> pad5 -I0213 01:19:36.063426 1959801216 net.cpp:116] Top shape: 384 15 15 -I0213 01:19:36.063431 1959801216 net.cpp:133] pad5 needs backward computation. -I0213 01:19:36.063441 1959801216 net.cpp:66] Creating Layer conv5 -I0213 01:19:36.063444 1959801216 net.cpp:76] conv5 <- pad5 -I0213 01:19:36.063449 1959801216 net.cpp:101] conv5 -> conv5 -I0213 01:19:36.066474 1959801216 net.cpp:116] Top shape: 256 13 13 -I0213 01:19:36.066490 1959801216 net.cpp:133] conv5 needs backward computation. -I0213 01:19:36.066496 1959801216 net.cpp:66] Creating Layer relu5 -I0213 01:19:36.066501 1959801216 net.cpp:76] relu5 <- conv5 -I0213 01:19:36.066508 1959801216 net.cpp:90] relu5 -> conv5 (in-place) -I0213 01:19:36.066512 1959801216 net.cpp:116] Top shape: 256 13 13 -I0213 01:19:36.066516 1959801216 net.cpp:133] relu5 needs backward computation. -I0213 01:19:36.066520 1959801216 net.cpp:66] Creating Layer pool5 -I0213 01:19:36.066525 1959801216 net.cpp:76] pool5 <- conv5 -I0213 01:19:36.066529 1959801216 net.cpp:101] pool5 -> pool5 -I0213 01:19:36.066535 1959801216 net.cpp:116] Top shape: 256 6 6 -I0213 01:19:36.066540 1959801216 net.cpp:133] pool5 needs backward computation. -I0213 01:19:36.066545 1959801216 net.cpp:66] Creating Layer fc6 -I0213 01:19:36.066550 1959801216 net.cpp:76] fc6 <- pool5 -I0213 01:19:36.066558 1959801216 net.cpp:101] fc6 -> fc6 -I0213 01:19:36.333488 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.333513 1959801216 net.cpp:133] fc6 needs backward computation. -I0213 01:19:36.333521 1959801216 net.cpp:66] Creating Layer relu6 -I0213 01:19:36.333528 1959801216 net.cpp:76] relu6 <- fc6 -I0213 01:19:36.333535 1959801216 net.cpp:90] relu6 -> fc6 (in-place) -I0213 01:19:36.333541 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.333546 1959801216 net.cpp:133] relu6 needs backward computation. -I0213 01:19:36.333551 1959801216 net.cpp:66] Creating Layer drop6 -I0213 01:19:36.333556 1959801216 net.cpp:76] drop6 <- fc6 -I0213 01:19:36.333560 1959801216 net.cpp:90] drop6 -> fc6 (in-place) -I0213 01:19:36.333566 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.333570 1959801216 net.cpp:133] drop6 needs backward computation. -I0213 01:19:36.333575 1959801216 net.cpp:66] Creating Layer fc7 -I0213 01:19:36.333580 1959801216 net.cpp:76] fc7 <- fc6 -I0213 01:19:36.333585 1959801216 net.cpp:101] fc7 -> fc7 -I0213 01:19:36.450057 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.450075 1959801216 net.cpp:133] fc7 needs backward computation. -I0213 01:19:36.450083 1959801216 net.cpp:66] Creating Layer relu7 -I0213 01:19:36.450089 1959801216 net.cpp:76] relu7 <- fc7 -I0213 01:19:36.450095 1959801216 net.cpp:90] relu7 -> fc7 (in-place) -I0213 01:19:36.450101 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.450105 1959801216 net.cpp:133] relu7 needs backward computation. -I0213 01:19:36.450114 1959801216 net.cpp:66] Creating Layer drop7 -I0213 01:19:36.450117 1959801216 net.cpp:76] drop7 <- fc7 -I0213 01:19:36.450121 1959801216 net.cpp:90] drop7 -> fc7 (in-place) -I0213 01:19:36.450127 1959801216 net.cpp:116] Top shape: 4096 1 1 -I0213 01:19:36.450131 1959801216 net.cpp:133] drop7 needs backward computation. -I0213 01:19:36.450136 1959801216 net.cpp:66] Creating Layer fc8 -I0213 01:19:36.450140 1959801216 net.cpp:76] fc8 <- fc7 -I0213 01:19:36.450145 1959801216 net.cpp:101] fc8 -> fc8 -I0213 01:19:36.478497 1959801216 net.cpp:116] Top shape: 1000 1 1 -I0213 01:19:36.478538 1959801216 net.cpp:133] fc8 needs backward computation. -I0213 01:19:36.478549 1959801216 net.cpp:66] Creating Layer prob -I0213 01:19:36.478555 1959801216 net.cpp:76] prob <- fc8 -I0213 01:19:36.478567 1959801216 net.cpp:101] prob -> prob -I0213 01:19:36.478581 1959801216 net.cpp:116] Top shape: 1000 1 1 -I0213 01:19:36.478585 1959801216 net.cpp:133] prob needs backward computation. -I0213 01:19:36.478590 1959801216 net.cpp:144] This network produces output prob -I0213 01:19:36.478602 1959801216 net.cpp:154] Collecting Learning Rate and Weight Decay. -I0213 01:19:36.478628 1959801216 net.cpp:148] Network initialization done. -Caffe model loaded in 2.581 s -Loading input and assembling batches... -selective_search({'/Users/karayev/work/caffe-bvlc/examples/_temp/cat.jpg'}, '/var/folders/4q/vm1lt3t91p9gl06nz6s1dzzw0000gn/T/tmpt2_xYx.mat') -23 batches assembled in 3.691 s -Processing 1 files in 23 batches -...on batch 0/23, elapsed time: 0.000 s -...on batch 10/23, elapsed time: 2.928 s -...on batch 20/23, elapsed time: 5.803 s -Processing complete after 6.722 s. -/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pandas/io/pytables.py:2446: PerformanceWarning: -your performance may suffer as PyTables will pickle object types that it cannot -map directly to c-types [inferred_type->mixed,key->block1_values] [items->['feat']] - - warnings.warn(ws, PerformanceWarning) -Done. Saving to _temp/cat.h5 took 0.066 s. diff --git a/docs/selective_search_demo_files/selective_search_demo_3_0.text b/docs/selective_search_demo_files/selective_search_demo_3_0.text deleted file mode 100644 index 3781b70248f..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_3_0.text +++ /dev/null @@ -1,7 +0,0 @@ -(223, 5) -feat [6.90396e-06, 1.27811e-06, 1.82159e-06, 1.1020... -ymin 0 -xmin 0 -ymax 500 -xmax 496 -Name: /Users/karayev/work/caffe-bvlc/examples/_temp/cat.jpg, dtype: object diff --git a/docs/selective_search_demo_files/selective_search_demo_5_0.text b/docs/selective_search_demo_files/selective_search_demo_5_0.text deleted file mode 100644 index 2c3243098b3..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_5_0.text +++ /dev/null @@ -1,33 +0,0 @@ -name -tench 0.000007 -goldfish 0.000001 -great white shark 0.000002 -tiger shark 0.000001 -hammerhead 0.000007 -electric ray 0.000004 -stingray 0.000007 -cock 0.000060 -hen 0.003055 -ostrich 0.000010 -brambling 0.000004 -goldfinch 0.000001 -house finch 0.000004 -junco 0.000002 -indigo bunting 0.000001 -... -daisy 0.000002 -yellow lady's slipper 0.000002 -corn 0.000020 -acorn 0.000011 -hip 0.000003 -buckeye 0.000010 -coral fungus 0.000005 -agaric 0.000019 -gyromitra 0.000039 -stinkhorn 0.000002 -earthstar 0.000025 -hen-of-the-woods 0.000035 -bolete 0.000037 -ear 0.000008 -toilet tissue 0.000019 -Name: 0, Length: 1000, dtype: float32 diff --git a/docs/selective_search_demo_files/selective_search_demo_7_0.text b/docs/selective_search_demo_files/selective_search_demo_7_0.text deleted file mode 100644 index 2bb93ff920a..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_7_0.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/selective_search_demo_files/selective_search_demo_7_1.text b/docs/selective_search_demo_files/selective_search_demo_7_1.text deleted file mode 100644 index 1997d863257..00000000000 --- a/docs/selective_search_demo_files/selective_search_demo_7_1.text +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/selective_search_demo_files/selective_search_demo_7_2.png b/docs/selective_search_demo_files/selective_search_demo_7_2.png deleted file mode 100644 index 8f00131e3e010abc903d6914e0ed940ab3b7a143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30776 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

Q*ie`|Cj&2i?YTA`Sqeun>bF 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 z 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ڵ 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 B" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first layer filters, `conv1`" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# the parameters are a list of [weights, biases]\n", + "filters = net.caffenet.params['conv1'][0].data\n", + "vis_square(filters.transpose(0, 2, 3, 1))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nRK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first layer output, `conv1` (rectified responses of the filters above, first 36 only)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['conv1'].data[4, :36]\n", + "vis_square(feat, padval=1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second layer filters, `conv2`\n", + "\n", + "There are 128 filters, each of which has dimension 5 x 5 x 48. We show only the first 48 filters, with each channel shown separately, so that each filter is a row." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "filters = net.caffenet.params['conv2'][0].data\n", + "vis_square(filters[:48].reshape(48**2, 5, 5))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nIqIb+upwfU7EnNLtAIqW6LIF1113XURErFy5cqB9WVKCPjkZZyGTfI6lAeuINU4nE0VjgYay6CJA\n6ygThZZ0ArQ5xmueZknv+B4hq30p/51IEmTlU2jnciyMwQ7NLphr2tGCyr7gMRo18+kkhowTXt96\n660D399xxx0H2mcJ3cbHx5s+gMeB5ozc3H///QOf22rG3ELT1ltvHX1YtmxZ853f/va3ERGx2267\nDbRx8WFbJhz+Dl+QJ3if+QhMTU018jss+auteRS3Zf49TjRz5o55RybLNco4oQGekrbA4wR8Tt/I\njR3ava623377gbGUewC8Y/xr166NiIgddthh4H0Ajxk/37/pppsiop0rgHzZgXxqaqoTuMFag054\njSx6XC4IjYbuAAhQav0REVdeeWUjg6b7wQcfjIh23bLG4LXXhdNd7LTTThHR8sX7TpkcknEwL06C\nzDOdWJU+PE4X8YU/yJn5uHHjxmb/d3ob86VMsBvRFitmzngGYH3BZwoz33jjjRERseeee3b6Ri4Y\nL+/b0uj0QrwyZx4nY4NWaGOuynQc8JS5gKY1a9ZERMQee+wx0Ld/05Fd5IbC2+6fMTHGVatWpeuf\nfXGm8mMzoVqkKioqKioqKirmiHmzSD3wwAOx9957R0TE+973voiI+Na3vhUR7ckUcArmVHv//fc3\nGgYaIchC6bNCqWha9MOzeEVbBmhFDz30UHP6tvZuWoDDfW3B4JRvDYZTva0pGzZsaPqErlWrVkVE\nN6zbPmD77bdfRET87Gc/i4iupoamhXYMzXfccUdEtFpBRDfZncPbPRfwHA0cywI8z4p5wl98Afba\na6+IaDVceFK22XbbbSMi4pWvfGVEtNoaYNwveclLIiLi0EMPjYiISy65JCIifv3rXw+0p38nSR0Z\nGen446FxMo/QmYX9k5COfvbdd9+IiMb6evvttw+0L62xaHH0TZJYYJ8IeA/PswKiWHb4PnPghI9T\nU1MdqyUyaL4gg/vss09ERLzmNa+JiIj/+q//6qWdcWKJRHavvfbaiBhMkskaYt1i3dh5550jIk/f\ngJy4LIct3ryPfEErVqZy3bEusLC/4hWviIiIK664IiK61i60ZfYVvofFzRZv7z/Im+cmop1nngEN\nzMF222030J41iMzZtw5LFkBOnv/850dExMtf/vJmfmwFQO5vueWWiGgtL/SBvAMXFGfc/H7YglWm\n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\noqKioqKiYo6YN4tUmRmcUyCnXWfw5US5YsWKiHjmZJnleXA+GPq29Qug1VvzBD6RoomvX7++sRRk\nJT9cANe5fKw1Qgsnb5dAsAaz+eabN+OxZcraS2aByIrXctr3qd95U8r3XCIkO80zDqxEAM3z1ltv\nHXjfuZ1crqK0BNm3ie+gMTEeo8wKHdHNWA3s54JcLV++PM0mj/aPVQfrEFYzwHpwpm/GaxnFQvHY\nY4+l1gmApSrLk2TrGGuNdjfffHNEtJqbLRj33Xdf8x6WZeTYFkZkE2sIMgzPSx/I8llo/ba+lhYs\n+8Ix31n5HWv7nl+vUVuJXAGhXHfInC2M0Oi9yFaQrJQScK43MD093ZlPLChY/e68886IaPlUWlYj\nutnj2ZucdR24nMno6GjHugcYP33ax8cWSdYN7W+//faIyLNvsyZHR0ebcfUVz41o93PGhdwzN7bU\n7L///hHR8hFavP5KWjILm2kp/S3L8bkMjceJfDHWvuoWe+yxx8B70M13LUPe983rrJA8a9g55Up5\ncX456EUu+ip4RLQ+kYzbmdwBc9dXLNptGT9t2bvMy2GoFqmKioqKioqKijli3ixSm2++eXOqtQ+M\nT6ScXO+5556IeOb0y4nZp3ROqS4YygnZ969Zvacsc2tZUNg1nbJTemb18WmXk7a13Cyz85NPPtmp\nsZYVI0abc/2mbLy0QwvglM9rSYstUs4Sm/lTMFeOgPP8ozXAPxfCLLUpPsOfwlEm5iHjwRrkiDrz\n0bX2wMTERMfy4uzBaL/24wO2xKCh8X0/k7GsXLmyE21ii4ELhKLloS27Jh3rBKsRcwCf+jKI4z/H\nuKDbfUMjssU6cr0uj5N+Xe+xHGtWzLxPViK6ma1Ni+HIQct6KS+ev6z4LmActuRl1QccWQTt9qWK\naP3KHKWX7XPsn2jm9nfymsZqVEbiZfsioK1rlnqfxAqKFQX+IVee09Iq4kz+XkPIPzz3nmXaoRU+\n8sre7d+XpUuXduYdntMX6MuOX9Ls3wv7Flp2S0sYvCM6j9+NzP+Kv22ZyQpFuyh4Vuw8ol0XtHFl\nC8+nrb+2uGVzCkoaskzl3I7gS5ZVH8lQLVIVFRUVFRUVFXPEvFmkFi5c2Jz+0ExcSRtgqShfs9pZ\n1s6yGkvAGizt0chMC/1PTU11NKjMquPq1lmtNecA8im/D9ak4ZH79p23eW1NCiuhtWqsAaXm7Qra\n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\niTvvvDPOOeecuOyyy+Iv//Iv48Ybb4wbb7wx7r777vjHf/zHuPvuu+OJJ56I3/qt34p77713sIDW\n/v37eyfGoRocyBExOnnOzs72rDrgE6WtHZ/yOdVyksYayKgkWuvC/bJl7boYfr9q2fne1BJZ7Z7F\nxcVe9kiWbcLnzpDK6ArsechoYIaQFeb095bNBJnGpDozrZzozNadf+uMKsbKdVCA6xS1GSSZR873\nor8uPOcsR9dy8fxp74c87RppwVyyF9i1jYAzRSeFUu7ataune9cuA4yBvWNZnST6wrzgPkNFcz0G\nHv8sg5Df8T3rw2PkdWEanzbLLys4mq1n95+9yfcEjBFj29a+yvbWrKaT23ZmmQubeh1Z9v3793dt\nZGsO2PtnWfD+IGtGig4YA2cutt9ln5uc2x485qD324z25/nnn+8VkkRXWV045g16yfZo5qYzKe35\nbuG9xW9iDM8PE1EDk8I7u7u93pRQkwqP0n/Ww6R90Zm5YGZmJt2jTfGEbC9JHakjjzwyzjzzzIh4\nwQ33qle9Kp544on44he/GO94xzsiIuId73hH/NM//VNERHzhC1+It771rTE7OxvHH398vOIVr+g4\niAqFQqFQKBT+/4YXHSP18MMPx7e+9a143eteF08//XRXOfyII47o6uM8+eST8frXv777zdatW7sq\n3cbatWt7Fib/9+nYsTQLCwspkSmnW96NU1uFOlGZNWhrkZO1ZWnpGmz5ZDVKXIMjq5fj98+O87Cn\nZseOHT1rhdO4rTGsAF7Dog+svawSNid1/qLfVu++ty1LW6DIknls7AWgfcYmI7Fsv7MllXkwHQPk\nelPZ+EPjwDzZsmVLj2aBd/605UrEWS0WrKFJljd45plnesTW9oYw99A93zP+Q9Z7xPiai+h7BcDj\njz/e8yzYYnabXO+2s/gNZCd+cahqMm23RKXt5x5/e1oZE9eIA8T9OD7S92mvsecsi08jxoX1z5gi\nQ0adZC/a6tWre3J7TvGbLGaG+c1853rG1B4JYlF5Lhx88MFp5WnqxnksaNufZ4TDQ8wG7pOJa90G\nNftM0sw+Z53TF8ekIrvXdBvPa0+U1wVtueaXK38D9iqev8wXe3pauKp+RsuU/T/z7MII4jp2zItW\nLzA2UE2e75B7ktfQzxfPRfTseTE/P9/bt6CGQsf28r7YOlIv6iC1c+fOePOb3xy33nprj6l5amrq\n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\nubnB+vXrB2vXrh0899xzSyL3iwnjxuCyyy4bXHvttb1rawz2PJ544onBvffeOxgMBoPNmzcPjjvu\nuMEDDzxQ62AvIhuDWgd7DnvVI3XPPffEunXrYs2aNTE9PR1vectb4itf+creFOGXGgPlFfzDP/xD\nvP3tb4+IiLe//e3x93//90sh1osWr33ta+OlL33pyGeZzr/yla/EW9/61pieno41a9bEunXr4p57\n7tnrMr/YMG4MIsbXg6kx2PM49NBD4/TTT4+IXZX4TzjhhNi4cWOtg72IbAwiah3sKezVg9TGjRtH\nytCvXr26qtruJUxMTMQb3vCGOPPMM+PWW2+NiF30GJARH3LIIR1dSOGFQ6bzxx9/PFavXt1dV2vj\nhcWNN94Yp512Wpx33nnda6UagxcWjzzySNx7773x6le/utbBEoExeM1rXhMRtQ72FPbqQaoqmi8d\n7r777rj33nvjzjvvjJtuuim+8Y1vjPx9YmKixmcvYyGd13i8MLjgggti/fr1cd9998Vhhx0WH/jA\nB9Jrawz2DGZmZuKNb3xjXH/99R2fHah1sHcwMzMTb3rTm+L666+Pl7zkJbUO9iD26kHqiCOOGOG2\n2rBhw8jJt/DCAYLogw46KH7/938/7rnnnjjkkEPiySefjIhdxKGQoxZeOGQ699r46U9/GkccccSS\nyPhix8EHH9w9vN/1rnd1ry1qDF4Y7NixI974xjfG2972tvi93/u9iKh1sLfBGPzhH/5hNwa1DvYc\n9upB6swzz4yHHnooHnnkkZibm4s77rgjzj333L0pwi8ltm7dGps3b46IXSzwd911V5xyyilx7rnn\nxu233x4REbfffnu3wAovHDKdn3vuufGlL30p5ubmYv369fHQQw912ZWFPYsnnnii+/+Xv/zlLqOv\nxmDPYzAYxHnnnRcnnnhiXHTRRd3ntQ72HrIxqHWwB7G3o9u/+tWvDo477rjB2rVrB5/4xCf29u1/\nKfGTn/xkcNpppw1OO+20wUknndTp/Zlnnhm8/vWvHxx77LGDs88+e7Bp06YllvTFhbe85S2Dww47\nbDA9PT1YvXr14K//+q93q/Mrr7xysHbt2sGrXvWqwde+9rUllPzFA4/BbbfdNnjb2942OOWUUwan\nnnrq4Hd/93cHTz75ZHd9jcGexTe+8Y3BxMTE4LTTThucfvrpg9NPP31w55131jrYixg3Bl/96ldr\nHexBFEVMoVAoFAqFwiJ6dsjvAAAAYElEQVRRlc0LhUKhUCgUFok6SBUKhUKhUCgsEnWQKhQKhUKh\nUFgk6iBVKBQKhUKhsEjUQapQKBQKhUJhkaiDVKFQKBQKhcIiUQepQqFQKBQKhUWiDlKFQqFQKBQK\ni8T/A2aklexSCttuAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second layer output, `conv2` (rectified, only the first 36 of 256 channels)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['conv2'].data[4, :36]\n", + "vis_square(feat, padval=1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAJNCAYAAAARaCA+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XnMXFd9//Gvm4Ts3h473u3Hu2MbJzhOYiAQQkgoIGhQ\nUSgglRZUVW3Vqq0qUdEioKgi/adUP9HSLQIKFYRCKZsIIYGEJuCExDiO4zXe93iLs7Kl/P5APnzO\nN8+9OXPm3Jk7z/N+/XXGM8/MnTt37lyf73LG/eIXv/iFAQAAoCO/1u8NAAAAGERcRAEAAGTgIgoA\nACADF1EAAAAZuIgCAADIwEUUAABAhuIXUbfffrstW7bMFi9ebH/3d39X+ukBAABaYVzJPlHPP/+8\nLV261O68806bNWuWXXnllfa5z33OLr300lIvAQAA0ApFZ6IeeOABW7RokQ0PD9s555xjv/Vbv2Vf\n+cpXSr4EAABAK5xd8skOHjxoc+bMCbdnz55t999/f/SYcePGlXxJAACAxlx77bV29913j3hf0Yuo\nTi+Qxo8fb+eee66dd955ZmZ27NixcN+Pf/zjjl//rLPOim6fc845XT2fN2PGjDB+/vnnw/jZZ5+N\nHvf00093/Vop/P5+05veFMZf+9rXwvjiiy8OY7+tv/Zrv5qMPPM5mNW/B/0b7//+7/9qtrg3zj77\nV4e131bdZ+eee+4L/vbHP/6xnXfeefbkk08mvdbEiRPD+NSpUyO+jpnZ9OnTw/jEiRNh/LOf/Szp\ndcaCKVOmhPFTTz0V3Xf++eeHsX6Xn3vuuTCuO//MnTs3jC+55JLoPj1mjx49GsbHjx+PHqfnl9mz\nZ4fxwoULo8fp903PaRs3bowep8dBqmnTpo34OmZmjz32WNJz6L54yUte0vHf+wyQbv9j7N/HqlWr\nwli/U5s3b+7qdUrR7/wTTzzR1d+bmS1ZsiSM9+zZE8aPP/54GPt9rp+bHr967jOLz3F67ve/lRdd\ndNGIz62/c2bx74L/LRmNPvjBD5qZ2Yc//OHKxxS9iJo1a5bt378/3N6/f390svGeffbZ6IP4+c9/\n3tXr+w/c3+6Wbp9ecPTrh9B/sQ4cODDi4+ouiPQLmHrxp6+rP3xm8QlRTwLPPPNM5XOUVncc6UWV\nHh/6Nz/96U+T/t7M7A1veEPSNp08eTKMR8uFk16M6GftXXjhhWHsjwO1evXqMPbf3bvuuitnEwP9\n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\nf158+OGHw1jPuT6softdO1Xr8ebp3/iKw9Tzhj6Hno/9uSGnC31pM2fODGPt4G0Wd66vUrfP+0W3\nQX8TPD12Bq1DfkrqETNRAAAAGbiIAgAAyMBFFAAAQIa+5ESdiYH7rqSaj1SX45LTzVzj7P65Naep\nRGdZ7Y6+cOHCMPbdbbWDrOYS1MVhNb5//PjxrO3LoZ1m9XU1F8GsegV7T1c11xyG1G7ybciB6iXf\nSVf3sx4TPv+jl8dIk9auXRvGjz76aB+3JJ//bDTnSPMedeUGs7zzkH6/NCfF27x5cxj7vJa6v1Oa\nL6nng6effrrybzR3z3e71ryZus78+rr6fv25oV85Ufqd1dxE3VazODd4kDr96++Uz3XSvC/9nDSn\n12x0nMeZiQIAAMjARRQAAECGvi5A7KfyNESh0351pbJ1dEpxaGgo6XU1rOZLUf1UZBVtPaDTuBra\nM4untOumcQ8dOhTGGvLsF5261alasziUqY/zYTp971r6PWvWrOhxGzdu7G5jR4nUMGkqH1K4+eab\nw/iOO+4I46rFdJvmQ0vr1q3ry3Y0ScNlOtbFUXMNDw+HsQ9n7dy5c8S/8S1nUmmoP3XhWC2Pv/TS\nS6P7UhfX1tfSc7NfDLtJmopQ97ui+3z69OnR4wYphKfqfiu1RZG2sPALEBPOAwAAGKO4iAIAAMjQ\n13BeHc38Tw2jeRo+0+fz1X3avVmnF31IQUNSqZ1Xt2/fHsbaHdgsnu7VzstebpVgL/jQg07XavWh\n70Kst48ePRrGGg40i7s6r1+/vruNHeP++I//OIy3bt0a3fev//qvHT+fhqpzw8wrVqwIYw0JjOUw\nru5XM7MJEyaEcV2IXKvBNAXAd/Bukq8iraLn471790b3pYbzlO96rpoM72laQl3aSdWqGL2k+8iH\n0VLDalpFqvt1tFQB52AmCgAAIAMXUQAAABn6Es47M23vK7s0oz9noUJf9aDPrxUQvhqiqimcnwae\nPHlyGKcu4KqhSD/9rmG6EiE7XyHRC/4z1H2b0+Su7j3o5zvIC+g2adq0adHt97znPWH80Y9+tOhr\npYYltFLsM5/5THTfZz/72TD+l3/5l6Tn0xDvaOS/U3re0apKDdmZmT322GNhnFtp16261AtNj9Bw\nXm7lpYbI9Lyhi6A3LbVyvA2LIOtx5M+zfjH7M3wVb1014qDSSlENV6ZiJgoAACADF1EAAAAZuIgC\n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\nbIqGK/20d7/y3XRfDFqYOIeW9uoUu+92f/z48TAepEWV+xUK0jB90+G80dL9XRf11XNQapf9ttDv\nh4b2Fi9eHD1O24PkvCc9xsx+mR7TVnXtHOra7ejvVOnzse6vNixsT/96AACADFxEAQAAZOhLOG/8\n+PFm1r9wnlaXmaUvjqvT03WhMw3vaaXdtm3bkl7Hhwd1ql+rIHxn8247pafS6dlehu/qQnZjIYSn\ntLO2Tm/v3LmzH5sz0PT7tmLFijD2LVo2b94cxiWONw3r6Pdaw2P+tbR60FdoVYWF/HmhdFhNz2sa\n/tGFYs3iii09f/pzqYZoenVO8/S85hfk1qo0rTyrc6YJtdkLV7jYt29fxhb2365du8LYpxHoMVz6\n3NyGEJ5iJgoAACADF1EAAAAZuIgCAADI0JecKF+a3+vX9CWrmnOkZa6af2AW5y1oTorP7dKV6qdM\nmRLGqTlRWvrsn1/j6b5LrN/eTmmOhV8de/r06SM+rm7V9hI0D+1MLp3ZC0tvtXO6zykZJLqfNR9E\n20p0QvM3NC9j/fr1Wc9X2tDQUBhraxCfp6jtBqpKq/33JrVtQFWnal+KPnfu3DBOzYWpo2Xg+p58\nHpDmgOi5QPeXmdmSJUvCWI8Xn9Pz+OOPZ27xyHT/6edZ197lmmuuCWOfM6PnyX4tYq/ncH8c6coV\nes7dtGlT5fPp5zbI5yelv0Vn2hadob8R+ls5Wt67YiYKAAAgAxdRAAAAGbIWIO7qBWsW8gMAAGiT\nuusWZqIAAAAycBEFAACQoS/Veb7TLsrQqpEdO3aEcRv398yZM8P47W9/exivXbs2etznP//5MP7y\nl7/c/Ia9iJUrV0a3tSJHp3t9BWqTIWz9fJsOlXe70LOvoNMq0LrFTqvo+607zq+99tow9lVjjz32\nWMev2yRffXj55ZeH8YkTJ8K4bpFm3ReTJk2K7tMKZK2cqrNmzZow/uEPfxjdpxXI+rq+Yksr1LS7\nuq9u7uXxrHQ/1S2uW7Vaha+g1W3XSmr/nrTKTbvkL1u2LIw/+9nPRn+Tc07v134tTc8h/n1oxWuJ\nFVFS9hMzUQAAABm4iAIAAMjARRQAAECGvuREoRm+w3KbHTp0KIw/9rGPhbF2KDczu/3228P43e9+\ndxjfdNNNDW5dNd+VWDs0q17mHGjX5NQu3bm6XZE9d/vmzZsXxnv37u347zU/wncEbxvf1Vm7t6fu\nfz0u/fOl5kGpus+tKg9FVxEwi7uA1+WraN5dzrbm0pwm7e6vHdnNzH72s5+Fsb4Pv63aKV7vmzhx\nYuXzHT58OIz9ihTdGuQ8KFXiHDc8PBzGmuOWkx/JTBQAAEAGLqIAAAAyEM4bRapCS4NEp7bNzK6/\n/vow/qM/+qMw/upXvxo97i1veUuzG1ZBS86VX8C527CEDylomXrO9La2wzCLp7fvvPPOjp9Py7TN\nug+ZrVixIrqt7zeHLmD85JNPdvVcvZYTvtRQ2vHjx7veBr+IcdVrVYW6zOJjQr8furC4WRwebDo8\nXeXIkSNh7I9FDTdqWoJv6aDhM23p4FMWtJ2CtvnIaflRgm6fPx+PFtpKRxd9/4d/+IeOn4uZKAAA\ngAxcRAEAAGQgnIeB8Y//+I9h7Dv2fuADHwjjj3zkIz3bpiq54TsNCWg1U7fhLDOzm2++OYxf+cpX\nRvdpFaSGhavClV6Jijftiq3hN7O4Qi2Hfh65+1JDqiU+jyZ1u7+8kydPVt6n4S39XtZVEmoIa/Lk\nydF9zz33XBj3K5ynoTTf4f6KK64IYw09amjPLA5Tarjbnxv0WNdKMR8i75XRGsJT9913Xxj7z7dT\nzEQBAABk4CIKAAAgAxdRAAAAGciJGkXanqdR0sc//vHo9h/8wR+EsebWPPjgg0nP58uYdaXwdevW\n5WxiFs2DyjFlypTo9pVXXhnGmmvy13/919HjepV74lsraA5I6meVQ18nl3aQHkvftU5ofpTvuK35\nUpoHNXXq1OhxepxqztHjjz9ebDs74b//ur2zZ88OY58TtWfPnjDWXEef76e5dpMmTQpj3/oB5ezf\nv7/YczETBQAAkIGLKAAAgAyE80aRXi7W2Taf+MQnwvhv//Zvw1gX9DSrLmd99NFHo9saFlu6dGkY\nb9u2ravtLEW3b8GCBWGsnZHNzL75zW929TozZ86MbmtIpq40+Nd//dfD+Pd+7/fC+Ctf+Ur0uP/4\nj/9I2g59vzkduEuE8+rK/EcDv2Bw3SLBKXxnbu3grR3L/TGr+7mN57RvfOMbYXzVVVeFsT/X6Pvy\n71FpCE/PNYO0oPxYxkwUAABABi6iAAAAMhDOG0XGQqfZFH/1V38VxsuXL4/uS+1OqyGjNuzXiy66\nKLqtXcW1akkrgkrwFUepdFHPe++9N4xTw3ee71DfKa0ay10cutvKybbLDd9pmE6r6bQruVn8Gerx\nrH9vFu9nDcP6BX779XloJ/acyt1LLrkkuq2Lf2tVsH+/o4FfSF1va5f4ukXC9btc1xW/V5iJAgAA\nyMBFFAAAQAYuogAAADKQEzWKaKwYv7R58+aun0M7KPeLL5HWjtm+A3KTrrvuujCeOHFiGN9+++3R\n4z71qU+FcYnV6I8dO9bV32vuhC/lf+aZZ7p67rFO963mRPnzkeZIaX6U/35pawQdnzhxovuNbYEl\nS5ZEt+fMmRPGmq936tSpnm1Tr/hO/1Wd/+vy35rMg8r5DeVXFwAAIAMXUQAAABkI540ibSj3HI18\nCXYKX5Jf9Ry+DLwqtKShM7O47ULpcN6sWbPCWLspm5ndc889YVx3vC1btiyM3/nOd4bxQw89FD3O\ndzBvioYDfCdtdEePdQ2H+JCM3tawn47NXnisjyXabmO0dMjXNhX+s66S2r7Cf5e7bUeT8xvKTBQA\nAEAGLqIAAAAyEM4bRUZ7R+Ve0s7BOgWdOl2cGgJMrQbxYb6f/OQnSX932WWXhbF2BN67d2/l32i3\n9tQO729961uj2xqS+c53vhPGM2bMiB6n3Zu183pppSvwdHFYHwLoduHeNqqrsNT3X9W93N+nx71f\nHFq/e7ovU0NBbecX0NbvhO7LJr8PqekGuXJCeDnqzsd6HD311FONbQMzUQAAABm4iAIAAMjARRQA\nAEAGcqJGEc3TaBuf97BgwYIw3r59e68350VpDk2TrSNSY/WpOVDeww8/3PHfpL6Wrj6/cePG6L6d\nO3eG8Q033BDGvny9ybwPpfmCJfKjtBRdx6OVz2Wrot8Vv5/1HHDRRReN+O/+OXyn/tFIWxlo9/Ym\nO7S/7GUvi26vX78+6e+0pUBdPlKv8td8G43JkyeH8ZEjR3qyDcxEAQAAZOAiCgAAIAPhvAHmp8HH\njx/fpy15cX56V6ewh4aGwrgti4z2q/t76nR5G+zZsyfpcd/+9rdHHPeShihL7Nfc8Oqg0u+oV9Wm\nw3/nNeyp+6+uRcRoWVRdO/9ryMks3i+HDh0K4yZbZaSG77y2nZOmTZsW3d6/f3/Hz3H++eeHMR3L\nAQAAeoSLKAAAgAyE8waYn2LXDq1t57v2DqrSFZFV0+VTpkyJbmvYs3S34RyzZ8+Obut+aUP15WhZ\nzLWXND1AQx6pfGWdhq2efPLJyr/TEJ4P16Twi3priFy79jdNq1fXrFkTxr6a8+jRo2Gs21e6y36d\nXq0cUFpO+M7Tyt2cSltmogAAADJwEQUAAJCBiygAAIAM5EQNMI2lm7Wvu+95550Xxhp3NutfCwGl\n3W799qVqcp9rLsfKlSuj++6+++7GXjfV8uXLw9jnuB04cKDXm4PCtEt5XZ7MWWedNeK/53Zy13OD\nP8dVWbhwYRj7XNHDhw+HcZM5UZoDZWa2aNGiEce+k/bu3bvDWFcwyMlDy3Xuuef27LVS+JUNmvzc\nul1xgJkoAACADFxEAQAAZCCcN4rkdPvWEuLUqfNUTXbcLSE3hFeSX9i1qqS7dPhOQ4VmeZ2ItW1A\nalm0b9UwWlpdjEbaOqOuTYW2JCi98Gxd2H/ZsmVhPHfu3DD2rQGaDC1rSoAPQWmrBV1dwrckOXXq\nVBiPGzcujLXLeWk+BFuiVYDqduWFXrai0FBmzkoEzEQBAABk4CIKAAAgA+G8USSnK3PpEN7SpUvD\neNu2bUWfezR63eteF93W8NY3v/nNoq+VE7rVCkuzOESrx9tFF10UPe7pp58e8flyw3faAb1tVaij\nhe/0nRriKR3CSzVr1qwwnjNnThg//PDD0eOa7Og/c+bMMPbhPD1mNXXgueeeix6n1WG66kROt3ZP\nw5y68PGGDRu6fm4N2fnvv4YolV9VQ6sRe0nDq90uJs5MFAAAQAYuogAAADJwEQUAAJCBnKhRxOev\n9IPmQWkMPidfq2lNtneos3r16jDesWNHdN+6deuKvpbmiuSUMde1qdA8j6bbRWgpOTlRzfAl9amt\nAXr1eWj5v1ncykC3wedolc6n02OxLifK367aBs3P0S7lJXK59DPct29f0t/ofq7bBm0/UZUDZRb/\nDui+M+tfTlTJPD5mogAAADJwEQUAAJCBcN4o4stH+610CE9LsH1X4hxNLoLsp631s1m/fn1jr+sd\nPHiwZ6+VYsKECdHt06dPj/g4v//a3v1+NPDhp9RwXonvYpVLLrkkjDUs5Omivv5Y0fNGiXDe9OnT\nw1hDoL4LuG6Hplr47dPzkIbSqtqEdCLnHFcXwqt7Hyl/c+jQoaS/GaSVDZiJAgAAyMBFFAAAQAbC\neaNIk5151YoVK8L40Ucf7clrmpUPGzS5yKWvVstZHDqHVvqYle8mrZVOixYtCuONGzcm/X1qOEWr\nlMyqw37ojnadzq3u1Y7bpWm4zIfztNO0hpZ8mEm/ixpyy91uDTVpqNAvtPvkk0+OuA1++3Q79PPo\ntpN2CT5FZGhoKIz37NmT9BypITw1PDwc3SacBwAAMMpwEQUAAJCBiygAAIAM5ESNIhqDb1Iv86By\nSmpT+RyGknyJ/oIFC8J469atXT+/5opoXkZqWXqJ1/21X+v8/2B+n2sOl+ZvDVJXcp+/pXkkjz/+\neK83pyPnnntuGJf+fvkcK80Lqsvf1LwgPV58yxQt39dj0ecSaauAEvlb2jZEP2t/HOjr6tifp/VY\n1+fI+X6V5tsslO4wrsff4sWLwzg136pO1XFUWv8/JQAAgAHERRQAAEAGwnmjiO+YOxoMaqdqv1jq\nsWPHij6/htV27dpV9LnrPPfcc2G8YcOGrp+vqgVDk9Pvpfkwjn42bQ/n6bbv3bu36HP7cJ52RNcF\nv31oT8NYGuryz6eh4LoWB6VbMGhrFP1e+xYM+l3ZuXNnGPtWLRqW1JDn1KlTu9/YRLpvly9fHsap\nqyv4lQj0M6hr1VDVpqJES4NenUOYiQIAAMjARRQAAEAGwnmjyEUXXTTiv+uUvU4xl3D99ddHt++6\n666kv9Nw18KFC8P4scceS/r7N7/5zdHtq666Kow/8pGPhLHvHN4rfgp7/vz5YVyie3kvQ3iq9KLS\nVbRqx6wd3Zur+G31t9tMUwBKV175sJVWetVV52lYR89X2i3fLA6baljNV3aeOnUqcYvT6DlFq3B9\nuFFD1Xq+q1sUWEOPVefzJui253zH/bEzY8aMME5dBD313F9HO53r8eKfu+TvAjNRAAAAGbiIAgAA\nyMBFFAAAQAZyokaRqlXYS+dBKZ8D9epXvzqMv/e971X+neZE5MTCv/a1r0W3Z82aFcaaP/P6178+\netwdd9wx4vP5/AMtn9aS5lSXX355dFvLu1M7lq9cuTKMN23a1PE2dELLyjWnp8Sxk9M5uM05UJ7P\nuanL92mbI0eONPbcJUrM9Tn8sTh79uww1n3u9/+hQ4e63g6lz6/n3Dlz5kSP09wi/c7rCgNmcY6U\nnod8DliT9ByXc77zeV6peVClVeW/aa6Umdn27dtHfJz/bFIwEwUAAJCBiygAAIAMhPNGkdKdeXPU\nhfCa9M///M9h/MUvfjGM//Ef/zF63A9+8IMw1rJcv9Bmt7Zs2RLdzglPbdu2rdTmvCidjtewiYY1\nzao7jKc+d66qhYrbwHfIzgmRabjBdzkfpMWYS9P37verhtI0DOZbTGiIxrdd6JZ2eV+7dm3l4+pa\nHGinc13QWMcljB8/Pox7tVh9r50+fXrEcaqc44OZKAAAgAxcRAEAAGQgnDeK9LKao8108crf/u3f\nju7TKe3SHZpVavhu0aJF0W2tVCxR3aRVizkVMz70oKESDVHULRRdIszcthBeaVOmTAlj/z3W0HCJ\nyr+c8NYll1zS9et2y3f612NTVwSYNm1a9LgVK1aEsR6LfnHdnH2rYTFf1TZv3rwwHhoaCmNfjazn\nq9Ru9/rdS93u0RrC6zdmogAAADJwEQUAAJCBiygAAIAM5EQNMF9+ritn45d8blLOCuU5zjrrrOi2\n5mJoB+/p06dHjyuxkrnK6T6sfE7UIHUSHySa8/WSl7wkuk/z+HLKtj0tnU/NiarLedNu9yXaWaTS\n7tQTJkwIY58Tpffpti5ZsiR63P79+8M4ta2E5iZt3rw5uk9XKdBu5r5Vg36n9DjwOWCqV13x586d\nG93et29fT163l/T79tOf/rTjv2cmCgAAIAMXUQAAABn6Gs57xSteEd2eOnVqGOt0qk6LmsVhLA2H\n+GlwLRfVKVO/+KBOoU6aNCmM/XTqgQMHRrzPT/1qKEenBxcvXhw9Tl9L/8a/Dw3/6PSx72i7dOlS\n61TOVKbuV902s3jav41l6Vryr2XbfipewxJ1oYwqdWX9uv+0vNks7rxcoou6dsLWUObhw4e7fu7S\n9LPx+1z3i3aJHi30s/YhsdIrEeSEZOvK47U9g7YN8QsGl+46r8eEhun8+Vj3n26T3w9V7Tv8efH8\n888PY02h8KFzbSmibSV8uFH3mT53XYuT1DYVqa0QtAWDnjP837Q9nKfndN2v/jt0ww03hLF+Ths2\nbOj4NZmJAgAAyMBFFAAAQIZxv+hVmv+ZFxw3rmeVBQAAAN2ou25hJgoAACADF1EAAAAZuIgCAADI\n0JcWB1p2iWZo/FbLZn15rXZAriv/VVUtJsziElN9Du0u7G/7UuhuXXDBBWHsy8Wr9osvE64rL1ba\nDVlLnHOPcd328847L4x71Wnd0zYcZnEbDd0+bf9hVt153R8vWk6tZfS+5UQV/Tw5r3TH77+qHBD/\n71pur+0O/DGrrQK0JYFvk6LnKH2cb23RZPd8bf2i33Ezs2PHjo34N34FCb2t26rvySz+HlW1K/D7\nXNsB6X71j9N9q6/rz2/6um1oTaPnZrPq9hi+/UTpdiAp+dvMRAEAAGTgIgoAACADCxCPAToV6qc7\ntatr6nPMnj07jBctWhQ9TsM/2gnWT73r1LIPBXVLOxb7UIG+D53STg3faejCzOzVr351ziYGfmpf\nw1N3AE4AACAASURBVAj9CuEpH4Zdt25dGC9fvjyMU48jH7rVTv2pi76m0s8+9fMtLbVjdBvkbp9+\nbnoc1HXc1/OELrDsaUf/Xi5+rWGiqvCd58NgVWExfw5OXQRa6fdGUxb8c/vzyxk+DNaGEJ7y5wk9\n7+p79+f30uG8FMxEAQAAZOAiCgAAIMOoCuf5hXt1Kr2XU8G9Mnny5Oi2VsYpnRr1+yh1+lMX+1y4\ncGEYz58/P3qcTuHrNLUP1WhYbdmyZWHsw2W6WHRqyEj5ME5OWEcrYa6//vrovssvv7zj51O+Wm2Q\njlOtoNPjI/c5fOiwW6VDeFo5mRp6bHsIr7TUfa770oez9JxU+pgYLaoWKvbHmy6qrPflnEv7SRck\nr6p67BdmogAAADJwEQUAAJBhVIXzdOrSrP1Tlr6h2Bl1zSfnzp0bxqtXr47uqwoxaPWGbz5ZxTfe\n06aIGoLyr7l79+4w1qlWH+7RUOTatWvD+Iorrogep00bP/KRj4Rx6vvItWTJkjC++uqrw/i6666L\nHqdhiVTaXM+HVw8dOtTx8+k29KvqxocR9H3pNmlz10FTunqwSVX7v442yjSLQyh1lXaqLpynoXoN\nyZw4cSJ6nK+4Qj09V/t9p+caPWdWVe21lYZ4+1GBV2ew9iQAAEBLcBEFAACQgYsoAACADKMqJ6rt\nOVBezsK7+/btC2NtDWBmtmvXrhH/Jqdrsi+9nzFjRhjrQrE+n0GfXzubX3zxxdHjtNu1dj33+Rv6\nfmfOnBnGJbqca47GK17xiug+zSV4/PHHw9jvY5+Hl0KfW/NOOqG5D3oc9aukPqfrctv5z7YN5dTK\nf6f0/JeaB6W5U75zeOpzqLqcqKru9P47kPO6Y5l+532OZVVOlF8suW3H9iBhJgoAACADF1EAAAAZ\nRlU4b6zxIa09e/a86N+khnv8FHtVZ2kN2ZnFYTrtZu67qU+bNi2MDx8+HMaPPPJI9DgNn2mbBP17\nM7OjR4+O8C5eSEMgH/jAB8LYh0b/+7//O4zvvffeMPZd4rUVQioNa+R21R6khW0Hie5Xf8zu37+/\n15tTq0T6gobOqtIBOlHXekTDznWpDE23Lxlt9Puv5xazOCStrQEGrcVBm7EnAQAAMnARBQAAkIFw\n3oDRChofvqvqTp3Tsdwv/Fm1EKgP561YsSKMterOVzppZ3MNFWqHcjOzkydPhrFOQc+bNy96XGo4\nTzuO63jChAnR4yZNmhTGWuGiY7MXVrmk0OfIDclQwdQZDXPUdTzW0Ejbwnf9NDQ01PVzlF4QOoeu\n+KDfcTOzI0eOhHHq+aQN9Jj15yM97+q5n67w5TATBQAAkIGLKAAAgAxcRAEAAGQgJ2rAaLfwftFO\n377kX29r3P348ePR47Q9w6FDh8JY2x2Yme3duzeML7jggjCeOHFi9LiFCxeGsea/+FJebY2gncj9\nKvX6PhYvXhzG+t79NqXSHIbR2Om7jVJXfp86dWoYHzt2rKnNGTiD1HbA5zfqaguaU+pzSAf1u6ht\nOXxOlJ7/qnJm0R1mogAAADJwEQUAAJCBcF4NXwaqoZwnnniiZ9tRsju1n+7V95hagqzT3j7koVPG\n+nw+nKJhEw3n+dJ9LdHV/e+7Sb/0pS8d8W98ywQN9enr+hYM+rgFCxaE8fnnnx89rtuu0alhJvSG\nHmOE834lNRSU2kqiNF2JYM6cOdF9utKBrsTgV0cYpO+i7mc9p/vzu4Zh9dzahnYTowUzUQAAABm4\niAIAAMhAOM/i6V+tyvJda7WjbZO0msQsDudpCCqHDwd2O61bV9GiIU+/4Kh2C9aFimfNmhU9TsNl\nGnr0VXJ6ny6k6sN0Wp2nn7WfBq8KRfr9pdWDqfQz0M/W34feS1nE+8Vo+EjDKc8++2zl32jVWBsq\ncM3iyi4fxq6i36Nehse0WrcupKXh/UEK33kaztNziD8/6TGnoUy/wDzyMRMFAACQgYsoAACADFxE\nAQAAZBgzOVHaxVZzcMziztWac9TLEuc1a9aEsebtmJmtW7euJ9uQU57sc3i0jFa7kvs8D739k5/8\nJIxXrFgRPU7z1aZPnx7GvrP5xo0bw3j37t1h7HOiND9Cxz6P4rzzzgtjLe8+depU9Lj9+/dbpzQf\noS4XC+VoZ/m63KQStPv9ypUrw3jTpk2Vf5OTB7V69ero9vr160d8nOZo+e2ro+eD1G7e/crp0/xG\nv0qB5kimvve20zwoHftWFHoe18+Q80w5zEQBAABk4CIKAAAgw5gJ52kIz5fHaxl9tx2oO6GhJm0H\n4EM8J06cKPaaddPt2vU3tSO7XwhYw6Y6jX7fffdFj9u6deuIz+cX9NVQxMmTJ8N4y5Yt0eO0dFnD\ng74FgT7Hww8/HMa6yLBZdcjHhxGr3kedl7zkJWHsQy0+XIgySofwtA2JPyZUXQivW1XhOzOz4eHh\nMPbnE9/Fv4qeD/R7U6eXCxVr2E7D7wcPHowe5xc/Hw2qzuM+nKdhOzrwN4OZKAAAgAxcRAEAAGQY\n1eE8DQ3pNLMPj/UyhKc07KRT7Pv27WvsNVOrMnR63Ky6w60P52lncn1PdWEvDT3o2Mzs9OnTYfzd\n7343jH14ULdXFyf24QXdDg31bdu2LXrckiVLwlhDblrJaVYfyqmi4eR+HXvojn53tbLWzOxHP/pR\nGPerK3aJzuupiw53+ze59Duqn4dWBY9WVYvS6/nSLK7I6+Vn0y+6XzRtQo+P0piJAgAAyMBFFAAA\nQAYuogAAADKM6pwozePRjsDalbwT55xzThg32fFVu36XoHHiutW79XE+N6kqp8nH2e++++4w1hwm\nb+bMmWH83ve+t/J1v/CFL4TxnXfeWfl8mou1cOHCMNb3ZBaXauvf+JwoLe/WnCifr5aT86Lb0HT3\nbDRjwYIFYey/U6nHxO///u+H8aOPPhrG9957b+XfXHPNNWH8/e9/P7qv2/YCmkto9sL8v37T76RZ\nfA7WdipjgR5jeg72OVH96iDfL5pvqi0wyIkCAABoGS6iAAAAMozqcJ5Ob+eU/J5//vnRbQ3/DJLU\nKV0NV86ePTu6b8qUKWGs0/w+DFbVodl3if/TP/3TML7++uvDWLuIm5k98sgjL7bZZhaH7XQx0tzQ\nqIZodLrctyTQfZYqtRs8ytE2BD6cnxPez2lj8K53vSu6rSX6//7v/570HK997WvD2C9M3m04z68W\nkENXYSgdQvHPp6H1sbygrp7jxlr4rk6v2oswEwUAAJCBiygAAIAMAx/OO+uss8J4aGgoui+nukQr\nsZ5++un8DRtAGsJ76UtfGt2n08Tf+973wrhuEVQNh/7Jn/xJdJ+GNnSff+tb34oelxqGrVrMWbvW\ndkIrO/Q48Iu56sLWaK8HH3yw6PPlhAo+//nPR7f/8z//s+PnuO2228K4dAfqEl3Om6yCKl21PMj0\nsx/LoUxP90uvOrTXzkS95z3vsWnTpkU/qCdPnrQbbrjBlixZYjfeeGP0g/XRj37UFi9ebMuWLbM7\n7rijua0GAADos9qLqN/93d+122+/Pfq3W265xW644Qbbvn27XX/99XbLLbeYmdnmzZvttttus82b\nN9vtt99uf/iHf9h1oiMAAEBb1V5EvepVr7JJkyZF//bVr37V3v3ud5uZ2bvf/W77n//5HzMz+8pX\nvmLveMc77JxzzrHh4WFbtGiRPfDAAw1tNgAAQH91nBN19OhRmzZtmpmZTZs2zY4ePWpmvywTXrt2\nbXjc7Nmz7eDBg4U2s5p2sZ04cWJ0X2pOlObk6POVzony+Tlti/G/7nWvC+Mrrrgium/Dhg1hvHv3\n7qTn087hemyYmZ133nlhrHlVX/ziF9M21tGWBNoFXFszdEJnUfW5fdsLLVNHOb47tW8t0elz5Pz9\nqlWrotsbN27s+Dk0z/DAgQMd/73nW4p0q8mWBGiOnp/Gck6U5q7629r2RnOnzcq2P+iqOm/cuHEv\nWFbD3w8AADAadTwTNW3aNDty5IhNnz7dDh8+HNZbmjVrlu3fvz887sCBAzZr1qxyWwoAANAjH/rQ\nh170MR1fRL3lLW+xT3/60/a+973PPv3pT9tNN90U/v2d73yn/fmf/7kdPHjQduzYYVdddVXHG90p\nrQ7M7QStU6OHDx/uepuqtGFmTqfvzcwuvfTSML788svD2He+/fa3vx3Gp06dqnz+efPmhbF2ifbT\np9rx+VOf+lQYp3Yor6Pht6lTp0b3pYYvdJHgZ555Jox9yDinYzlGpuE37TpvlheOy/mblStXhrH/\nT2BOOC81hKeL//owYt3C291K/T6khq01TO9LzLUFzZk0EOTR8+lY61I+YcKEMPa/K7ovdOx/e7VV\nTV0rhDMXUR/+8IcrH1N7EfWOd7zD7rnnHjt+/LjNmTPH/uZv/sb+8i//0m6++Wa79dZbbXh42L7w\nhS+Ymdny5cvt5ptvtuXLl9vZZ59t//RP/9SKiwYAAIAm1F5Efe5znxvx36v+Z/T+97/f3v/+93e/\nVQAAAC038B3Lc+iUs1lczdUkH0rrRzXM4sWLo9srVqwI49OnT4fxzp07o8eldnx+85vfHMavetWr\nwtgvbvqlL30pjL/5zW+GcYlKEw25+RYdvpqjyokTJ8JYPydfnZfTFR8j0/CZhmR7SRfQrlpMuwl6\nHOWG77T6N7Xy98knn0x6XOrz6ffcf1c0XDsaw3k+8tJkmE2rzTSloG0V36XoeVsXs/e/oXpbPw//\nWehvsT4u5/eHtfMAAAAycBEFAACQgYsoAACADGMmJ0o7B/v8HG1rkFMWXWfmzJmVr5uaj1CSdmc3\ni0s9NScqtTOy78KuXcq1fcJ9990XPe4zn/lMGJfuDK9tDXyM+7nnnkt6jqp8NW13YGZ25MiRDrcO\nVWbMmBHGmpPWNM3dST0+VImVCDRPMzcfLPV19RyQ+t07duxY0uP0++b3S10peUlNdqeu08tWA5rH\nk5rn2aSm88G0DZE+t/9s9ftb97l3mwel+r/3AQAABhAXUQAAABlaG87TKUqdyuuEhnWWLVsWxr7V\nwJw5c8J47969YazL2JjltSTQTsTHjx/v+O9L0/CdWbyfd+3aFcb33HNP0vP5EIIuJqzTqZ/97Gej\nx5UO4elnqqEH36ohh079+nAvDWXL0c9NQ8u5tBTah2GVdkDOCeeVKCvPCeH5bvmpYYmc717d/lN6\nPvHb06sQba/Cd14vW9jUhbT6oZehTA0L+9dN3RclF21mJgoAACADF1EAAAAZxv2ix6sX9iv8sXTp\n0jCeNm1adJ+GC++///4wLjnl12tViy9effXV0eM0lKFdkzds2ND1NuiCo72stuolXShX3yNhvt6o\nW2Q0lVaU1oV/dXHi1G7muk1+pYSc0GEb+J8MfY+aQuE7luvC5RoW107m/r5BUqJKs4rf57rQ+759\n+4q9Tic0XO5X/WjyskKrS+uq80o48z7GjRtX+Z6YiQIAAMjARRQAAEAGLqIAAAAytLbFgZbvlshN\n0g7cmvtjZvbEE0+EcY9TxHpi/PjxYezLojVuX7qj8GjNg1Kppd/ovdRzSGobjNQ8KKXnk37lQPlc\nrOXLl4fxj370ozAuce7Tc4jPEVLaVVxza8yqc6I038pL7ajepJI5UC9G963mpPXy90u/U7183dLt\ncbrFTBQAAEAGLqIAAAAytCqcp9POunCvdtIuQUttx4K6zrm6gK52TfZT7Dr9XmLhZO1srKXQvv2E\nTlXrNK7vYt+v6XzfMgL5UjuMp9L2Hfqdb0OH517y3dA1nSE1DOPPB1X0POEXO9fX1bYGPuynnb91\nxQe/Dfp3bQjn9ZLu536loPQyfNlmzEQBAABk4CIKAAAgQ1/CeWemIv20unZ/njJlShj7cJSGcg4f\nPtzEJo4quv+2bNkS3adT4q95zWsqn0MXFi4RztOKQf2s/SKeWjmpVTuTJk2KHqfhgRIdj3W/6LT1\nokWLosctWbKk69fCL+UswlunDQt+t9GBAwc6/htf1VtFz+ETJ06M7tN0Df3++3Be1fdc/8Zs7IXw\nlKZAVJ2r0BvMRAEAAGTgIgoAACADF1EAAAAZ+pITdSZW7nMgNOY9Y8aMMNYyV7M4l2poaCiMd+/e\nHT1urHWT1nyEKnVdxLUMXPerWfl9qfkRWgrty3X1s9aOz9r6wD+uhKrcAr99pbu8j2VNth7Qlhq+\nPUYVn9Oj+Xljjc9HqnL22b/6SfH7ec6cOWGsuY/PPvts5WtpPqdvTTOWc6J0P2s+qD9v6Xk79bgv\nTdsx+PN21XGgf2PW7vMsM1EAAAAZuIgCAADI0Jdw3qxZs8zM7IILLoj+XUNI06dPD2P/OKVT7osX\nL47u0+lB7XZ99OjR6HHaSVenQ1NLrn2Jbk6Z6fDwcBj7qXOdktXnXrBgQfQ4LXvNoeGy0uXh+nma\nmV1zzTVhrNPRfope37tuk9/HGq7RqeDSISK/CKpf3BXtpJ3w69qi6Pdwz549RbdBj1Gz3oVX/Pkk\np0VJ3WLCSt+jD9Ppd/HkyZNh7M/HurCthvr9d16fo7QmzyElVC1m7VtR6O26lSt6xR/zum81tOfP\nq/o4Pa7a8NkwEwUAAJCBiygAAIAM437R49ULx40b17cFEwEAADpRd93CTBQAAEAGLqIAAAAycBEF\nAACQoS8tDnzX0pFoaasv56wqa6zrhprarkBLdK+88srovpUrV4bxkSNHwnjv3r3R47QreF05tXbw\n1ZJa3x08tTPvokWLwnjHjh1hnLK/0T2NmbPPeyNnn0+aNCm6reeTnPL/0mbOnFl5n553fFdnLR9P\nLf0+027G7IVtSB566KER/8bnhnCsN8/v89/4jd8IY20N9MlPfrLR7dBO6SW6iOuxo8fivHnzosfp\nb+KGDRs6fh19bjOzgwcPJv1dSv42M1EAAAAZuIgCAADI0JdwXgqdKkydmvZTb6khPKVT4vfff390\nn97W0JlfrFe7o9fZv39/GGvo8dJLL40ep5156/bFY489lvS6wGikne/NzJ566qkRH+e7JuesMFDn\nwgsvDGNND6jaHu/QoUOV982dOzeM/QLJ27ZtC+PUc6aGBNvQ0dorHT4aLfTz1dSXpunxUuLz0N/s\nAwcOhLE/tvU4yJEavsvBTBQAAEAGLqIAAAAytDacp1PiOWG5pmnozIfRNNSXSqfStbLOrD+LLPrK\nn9RtmDx5chjr4pe+gkefv/RUq05vp4ZW/eKwqQvWvulNbxrx30ssSj3W6DHhF9NO+RxTwwunT5/u\nbMM65KtrS9JQ39q1a6P7du3aFcZ6PvHpBlqduG/fvhHHbUEIb2RVC/em0t9Xs/RjtlchX/8dnTFj\nRk9eNwczUQAAABm4iAIAAMjARRQAAECG1uZE1eXTpHQRNYvzXHxZc5N8B/NONRl3Ts11Ss2Buvzy\ny6Pb2rbh6NGjHW7dCy1cuDCMtRP8E088Ufk3qXlQyh8fVXlQ/v1Wla33I4+tFP2++bYBTXb01n2W\n8xmOBZoj5HNhhoeHw3jTpk1hrN8bs/j8Qq7eYNLvSs65ZvHixdHtnC7gJei5Rn/X9XekznnnnRfd\n7kf+NDNRAAAAGbiIAgAAyNDacJ6GnVLDd14vQ3jqZz/7WVd/32RZb+kwk+8k60MHnbr66quj21rq\nrp3cv/GNb0SPqzpGUrtYp/Kltt/85jdHfNwgh/N0AVzfOVgXwO32sy6t6YVwNXSg55YSITEtOU8t\nN9cO5Wbp5w1CpYNPz3epISxt23LFFVdE9/UrnJf6214V3kt977ktHVIwEwUAAJCBiygAAIAMrQ3n\n+TAM2unBBx/M+jvtmqwVb1u2bIkep+Gjqr83Mzt16tSIj+s2fGcWV0FVhe8G3fjx48NYO777xU01\nJKDaENprOpzXZOVPTnjhgQceaGBLRqbHB/ovJ93lxhtvDOM5c+YU36Y2u+qqq6Lb3/3ud4s9NzNR\nAAAAGbiIAgAAyMBFFAAAQIbW5kRp7sXWrVv7sg25ndIHlbYrqCuX1m7yqe0cpkyZEt3WXJsf/OAH\nYZyad/Lcc88lPa7OggULwvjYsWPRffq+tDw2tZv8oB07uj8PHDgQxn41dS3tL5FvVtJLXvKS6HbJ\nMuZBo+0Y1qxZE92nn++ePXuSnm/y5MlFtgtl6OfrO9dXedOb3hTGjz76aPFtajPf4kBzrrs9jzET\nBQAAkIGLKAAAgAwDEc7rF9+Nu9tO5J524y4RnupWasfj1P2giwf7sFBqGEGl7i8t/33d614X3aeh\nyK9//etJr1sXYvQdzAeVfqY6HqSQmC44PhbpcT937twwXrduXfS41O+5hvD8Qq/oL00X8L9TVfSY\n+Na3vlV8m5S2xGhy0fJUvgVOyVSEsX3WAQAAyMRFFAAAQIbWhvPaEN4qHb7zUqdh20ArQOoq1GbN\nmhXGujDr8ePHu96GumNCq/1uuummML7zzjujx1V1QPe00qtugdmhoaER/70t1XkaAlVt+H6VNsiL\nPpeg73/79u1dP1/bQjL4FT2/+KrUKvv27QtjvzJEaW2o3NXwfpO/5cxEAQAAZOAiCgAAIAMXUQAA\nABlam5Tz9NNP93sTGlc6buy7gpeU2qlbS0mfffbZpjbnBeXs2hLjs5/9bNfPrx1tT5w4EcaaezXS\n7TN8TlQbNJ3jh9FFv2OpKwm0nX4v/TlkUHPqtLVFnS9+8Yth/MQTTzS1OWbWjhUadHWFw4cPN/Y6\nzEQBAABk4CIKAAAgQ2vDeaOxBLtpfpHFfmgyhLd06dIw9qHL++67r6vnXrt2bXRby4GVD4n5hYvP\n8FPsOaECfY7cUIN2p07tVI3eq2pFYda7c6FfyFaP9bo2H4NEw0yDGr7zUkNnGs6bOHFiU5vTSocO\nHWrsuZmJAgAAyMBFFAAAQIbWhvO0s7QunGhWHWopbebMmdHto0ePhvHs2bPD2IewNMSj1SCp065+\nsc/UypgmQ2n9smzZsjC+5JJLwvh73/te9Djt2rt69eow3rhxY/Q43Ufz5s0LYx/KqJr+9VWKO3fu\nHPFxJapTNMTjX1dDc/refRhxNB4To5Eefz7Uosf93r17w1jPR7m0Qk0rUs3i807bq6U1vF9idYS2\n09UuchbeHuTwrJ7j3va2t0X33XbbbSP+TZOhW2aiAAAAMnARBQAAkIGLKAAAgAytzYmq6xLdK3Vl\nkZqbkKou10njvL5VQWpOVFW5fSrN8zpw4EBXz5XLv/etW7eOOPYl4Xp73bp1Sa+luXWpn6fmp5iZ\nPf744yM+rkR3cM1DOeecc6L7qkq1x3Ibg5zckLao6yD9lre8JYxnzZoVxl/+8pe7fl3NJfLHWJNl\n4Tn8d15bnkyaNCmMfbuTQc7/SZG6moRKzZUsnY/sv6PaVTzVS1/60jC++eabo/uqcqKaNLhnHQAA\ngD7iIgoAACBDa8N5ujhv6YV6e0nDLnVhOQ3J9Ktbey9DeNo+Qkv09+zZk/T3fh/l7LPUNgRLliwJ\nYx9S0G1vUl14cCyH8JSWfQ8yH9q79dZbw/iZZ54p+lrjx48PY38ctWERWeW/47qfNBw/2sN3ZnFY\nrMnPqfR3Kid85+nv6PDwcNfP1y1mogAAADJwEQUAAJBhdMx/Dwg/NVoVhkmtnPCVDtodvYqvdCzd\niVirOXTa1VexaUVJL6uAchb13b9/fxj7kILvao/+8d3a+0VDvBr+PX36dNbzlQ7hVTl58mRPXqeU\n1ND/aKRhsSbD2L0MjaZWh+v5OLVyvUnMRAEAAGTgIgoAACADF1EAAAAZyInqoRKl6Nr1PCcenJI3\n1Q3taLty5cow9ivTb9++vePnvuyyy8LYd2evyquaMWNGdPvw4cNJr6Wd088999ww9vu8bV2dx7IS\nXeJz+LYXesx1u4qAWfzd0feYmyulXfc1f+vJJ5/Mej70nuZBNdnipOm2N/o+tBN53etqLmsb2lkw\nEwUAAJCBiygAAIAMhPMyaWl7akinxOKL3ZZ0luj+vmjRojB+7LHHKh+3adOmpOe77rrrwlgXRDWL\ny171vX/+85+vfL6rr746afvqaJhDP6fc7sA5rRXQmePHj/fldX04ZdeuXWE8NDQUxm94wxuix2lo\nvm4xYW0bMnXq1DC+6667Ot9YM5s8eXIYNx3eRzP0mMs57lMXUk+1YsWK6Pajjz6a9Hf6PrR9jD8u\n9byr59KNGzd2tJ0j0X2Rsx+YiQIAAMjARRQAAEAGwnmZNMRzwQUXRPdVdRzXqX2zvMqdJsNCGm6s\nCzXmhsjU9OnTw1irgny48Z577gnj1KnW+++/v8utM5s2bVoYb926teO/9xVbWu3Xr7ATmpFaFegr\nVHfv3p30dxqy8GGYbqV2KfcrHXQr9VyDkeniy6kVx6rb8J1ZfDz7lRtSw3nq7rvvTnqcVqX6VJqc\nqsXrr78+jL/+9a8n/Y1iJgoAACADF1EAAAAZuIgCAADIQE5UpiNHjnT8N7ndizXOO2vWrDDeu3dv\nx8+l7QnM4hWxf/KTn3T8fJqjZRaXT9e9X80jeeihhzp+3dImTZoU3U7tBu3z3M4YP358dPviiy8O\n40HKiaorNcaL01win7uybt26jp+vRC6LtlZIPYdoTl8J5EF1R/Nu+3U+GR4eDmNtT9BP8+bNC+Od\nO3cm/c2NN94Yxql5WYqZKAAAgAxcRAEAAGQgnNdC2i3bLC6396XznSrRnkD5NgtV7R18OODEiRNF\ntyOHtlnwYbnUEl3fhb7q33UR40Hiw7VNLnbaLf/d6DbE4FuXTJgwIYxTy8p9mLgfdLvN4vSA1AVc\nCb+1i6Yb1B2LmlZQYoFp7ZivoX1tudAETRPR1/Xn2Zzzk66SkbOiBzNRAAAAGbiIAgAAyEA4r4V8\nZdf8+fPDWEMWOZ20m6bVEQsXLgxjX4GXWv2WQ/dRXUinRKVTVQWiD4PlVD62QZvDd163i3N755xz\nTnRbv5ep4bwtW7aE8cqVK8tsWId8iELDOqnVloN6/I5Wen6p+wxXrVoVxvfee2/Xr7tgwYIwHlS0\nxwAAG8VJREFUPn36dBindt/PpWkiWmHuw+X+O5tCK8Wffvrpjv+emSgAAIAMXEQBAABk4CIKAAAg\nQ2tzojS2mbpKuqcrnmuss6oMv5Rly5aFseZBPPjgg9Hj9uzZM+Lf+w60jzzySBiX7hystORfy6DN\nzA4cOJD0HNolVsuifaxauyan5rLoquF1JbWppe26fTkd6Ov4/VfF7xct2dVWFz5WT+fwFyq9TzTn\nY6TbKTSXqF+d+X17An0fqa0LON7K8efwnPxQ/TzqyvJzcnzqaA7orl27ij53Hf2N0JYEvq2J/q7U\n0efoNj+XmSgAAIAMXEQBAABkaG04LzeEp0qUsOfQ1gM6Tg3xeKdOnRpxXFqJkJaGL0q0YNBO4iXC\nsDlhxBJSO0PrMVLX5VxbD/Ry8U/t4q2vS7hncBw9erTjv8np5IyRlWjvknou3LBhQ9evpdrQuV5X\n3Th58mR0n67usWnTpsrn0PPVpz/96a62h5koAACADFxEAQAAZGhtOK9Jvpu0X0S3ioZacjo5D1L3\n5zpa2eArCbs1Z86c6HZVOO81r3lN9DitdLzjjjsqn19DeLNmzQpjfU9mcWgzJ/zhP2sNc2oFXmoY\nzIeC9RjuZThPw5KE8LqjVVp6Dpo9e3b0OP0O/PCHPwzj1NCKVgubxd2l6UQ+mLRrt1bgpVZR56o6\nF44bNy66rcfw/v37i26DprRoaM8sfSWBiy66KIy///3vd7U9zEQBAABk4CIKAAAgAxdRAAAAGcZM\nTpR2L58/f3503/3335/0HFOnTg3j1Nhrjnnz5kW3NQ8l53W1K7aPXWsX8BMnToSxL6+/9NJLw7jJ\nzsu+w67m/mgc23d71/d42WWXhfHDDz+c9Lq+c3hOHpTy+UL6GWp+k3Yl9/Q+/3z9KjXWXC89Rsit\n+RVd6b6uq3NVLqZvzaLfAV0BYePGjUnbo2XfZnG+n35uvvuztplpQz6n375e5gK2zcyZM8NYj4+6\nnKjJkyeHsW8NkKpqn/vzk+bhlc6J0t8s/3u2efPmpOfQrv3dts5hJgoAACADF1EAAAAZxkw4T6fI\nczuZNxnCU3v37i36fDotr4sMm1V3KZ87d250WxcWbpLvyK5hBP3cfGmrdiJfsmRJGNeFAA4dOhTG\nGsrshHbwVsPDw9FtnXbWsGRdWE7Dx37aWls1aMjIT2eX7squ+1ND5H77nnzyyTDWqfO6diIaUtX2\nE2ZmBw8eDOOq1Qx0v5qVX3w1lX5udeG8iy++OIx1W3XfmcXva8aMGWG8atWq6HFV4T1dNNas+jNY\nu3ZtdHv79u1hrPu/X8Zy+M7Tz8Of06v4c2GTmkw30HN9akjbq1vAvlPMRAEAAGTgIgoAACDDmAnn\n4ZfqFhm++uqrw9h3dU9dTFjDOq997WvD2FdAVoVafBhMQ0G6CKqvHtQKC61QGT9+fPS4qkVzS4e9\nfAd0nYLWMI4P3WhFnoZufMdyfb9aYeUXOtbu1CUWPtVu6xoe0IoZs7ijsh5Luj1m8XGgIWS//zRs\n6sNTZ2j1kX/uXtJjto4ew3XhBb1P35Ov4tXwmx7PqRVLPo2gDSE8jEzTHPTcUqfJFQZ8OL/0ShZK\nfwd8VXU/MBMFAACQgYsoAACADFxEAQAAZBj3ix4vxT5u3DhWfwcAAAOh7rqFmSgAAIAMXEQBAABk\n6EuLA18OifJ06rFuf2vXaf2bus7hypfXardmLdfXfzeLF6jU7fvhD38YPW7Tpk2V294tXShW2w6Y\nmT3yyCNhnNp9V/ef3y963/Lly8PYt44o3WqhSfq5+Q73WuZfsjuwl3qcoxwf1tDFcLWbvO+Qrcd2\nVZuKftLzgbYX8Z3StVWIltv71hba9kPPn/77kLJ4t9/nVce6tiAxi7uZ13XFr+Jb3WhLAT2/+1Yy\n2r5DO+7786LuM22x4fe5tnjR3yy/gHtVS5zUBbR9m5SUlSyYiQIAAMjARRQAAEAGOpY3TKc/qxZO\n7ScN2+m0a+r0pw8/6d/pdKqOzeJp2Dlz5oTx0NBQ0uuWoF2//fR2twto+r/XaXbdR7nhO51mr1vU\nt0kaYvChm9KLaCvf1R79paEWPe59CKpEx/wmHT16NIw1rKPnJ7P4O6shMl0pwSx+/7p4epO/A/68\no4us5/DnFr2t+6EuPKjnqrrzu4YoL7zwwui+qoXj/eP0OVJ/w9TJkyc7/htmogAAADJwEQUAAJCB\ncF7DdOHU1IVJe0mnlktsn05v+xCe0qlgnZLVqj2zOFRw1113db19qm4x5lR+YeAz/JS9hvNyQl1X\nXHFFdFun1Tds2NDx85Wmi982QRckbrLaDyObNGlS5X36/dWqLB/i0fB5G2m4UUNGWuFmFlcjapXh\nrl27osfp+WUsN5jWc5WGNev4qsCq9Iq6EHGvUh6YiQIAAMjARRQAAEAGLqIAAAAykBNlcexUY/ol\nYvj9Kj/PkVPWrzlfZi/sIFtF8yW0tHjVqlXR4175yleG8cGDB/9/e/cWW0X1PXB8NYA/ucpF2hRa\naKEQKJSLNogXhHCVaBsICbFoQrj4APEJXgzxofAg+OCDoiTcTDAkgJAgJISmidJqCFAuLQrlUmIR\nKKVSgkoAIRD/D4b9X7PhjNPdOXPO6fl+ntYw05ndw3S6O2vvtU1sV/qOil2ZV4+P8KPHTvmNFdMm\nTJhg4nnz5nn27d69O9A5otLekhC2adOmebb1PdLa2hrqtVzoqdTpMN7FZRxakErcyUo/++3SBbGm\nztvjfdLhvoiXMH5vRvW7lzdRAAAADuhEAQAAOEjJdJ5OqQRdSFGzF8PV08912iAMesq/nw8++MDE\ntbW1nn0nTpwIdI5FixYFb1hI7AUlg6aqdHpLV4mtqanxHDdu3DgTjxo1ysSJSufZ95teDNOPLnmg\nv3e/qrpr1qwxsU5liohcuHAh0HVTlZ0e1AtRl5SURN2cp6Rbqsbv+7UXvX0i7BRvlHT68tKlS559\nupSBTuum0tANhIc3UQAAAA7oRAEAADhIyXRerCrRfnr27GliXWU2kWbPnm1iPeMoaPrONmfOnHa3\nqa2CLthoV6DVFZD1a/DGxsaY59eVg4cMGeI5zq4WHJWg6VqdDtHfu30vvvDCCybWM0X37NnjOS5W\n2lQveC3iXUg17FR1PNXX13u2dcXyt99+O+rmpARd7f/y5csmdl3kOqhY6TyX53QyCvozjvTEmygA\nAAAHdKIAAAAc0IkCAABwkJJJ66DjcLSgU++jdPDgwXZ9/fTp0z3bP//8s4lLS0vbde6w2ZW9+/Xr\nZ2I95uC3337zHKfHdujvLycnJ+QWunGZ1uw3XVyPI6msrDSx372iP0s9pkokcWPFXOgSFvbq7OPH\njzdx0Kr4YUu2KuV2eQ39+en2RVkOQ4+P6ihjogA/vIkCAABwQCcKAADAQUq8b7WrYsd7ym6qmDx5\nsmd7586dJv7444+jbs5T9BT9wsJCzz6dXr1165aJdWVvm05RXL16NYwmtlv37t3b/DX379+Pue/2\n7dsm3rt3b8zjdGopNzfXxHZ15WSnyz3oVKSdrp05c6aJdUX/KKv0J0MKT7Ofg7o8yJUrV9p9fn1v\n+92zOoWnq5Tb5TZ69+5tYpcFjYFkxJsoAAAAB3SiAAAAHKREOi8Z03evvPKKie0ZWq4Vx4PQlbrt\nqs5nz56N23Vd6CrTDx8+9OzTs6+irCDfo0cPE+vU4YMHD5zOp7/HoPwWHdbpEL9FlkeOHGlinRpN\nterKOn2pF1lesGCB57iBAweaeMuWLfFvWAqwF8M+depUqOfXPx86fRyUPQxDp/N0qtB+vuv0PpDs\neBMFAADggE4UAACAAzpRAAAADnzHRC1evFgOHDggmZmZ8ssvv4iISHl5uWzZskX69+8vIiKffPKJ\nzJ49W0RE1q5dK19//bV06tRJvvjiC8+05I5g3rx5JtZVojdt2hRZG15//XUTV1VVhXpuXZLAdYyQ\ndu/ePRPb47daWlrafX4XeiyWy5R1/RmJPF0hPCp9+/Y1sctYOLuatB6npcsO6OnrIvEdr6LHyQwb\nNsyzT0+JP3nyZNzagP9nj2NsK/ve6datm4n18yUZx7wCQfm+iVq0aJFUVFR4/i0jI0NWrFghtbW1\nUltbazpQ9fX1smvXLqmvr5eKigpZvny5Z5AsAABAR+LbiZo0aZLnr9InnvUX/L59+6SsrEy6dOki\neXl5UlBQIDU1NeG1FAAAIIk4lThYv369fPPNN1JcXCyfffaZ9O7dW65fvy4TJ040x+Tk5HimLKeK\nrKwsE0+dOtWzT792jjKFp+lX5GFX7dbplDDSeXqKtJ7KnkjtrTqtq4OLiNPbVpfp4ja9ULPfZ6un\nmev7V6dWRLzT5ceMGWPi5uZmz3F68e+wK3gPHz7cxHbpiO3bt4d6LcSfXcpDVz3X+yhpgFTW5oHl\ny5Ytk8bGRqmrq5Ps7GxZuXJlzGPD+GUBAACQjNr8JiozM9PES5culZKSEhH5txiefjNy7do1T4E8\nAACAVFFeXv6fx7S5E9Xc3CzZ2dki8u8CqUVFRSIiUlpaKgsWLJAVK1ZIU1OTNDQ0yIQJE9p6+kD0\nOK2w00TvvPOOie1FMv0WhI2n0tJSEx85ciRu1wkjhaelWvXsWPSMPPsPA10tPCi/N7RBZ0jqP1i6\ndu1q4vz8fM9x9qzIJ+xq19qxY8dMbM+c0mm21tbWmOeIZfDgwZ7t69evm/jJH2TPum6ifvbQNjpN\nZz8/9bOaGXlIBU86UatXr455jG8nqqysTKqrq6W1tVVyc3Nl9erVUlVVJXV1dZKRkSH5+fmyceNG\nEREpLCyU+fPnS2FhoXTu3Fk2bNhAOg8AAHRYvp2oHTt2PPVvixcvjnn8qlWrZNWqVe1vFQAAQJKj\nYjkAAIADpxIHiRb2OKhly5aZWE8J37p1a6jXcaXHgF28eDFu10nGcQq6bMbRo0cDfU2vXr1M7Df2\nJyg9DsquUO5SxsOvNIBu+82bNwOdT1fS9ysFMGLECBNfuXLFs09Xl/e7D1zGQWm6NIOIyOjRo008\nadIkE9tvwXW5DETPLjmh6TIfehykPSYK6Ih4EwUAAOCAThQAAICDlEjn9ezZ07PtMq1ce/PNNz3b\nBQUFJvYrHhoVe3HYqCq/P378OJLr+Hn//fc92506dTJx0HSernx94sSJdrdJV4nXaS8Rt/SWX7os\naApPV5cPWrn+1VdfNfGNGzc8++zvKypDhw41sf4+du/enYjmIAZdqd4PaVekG95EAQAAOKATBQAA\n4CBp03k6pdXe9J3t5Zdf9myvXbs21PO31xtvvOHZtlMvHU3v3r1NrCt2i4h8//33bT5fGCk8Tc8+\namxs9Oz7888/A51Dz+oL+jV++vXrZ+Lq6uqYx82ePdvEeubUgAEDPMe5zKTS1cftWXdB5eXlmfj8\n+fMmPnPmjNP5koEefhD2sytR/Bba1lXK7UWHU1WXLl1MTIoSfngTBQAA4IBOFAAAgAM6UQAAAA6S\ndkxU2Ln14uJiEx86dMizr71VmMOWn5/v2T558mSgrxsyZEg8mhN3Y8eONXFtba1n3+XLlyNuzdP0\nuJZbt2559vlVH9f0GIugsrKyTGyXRbArjsdSWFhoYj22Y9CgQZ7j6uvrA51Pl5xoaWmJeZxefNzv\nM9Jju4KWsCgrKwt0XKLosWfpJlGlMsLGOCgExZsoAAAAB3SiAAAAHCRtOi9sOj1YV1eXwJa0XdBp\n0nbphmSmS1joiuD2VPmgaaF40tWa/aZ6+7HTgLHk5uY+81pByyKMGjXKs33hwgUT64WKDxw4EOh8\nNl3V3q/CfUlJiYn3798f87gePXqY+NSpU4HasHz58kDHJUqi7tNE0c/WdPveAd5EAQAAOKATBQAA\n4KBDpfNefPHFmNvnzp2L23XtmVcuMzv0OVzbmmyzDP3oBXT1ort2ikjPVHzw4IGJo1qU+VltchE0\nzZGdnW3impqaNl/HXoxYV8/WMx337NnT5nP70WlXEZGJEyea2C+dp6vxnz17NuZxetFwe0Hyjsb+\nLJM9RfbXX38luglAwvAmCgAAwAGdKAAAAAd0ogAAABx0qDFRRUVFnu3Tp0+bWI+nCVsY1W0HDhxo\n4qBTvW2ptPK9nrLfrVs3E+sp7yIizz33nIlTacyXK5fK5trzzz/v2dZjrD7//PN2ndvPW2+95dmO\nNY5HVzwXEamurg50/l69epn48OHDJtbV7juKZB8DZQtafiMZ9OnTx8S3b99OYEvQUfAmCgAAwAGd\nKAAAAAcpkc773//+59nWqTmdrmhoaPAcpytNJ7s//vjDxA8fPnQ6h2s17URrbm42sZ3O04u5RjmV\nWqcYw15UtW/fvibW6QURb9oqqLy8PBNPmTLFs+/8+fMm1vdY2ObMmePZ3rx58zOPs8sTHDt2LND5\n9c/ykSNHTJzs1cvTQTyHSoShoKDAxHqlhHin8/RQBNdnekegn+kdcXFu3kQBAAA4oBMFAADgICXS\neX6vi3UqKNXohXfDSLV0hErOyfK6V6eQw0jn6Vl39+/fN7E9u6yxsbHN5x4+fLiJ7RT20aNH23y+\noGbNmmXi69eve/adOHHimV/jep/n5OSYWFdeB2w6XS7iTSfFc8iDPRRBz7JM53Se/v+wZ57evXs3\n6uaEjjdRAAAADuhEAQAAOKATBQAA4CAlxkRFSY9d0WOWRMKfyqurSz9+/LjN1xkxYoRn+8aNG+E0\nLA3Zlb51iYMwpkLrqvY61iUIRNzG+B0/ftzE7a143hYXLlwwcWVlZaCvsdsXtNq/Xo0g6LVSSb9+\n/Uxs//wnyzjBZKaf1fbYUD0OL+xyJd27dzexXnVCxDv2sSOM/fFjj0PTY5969+5t4szMTM9xeiyl\nHq8Wxu8yvTpCRkaGZ9+jR4/aff4neBMFAADggE4UAACAA9J5lv79+5vYnrYdNj2NXleu/vXXXwN9\n/bhx4zzbO3fuDKdhSUS/Cu7atauJ7YVs9SKod+7cadd1RMKfkqzTWDqFFUaJDp1utKdZx5NLqYGh\nQ4d6tu10Ziw3b940cTwrryfKrVu3EnJd/QxK9srjfnTVfrvq/5UrV0wc9qoHOu1vpxH180q3oSOy\nS6vo9JkeKmGn8/Tnp9PW9vAKfW8GXaBbD5Gx6cr1ug0u9wdvogAAABzQiQIAAHBAOk+8r/bincLT\n9GtneyZgLHpRyyjbmij6cxk0aJCJ7dkg+rM4ffp0m68T9sxG/YpYRGT06NEmbm1tNXHQ1G1QfjO5\ndMrSTonpVIRLOjQonZbz89prr3m2f/jhh3g0J+2FkcJLhpSgTifZMz5dFqLXzxo7Ra6fSX///XfM\n6+qfNz1zr6mpqc3tSTU65aaHLNjDMHQaW89mjDc9O6+9KV7eRAEAADigEwUAAOCAThQAAICDpB0T\n5ZJnt/OtflMctXiu7O1H54CDTtscMGCAiX/88cfQ25Rs9P+hHu+jpw+LPD29ONHsEgl6XIYeRxGl\nF154wcT22KnBgweb+MyZM3FrQ9Cp/HoMmYjIpk2bTFxSUhJqm9A+9nM3EfQYP9cSGHocY3Z2tont\nafn694Ue3/T77797jtO/t+wp++mqpaXFsx10xYJkxpsoAAAAB3SiAAAAHCRtOi9oCk8v3Ola9TdR\n6Tz79W8QLlWiU4lO44p4F/jUi3jaqVq7pECi2Qtc6orFYVdD96PTEjqdN3nyZM9xhw4diqxNsehS\nI1VVVZ59ugLy2LFjo2pSIFlZWZ5tPbVdL9KcKPbPlP6cw1gYV5cACHuB3yjp0gX694/9+0E/k3SZ\nmosXL3qO02lFOyWYrjpC+s7GmygAAAAHdKIAAAAcJG06z09BQYGJXaqN2hVo9cw4nf64dOmSQ+vC\np18Z64VsE7VoaTzl5+d7tnWFdj3DTS+6a9PpCjutlihBZ19qegZi0Gq+9qw2/f3rtJOdEtu+fXub\n2xc2fW/bqRE9e9ClsrFe+Nie2amrqOuZk/asM90+vVD5Sy+95DlOpx41e0aknlGqn2P2z7VOM+k0\ntl9aWKdup06d6tmnZ4odP37cxPasNn1+vzSM/iz0uYMuuquHZNjn0z/zdrV7l58pP/pZo+8D+/9D\np/d0W4cMGeI5Tq+CoH/n6P8bEe/i6Ug9vIkCAABwQCcKAADAAZ0oAEhyQQsHA4hWxj9hJ5b/64IZ\nGfLPP/9IeXm5lJeXR3lp4D9xXyIZcV8iGaXLffmk3/IsvIkCAABwQCcKAADAQeTpvClTpkh1dXWU\nlwQAAHAyefLkp1ZReCLyThQAAEBHQDoPAADAAZ0oAAAAB3SiAAAAHCSkE1VRUSEjRoyQYcOGyaef\nfpqIJgAiIpKXlydjxoyR8ePHy4QJE0Tk3/W6ZsyYIcOHD5eZM2c+taYYELbFixdLVlaWFBUVmX/z\nuw/Xrl0rw4YNkxEjRkhlZWUimow08Kz7sry8XHJycmT8+PEyfvx4OXjwoNmXjvdl5J2ox48fy4cf\nfigVFRVSX18vO3bskHPnzkXdDEBE/i2iVlVVJbW1tVJTUyMiIuvWrZMZM2bIxYsXZdq0abJu3boE\ntxId3aJFi6SiosLzb7Huw/r6etm1a5fU19dLRUWFLF++3LMoLhCWZ92XGRkZsmLFCqmtrZXa2lqZ\nPXu2iKTvfRl5J6qmpkYKCgokLy9PunTpIu+++67s27cv6mYAhj1Bdf/+/bJw4UIREVm4cKF89913\niWgW0sikSZOkT58+nn+LdR/u27dPysrKpEuXLpKXlycFBQXmDwAgTM+6L0WefmaKpO99GXknqqmp\nSXJzc812Tk6ONDU1Rd0MQET+/atq+vTpUlxcLJs3bxYRkZaWFsnKyhIRkaysLGlpaUlkE5GmYt2H\n169fl5ycHHMcz1BEbf369TJ27FhZsmSJSTOn630ZeScqIyMj6ksCMR0+fFhqa2vl4MGD8tVXX8lP\nP/3k2Z+RkcE9i4T7r/uQexRRWbZsmTQ2NkpdXZ1kZ2fLypUrYx6bDvdl5J2ogQMHytWrV8321atX\nPb1XIErZ2dkiItK/f3+ZO3eu1NTUSFZWlty4cUNERJqbmyUzMzORTUSainUf2s/Qa9euycCBAxPS\nRqSfzMxM06lfunSpSdml630ZeSequLhYGhoa5PLly/Lw4UPZtWuXlJaWRt0MQO7duyd37twREZG7\nd+9KZWWlFBUVSWlpqWzbtk1ERLZt2yZz5sxJZDORpmLdh6WlpbJz5055+PChNDY2SkNDg5lZCsRb\nc3Oziffu3Wtm7qXrfdk58gt27ixffvmlzJo1Sx4/fixLliyRkSNHRt0MQFpaWmTu3LkiIvLo0SN5\n7733ZObMmVJcXCzz58+XrVu3Sl5ennz77bcJbik6urKyMqmurpbW1lbJzc2VNWvWyEcfffTM+7Cw\nsFDmz58vhYWF0rlzZ9mwYUNapE0QPfu+XL16tVRVVUldXZ1kZGRIfn6+bNy4UUTS975k7TwAAAAH\nVCwHAABwQCcKAADAAZ0oAAAAB3SiAAAAHNCJAgAAcEAnCgAAwAGdKAAAAAf/BxEIRfi3GDFsAAAA\nAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The third layer output, `conv3` (rectified, all 384 channels)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['conv3'].data[4]\n", + "vis_square(feat, padval=0.5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAJOCAYAAAB8y+mTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuwnmV1///dBrRqa1urBJogiSQkBJJQDYgHFFpCY0et\n+gKVWrWVjtPqqFhHGR11V21/odapWqpt1Y7UOh7qjMd2LIIcgzGcAiThEA5StYBaa2s9FIr8X/j/\n7DvPN3vt67oPz/NsYH3e7Nl7P899X+f7Xt9rrXXN3HffffcpSZIkSZIkac1Dpl2AJEmSJEmS+yv5\nIpUkSZIkSdKRfJFKkiRJkiTpSL5IJUmSJEmSdCRfpJIkSZIkSTqSL1JJkiRJkiQdGcuL1Je+9CWt\nXbtWq1ev1llnnTWOWyRJkiRJkkydmaHzSN17771as2aNzjvvPC1btkzHHnusPv7xj+vII48c8jZJ\nkiRJkiRTZ3BFaseOHVq1apVWrFihAw88UC984Qv1uc99bujbJEmSJEmSTJ3BX6S+9a1v6dBDD537\nffny5frWt7419G2SJEmSJEmmzgFDX3BmZmaQzyRJkiRJkiwGDjvsMH3961+f93+Dv0gtW7ZM3/jG\nN+Z+/8Y3vqHly5cPfZsqZmdnR352ZcmSJZKkhz3sYZKkH/3oR2O9X4kNGzZIkp7//OdP5H4wdP0e\n8pCfCaK//Mu/LEn6j//4D0nSox71KEnS6173unnvd/DBB0uSDjzwQEk/88uTpF/4hV+QJK1cuVKS\n9PCHP1ySdP7550uS/vu//3vecqCgvvzlLx+538///M9Lkn7lV35FkoQ74b//+7+P/M79Ix796EdL\nkv73f/9X0s/miCSddtppkqSPfOQjkqT/+7//kyR985vfHPn+z/3cz0mSfvKTnyx4nxKTGp/TvN/2\n7dsl/SzgRZJWrFghqRlrzN1f/dVfHfn9F3/xF0euddddd839vOeee+bm3FVXXTV3L0l6+9vfLkn6\n6U9/Om+ZHvnIR0qSfvjDHy5Ydsp5zz33SNKciv+YxzxGkvSqV71KkvSP//iPI/W56aabFrxuV6Y9\nVjC2WQuY83v37tUBBxww197MmRIHHXSQpGYOnnHGGSP3GzdDtydrCj+BteWkk04a9H4l+tbvl37p\nlyQ18/Huu+8e5H7Mk2h+1vKMZzxDF110UXyfXlefh02bNmnv3r36+te/rrvvvluf/OQn9ZznPGfo\n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\nhzLCU+4DDzwgqYswqQqLd4enZKI3oh7e75bWkXJ4SuZplgrp/KylNbolKqh930y05t4pXzPNo07O\nj+jOa6Dwebxe/nQ/6ffh+EIi5Yg1Ef26lo6LKCryuEXKU22GDOoB7TStaKgV2oV2xydCuz7++OPz\nfg/lkuuGaoIiVVvNOcqkYVyiQkRKlH++hqE+wrHrJ6E40Jf4iTrombzAWI8UK9Ra5kTGAj8jP6n3\n4b5qNMdbq2T5mOZ8XKWPoA8NraE3ljeLvohChhKIF64vKHxjz8HcC1x5Au4B3Iu51/bNDI+8iCX1\nnuOjf/D5KGt22nNvKlJJkiRJkiSNTE2R2m233XY8bfPUzlMoCgmKDVEO3guiQqIVokyUqdr33Dxl\nD60+3ApP67XRFBXWPYMGz0qkINHORBlex4fzv+2222ZtB/BhHH300VXHWQIlkuiNaMVXqIe+CiG0\nRpm1K8iX+llrhkvt+/6hnizan35F9Me4o3/iO3n5y18uqfMu/fCHP5TUKVrw05/+tGr/7udg/DOO\nS7WE6Pc7ewZRWia1SvxQPyTQx11tc+WipI5GihXnz37YTml7XAPou3ZdbcXvCB+zpYrUvA2oXV81\nYqy6X9TeYyzRHn0VKbJLI3yOYC282ixUzuORRx6Z9Xv6S7SdvpX/mSN9jirNWezH23voygOTIhWp\nJEmSJEmSRqamSD3xxBO67777JEm33nqrpLkraW/ZskVSF5kSLbkig8LC028UyZeiCfBK2iVYB6kv\nfSuXo9R5tEA1WpQPoiEUPNplvno7O+OeIaL7sRU7rucpp5wiqVPkrrnmmlH30woKjasF7v8o+UC4\nHiiCJa8P7LvvvpK66xZ58Ijq8LZFHrgIvGiPPvqopLl+FaJiKv7Tz1EuOS48bEMh2qyNOhmfO49T\nvEOTUqRcLW0l8nHWerCWL18uqVNw8JfSJ1B9OV6ulc+xjisnrWonykyp/pTX4HNqvVb0gSOPPFKS\ndPfdd0uq987UqtfMtaig7iNEjcUn+LOf/UxSuf6YU1rTzs8L1Z7+X7t9Z6zK9ajdpXtHSXHkfCL/\n7FIhFakkSZIkSZJGpqZIPf/5z98RNe2zzz6SuuiHjBUiYl+RG2WGissoGqz5FVVWrn3f37eKbV/f\nBE/ZnD/7Q2ki2vCsKKI8V6SI+twrxvdoT3461M0i64rzYXsepb7mNa+RJN15552S4srXeGyiaI/o\nzav/lpQzoH/QTn3XU4qiZs8C4/zJHiUqIhqlX6Fk8nn3vq1du1ZSuUoxf6cGDccXKTVEx/QnosDS\nmnaldbfoB4y7e++9V9JclSJalwxQytgP/de/F0WxKKP0C5RTrt/O7TyWhymCVRVaiSqu9/XTfeYz\nn5EU9wlUxr6wruJrX/taSd1ciiJAn+LaMecy1jkPrg1r03m74enxLCz6sGci0y6RwsU9gjGDIrRp\n0yZJc+tFQd91Q5mbmRt9lQzaheOtvZeceuqpkjo/IhXKwetJASrxfOrsNKl9i1Gas5kran2XY+Nr\nT0akIpUkSZIkSdLIsif7pmWMsdNlyzQzM7PYu02SJEmSJOnNzMxM+FYrFakkSZIkSZJGpuaRGkOR\nIhMCLxDvl3nfffbZZ0uSPvnJT0rq3jPj2eB9Mj6DUuYGWWZkwvD9m266SVJ3Toultu0q+8MPgW+B\nNfN430+WHL4I2vUf/uEfJEl33XWXpC4DBl8C2X/UkMErQwaLv3/HR4EPA68P2aGc17e+9S1Jc30K\n7ocA/CN496L3+WTv/fEf/7Gkbp2wvu3Jdv70T/9UUtdvb7nlFklzfRxkgjEeJtVffF007y+l7EX8\nOF7HiiiQcUd/oZ/Qr175ylcWz436O8cee6wkaeXKlZK6rLYrrrhi1j4j/Nw4Vjw39BXPHow8TVFG\nbrS/SeP76+slat0fHi2yEPFg4cekffBVrlmzRlLX3vgXGfv4N/FsMXbxeY7VnqWM8Glfvwj6HXMo\nmd74Fa+//npJ5Ww+3x/ZmMxNjOnIw7jXXntJ6vyleOrcf/u2t71NUudXZX/ud+X4yW5tXYsRSu2Y\nilSSJEmSJEkjU1OkxoCnTBQpIm8iXyAK4adnM9VWQ6ZeDopDFD3ytIxiMrTy9KQrr0+6GjSKD9Es\nagBZYNGad0B0QjRD1Aq1UQbXvZTNFmU3RpXM6YdRlWngelI/DUWqL34c9K/Nmzc3bW8sSvWfSpXg\nURT5SRRLZhLjirX+UClQGGtAreMacEyM7VbLKNeen666cS4oLF7rq7Yi9bSYlBLloCi8/e1vl9T1\nqRtuuGHW53xdVPoG7Y8ScdJJJ0nqrjN9ZmyiDNRSnaxpQ78jAxnV/9BDD5XU3Uv5fS3MoVwXVPtI\nkWL/XpcLBZls0IsvvliS9J73vGfW5zybk3smyuSk76GpSCVJkiRJkjSySytS+Bq8mmtJcXBqlZja\nNd+IRoiOWqPNST9F8378sMMOk9TVfJlU9ViqKhPt1LYL17e26i4KG+d1xx139Npf3xXvUTn4Ga2B\nR32ooeoD/WLjxo2S5iqwS5W+lfxRplBvUCeIPumn9KcaiGwZm6jGkW+LKvOlsc8c4nMJfZcaYygU\ntbW+hoKah4cIdRhQ9/oqDkBfx1uDctV6XhwnY5g6UCW8ThVjDf8c7d26/mYtvv7jUq3EHcEYZfWC\noe2Fr7HveqPAnIoyVbsuLaBEts65tTUNU5FKkiRJkiRpZJdUpHjq52kVZYWsrNKq8UCmQlSZuxWv\nuF1a32osIiUkwt+PT8oj5Vx00UVN34tUA8+Yod2JZvv6XvoqUqXjQzEaW33Aqzetqr99oV37RpWM\nc9rX2xlv5N577129LZQT+gZeDkD9bL1m+LaYk4js2R+Zh2P3CbKevK1dUcOrRdYbc2BfPyfnwzUg\nc7MVtsec6ZmztaAE3njjjZK6uTFa9WIsvMJ461wybcZS7jyDOMIzfp3ae7qDJ6vvnAM8I5RIRSpJ\nkiRJkqSRXVKRIuoiauFpF6WqltpooVQjxMF/4cc5aVqzA1vXD8MXQdQxKb8HfgOi+FKWX+2K7xG1\nUSufi6Id+gG+mEixerqw5557Suqiyyj6xJdApg+KGz4J1AbGfZ/19RjzqLF4OFCzUC7IKI0yOEtw\njHhOtm3bJqn/GO2roOAJwvPET7bDcaFA0Q6tcwdzIufZ1wfn4H+j3ekj9AmON/JLUutv9erVkroa\ndHiVxl7Iw/25nt04aU/WWDC2aGdfU7EVvGn4hrl+7lkq3YtbM8t9bmack80XedhQkmtJRSpJkiRJ\nkqSRXUKR4mmV6qd4kFzpiVa+jlZWLykxRx555KzvX3nllfN+DsUKeNrGu/VUhcwYKszXKlIohyhM\npYworjfRBFGr+07GorZmTum9OypAbbZnKyg3Sz1DiKjS1QTGj/8kivUq4fQzFL8+48xrWXEsqGSo\nmbVKFNcYZYuxT20zfo/iw5yC94I+fOmll87aLnMeqnYJ2pYxxXHhXfIaXeD1d8YCtZo5ohbURVRI\n97CVapHhteE60M5cz9o5Kspm3H///SV1cxjnV1LJlzr0e9pt6JyKskv/5h7KGHZFKrp3Q0mJKtVc\npB9wnqW5kutf6z9NRSpJkiRJkqSRXUKRIqojquj7Hp732H1rWRx44IGSuvW4HnzwQUlzoxSUMuDp\nedJKBEx6HawS+ElqIfqoVRKIIqgnNGnfgSuMrUy6DhiqxVJXogBfgvdTFCf8MCicL3vZyyR149ZV\nIuaF1oycnffBMXnF8RL0RdRSxjy/975KbTPUcM6V7DLOkUzPkjKAWosPj7FCJu60PDp4tfoqUnh1\nUNgYQ7QXygbn6x4v5haveM4cWao0zt/pkw7Hw89dZezVMtachSLFXIo/1P2MKHsow+yfewPbKR1X\n6e99M/MZdyWlDFKRSpIkSZIkaWSXUKRWrVolqb1Kad9ssnXr1kmSTjvtNEldlMf6TShSkRLE/2uf\nZodC9NRXkeqbjTg2tdEqPo6+akErvm4aUf0Q5WMS7CoZQeBZi6gpHqWiXFFDKFKSaxQpFI4ok5NV\n4/uqqsDYqVWfv/a1r0nq5obvfOc7836OuQ7vRwSRON4oxgjeqGnRmgmMmo/XyZUG5maUowsuuGDW\n3+ljZJ+hcjJXkzkaQT/x60kWV+26nk93GJMoS5GHDO8SWa2AwjitexNzUC2pSCVJkiRJkjSySyhS\nRGe8j+5TN0bqopvaTJzXv/71kqTjjz9ekvTlL39Z0twVyHna9u1G9XEieI+P0tX3KTyKyEuK07Se\n9vuCL6IvKEp9PXW8r2+tiYNCWMow2lWgH6EC9B1/wLhAZWFc+vY2b94sqRyVcp0W8rSVaoqxvmTt\nOo6LBRFxKTLmuFFyXDFh7KDEoPJN+nxbK4gzx6M2Asoi6mSkANIX8KyhNNZWXHcFjIzY1jpbT1e4\n/pESxRzAWwnvj9OeQ/tmYaYilSRJkiRJ0sguoUhRy6F1BWci6b61YYhmvvCFL8z7OaIV9/rUZj7w\n3p4Ml8hXgJek1jcBu4riNClaFaXWyuj0m0MPPVTSXAVzV4V+NFZ0iJcvqtFS6/1ypboF5pSDDjpI\nUqeGTYpa32Rp7TEoeXfwgNE3J61EkUk6tIq/z6G0x7/+679KivsOHjHmVuZ8FKW+flmyB3c1P2JE\nyTM4FnifIl8r1zfy9Y69SgZvj2qfIfr6jVORSpIkSZIkaWSXUKRalSjo+3R7+eWXS+qqDZfWynMf\nQ63jH6Xs4YcfnvfveHyosvrAAw9Imnw00Ree9nmKR8HomxUYrafkK39Ha9ztsccekoZn1hD9utJI\nJlB0fbmefdeDcojm8INMuh5VLUP7Xan98EXQ71FvXA2gajY+mlr/y3zw3bVr10qS9tlnH0nSJZdc\n0rzNnfG6SLWKFEpSSZEqqeyLtc4nRPWzamEMP/roo7N+zxyOokb9L9qHOYHf0zfwhpXWZaReEWo/\ncxd9njmOtwOMTea2yENVu57rYrFY946oDpfDnFDqx1wXxn5fVqxYIal769Pq84xIRSpJkiRJkqSR\nXUKRGkptRXPeq1PTolQNte8K0U6pjhIen5LCsVj1qiJQDI844ghJ0u233y4pVqKoeUNF+FtuuUVS\nfJ4e3aDQEfUSLbIuGdEl0ZdXoi/BdjwqLimN1LtCUWkFZY/oq6Qq/NVf/ZUk6Y477pA0eZ9PKyh2\nqDNetZj2pd/4OnV8D9UBRZLft0AkfPPNN0sapm7NB32wrxKAF6iEr8lH36tdIwwiNTgiUoWH4tl6\nDn1k9erVs/aPF4fzR4micjaV3kseMeYa5mb2F60DCX0ztZ/qUJkfBcjbh/5TUi4POOAASd11aPW9\nehbe2DUUU5FKkiRJkiRp5GmhSNWCErBly5ZZv4/qEd16663zboe6UDztllacZr0toiwUJrIGiTqj\n4yhlJfL0T02ZyDPmldpro1SOqzbTgfZ4+ctfLqk7v5tuumnez7tyx/ttV4hcQXrxi18sqVPK8JiV\nzgcfhMN1LVVt5r3/kUceKam7jrQPf4/g/GqVVDKkarNSI0oepqHUqiSRJ4zfo2A6xx13XNuBqVP9\nFis7i4gdRaU1SwkvFQoJfRtlBwXGFQCPxFH5auvnsB2P7OlDzEl+zfk7YwFVEqhzVYIx5f5Z/JH8\nZMy6zxLwZDHWUJU5LtRzFBXmBtoTpQsvHHM551fKXvTr9FSBOl/RWKbfl+Ya5uxS1h0Z9LS7b5fM\nePoD/eOee+5ZcP+1pCKVJEmSJEnSyLInp1BsaNmyZZqZmVns3SZJkiRJkvRmZmYm9FSlIpUkSZIk\nSdLI1DxSOytSeGTwCPGemvfaeHfIkuN9tldaplYE77dZM48V13kv2tcLcsghh0jq3nfjkWE/ZBVx\nTiW1De8OGUJsr2+9IPbzqU99SlLnPWrNbKjdH/W1OH58EHh78G1QmwevFe1NVh/XFT8FcP3f/va3\nz9rvpKm9fs6qVaskSYcffrikzmdy3XXXSZrrHTv55JMldd6txT6/D3zgA5K6fou/pm9Ffj8v+gPj\n8v3vf78k6atf/aqkrp/jD+L7tV4wh+N+5StfKUnaf//9w7bks+77a63RxX6uuuoqSV2f7gveDzwc\njzzyiKTOc8Tcs2HDhlnHe9ttt0mSfvWrX0nq+hLfw49J29LWZLPRDnhz8Pa8+tWvliRddNFFs85z\n0rCfj370o5I63yVzGpm69Fk8NmTl4THDQ4N3C28T2+Hz73rXu2btF5i7aK+xsvHYz7XXXiup83hx\nXJ79yHFyj1m5cqWkbk7Fo3b33XdL6q47mbuluQxPEe3UWomeOe+UU05ZcH8luN6MB/fd+hzROle3\nUtpPKlJJkiRJkiSNLImsPZ6uo/o3PJV65gVKFj95qvfK1qwEjlLTdx0dojYc/2SRldYTiogySIbi\nShTnPbS6MduB+++/X1J3/mSw7LfffpK6KMmvwyte8QpJXRSEktW35s1SgyxPfrJuW9TPUDFQERYb\nr8LsqkwpWzM6L89sAleOUYdKUfC6deskdRlA0ZqWZE7tv//+4bb47NhV4vuuEu/Q1vx0D4a30ac/\n/WlJc7MLaaMSKCHOxRdfLKm7Vp5Nt1gwh/GTWmr0Oa8JR3vVzqme9YWazBy/Zs0aSV0NwSiTuBYU\nReBeUcoc5u8oVvR9sgO556FI9lXOUCy5p6ES91WmSjXcarMS6W/cw+nfQxVBFDwULfbjGd5DSUUq\nSZIkSZKkkSWhSLXC0/6dd94pqVwNmEi4b5VhvB28P/dqutOGarz+9D5U6UFpisAT5e/zI374wx8u\n+HfOY+zq0g7XkWhu7MTVpVpZHPAhoEzhGeR64kcpRW1EsUTJjBMfX0StqAyuUEVs375dkrTvvvtK\nmqtInXrqqZLiulKLAW2H7xHFo3YtL9rElSLOmTpGQC24sdcKAxSExaqn5XhdKrwyzLn482gH72v0\nRf89n+f7wJzp1fRbPUMOvl+orRzP8dMetAPHhcJD/2HudL9pCWrP1a4JyFjmekQqMP2W9uS8o3pp\njBuun99L3I9cC+Nq9913l9RVSmd/pZqAtaQilSRJkiRJ0sgurUiRoVCCSuE8ReP5qa0mvHz5ckn1\nPoTFJooeh1bLJfqIPFb4FlAYXMEgCqzNymI7RCWTgswlor7WrLFdFaJEojzGB/0oUqLIiuXvrO9G\nFEx054oT+yHqjSr8O+6xI2uXccx+idqHwDHSZ2urxKNIcQz4B2uJ1LlXvepV824vquw8FniNXAlb\nLHz1Bl+rsJRlxvVgO5wPYxy1FeiT3At+9KMfSRq+SgBvS7jXMBf3VfpQysjmdKXN+1/fOb9WHQYU\ntqOPPnrW/l3V5y0F9whU8BLR26K+ShTg12Suwvs2lhIFqUglSZIkSZI0sqQUKbwxfZ36vB+Onq6J\nYIm8F8rumQ+y0Pq+f14seFonuvKoBwWC9iXaizKYiPxrFTva3zOYIqWH6P/QQw+VNFdZrPV/tK5T\n1Xctu6caRIm1XkG8cu5BJAouZf4w/rjuRKuMR+Dv9CeiXFemYOPGjZLGqfXDGOqrRNAH+2YCl8BP\niC+MdRtbI/NaGMPTUqS49vhZmdPoM9HcgOLBdcD/CGzH5wrmSuYCnxNavTms4effK/lOIxgLpQxs\n+uNQojHKXE1/JIsSjyB4rblJK6kRKJClygBDSUUqSZIkSZKkkSWhSFFllaf3vhFm6T0vCgsrSfeN\nOnkP7JkInkU0LYiiXIkiCqMqbsm/wft8VoLHL1CKJvrW0uE6sx+8WDfccMOs4y5B1MPP2n4zreho\nKLzn92i7L32zVr3qskf/VNn26BVQAdjO+vXrJXXXm4r37mcoeRLHqjo9BNqydpWEWvCRUeXf9zcp\nfOyhDDHnRdd4LJgb6FvMadSsc0UGBYu/R+olqqlnzZUyhMnwJYsS/yZ9Prr3UI/KFbDW+lxUnmeu\nI6MVD1jr2xxAQUOJKik3rG6BCu2KFPdYjmcspawvvFXx+mNjk4pUkiRJkiRJI0tCkWqtOF4LT9lE\nOyhTpad4ak8Q9bCuEN6Qr3zlKxM53r541MPTP0pcFKVF20G5alVuomw9KlWjRPzgBz+Q1EV94NFN\nhCsltQxVdBYbosVJVYBn7T8qs5eiN6/VgycqWuMRVQFPHueB5xA1B/8LCrVD9Mvn6Z+tvpP5iHyG\nEaixQ9Vpzo3VASL1OKoZNxaeAckcObSCey2RB8rHLHMcHhiOzxU7Mk1RUV3hK0GGLz9vvvlmSbES\nxZqJvMVg7qUdWzOSOW6245Xc+/YHrjNj8JhjjpHUKV0lGMtR9qTPVVEFdM6HMexvi1o9ajBpJQpS\nkUqSJEmSJGlkqooUT8O89y1lUZXWAIvw99JEE0QzKDGuiPEUTJRDDYooYp42eLhYP4r3+J6dx1pw\nDz30kKSu5gpKUkn58Gw59ktUGF1HlCjgOrrvoVYxQrkqRcvebyLlZKmBOkKUNlYFdq432atc99ro\nzTOc8DZF7erRMtfLrxvjbevWrZLmesJciQKOfwz61vkZa3UDatWhsnLNXSGirSelSNE3oK+CMxZ4\ns5i7WU8RqGPEHISfjrmJ8yi1V6mmGYpJNFc5rJ+JN4fvsZ3aMUyf9v7A25WIWnWW46B9GIu1ihTf\nr1XY+Dz3evp1qR9POkt1LFKRSpIkSZIkaWSqihQRJk/bKCnUq3HlyZ/ua6OyyHvF+/jo7/40TEXn\noVVvJwVZcJyPK1G8tyda8mq7tXWj+B5RH76OSBmK6j3xf7+e7nNw3wpKJlHbYvk3FhvaFe/SWBDt\nb9u2TVK3HhXXk6g2qjOGpw21opRJhoLLdapVBFGiyLji+Iia6Q/TyggaE7w1ZMqC13OqrRDdiity\n01pzD39nSfHzLELmFBQ+V3BcEUKtftGLXiSp87rxe5QTfLUOffuwww6T1M2hqP2oqlCbtYdnDsXo\n9ttvl1S+99RmPANjke37PZVMbsYub3NcJXZ8PU/akfOP5pYSS3WspyKVJEmSJEnSyFQVKY928FyU\nPFB9n0qj9/yl/fD+nPfURB0e1fj6TdOCaMGz9MhcITrw9/ysiM15ekZIRKlCOlEV1yvy4HgU5dl4\nRGVcR/ZLNEr0GmXS9PXULRUmtbajZxQBUXmU5Ymnimj/sssuk1Su40bUTjTaN5OGdbFQytge6gHn\nMw288narp4gx5AqMZzv1XRuN+kr4O0ssFU9KtFoBcwlqapRZ/PDDD0vq7ikoIu4hwmfJ/uhTzBls\nJ1qbjfblnsCcxL3D/bS1ihTXAU8RlBQ699Rxvj6nMtZ5exG93WFtPbxQ+BchUqN5a8D14V4/dF3M\nqF94JvFik4pUkiRJkiRJI0uijhSUVmQ+44wzJEnf//73e2239JRK1VqiPSJmf4rHs+KZHigv04Kn\ncX56lEatjyibjvfdrTU3oigDT8tRRx0lqYtmeN/OcZWqJbvi5dl3+EiIehardkgJlBL3EdRGZa11\nskrg20B5InosKVFkSt1yyy0Lbt+jaM6j1suGh8uvO9vxmk2l6tQLQR9ljuibGUlEPzSj8tprr533\n966g9I24ozo/Eai/04Zr71lzKBKMca/1xz0ERcfVdVeIXN12onsS+6MCOD+5XihPJ5100qzv1fp6\n6eOtldAhmkNq655RwTwCD1W0X9qDuXmszGNnWkoUpCKVJEmSJEnSyJJSpEp885vfbPpelCWEkkQE\nXMqIeOSRRyTNrXN0zz33SJJe9apXNR3fUPANEL2gTBG9RUoUyshQBefuu++e9/e8z0fxI9pF2bjy\nyisldVmaEfhQiG5Qeqj4jaoQVUWOaH2vjierlOVI1OqKVG1URr0vzmusng7CFAAAIABJREFUmkVk\nvXnNnQgykFBsS3XGPAuW/3t0vM8++8z6P8dDVqDXHSOzzfc/pP8yN7TWqKNPRnMMcwt9ftOmTZLm\nthFZTiUPVN+q/H2z7sasEj+E2rULOV7mFhSoyOvl7YEKW9uuzJnRdaKP04fps8wVZBqX5g48TLQD\nyhtzAuo+ftchquwQDj300Hl/z5xKe49V96yUtco9oXY1j7FIRSpJkiRJkqSRpRF+TJgo4vb6SaWo\nhOiypKA4KChEoZECgqJEdFyboeNP6fy/VKsDv0DJR1GqpluKeq+++upZ/3eloYRHMyg0rHvVSut7\n9dp6W7WZUhFEr2QOjQV+EKJ2vEv0O3wdeO1++MMfSiorUccff7ykucpZpC6g8NaCqkP7Mz76+oDm\nozWzk0rW+Ca55hwbYxqFAU8JtcFo87Vr10rqrjVt7VlKF1xwgaROheNaosygsnNtyfzkmqACMqaZ\nI/iJD/X666+XNLeGFz9RQphrmBtrM37B/XT49/jJ8aNKk2XnXieyJVGEyKRGoWBu90rcHDeKos81\ntCuqOnM51zlSPlCQaCd8iChn0T2E80bJ8oruniVI/4jWEowUGlR1xuyGDRtmfe7cc8+d9/hoDzLB\n3R+MYhfNra1vAVDcSooUx0c/Lb2NYtwO9W6lIpUkSZIkSdLIsicnZaNfaKfLlmlmZmaxd5skSZIk\nSdKbmZmZULlKRSpJkiRJkqSRqXmkFkORYh9UYKbWRwTvV3lvTH2im266SVKcNcXn+RmdG54XfBO8\n3+5brRjYz2Kpe7X7Y80/3mfjE6hdY63v/sZiWvv7xCc+ISn2tPlagw4ZQmSdenYc2YNnn332rP1G\n4HMYKlZH7Vk6H3wonBfZfHgM8f/4eJyZmRn92tF2Pkajc8MLwxh3Px0eF8Y+3h1v62OPPVZS5+F4\n/etfP+/+xoY576//+q/n3R99Aw8K1wTPyQknnCCp827hj/RrzTU++eSTJUkrV66UJF144YWSOg8R\n7UWfoa4THh+o9S2uW7dOknTcccdJks4//3xJ9XWVWvGxzhjlvMZefYH9fehDH5LUXbeoMvhY+/vu\nd78rqbsefT1zjDc8fFFG7rTm6ohUpJIkSZIkSRp5WmTtlSpnA1ECVYb/8i//UlIXDX784x+f9Xky\nEG688UZJnSLlEK2RieGZBTy1P/roo1XHORZk5JQqyveF8+mrQC01UEKI4sjwQT0YK4osZVeWsiJL\n67v1XRG+rxJFJhoqQmm9ttL5kOVHBhW1asj0WcwaMSW1mLZFOfGxRFYafYnt0QZUjWdOYEzyf9Tw\nxaJUi425DIWDn6jQgPqOwsWcQDYdfZa3BChSns3G5319UJQL1j9l7b3orQN9lKw/WOw5as8995TU\nXV/6et9M8AiyC4H+t1jrjfrYR1ml1mJprmN8tL6lGZtXv/rVVZ9LRSpJkiRJkqSRXVKRwjtRu9J6\nq/fkkksukSS97nWvkyQdfPDBkrro4e1vf7sk6Qc/+MGC+2eNPt7r33///ZLmVhwn+lqsteJQxN74\nxjdKkm677TZJc6O/vuzqShS4n4D/l2qg4A2jv5TWpotWaB8LVIGxIbonqi4pUX1BGcMnNIYSRYSO\ntwdPU2lVgwjmDu8r1IeiblA0plFW3vCGN0jq6hN9+tOfbjqeoUR9m+PkvFDOUJ6YE722Gyr9Xnvt\nJalT5lCoSkrMnXfeOe/vqbNFDTGvFA/sj+O+7rrrJHUKFX2sVHdoLHyMcy/DK0f7+/lQR6lUIZzr\nBJy/r7KAh496XPRjxkPr2xHmALxveO3e9a53SSrPhSW4jq34W4YStXPygorUE088oXXr1mn//ffX\nqlWr9PnPf17Sb+XfE088UStWrNBJJ50069XZRz/6US1fvlz77rvvnEKMSZIkSZIkTyUWVKSe9axn\n6TOf+YwOOugg/frXv9batWt14okn6oILLtCJJ56o9773vfrYxz6m8847T+edd562bt2qSy65RFu3\nbtXPf/5zrV+/Xo8++ujgFaydWiUKomiz5NVAMfrqV78qqfM4kXHCGnOlCtYoX3wPiDqINtxPATw9\nU6V2rHWLUJ7waeBzGKpIPd2hIngpSxTw2k1KkaqtII5yRXRcOh76fa2niqiY/l6bKdU382c+Vq1a\nJalT//Ay1WZ7lWAuYazjhSkdOwoEx0HV/6Wm6nLN8NpwfChGVMcH+jRKHHMY7U6fwXfYF9qZnyhM\nHB99k7ntwQcflNR5uoCxuljt7WPF1w/l/2SkovCU5nyUT1ekaA+/11FpH0URZQ/1txWOl+vPPatU\nkbyWvl4vlEb6b9+1Kt1TF7HgE84LX/jCHYskPuc5z9F+++2nn//85/re976nN73pTZKkN73pTTvK\nC2zcuFFnnnmmnvWsZ2mPPfbQ3nvvHUqzSZIkSZIkuzrVHqmf/OQnuu+++3T44Yfrl7/85Y7sjRe8\n4AU7nmZ/8Ytf7Fh7Svqt52eMaHIoUWTtfokS7tmI6ko59913n6Qu2kDpIsrgvTR/j97f8jQeRdGt\n6xht3Lix1+f7QtTjnrBdjahdqXni2aGlDBWYVG2XvnAetYpv3+w+1IDa6J/jGUOBRbHoqxb2BSWK\nCDzKGMbrce+99876OTZRTbC+fkwieuZS5j5XohzWiuM43EfXd05AwaJ9OQ/mUPaHNwtFirlz+/bt\ns7bXut5mK9xzaA+y0xhzzOGtfkPuIYAS5fdA7ssoNuyvNsM9gnvpt7/97VnbHysj3ddYLIHS1/ct\nFqBIlea6qgepX//61zr99NP1uc99bseAgmXLls2RS/3vSZIkSZIkuxK8ah/8IPW///u/Ov300/XG\nN75Rr3nNayT9VoX6j//4D73whS/Uv//7v+94Snzxi188q47Kz372s+p3jPPB0znvwYkm+xJl59VG\nxkQ9eIhKniiH2iyY7/2ikLlReuhkZfDoPTZetLEqUw9l0t6fpcLQKG6pKFKRn2IsapUl1CP689D2\nlbrMWsYQ8H/8YVu2bGnaPpEvmbm+Hba/du1aSZ23aNL1fTg/j8hRCmpBUfDVGSJc6eENhitYKDS1\n0M74XlGYXGFEMaN+EYqLjzXOpzVrsy8oRniZmKO5F/EzqqgfwT3Y59rSWOY61qrnJVCk6G+f/exn\nq76H0ujHQX0xfMN9r9NQbxaK5h/8wR9o06ZN4ecWHA1PPvmk3va2t2nlypU70hcl6bTTTtPXv/51\nSdLXv/71HQ9Yp512mi6++GL95je/0fbt27Vt27YdBdOSJEmSJEmeaiyoSN1yyy36xje+oQMOOEBr\n1qyR9NvyBu973/t0xhln6Ktf/ar22GMPffOb35T026fHM844QytXrtQzn/lMffGLX2x6tYeCVFu3\np1QPiqddamiArxcVgSeJqLJVYXGFiIwG3leX/AZkDW7dunXev3MeKGet1XLxbwyNlrlu/t7eISri\nOo2VlZgsDGox0WOt529SYBvwTKKIhaJ2r81FX0RNJsuJCLeUzRP5Dxkru+++u6QuouYnfZtactRZ\nwhuEUlM611aouO6KFF6ivjAnc97MYcytKEbU/EIRi+Zmt4qUINOTPoKaT3uiZtL+nhnK2wVgDPC2\no9Yv69T6U+lnXI/orUHp7Qv3rvXr10vq7iE+Frg3Rvcs+t1YXrGSwkh/8PEWKWJkF7Ld2jmKftE6\np9GPmS/YXsSCd7ijjz46NL2xjIpzzjnn6JxzzikeaJIkSZIkya7Okqxs3tejUVKkyOggisJzURt9\nsN2+NSgiVqxYIamLYkoZBaVsPmfouk1j+zZK26utleKgYBGd+TphXHeiVxSMVh9MBNtlnSt8gpNS\nGSKI2lBBSu1eq/hOGlQCjhu/S2ke8HprO1NSjekrtYpQ1EZEzMxB7tWhfhWmVWfS/jhWURgb5kIU\nIM7fswBRivw8GbuRWo0igG3kwgsvnPV3xpzXofLaeK5IkQkKvAVoVaKgdgx5O3AvwsvDcXjfd9/r\n4YcfLqkbA9xDXHEr+VTHVv+jduA6cV0ZF6xTG0F70L8izxPKJj8jHzP7Ld0DUFjx4B144IELfj7X\n2kuSJEmSJGlkSShSp5xyiiTtcMW3Vi+Nnob5e2tdGnwGQ6vf8rTM+2CemkvRM1FIlL3UWj9qVyFa\nBws1gfN2RYrP4227/fbbJ3J8XE/PwGmldl2t6Hu1NVOGVjEeCsV+ub6oF7WKdI2aQwTs/khYt26d\nJOmKK66Q1L/NiZjd6rDPPvtIiucyFBMUGe+7Y/kUh4JKiGrM8TCmWEMPz5X3fZ978fCU6myhJuO/\nBbxofC+qUxip8tu2bZv1/9a3DK2Z0VxX5mzak/7pa//Rf1HV8fx4PSq+h/cPUO4Wqx9xTyOLkJ8o\nQPQn1pbk+CPFlvNinEXJa9yjSz7jvlmitaQilSRJkiRJ0siSUKR4mvSn5qi2hMNK5FE2G98niuH/\nZJxEq8rzNL98+XJJ0jXXXLPgcZQgQ4Qoioia6CRSMojQIwWBqBZlBt8CUVlrldyxaV1hPfoeGVel\nSvCTUqKAfsrxtdY9alWiYOjK6BGnn366pK4mTzReSuMJiEpRFMlQ4vhLKw7w/RpfS6REsW/6Tmub\n+9yER4U5KUrKYUxH61rSp5aaIkVGMB4d2i9SQenTXGNfWy5ShFBeXPFBvffryhyK0hVVTB9rTT2U\nn75rNdJnqTfGPYE5g7kOLw9jztuXewHXASWIexVMqiZcBArUoYceKmnu9UWZ5Hi90jzQzxgH3Mvw\nJDr0w1KlfNbHreWnP/1p1edSkUqSJEmSJGlkSShS+APIZiMKq10HKlKigCjIozv2x1Oz1+Dg/S0K\nDyuIl97DRhCpeyRdGyVFNTH8vIj2jj32WEm/rQcmzVVuDjjgAEnd+UzaMxOdJ+3L8XkU4LXIUC4W\nqxpxCfpNKROkpLCW6m2VfBljZwn6iumR0oQagH+lpEihbqCgoi7w+1LVbFQH1ImWum601dB1Jn3s\n0Scjzwf8+Mc/XvDvKGao9dOCPoBiguLGmHWVnrFJX2ftQRQFsq9QFtzLVMqi9Gwsjg+Fp9T3xqKv\nEgXc61BuOG7g97QbipQTZWPSnnj/UGgmtdoF1xPoHyhhjAc8dShr73//+xfcLv2e48eDx1xBXTYo\nzZ2t1N5jUpFKkiRJkiRpZEkoUmTr8TQ71krRwFO/KwGsfYcXysE3QVRApsGnPvWppuMYWquklIEE\nrCRPVlQU4RNNE/1MK4sLnwjn5/h7b46bGiooWV7NeqlBP4sUqZ3XrJTi9dq8Ng4M7V8O/X+hNaak\nTlmKMqgiqLmEn4jjr61/RXsupOhSkTjy8AztK54p69cW5Ya2qV0vFC/JYq+X6XWZPCJHKbryyisl\nSQ899NCsv3Pt+Innh1UZUJRQOenzsFBtsPlAuXjkkUcW/BxzoNeRWmxoF5Qz2gdlh7cD+Doj3yT9\nwuuW7bzWrTS3f5P9V/IS1eIeLK4HyljrvZwVAHxtTM9uBVTxWmoz3b1/RqQilSRJkiRJ0siSUKSI\nKInmUJBK76Frn66JRoj0PZOg5MlgpXaigyOOOEJSFzVQ8wRQDoiuPErAm0SUxvnjwXLFAe8JtWf4\nHBxyyCGS5mYksB2icvecoQTRju94xzskSd/97nclLX5l7pLS5rjna2wlCoWMqAvljiiGjBP8B3zO\nozSUk9LxEY1yPZxIiWqFfkP/RH0gWsP7Rb/Dm+T9bMOGDZL6V9Qn2lu7dq2kzgdRimIZb2T3LaRI\nlerGcE6ta3NFKigqG1lVqNqRN4o2IAJnzFPfarEoZUij/Lh6HM3ZzDmMVa4Hypxvp9YX68dTAv+d\nKxpHHnmkpG4uHEuVR/nyDN6TTz5ZUncvYsxwvVGe6Jf0C+Ya7kGMyVtvvVVSp16T7QdU5GZOov3Z\nXnSP5brwM7ouXmmce2ntGool75bfq0866aR5PxdVMndYfQKi8cgcU6poDqlIJUmSJEmSNLLsycV+\nCa/fPoXOzMws9m6TJEmSJEl6MzMzEypnqUglSZIkSZI0MjWP1N1336277rpL0uS8OKhei6V+sR+q\nGeORwn9x2223SZrrmXKoEM26QmQzkenxwAMPzNofP/Hi+PtpfAFDq/r6/jxrri94yThur/LMfi6+\n+GJJ5do7QPYn0QMZW2Qk4cXC30K7sL9vfOMbkjq/zKTWMOzbP8nsaa1WzH4uvfRSSZ1HCV8I3jv2\nQ0YRXimuE/3TVwrwDK9pjL+vfe1rkubWEyp5Mah/RNvi9cDLgxcEzwh+wo985COzvnfMMcdI6nxe\ntd4Nh7X68EydeOKJkuK25HjxX1KnieN6+OGHJc2de6IxzH7OP/98SZ0/L/o8Y4v2oe8wt3u2Ih4f\n5rY3vvGNkqQPfvCDs467L7WrJ5T6Jv2FubTk36T/UPHcPUXs5wMf+ICk+tUm+tZ/ot+ceeaZs/br\nRB6uElQcdz/ktO610f7IHqQd+D/13S6//PJ5v4dXDY8jNRhL55WKVJIkSZIkSSNTU6T+67/+a9Gz\nwiaF16Eig4enYBSR2pXGiaY9qq6tlUE0xnGRBTZ2nahWJQpqK8SzwjzRKwqI1wYiGiWKO/jggyV1\nmTBkqBDtEmV79Epmy6SUKIeMJ65vlJ03NEoHlDba0ZVAomW/vrUV3McGBYyK9wtF5z5matf/K9Wu\nItL3uj30kVNOOUVSp8jceOONsz6HslSaA1BpTzvtNEnSJz7xCUmdIhXBNUMJ4Zr6ag1OaQx7X4w+\nT1/iJ1lpEV5/Ckp93Nf+c4aq7swdzJklxQb1lkrbqLxRllutEvXa175WUtcfvv3tb0uK66GRAc6c\nVyI6L1epHVeiStd5WqAEMw6YO0qZz8yNfbN3U5FKkiRJkiRpZGqK1CRXpY4qZE8KryFD9IlvgPex\nQ8+Z6DdSpjgO9/7we6Is/l+qGbNUQC1AYcOH4NEZ54sPhJ9e64foDS+V15bx6s6TBn/FpBJoPUqn\nHV2pWiyo5VLyvBHts5I8NXXwOURVjnemb7X1iJJ6SptS8dspKVG0CXWAWtcAZI5AycCb1NoOnFdJ\n2XKi/bmPs6QQ0C58jrmgVtlh7DNnMndEMAZrvUPM6dQJ87Xz+kKNQq4fykqkRKGE4sPl8yioffF6\nX6XVEoaOL+Y+zrdvLboS1BljrufezP5a1811UpFKkiRJkiRpZGqK1FhPgvPRt0J2X17xildI6rwi\n/lROtEXURBRFNMRTP94dr6BdUooi7w6KC3/HT0Bkz9N/X6/UtJQLIFOoNTp2xZD35StWrJj382Ov\nWVeC/dUoLDW84AUvkBRnw5Jd1zdjZyxKKwkA4+Fb3/qWpLlrZi7kf6LP83PSfj7Uz9q5B28J6id9\nmkxm+mhfyC501RFFDHUSdZo2jZQAPtd3zEW42lvyfTI31mbsOox9fpYUqQjPnmPu8Cr8pdU4akF1\n5byjbEQULLLw+q6hx9xKf0TBLHkGx4L9jK1EAYok976h80BEKlJJkiRJkiSNTE2RalGNShkbY0Hm\nAuvtEGUQTfF31l7zaJXox2u2oDxQo4L33q5E1K5M7bBfInmexonCaD+iq1p8LcFJQTTtNWc4HxS8\nUlRR236R8uT7rz3OVjifsXyDnDfRvI+1sdSFVhg3W7du7fU9j/YXysQjAnV1Fy8JbR6pcowdrknJ\nv7Zt27YF/w54WtgeysPQbDNgjHD8qJKuyqJclBQMrw02FI7HVebS5yOYk6m5h5eKteSYa/H8eN+v\nvacwp3CdWuuDRXBPYayiIKK6cp7caxgLfI7+3jcTnrpQXh8MJXdXhznCrzvnWbteb4lUpJIkSZIk\nSRqZmiLlq0bXwFM7T+UHHXSQpO6pEq9S3xXEcfLj7Afe3xI9EgV85zvfmfV3B6XCMy34PFEwioEr\nUrUekgiOl6iCDAV+T5QZZYIA7+Vbj4cokGiq5B8g6nOlh+Ml2iplxlDV2X0mriR5lA5E9RGt79lp\nR88qZXueXdjK2CrC2HD9yCwis2ZMXJmhphv/j3yIROhEsLV+QhQB+hZ9n7HNXMW1uf3222tPpRco\nCzBUvR/bK1OaS1whKnnFmFt+9KMfSZo7dlxh8TnP24fryHnzf1R8FKmxVV2UOZSuvffeW5K0fPly\nSdJNN90kae4c+v3vf19SV8eK+lwnn3xy1X45n0mMwaUA18mvV21WYi2pSCVJkiRJkjQyNUWqT/0J\nlASUI54iiTIef/zxWb+vfcokCiBC5imVrDs8HF77pFQlmajTMzqAKCDyXfjxU/eI39dGybQb++G4\na5Uo2qOvAsN+Oc/a6xG9p0aJ4jhK77OJSj3Thei1tH5VqX1qFSP3atF/XDUYq55Xq7dusbn33nsl\nlf0c+FuIJvsobbQ1GYxcM7ZBX3AFom/2ENtHyaJvoaxQBwnVPKozNRa13qdpgQLET88ILilozMWl\nDGSy2FAEUSR9rDHH4UXCo0R/cEXuLW95i6TOE8fbBcYccz5jvORHZb8oUHz+hBNOkNQpnBdddNG8\n32dOj9Y0dLiHomyV7mVPVcbOzE5FKkmSJEmSpJGpKVJ9WL16tSTpvvvuk9QpE9TYIMogSilVpiZ6\nJOLlqZwaLvgZeMrH01KrRBCVRIpHbf0esu04H6IsolsH/wdZdkRbrBtUqwKibPSNaom+8bARHeE9\n4/d9PUAcNwpk6bj4PCvMc32JLlELouuAolbySpVwZYjtTsrDtNSVKKD+WsknSXTe4kljFXfGws03\n3yypGzteOboV5hB8eZs2bZLUzRkbNmyQJH33u98dtJ9dnZUrV0rqVH78rqXaaYxVFBvmOLLVotpy\njIWSMoQywb2EPomC5f3jqquuklSuyF7qsyhx1G9CITr99NMlSUceeaQk6WMf+9iC2wFU96guF/cQ\n2rF23dekjlSkkiRJkiRJGlnSihTRxP333y9p7lM+SpRHtrx3jqA2DE/xXjMGDwfeKd6b10b8Y9UD\nQmEj2vLMICC6Oe644yR1UcnDDz8sqX9tkb7KBtE3iplXIUaZa81GI5rk/F0pQqnydscngwpBdOlZ\nc65gomShUNZeT75HBoyfL/15aFbeUwXGF9fD60qhFlBFmnFZA+qn+92YMyJFgbHDNS9dexQv91ah\nzqJ6RsrXaaedJkm64oorqva32ER1lqjHBd7OjEnGICos26PdSn5PVHXmPOYC+gzbc0UK9Zk+VqpX\nBZwniplfN/pNVKOtFrLs7r77bknSmjVrJHWVyr/+9a9L6tZpBd6mUIvtuuuum3XcpbmbOS0Zl1Sk\nkiRJkiRJGlnSipTX7ojgaZzPlTw0REsoWf6eHgUFnwVRDx4tosboPTp+CZSuvmvbga/FR/Tj3isy\nMVCEiILJZuxL3yrLRIMPPvjgvH8fukI47ejRFv0DRcmjQ6Je+gcqBVEy19UVPqLRWuhHe+21l6S4\nJgvHX/LwjQWqyFLLzEEdQG2IKpwzbrheEfNVYfZ6OygTqJNRdh7HVrvuIX0L3xdwbt/4xjcW/D4q\n61JToiDyeaL4RBmntDPn52PPM1dL++casz/GUqTuoiyi1tf6Upn7Nm/ePO/fua6tShRZnsyZ7O/w\nww+XJD322GOSpK985Svzfh8PFb7XWsbKDN7Vwa+LQjpWu6QilSRJkiRJ0siSVqR8BfcoanMFpVTZ\nnGiUzJ0om4r3/mRWoDiQlUdlZlekiIJKSlTpvFDWiP7wiLmigZdk7KfsWojKJ7VflCUUJKJR/AL4\nDByUMNqP4+T3ZGe6947+VKsSEBWTGRZFyX29ag7RPIon7eCKEx7BAw88UFL/Fenpl0TPjA/6M0op\nWaVE59Q7KymhqBEoqCVK29u50j1qoo891MtSll6tEuV4vSEqUUdwPBdffPGCn/PVFhabSJEqjXXa\nETUZTxUeo1LGJoqSrzHH2OJnpFayX9p5rHUxh9YfQqnzGoN33HGHJOn8889f8Pu8FSE7NOlH31VP\naklFKkmSJEmSpJGpKlJeedoZK4oo7T/K0HjiiSdm/SQChyiLqHZ9qlrFI8pWBBQHshtrI/1dBaJT\n95OgFPJ3fANEHQ888ICkLipdtWqVpE6RJNp3jw3Rby1cn1Y1oxaUoFJ9KxQqzqNvFE2UjyLr/Y9x\nQ7ujLtRme6KcMt6Grnu18/ptqHWuSE2qbk7rGmWR0gOo3bu6t4U+gjpKdmLpvFCcSqtV0Fd9TDAH\ns1Ydc4D7NT0LsLUiPGOCOSqqFRetdlG79uK111674N9rvWdPd4ZmXTqpSCVJkiRJkjQyVUWqb3bY\n2Nx2222S6rOoXHGIohevozRpfN0wojcUF5Q92hvPEVFhq5JS8niNBd4mojyUEqJJol48b0Snfn3I\nsiQKQaUg+qWWC+2HsofiQfv62n9DIYps3Z6vFzeUUoYT/ciVu0gpo/o3yi6gSOFnQTEkc8lVCK4v\nag7/37mmUUnVYqyMpfSUMlLxjf30pz/ttV2UFK8jtNTg2rl/EVCHGWNkRZZUVcY214kxToV08PpR\nDtmU9C2H/uBzBb67Wn9haf3UWpijDj30UEnSxo0be32P7L+lAmo11z+a43i7wFxRq9C1MpYSBalI\nJUmSJEmSNLLsyaGP0C07XbZMMzMzi73bJEmSJEmS3szMzISKYypSSZIkSZIkjUzNI7WQIsV791NP\nPVVSly2HF+fqq6+WNNej4f4H9tGqfvE+n+PhJ+9X8e7w/pf9nHfeeZKktWvXSuo8MHwebxHbwfPD\ne3qeer2yO//n7+973/tm7bdv9hPvr9ke36e9OS78DOwHb8u3v/1tSXM9Vniz8LBEayWy/yg7068f\ndY3oB1EmFpk81Jkie68kvg7tL31Zavsj443r2ephxF/yzne+c8H9OYwvKvVTc4dxXvKxzMzMDG5L\nvDiMfdrAPVXshwrUfH7nmlY7b48xhGeILC88IXiL8KfRhxkj69evn7XfSeN9hWtTWicSrxRzcckL\nxXmeddZZs/ZXovZ4ImrHXrTW4KT2V4L2Yi7juNwfyX4uvPBCSZ1Tq49KAAAgAElEQVQ/kfbi+/RP\n97YxBvnJ9mkP5l48auzv4x//uKRu7mdOoT8wF0eZ0fhS8YhxL7ngggtmHe8555wza7+TpthPFuUo\nkiRJkiRJnoIsycrmPDWTsUDGBU+5UY2OoZk4RH88PaMceaXrUr0clBciZTJ7UKaIBqLzaKVv1pcr\nQShZtGO0PaKSKNuPqJsonTpdnuHUt24Q0TvHHSlSRMEoYUkdrkShmkRrEjqMGyrG10Ildmo/Ea2W\n6nmNYe8kwieyJgOyNpMVdbZVsSCbj8jf+zRzHorUtKhVflavXi2p60OlDOaSYoXyRF9kbiodT7QO\nal9c+ep7nVtr+qG8APcc2ouxRv+NMna5B0VzeXQvox+iDPH9Uh0rjoNafXvuuaekbjyVxjSK7DXX\nXNPreKdNKlJJkiRJkiSNTE2Reu5zn1tdy4HPER24d2NoZWQg4h5aUR3liadzogg8H0MjadrBGauu\nk0cv7vuAqN1RMDjOaD2s2nZgP+4dG8u/sNigrC0ViJq57rQn1X9r1ytDLdi6dask6Zhjjqna/9FH\nHy1JuuuuuySVq4UTrY9RSR61lDo2fRWMsfpepKb3rbI/Nu7LLIEKjJI21MvE3NN3nUr6Mn7P1r7C\neaBwMQYitRsVHoWz9Z7kygtzu8+lpXtoa7sDY5Lz78s999wjKa5Nx9zDHD/t/t5KKlJJkiRJkiSN\nTE2Revazn12tSBE1+ntgns73228/SdKdd9454hG2QxTg7/9dWRu6fWes98cehaKkgWcR+ue9enHf\nqs4OUR3RzVjQf3wNxUmz1BQ0ri9RL74KsjZL3/Nsulr1ggr74Nmx9HOi1t13311SN474uZDaUFJU\nHn/88Vn/xyNVy1gqcKT2cfy19K1yX1KMfNUHlJYo2wvGUhb6KlFQ6ru10G/IenOfJ5nEeIH+X3vn\nGmNXWbbhe6PVaIqRKJRKIYM9QFvaaaWcIYCUGn+IkKKAgiSWEImRGIgxBiGTKAUihADRaBQiCaLE\nGEAjbTjKURgOrWBrbJE2llLQEH9QMCng/n7wXbM6T+edd6211z603NefaWf23mut97TXc6/7eV72\n+6SdUFo6hYrl+AjZTzOnOHXqG8YrVVbRK7vnIGtHHKesCU37h3OQHYi/typWpIwxxhhjatI3RarK\nnfK2bdsk7RoNoHg899xzzZ1YA+DdQfHg7proptO91TqFqCFVJyhG7zHaJhpNRdFRMRhUuA72Q+sV\nuf3Zeg3+BaJnVJac2pLaa7JsvzMv2A9t3bp1E76OcUYGGCoKSvRkChiKSm5PNqi6X2FVxagqKX9h\nCpQA2iynDuYUDcYAY4PP7VX2VN21sinfLGM0NX5QalLKGep8pzzzzDOSOm93lK2nnnqq0vvKqui0\nO4pTSlmKawfXxfjtVCGqSqfHsSJljDHGGFOT3UKR4rlwik4zE5oGxYe7ap6bA4pVrrJ30+dDBgpR\nA14Yjk+fEGXzuhil77vvvuNe14ftGhuB9seDV5amot1BgaiZqJOsQtolVwsowngry9q1ayf9e1RO\niV5p/8k8h2WVqLoZoCgmZdcgxhxqaErVg6qqLm3T1NyM59epF6xXdDo3meOp8cOYyyllnXqUICpR\ndbMhqe/ULRh3sQ4WpNbOWbNmSSqyZnulRDWFFSljjDHGmJoMZGXzSOqun2yeVI2KfkHUyXPi6Eki\n+uX3Mbrh/USjvD4X/aAUkbGCv4HfEwWg8BF9x4gf5QrFKmZscN5EHXX3ZIOqmUaRus/TY52vshDl\n9yvDpCnIgsOHw7ggQymXqUPtJcYRXsacytIUZIM2kQVZ9zOY4zlVmcrlM2fOlFTMmZwaV5Vu+RJ7\n1aeR3Jq3bNkyScXcJ8ss9xQjR6feMmh6bWD/0JSyFDOsY4X3TrMZc/5avotT38kppZDzy30HxCzS\nblFV0bUiZYwxxhhTk4FSpGJV2ByDpkQB0S1RHIoSygsKCHe7RKtED5s2bZJU+BHK+hKINlCK8LoQ\nBZStyUK7pjJE+HtT3qi6ShTUrctFVFk1i45orKwS11Stoaahcjk1afBzlI7CgtcPelUni/NvUoWp\n6j1BFc/VTeJ1jIVBXbt2N1hT+Tl9+nRJnStSnarsTZOr/I1SFGuzpbxKdcET2FT7sHZ0+h3QFHWf\nbliRMsYYY4ypyUApUihRu3s2GM/piZhjVlS8++Yun+fbnUb0RL0cB+9KWXJ+D55nE733e0duFJWq\n0E6dVppnPzA8ZUC0RX8OmiKF6sK8y9Xswd9DNXDGV78qtaNC1PHvoKYxBrjmqllQZesboZBwXNS/\nXOYu59cvUMlRNurOtU5JVdG/5557JEmf/exnJUmPPPJIV89jaGhIUqHudzvjGnJZiMzd6MmK/UUm\nbkqx4/pS/UzNvVTNt0jORxrrnuXodnvj+7QiZYwxxhjTIwZKkYLdVYmKcPdMVJnyfqFk8PdO62Jx\n3G7dvePvaEphIcohC+vYY4+d9PVl6zgtWbJEUqGYoaSgBhDl4lFLEbMhI7Nnz5a0qyJFlNirqLVT\nUuoK4xdlFcUYn0S3MsXifm5k7NB/eADLeip3hmvhM8uqttEPVlaNpY3Y15E1Luc1Se39l9vrrili\npel+KVIp1ZHrx1faba8NcwFlcVBgLa57/Xj4WIt5qhLnVm6thJgtmCKn6DLfmKe5NZ/xyrjgu7Ss\n97GuAjxYo8EYY4wxZjdioBQpIkzq16SqwsbIdFCJ1ZL5P9dJ9ICS0W+vUVmIDvEG5aKOHLQHilSu\nX3nOHyvGR6iPdNhhh0kq2v/FF1+UJB1yyCGSCpUgBeMtpUixV1wEFaLb+7HVpWxGD9Eu14maklKC\niG7LkvJm0X9EpYwLfpL9WidDq+5+kDFirboHHN6LspXUp02bNuHvaZuogjYNaioq9KDWTvv73//e\nk+Mw5gbtO6is6p2aK8xpxnNK+Smb+Z1bW1gTWXtT85DzQiHLERVcFKiyT3meeOKJUq+LWJEyxhhj\njKnJQClSPFcl6nn++efH/Z1Il8rbVfcA6zXx7p27YqLabnlLug3KWa52TiTlbYoZEi+88IIk6Ywz\nzpjwc3JKFMTsslhFGkUq1w+5aCbn0RlUz1+ucnmkrCeOzJ+ypFSdnNrCONpZ1YkZv3g+UL0YE7yO\n9+Y8R3iq2BMsHq8sVf2PKWWgV+o1Hi78hGQ15RQpxgAqc9U5EGuvoX6jCPVLve+0PlVVcrXSUPPZ\njaAuPGXgOzWOU1T9smoza0uqhl6socjx47jiXqCshxHliqcWzE+Uw5wSjNJbdbcLK1LGGGOMMTUZ\nKEXqueeek1REkVHBwHmfymQpy6GHHiqp8PZ0SxliXyTu7rnb5vy5Sy4b6RNVp+oecfd9+OGHSyoq\ndkefA+T2TUpBlhrXQzvmntPH6JrzjdFGzjeSqzNGdWOy7Z566qkJX4diSDullBSiX57n55ScqhX6\nU3S7nhrKLlEaqgweshzz58+XVEST9BvztiyMa6JIxmlOuSVa3zmTLrYVamcqIoaYGcj/UcvoS7LD\noKwiVdYTxRhkTqS8JrGid1nvSlWI8Dds2CCpaIdctX7GBHOwrJLDHItZeowp1r5uXW/qfFC1mdsQ\nvTsolry+qjobYW6kaFohS61tPH2gllyOst+pzzzzzKR/r1oDMR4/fuekKrMff/zx4/7/2GOPVTqe\nFSljjDHGmJq02n0wcLRaLY2MjPT6sMYYY4wxlRkZGUk+HbAiZYwxxhhTk755pEZGRrJ7ezVxjJ1/\ndpvU8bhOfAW56qxVj3fttddK6tyTk/Nx9Ks9r7vuOklFlh01Y3jOXTaDB79G9KzF4+HPuO+++yQV\n2WOMU3wx9CefR0YLP/GO0a78vOCCCyQV7Xz77bdLKnwoKfACcfzotcPPwXXFjKcLL7xw3HU2DZ47\nvEvf/OY3xx2PjC98SGTpUi27btVsMpdWrFihq6++WlLhTcH/lqt9Bfgnh4eHJRV9duedd0oq2vSy\nyy6T1P+1Ber6HSN4kL7//e+POx5jj7/HrCaynciyKptZC/1eqxmLeK/wZDGXuT6yPuN3FnNx7ty5\nkgpPEeOv29dHvTH8hd/73vckSVdddZWk9LhgLaFf43WRrRmz7PBmMZ/63X/dgjX14osvnvR1VqSM\nMcYYY2rS16w9MiAGrUpu03CX3y3lLUbZZAu+9NJLlT4npUShIPQLokGus2qND0hVJo+Q8ZGqWJ6i\nbPXdv/3tb5IKhS0qUShdRIlEkyiZRL3HHHOMJOnhhx+WlM62q1p5vq5STNRKFBshOgfUnk4VWpRG\nqVhTYo25pUuXSipqiaX6ivehaJHxyTkuXLhw3OtRapreT5G97VCaIrGyNpmqwBypWvk8VeeKORiv\nk7Y/6KCDJBXtwZped672GuY8imOsop/LziRLj7mcuu5ctiPKFu1M/5O9yXkyPhgH1OuKe+Exx1IZ\nxyhZjO+Y2R2zJwe99mHTlffL1tqzImWMMcYYU5O+KVJTp04d81J0evfIXTsRdK5Wy57OcccdJ6m6\nIhXJVdXtFZxHWYUkV6U6R7evN7dDO9EqdZ6iz2f9+vWSinprUUVAPTjzzDMlSb/97W8rnV9d5ZT2\nxkeSY+PGjZKKqslEx3/5y18qHXfn9oxKE7WpiPT5e9z3kogeVq9ePeGx8HlBHGNRKUKxIeKPSgXX\njjcH1RRVL9UXcY+3lL8sp4CUhfdzvYxNFMDoCUrRbV9sXei3lIcuZmulPGk5BS7XD7RrrKV28MEH\nSyrmDIpp/H2sK4U/Eq9XVFj4HMYd5x/Pk3nC9fa6wnsO1PuoiEZoh6i8RcrWfRt7falXGWOMMcaY\nXeibIvXWW29V3ncqxVlnnSVJuv/++yVV94REli1bJqnwR8TnxE0R9w6kPYgaqu6FBk21a1PKDKpA\n3SgmVpfO0ek+XN0urYb6sXjx4klfl/NcrVq1asLfE1U++OCDkupncxKtovBRJTwqalGFKdt+qBP4\na6IqFEn5kfB/TMS8efMkFSod54qikFNQIlFx4BqI4GMkT2SLIhbfj1KFGocywNxHUagL18l51B0L\neK1QSLhulLCyfT5oShRwXZHoMUL5qLrPaI64ywDjgrnGWsxc5O8ogkcffbQk6Yknnhj3ufR/9Nqh\n8jPeUioy1xvV704Vqaa9hfG7M/K5z31OUjFO2UUltcZWfaplRcoYY4wxpiZ9U6T+97//dZytQyYF\nXqC6ShTRIHf31A/qtjLB9ccMo6oQ7RK91FWymoJoNe5TVZeUv6RbdFqLJ0dZFSSeB9FhWcUxp/Ck\nwA+BGkI2YOxH/D38vqonDx8Q0TE/ibo5DzJxnn/++XHvRzHjdROBOsk5ojyk5khuf8O41xqfx/ti\n3/D/lBIUMy25dj6vUzW807kHnE/MHuP6UPx4Xb99lVXZeb/GnUGZIEuO60XJwaPEuCArNAVzOLZX\nVLpiv7EW8JM96njdRPtOSoVXKH4ea2mun2JWX1M1EJvOcoWoeB511FGSij0QH3roIUm7KlGsJXVr\n2VmRMsYYY4ypSV/rSHUKUeOTTz7Z0ecQTbDTdLeVKKKGTr08EJ/v557fN1UFOUKURaZSU7Vk4vP0\nqlF21WiD6LBb5HZ0jxBNEUWRcYKfYsGCBZKkk046SZL0wAMPSJK2bNkiqbo6gNfp2WefnfDvKKCw\nadOmSp8P1D7CQ4cCho+J8UMWX5wvqAE7j2PGIGMOzwgVy/Gi0CYcC78abYaax985VxSZCHOQz6cN\ny9ZxYs7QpxynbG2ybsOayHnGmmz8fXepGxXJZXGhKPIdAfRX2ZpzjBPmEGorWZtVPWxk8OK3jXMz\npbzmvuNYc5lPrLlNfWd1C66ftYSnIn/84x8l7fodgCJYtd5axIqUMcYYY0xNdktFCgWJu/dOs9Ri\nxgJ3qey3RRSRitBz8H6ihlStjroQPfC57EUX4e6cqBlPC9EvUXTd80Lpol+aqi6b85nkqPvcu1vE\nGkA5UhXLv/rVr0oqFBlUFmrK8Hsq3adgXOIHyXnsGC9k7lRVcPE0ka2HV4pon/Gb6rfJ9n1LqYko\nTUTYwLG5lqg48PeZM2dK2rXvGPOoYyg2Oa8MoGiw1xvqHmtGSn2NayCwR1zKy4L6Rx+XXTtR5Pj8\n6HHpdJ/PfkH/4fdjl4AIY5G5hJKEhy3VjjHrMnr2UKdjNmlZvyvjgLnb1HcK/dupf7dXMO+ickY9\nuNQa1ZSSakXKGGOMMaYmu5UiRRRA9EctiKZBkeK5eaeKBlFCp89hUxAlQioaJcrF/8Feb0RVVb00\nRE8cn6i0ae8VKgPHKfucnig6qgw5qtbuYX+rsn6WuB9WVY499lhJRXu/8MILknbdmw9SGTL0H4pU\n2f7P+UlSUIuGfiEK5PyJJlOZaoxf+gc1Z+fX51RQ/IMoM0ceeaQk6a677prw9XhXmCuxLbkW2pLj\n586DsUyfsf8iY5s+TEXSKaUqzn38gXjE+DsKXdkq9LQ5tcT2FPhOiWtz9JGiODH2GXOMjxRxLpJd\nx9hnnNC+fLeRlZeD8ZJSYnOV5FFoOT7fdVTwT2UYx9px/YZ2Zl7Rrp36naPnLIUVKWOMMcaYmuxW\nihRRIXfLUZHCe0G0VZe5c+dKkmbPni1p8Dw2kVxUkIouyDTJPVdP7Xwe/RJEP0Q5OYWjalRTNlvv\n+OOPl1Q8N7/zzjtLvQ+IUnNwvVUzq2ItoqqsW7dOkvT0009LKjxD+Hkiqef/RHFE1d2q7UJ0zzji\nOMwr2pGoPzUeidaJMlFHJlMcyXiMNeZOOeUUSdLJJ58sSbr33nsl7TrGOHfGaKzTw1jHl4YygI+M\nnyhDGzZskFR4WlAo4vnRN6mK22UrL9M2J554oqTCC1ZWiQLmMkpMp/tZDgoolFwf44L2f+yxx8a9\nnutGVc4pUnEss7agDMYxn/IkzZ8/X1Ix3vDr0v58DmsqoDbHLEtAmeUpBWtTVPPjeGMuprIVu5UZ\nnoJ25XhNrWWo3tnXNXI0Y4wxxpj3IX1TpPbee+/KTnmUplSGyJw5c8a9ri7cpf/zn//s6HN6Rc5T\nknrOTRRExlCqMnyqdg79wN+JWnJRCFEVz59zihTRFj9z1aeJRnIZL7EifHx/jrr7hnWqcMb+5jxi\nNAo51aBbShTQX7E/GJ9R7UhB1Ey/l8k4S2U8krnKGpRSO4l0Uc3inmUoC3hsovrGGEMdRblCPSST\nlrlEX9Cn8XhVYS7iQ6vrb2OO43Pjc3P+Q9qvqQzeFLk1LEecQ6nsPRSesrXm4txC8YneJo6fWguZ\nG8wZ1lDmFOMtqumpNZIsVMY9c4nxRsY6antcs1JrDeC56nTf27JwnU3vgVh2/lmRMsYYY4ypyaS3\n1Vu2bNHXvvY1/etf/1Kr1dKFF16oiy++WCMjI/rFL34xFmWtXLlSn//85yVJV111lW655RZ94AMf\n0I033qhly5ZN+Nllnz3uDMpKSmGpu7dYhP14dhdSkXnZmiJVowb6js8nSiJqzSkcqABllZDoQ8hl\nYhDd56LvlAoRaw01Tdn90/DPMM9yvpaUOpBSpFBlYhRHfaecIpvLCIK4Txf9TjTebQVwZ/A4Pfro\no5Ly9WNQCGij6G+Lai1KDcoA14ZKjgLFcfF58b54jU3tlZfLcM6pvETmjJlUrbpIU3uz5ei0fhJr\nGv2R2teybAXzWGEf+DyeekTFLtZDwtMWsyWjIsW4jrsmxO9Zxh/9HNcM1nLqZbGrQFSkck99OI+q\n+4PWpez+pVUpO34nvZGaMmWKrr/+ei1atEjbt2/X4YcfrlNPPVWtVkuXXHKJLrnkknGvX79+ve64\n4w6tX79eW7du1dKlS7Vhw4ZaN03GGGOMMYPOpDdS+++//1gEMnXqVM2dO3fszm+iyOXuu+/WOeec\noylTpmhoaEizZs3S6Oiojj766F1em/LdSMVdcdUogyy7lC+iX+SqDXcKvgUUubg3HdTNpGAfMogZ\nHChAVfeoKxulcB2p64owbhYtWiSpUIDKZtd1e689okIgCsVng9dv6dKlkgr1JOU3ufjiiyUVVbH/\n8Ic/lDqPWH8MynoD6ypEvK8JhakqjJ1YpwdPR6wnhKqJMhU9KKnMVOYE18j/oyeqaeoqADmVF28Q\nSkNq7ERSldCbJpc9l1PcWBPJiC27RqbmZErpRMnBO0c/8X2IUoUSFUGZitmcrMlxTsXvHBSslH+U\n4z744IOSiizTSK4/aecZM2ZI6n7me1MV3SNlx21pqWjz5s1as2bN2E3RTTfdpOHhYa1YsWJssXnl\nlVfGGk56rxG7JbkZY4wxxvSbUqH39u3bdeaZZ+qGG27Q1KlTddFFF+mKK66QJF1++eW69NJLdfPN\nN0/43lQNoskyqohiuGtP1cCIlL1pSz2/jvBIkp9Vozzeh2LE+1EOytaCyRGjodRddKomTY6yPo1u\nPQcnIyfW3CHqQakimkJRoa4YVZ1jTZhUlIqyec4550gq2hNlC89RzNQiWqedGV87BxeSdNZZZ0kq\notM4vqklk9vnCi8T15GKHlMQJVITB9WlbBQ2bdo0SbuqAak5D6g/jP9OM7rYJ21nCPief/55Sekx\njGqJ+nfttdeO+zvXiDIfq9IzJiNRGWCMca1llSOOm4M24DrZRxOoJYfXK0bwrFWpNYmsP7INy64l\nTXm8yqrp1OuKCgi1AdevXz/p+/HA8d2TG5tVxy7KHmtW3F2AuXH44YdLku677z5JRX8uXLhQUtEP\nrBEoY2TjAWtEytvF59D/XA+V9mMldhTVI444QlKxl12ENSDVX7RvfF23vVTAPQDKcEqpLPsdnVWk\n3n77bS1fvlznnnuuTj/9dEnvyY+tVkutVksXXHCBRkdHJb03WXc2ob388stjE7juCRpjjDHG9Itc\nAlqrPcnD8Xa7rfPPP1+f+MQndP3114/9ftu2bWOVT6+//no9/fTTuv3227V+/Xp95Stf0ejo6JjZ\n/MUXX9wlQm21WhoZGengsowxxhhjesPIyEhSuZr00d7jjz+u2267TQsXLhwzHK9cuVK//vWvtXbt\nWrVaLR188MH62c9+JkmaN2+evvzlL2vevHn64Ac/qJ/85CdZmd8YY4wxZndlUkWqawdttfTRj350\n7Dl9t/bjQfVauXKlpO7vC8XxrrzySkmFD4HHmE3vmM3xrrnmGklFO/KcHe9NLmMFcj4EjvfLX/5S\nUuEnKFtbJZLbrysej+uJ7cfzbs4/ZufhUSMbLlYXZt+qb3zjG+OOi98CPwvth/+F40QfCP4R/DWA\nj4HMII7TK3U2d7zoTWTcxnpcvA5PWPQacv2XX365JOmHP/yhpMKPETPjUpDNyN6JtDPjE68c3rCR\nkRH94Ac/kFTMPc5xwYIF4/7/1FNPlTqHFLEtGXtxf048GFgcOH4qiwmvDGOP95977rnjjscY5u94\nt/CwxD3kqlJ2bHK+jBXmJmsd50N/8H/2/qMe1THHHFPqeE0Rr4/2S2X28gSG/ouZrXievvCFL0gq\n9vdkreA4P/3pTyUV44GxyxxKrdV4mKjvhHeONYa5gc3mW9/6liTpRz/6kaTiO4Gsv7rWGvym0b/J\n9bFnJeOAdirrJeM7IY4r1mrGcz/WzskUKRd4MsYYY4ypSd/22vvYxz6W3BeHzINcJWfuziFmqkBO\niSLjhSqvZSPmFKn6ON2qI8VdMnfvRFUoNURRub3nyiqD1DqpG+1CWYUw7rEWIcolKuT8qCfG+4kC\nGVep8QJRUUSZyV0374sV43u171Rd6A/OPzeOU+M5ZrLxf1SKsvMLBXLVqlWSpOOOO05SkUE20efE\nbLRYxwllIe5uX5ZUjTHmTkqdJaM4Zv1FGGtk9qYyKGMdKpQJrpf3HXLIIZLKVyJHjSwLa3BUl2O7\nMidRfzkf9nTrF5x3TpFirDGGUSDJyGVsMtZTc4fvPPov9mMueyxWyOf/rHVxjUcZQiXmczh/sgO5\nfpSgRx55RNKuymkuk5g1gUzeqlmNjJ9UHa1BxYqUMcYYY0xN+qZITbbfWE6JAqLATot+xigyVR+n\nLk1XysbzA7FyOlFNVKrqsmTJknH/j3WUuk1u/y+UC3wCRx11lKQiSiR19YknnpC0q5KZqgWEL4Eo\nLdatYgynlJmye9F1m7Ljj3HS6XiJih39NNluBpNB+9J/dapkc07Lly+XVPiufve730lKR9ooDrRJ\np6piSvHAP4Yan9sbL8JaiAKBAoT3iDWCvdNSlK37xNjmvPHsoIAxd6hHFNPH6VOUt36BdyinnHC9\n+PbwMrEWoG7nvruYA3W3TaOfaTf6K+W7Ze7FOcnnPPnkk5KK77xTTjlFUuEprFqRnJp/fEeklLdu\n0ekuIjzFYc0u+zlWpIwxxhhjatI3RaqJvZe6tf0MSlTZCug5eD7daXYiUV9UGPg//gailFQUkMuW\nA6I1/CSAV6hsxflukWrPXEYW152K1oDok+iMbDvam/elfDH9VqKgarVgsgtR4GjnsnM2+pRiJldd\nOlkzGLPMCeYIESzKCnMeNRNPS25M5eZULiMWdZO2KztHgbFG37EWUMm7atX7HChnrG0oNqjUzBF+\npq6j314Y+oUsyPgUAoUFTxJjEA9Y9BPm1Fxe12kGedm1l3GQGneMf/7OHnsphSuXeY7SxueS5YeC\n1u2nGNEHW5ZURfyyWJEyxhhjjKlJ3xSpvfbaa+C3ielUiYKm6mQRBcSd1/n83A7YRI3x+TxRbNyx\nnt9Hb0uvvFHdgloqOYi6iVbINGL/tpTih2+C9msqWw/VZDJ/YRPg/8j5RmbNmiWpyBhKgSKGOkGm\nEH6dXuyvxVpDGxJZ4+nhnI499lhJxRy77bbbJO26X2IE1ZYMUWDupOpLRZjjKBZl97TjuPgZuV6O\n13Qb0z4ofZzn448/LmlX5SWXMdwvGJMoJyg9jBMUHdToTlXmsjX9cvB0AiUtNwdToMziBWLc8B3B\nuI79nILvIPqbtbBbGesR1tyYlct3H+cTn0LEeVsVK1LGGCXY+tIAABBDSURBVGOMMTXpmyK17777\nNpYV123I6uLuvanoruwO8EAUHRWuXIV4oov58+dLKqILlA2ui2iLLDVqi0RFqm7GSa/B10C7ESWV\nrSxPhhXP9/mZy0AhY6qsmpCC82f87bwheDcpqx6U9bcwzmk3xg+KVq42TRPgdWHN4dxpYyLZ++67\nT1KhIuKNyqnKKDSolygxfD5zLTd2orKQ2vQ9xYEHHiipiLirZv+VBQ8KChjKTawflVNeOp0jtDu1\nAPE8oYzlYI074YQTJBVPIVCdm/aWNfUUhnFG+6UUqbK1/uJ58R3AdxPeML4LYu0+oP0YB3V9jXUz\nnpnXqXpoqfboVCHcPb4RjTHGGGMGkL4pUkQOgwzPs+M+S3X3lgPu4qveraOsRCUgF9VRN4k2JypO\neWC4m0dJiHutkdlU16tDtMN5dMsjw+dz/qloMFVtmuv81a9+Jal8dJR73h49bqm/44Mg86pp4n5t\nKajLRdS2ceNGSeWrFjOeeD0eNa6P8RDHWRMQuVN7jXo//B4fHNlK999/f63jMFZQtriWqipoWViL\nmDv0DUpMU/7OFKiKeMxYy+jrVL2spolV9quuJXih2BOOuVu14n1ZqmZjAufJWs955uZgzjebgvOL\n45Y1n4xuzgvwz3aalR/XWr6Lc09DUI4ZhyiVZSv7075V282KlDHGGGNMTfqmSFWJmHgei3JAVNkt\nJYO7Uu5qicCJ4OtSVgGIcB5ECWXbLvo1iPzPOussSdKaNWskFRWjgaiJ9o2eGaKFqhkoROsxam8a\nMnD4/NSejhCjj6hQNV0PimguBd6hGO01DSoK/ZzKrMEnkopSc/D6+L5cv3QCKuzixYslFT4sPEQL\nFy6UVPjOnnnmmY6OR58yF/jcTjM2U2sFx0M1RuWLanXdNSfHZz7zGUnF3KBvURnLKlJ1FZNI3acE\neL1QfbvtQ6yqRNG/rEnMUfq57tqEQhvVc8YVa0Nq3KA88R0Ane6/miJXDwtQrFjTeAoR24nvIL7r\nGa9891VV1KxIGWOMMcbUpG+K1ER35lSSjlVbDzroIElFNEnmTbfq6UQ/BVS928Z/wfnnqiOnIKpM\nRUvxbvuMM86QtGvm0bx58yQVO67H6BUFhH2XiH5iBgQeLzxXZWuEEL3Edm0aPG2oAznlI45FohNU\njNxzc/q5bDVdovkIUSDRUNl6V3XJ7RUIVXdwj3TLr4NSPVGWIT6zZ599VlIReVPPafXq1ZKKyLqu\nhykqMCgIzKWyuy+kfJOpDEqunb3sUjB3+dxOFSDmFtfNXm2M/Zz/b9CgffGcDRooK1UrdQPXxXcI\n37GpcTl37lxJ5ed8VB7rep/JTE59x6KUxb0go+eMewfGfSqbMXV9dZ9yWZEyxhhjjKlJ3xSpiTLN\nUvsHEZnjeckpQ2V3u0/RVBVeojaiwHg3nauVwftzz4W5KycKxhsVoxiiEuohxb+zUzyK3KpVqyY8\nPzJaqlZs73Z1Y5Q0xkfZar+xThbwOURxUdkiOl+0aJGk8lFjanxy/oyT6CGL5xkzWao+14/jcXcD\n9QOlemdipiNziTWmbJ2hHNR5Qt1DBc61LR4NIuOqfVc2kzNV64uxhrpfNnOS9zGXUclj9tzuAsoF\nP3eX2oZlQSFinOWUpscee6yj46EslYU1lDWW+l3AdxZ14KJnizUARQpll++mqnW76nrOrEgZY4wx\nxtSkb4pUlciF57BlM0E6zeZrKpuMa0ydd+7ul+g552vgc/AEPf3005IKRSZmFPH7mLHBXTxRGbVV\n4Etf+tK41w0KKDP4XapGlbl6WqnxhAK4du1aSWmfC/u0oaw+8MADkgqvGqA4pTJlUhk/cWf6pmlq\nf7CmQf0pEwWjzDSdKUiboNKWrdTdqWreKdG3VnbNox4P7+/3dXQK4yJW6C5L3NNt0Mhla6LoNKUk\nVlW5abfUdyS1E5ln8fOj4sQa2VQ2aFmsSBljjDHG1KRv4cREUX6s6MzO5b2C58lkT3VanZfPIaJH\nGcLfwF02z4FRVKDsXTWfH/eJ4u6dnw899JCk4i4/Ho8MHM57UIh7EtKORFFEISmFL+VFIwrNKZip\ncRj3iEupETH7LuXxI7rlvFBaUA5TSmC3vWecB8dv2gdTVfGKGT5lsmmb2uMsQlswtqj3k8tURG1m\nX8ZUra0ceEcYMymfHj4yPE11/XH48Vgruz32ug1rR9X6TrvDzhwTQY065hrjDeUKFZ7dDFCMytZZ\nK7v/JrBmptZu5hPZtvE7KypufA7eReZZao3n+NSbW7dunaRC3S/bz1akjDHGGGNq0jdFat68eWPR\nTKz+i2ISq6+ilPD3lN+BqsZVIeLmZ8xsqQo1XmKl8BjRdxotx89LRei0dyqK5C4857UhSsBXUdaT\nlqoTBqnn9bwPZYroO+40HiH6Ihr/85//PO7zUQLpZyAqoz4U0VsuKy+lIB555JGSiqhuzpw5E76O\ncUb/cL2Mn35508hIy+1zBbHacd3xkqJb6lId8BsyZhhzZbPxaBPGOAoBn5fKKAXWwFwdJFRc+ib6\nH8vCmOxWLTgUgKpjPadqNu0F4vy6WZ2/G6C8pfofhQf/J7tElFWkqip7fKdzPBQn+ok1ke+MnCeP\ntYHxieKUWnNYs3lKxJpPpfyy49CKlDHGGGNMTVrtPqTitFotjYyM9PqwxhhjjDGVGRkZSSqeVqSM\nMcYYY2rSN49ULxQpjtHtY+EdueKKKxo5Hp+X8oLgh7jsssvGHQ+vD8+R8RDlsprwnPGT/ZbIgHjh\nhRckSZdeemnFKzHGGGP2bKxIGWOMMcbUZPcuSzsgNJ1FlPu8VM0NanjE57i5Pf1iDZuqtUCMMcaY\n9ytWpIwxxhhjamJFaidyyg2UrS/FHmhNVf+l7lFq/6RURkHdHa2NMcYYMzlWpIwxxhhjajJQilQu\nWy1F3HurKlTTpQoqyhRVWmNV1LIVnpveGZ3qr7kdvXOwlyHVjtlfyBhjjDHVsCJljDHGGFOTgVKk\n8ABVVZbqKlEQ99NBcWK/q6gAxR2oUzSd/bZ169ZGPoe901DghoaGJBVZe3iq2AfMGGOMMRNjRcoY\nY4wxpiYDpUillCUqbuNlYmfot956qyvngUcr5UWqusN1jtTO5ChFmzdv7ujz8ULts88+kgrlievs\n9PONMcaY9ytWpIwxxhhjajJQilQKst+aqscEH/rQhyQ1rzBVJSpRcPDBB0sqrv/FF1+s9flHHHGE\npEKRGh0dlST94x//qPV5xhhjjHkPK1LGGGOMMTUZSEUKTxTZdGSZNU2vlKiPfOQjkqT//ve/ld53\nwAEHSJL+/e9/1zouStaGDRskSS+99FKtzzHGGGPMxFiRMsYYY4ypyUApUniWPv7xj0tqrm5SCuoo\nvfvuu135/E996lOSytediqDE1a3nRLaelShjjDGmO1iRMsYYY4ypyUApUniJ3njjjZ4cr1tKFKBI\nvfLKK7Xejzeq6nmi7L322msT/v2Tn/ykpKJ+1csvvzzh6zrdw9AYY4zZ07EiZYwxxhhTk74pUq1W\nS+12e9zvupWd1y/qZtsBWYVVswtzr6ceF4oTXrH9999fUuHpshJljDHGTI4VKWOMMcaYmvRNkYpq\n1J5IpwobylLZrL9Pf/rTkqS99nrv/pisx3feeUeS9Pbbb0sq9tiL2YDdzpI0xhhj9jSsSBljjDHG\n1GSgsvZ6xYc//GFJ0rRp0yRJb775pqT69Z5ardaEv69b/wn++te/Vnq960XtGWzatGlsn0XTf9wf\ng4P7YrBwf7yHFSljBozNmzf3+xTMTrg/Bgf3xWDh/niPvilSJ554ok4++eSeHGtkZKQnx9ldj/fQ\nQw/1rC+MMcaYPQkrUsYYY4wxNWm1+5A+d9JJJ+nhhx/u9WGNMcYYYypz4okn6k9/+tOEf+vLjZQx\nxhhjzJ6AH+0ZY4wxxtTEN1LGGGOMMTXp+Y3U6tWrdeihh2r27Nm65ppren14I2loaEgLFy7U4sWL\ndeSRR0p6b/+9U089VXPmzNGyZcs6roFlJubrX/+6pk2bpgULFoz9brK2v+qqqzR79mwdeuihuvfe\ne/txyns0E/XHyMiIZsyYocWLF2vx4sVatWrV2N/cH91ly5YtOvnkkzV//nwddthhuvHGGyV5jvSD\nVF94fkxAu4e888477ZkzZ7Y3bdrU3rFjR3t4eLi9fv36Xp6CabfbQ0ND7ddff33c777zne+0r7nm\nmna73W5fffXV7e9+97v9OLU9nkceeaT93HPPtQ877LCx36Xaft26de3h4eH2jh072ps2bWrPnDmz\n/e677/blvPdUJuqPkZGR9nXXXbfLa90f3Wfbtm3tNWvWtNvtdvuNN95oz5kzp71+/XrPkT6Q6gvP\nj13pqSI1OjqqWbNmaWhoSFOmTNHZZ5+tu+++u5enYP6fdsgx+P3vf6/zzz9fknT++efrrrvu6sdp\n7fGccMIJ2meffcb9LtX2d999t8455xxNmTJFQ0NDmjVrlkZHR3t+znsyE/WHNPFeoO6P7rP//vtr\n0aJFkqSpU6dq7ty52rp1q+dIH0j1heT5EenpjdTWrVt14IEHjv1/xowZ3ii3D7RaLS1dulRLlizR\nz3/+c0nSa6+9NrZlzrRp0/Taa6/18xTfV6Ta/pVXXtGMGTPGXuf50jtuuukmDQ8Pa8WKFWOPkdwf\nvWXz5s1as2aNjjrqKM+RPkNfHH300ZI8PyI9vZFK7Ulnesvjjz+uNWvWaNWqVfrxj3+sRx99dNzf\nW62W+6pP5Nre/dJ9LrroIm3atElr167V9OnTdemllyZf6/7oDtu3b9fy5ct1ww03aO+99x73N8+R\n3rJ9+3adeeaZuuGGGzR16lTPjwno6Y3UAQccoC1btoz9f8uWLePuYE1vmD59uiRp33331RlnnKHR\n0VFNmzZNr776qiRp27Zt2m+//fp5iu8rUm0f58vLL7+sAw44oC/n+H5iv/32G/uyvuCCC8YeT7g/\nesPbb7+t5cuX67zzztPpp58uyXOkX9AX55577lhfeH7sSk9vpJYsWaKNGzdq8+bN2rFjh+644w6d\ndtppvTyF9z1vvfWW3njjDUnSm2++qXvvvVcLFizQaaedpltvvVWSdOutt45NGtN9Um1/2mmn6Te/\n+Y127NihTZs2aePGjWNZlqZ7bNu2bezfd95551hGn/uj+7Tbba1YsULz5s3Tt7/97bHfe470nlRf\neH5MQK/d7ffcc097zpw57ZkzZ7ZXrlzZ68O/73nppZfaw8PD7eHh4fb8+fPH+uD1119vn3LKKe3Z\ns2e3Tz311PZ//vOfPp/pnsnZZ5/dnj59envKlCntGTNmtG+55ZZJ2/7KK69sz5w5s33IIYe0V69e\n3ccz3zOJ/XHzzTe3zzvvvPaCBQvaCxcubH/xi19sv/rqq2Ovd390l0cffbTdarXaw8PD7UWLFrUX\nLVrUXrVqledIH5ioL+655x7PjwnwFjHGGGOMMTVxZXNjjDHGmJr4RsoYY4wxpia+kTLGGGOMqYlv\npIwxxhhjauIbKWOMMcaYmvhGyhhjjDGmJr6RMsYYY4ypiW+kjDHGGGNq8n+JYyU0HDoAyQAAAABJ\nRU5ErkJggg==\n", + "text": [ + "" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fourth layer output, `conv4` (rectified, all 384 channels)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['conv4'].data[4]\n", + "vis_square(feat, padval=0.5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAJOCAYAAAB8y+mTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmwpVV1/v+0DBpNNGpkELS7kR6gaeZJaIFmUhQtrKJU\niCgiwapYRkksoybRmzLGRo2axNJoBRU1BimjgBKJIDMCzdA0U6dptSUOSBxijEMkoL8//H767fPc\nu+7e73Duufhbn39O3XvOed/97r32Pu963rXWXvCrX/3qV0qSJEmSJEla86hJNyBJkiRJkuSRSt5I\nJUmSJEmSdCRvpJIkSZIkSTqSN1JJkiRJkiQdyRupJEmSJEmSjuSNVJIkSZIkSUfGciN16aWXavny\n5VqyZInOOeeccZwiSZIkSZJk4iwYuo7Uww8/rGXLlunyyy/XLrvsooMOOkj//M//rD322GPI0yRJ\nkiRJkkycwRWptWvXavfdd9eiRYu03Xbb6SUveYkuuuiioU+TJEmSJEkycQa/kfr2t7+tpz3taVv+\n3nXXXfXtb3976NMkSZIkSZJMnG2HPuCCBQsG+UySJEmSJMl8YOHChfrGN74x43uD30jtsssu+uY3\nv7nl729+85vaddddZ/zsdtttJ0n6v//7v5H/c6PVN3xrampq5DWC8z360Y+WJD3ucY+TJP3u7/6u\nJOkXv/iFJOlb3/rWjN9/whOeIEk6++yzJUmf/OQnJUmvetWrJEnXX3+9pOY6Oe4222wjSfre974n\nSdq4caMk6X/+538kSQ899JAk6b/+679Gzvf85z9fknTAAQdIkj71qU+NXMd3v/tdSdJ///d/S5J+\n67d+S5L05Cc/WZL0wx/+UJL0s5/9bOS4u+yyy8jnfVxe8YpXSJL+8i//UlL/8XniE58oqbk+2vfY\nxz5WkvTKV75SkvSud71LkvTTn/5UkrTTTjtJavr94YcfHjnOj3/8Y0nSjjvuKEn6yU9+Ikn60Y9+\nNHJ+xmH33XeXJJ144omSpJtuukmS9JjHPEaS9B//8R8jx2F86F/aBXvttZekZnyYfCizv/zlLyVJ\nL3vZyyRJF154oSTpBz/4gSTp+9//vh772MduaddTn/pUSdLmzZslSbfffrtmgv7jOE7tfHDoZ/od\nOy3R9Xw77LCDJOlJT3qSJOnf//3fZ/0cdvra175WH/vYxyQpXPBK/M7v/I6kZg1gLjlc09vf/nZJ\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fifth layer output, `conv5` (rectified, all 256 channels)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['conv5'].data[4]\n", + "vis_square(feat, padval=0.5)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n2N3pAAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 14 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fifth layer after pooling, `pool5`" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['pool5'].data[4]\n", + "vis_square(feat, padval=1)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAlEAAAJMCAYAAADaNPObAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtwHuV1+PHntSTrbsmy7pZs4YssSwbbxIADJMihgiEF\nSgkhIS3xkDSdTtppkmYGMmn/gHYSm8mkDbl0OpOhGU8y5TKZKXEIdaiD5XIzhhoDvl9ly7rf73e9\nvz/S+If9HJujZ/fdXUnfz0xn6pPn3T3a3ffVYXX2vLF4PB43AAAAmJEFYScAAAAwG1FEAQAAOKCI\nAgAAcEARBQAA4IAiCgAAwAFFFAAAgAPfi6hdu3aZqqoqs3r1avPkk0/6vXkAAIBIiPk5J2pqasqs\nWbPG7N692yxdutTccMMN5plnnjFr1671axcAAACRkOznxvbv329WrVplKioqjDHGfP7znze/+tWv\nLimiYrGYn7sEAABImNtuu83U19eL/5uvRVRTU5MpLy+/+O+ysjLz1ltv+bkLZ9INtwUL7L9m3nLL\nLVYsNzdXtY8XX3zROZewissP5/L444+bxx9/PBK5/EFxcbEVa2trCyWXKB2X+Z6LlMeSJUusWHd3\ntxWT3vfS9lasWHHJdvLy8szp06dVr43S+UlLS7Ni+fn5qpjkgw8+UK2bmpqyYn4fl6ysLCuWnp5u\nxdrb233NRdpHdXW1FTt27JgVGxwctGKpqalWbHx83DE7vahfu0HksmjRIivW19enzsPXIoq7TAAA\nYDarr6+/4p2ny/laRC1dutQ0NjZe/HdjY6MpKyvzcxcAAAAJU1tba2pray/++4knnrjiWl+LqE2b\nNpmTJ0+ahoYGU1paap577jnzzDPP+LkLX0m3D0+cOGHFampqgkjHkpSUZMWk28jSOulW8MjIyFX3\n9+GLRkP6s4hkenp6Rtv9sCD+dMcd1LlB+tOdRHs9Xv6nu56eHvWfvKJkbGzMijU1NaliWgsXLnRe\n5+XPVtKfxqSY36Rj+u6771qxqqoq1faC+NMdEsPXIio5Odn8+Mc/NnfeeaeZmpoyX/7yl3kybxaZ\naREFAMB85msRZYwxd911l7nrrrv83iwAAECkMLEcAADAAUUUAACAA9//nDcXHT582Ip1dXUlfL85\nOTmqdcPDwwnOxJjNmzer1knzWM6cOeN3Ooi4NWvWqNZduHDBig0NDfmdjm+kWVTQN0ZnZ2dbMemz\nVHrYo7S01IpJDd6dnZ2qXLSkB2g++clPql7b0dGR8Fyk2OTkpK/7ncv6+/s9vZ47UQAAAA4oogAA\nABxQRAEAADigiAIAAHAwrxvLk5PtH19qjA6L1FwpTVkfHR31db9FRUXOr43S8dOSjimCEUYTeUpK\nimrdxMSEFZMao+eKIL6BQEubi8TvbyB4+OGHrVheXp4VO3r0qBUL4vqeb03k0pc1Sw8YBIU7UQAA\nAA4oogAAABxQRAEAADigiAIAAHAwrxvL09PTrdjAwEAImciCmIoukRozm5ubrdj58+eDSAez0MmT\nJ61YEA3JGmlpaVZMO3Hb74c4oiSI86P9TJuamrJiTU1Nqtd6aUqXHjaSdHd3W7HXX3/divl9TKPy\nHgpTmE3kEu5EAQAAOKCIAgAAcEARBQAA4IAiCgAAwEEkGsulRsAgGuiWLFlixaLUWB6Wm266SbUu\niMby8vJyK9bY2Kh67Y033qhat3///hnl9FGkqdaDg4NWbC5PSo9yA+zNN99sxaQp/fv27bNihw4d\nSkhOLpKSkhK+j4ULF6rWaRvzvcjJybFifX19Vkw7kV4iTf+WmuELCgqs2MaNG63Y//zP/zjngtmB\nO1EAAAAOKKIAAAAcUEQBAAA4oIgCAABwEIsH3N0ai8XmdEMtAACYO65Wt3AnCgAAwAFFFAAAgAOK\nKAAAAAcUUQAAAA5CmVgei8UC36fUFCZNwO3v7/d1v/n5+Vaso6PDimmnXEukqcLSBOGamhorJk1g\nXrx4sRXr7e1V5SJJTU1VrRsdHbViYVwrxsjXyw033GDF3nnnHSsmTZL+2Mc+ZsWkSf3SxOS3337b\ninm5XryQjot0fqemplQxrcuPlbQt6VrJy8uzYtL5kSZfa6dwS8ckiOs2LS3Nio2MjFixwsJCKyZ9\nBvktrOMikXK5//77rdjp06etWGtrqxUbGxuzYtLng/StDsePH7di0nFJT0+3YtI0dumcT0xMWDFJ\n1M9RlHK5Eu5EAQAAOKCIAgAAcEARBQAA4IAiCgAAwEEoE8s1brrpJismNfMdPHhQtb2oN615yWXL\nli1WTGqolY7fr3/9aysmNQprm2y9iPo5Kisrs2JNTU2+7regoMCKtbe3W7FVq1ZZMe2xamlpsWJD\nQ0Oq12rP0ZIlS6yY9ADEwMCAFZMa5DMzMz9yjfbnlx72kHR2dqrWRf26DSIX6TND+6BIRkaGantS\ns7R0TQ0PD1sxqfl6+fLlVqy7u9uKSbw8xKE9R9XV1artSQ8JaB8ciPq1KzXSSw/fJDoXJpYDAAD4\njCIKAADAAUUUAACAA4ooAAAAB6FMLL9cVVWVFZMabC9cuBBEOnOWttlQ20QunaOlS5dasenpaSv2\n/vvvq/YxV1RWVqrW9fT0qNatXr3aip06dWpGOX0UaaK6RJr8L01Ul5qApXUnTpywYlKzsCvp55Ku\n0flGehhAasKXHgbo6upy3q/2veH39S01vvs99b+iosLX7Um8fBMAvONOFAAAgAOKKAAAAAcUUQAA\nAA4oogAAAByE0li+YcOGj1xz8uRJK3b8+PFEpBMJSUlJVkzbMLhnzx4rJjV9+02aqFtcXGzFWltb\nE56LltTcrOV306mkqKjI+bV+N95qJSfbHyN+N2prvlihpqZGta2zZ89aMT8b12erG2+80YpJ75f3\n3nvPiknfhiCRHiTQ8vv9p33QRtscfu7cOQ/Z2I4cOaJal56eropJU9ujLojp5F5xJwoAAMABRRQA\nAIADiigAAAAHFFEAAAAOQmks7+zs/Mg18206uaZx9kqkCcy9vb1WbGJiwnkfEqmRWZq43dTU5Ot+\nvdBOY5f09fU5v1aawi259dZbVev27dvnnIvfMjMzrVhjY6MVk67xRYsWqWL9/f2O2dm0TeRSU7WX\n60dqwJeE1UyrnZbf0NDg636lc6v5HeFVYWGhFWtra3PeXiwWs2JB/ByLFy9WrZuNjeWzAXeiAAAA\nHFBEAQAAOKCIAgAAcEARBQAA4CCUxvL51DSem5urWqed8Cw18V5zzTWq13Z3d6vWSVOzpYZLqWFc\n20Qu/Rxa5eXlqnVSc7MXeXl5Vkw6pjk5OVZMOr8bN260Yps3b1blIj04IFmzZo1qnfRtAF6mjksP\nO0gT+LUN48uWLfvINVKDbViTyKUmcumzICsry4r53bidkpJixaSHTM6cOWPFMjIyrJh0fWsb7gcG\nBlSxIOTn51sxadL36tWrVduTzpt2yrrU5N7e3q56bXNzs2qd9LPBO+5EAQAAOKCIAgAAcEARBQAA\n4IAiCgAAwEEs7mVUtssOYzFP07kBAACCcrW6hTtRAAAADiiiAAAAHFBEAQAAOKCIAgAAcBDKxPLL\nJ6eOjo4mfJ9SU5g0LVgiTfyVaKdIS7ksXbrUikmTyKWpzNLxe/vtt63YwoULrZg0FTc7O9uKaY9V\na2urap1EOi6xWMyKSdOwJV4mbmtzCYI2F2mStKSvr8/XXKRJyF7e09LPceutt17y7xdffNFaoz0/\n0vtAIk3hliZLS9P8o36teCEdA8lcOS7S5432s0X6doXz58875+K32fg5J03+l6bPS9s7ffq0cy5X\nwp0oAAAABxRRAAAADiiiAAAAHFBEAQAAOAilsTyIRnKNoaEhK5aUlGTFpMby5GT70EkNq1JzqqS5\nudmKSQ3ePT09Vkz6OSSdnZ2qdYODg1ZseHjYinlp3PYirP36TXtdaU1OTlox6Xr2cp1KtI3GUkOt\nRGp8/81vfvORr8vMzFRtX2pWlc6F1OAuPYjhRRAPA8CbqH/eSNfQyMiIFfPyHpdI7zepCV/a79jY\nmGof0nu1qKhI9Vrp8zARuBMFAADggCIKAADAAUUUAACAA4ooAAAAB6E0lkfZ1NSUFdNOIpdkZGQ4\nv/b48eOqdampqVZM27in5aWJUGpyhDETExOqmFZZWZlqnfQQg99Np1EhNeoPDAxYMak510uTv9Zs\nbBj3u7l+LmtsbHR+7bp166yY9B7v7u62YgcPHnTer0R6yEn6lg3J2bNnnfernToeVBO5hDtRAAAA\nDiiiAAAAHFBEAQAAOKCIAgAAcEBj+RygnVQtNc1LpCZC7ZTrIJrIpZ8tKytL9drZ2Mir1dTUpFon\nTaT3QjuJfNmyZb5u73LS5H6pYVyaQC1dy3P5WoExixYtUq3r7+9PcCbyQwzS55xEaiwP4kER6YGr\ntrY2KyY1h3sRZhO5hDtRAAAADiiiAAAAHFBEAQAAOKCIAgAAcEBjeYINDw8nfB/aSdXnzp1TrUtJ\nSbFiUnOgNPk5CNoG+fnG74Zxv+Xl5anWuTaWS7TN4VJTOvSkh1GgJz24Mzo6asV++9vfWjG/G7cl\nUqN6WJ//UcOdKAAAAAcUUQAAAA4oogAAABxQRAEAADiYk43lmZmZvm4vNTXViknNzUFMUpUm23Z1\ndaleu27dOtW6T3ziE6p1b775phVrb29XvVZLey7nynRp6VqLuoKCAivW0dFhxQ4ePGjFMjIyrFh+\nfr4V01y70nRyv6+LWCzm6/Zmo9zcXCs2G4+L1JAd1gMG0gNIra2tViyIJnLJ2NiYr9urqanxdXth\n4k4UAACAA4ooAAAABxRRAAAADpyKqMbGRrNlyxZTU1Nj1q1bZ374wx8aY37/bdJ1dXWmsrLS3HHH\nHeK3PAMAAMwFsbhDp1pra6tpbW01GzZsMIODg+ZjH/uYeeGFF8zPfvYzk5+fbx599FHz5JNPmp6e\nHrN9+/ZLdxiLhdYcBwAAMBNXq1uc7kQVFxebDRs2GGOMycrKMmvXrjVNTU1m586dZuvWrcYYY7Zu\n3WpeeOEFx5QBAACizelO1Ic1NDSY2267zRw6dMgsW7bM9PT0GGN+/yhmXl7exX9f3CF3ogAAwCxx\ntbrF05yowcFB85nPfMY89dRT1hdQxmKxK84Oefzxxy/+/7W1taa2ttZLGgAAAL6or6839fX1qrXO\nd6ImJibM3Xffbe666y7z9a9/3RhjTFVVlamvrzfFxcWmpaXFbNmyxRw7duzSHXInCgAAzBK+34mK\nx+Pmy1/+sqmurr5YQBljzL333mt27NhhHnvsMbNjxw5z3333XTGhoEkHIKwpu2HlsmrVKit28uTJ\nUHIpKiqyYtKE3iBykSYwX/5naGOM+du//VsrdujQISt2+vRpKyZNJNZOwm9pabFiQRyXtLQ0KzYy\nMhJKLpeT3kNf+9rXrJg0zX/fvn1WTHpvlJaWqrb3q1/9yoqtXLnSiknHbtGiRVZMIk2Mll773nvv\nWbGNGzdaMenc9vf3W7EjR46o8pOE9Tm3YIHd6iu9r2bj539FRYVqXUNDgxUrKSmxYs3Nzc65+M3v\n62Xz5s2qddPT01bsrbfeUu/HqYh6/fXXzS9+8Qtz3XXXXXyDbtu2zXzrW98yDz74oHn66adNRUWF\nef755102DwAAEHlORdStt94qVm/GGLN7925PCQEAAMwGTCwHAABwQBEFAADgwPOcqBnvcBY2rSUn\n23/1nJyc9DWXwsJCK9bR0eG8Dy+5zMZz5Dcpl5qaGismNWZKTbsSqZG+srLSih0/ftyKRem4RKWx\nvKyszIo1NTX5ul/pZ5VaGzIzM1WvHRoasmJSw/jChQutWHp6uhU7f/68FauqqrJiBQUFVkzy2muv\nqdZJonKtGEMuxsgPO5w6dSqUXCR+HxfpAQOpMT8/P9+KXd5Y7vvEcgAAgPmOIgoAAMABRRQAAIAD\niigAAAAHnr47D7NLUlJS2CnMatL05uXLl1uxlJQUKzY4OKjaR3d398wTgzFGnjwfRGO5RGo2Hx0d\n9TWXK83qu5w0KT3qtJO5pYcz/D7Oc4U0kX4uk94fZ86cUcVmgjtRAAAADiiiAAAAHFBEAQAAOKCI\nAgAAcBCJxnJpGu/4+HgImci8TCfXCmI6eXZ2dsL3MZd97nOfU63bt2+fFZMaYCWdnZ0zygn/39TU\nlGpdSUmJal1LS4sV0zZzS59p2obnIBqA3333XSumPX5BCOshGL+/nSJKgvgdExZper8kEQ9ZcCcK\nAADAAUUUAACAA4ooAAAABxRRAAAADiLRWA7MBmvWrFGt++Uvf6lal5qaasXGxsZmlBNmLohGYenc\nStPO4/G4FUtLS7Ni+fn5VkzbJNvT02PFhoaGVK/1mzRVvre314qdPn064blI3yyQmZlpxaT85hs+\nq66MO1EAAAAOKKIAAAAcUEQBAAA4oIgCAABwEInGcr+nk2dkZPi6vahbvHixap3UYBoEafqwNNFZ\nEqUJwh//+MdV6z75yU9asddee82KSY2ZUvOxVmlpqRWTphRPTEw47yPK2traVOu8TG7WfrZ0dXVZ\nMamJXGrYXbVqlWof2qneAwMDqnVB2LhxoxWTmtwbGxutmDRB3gvpfRClqe1eaD9ftbw0kUvXqfRe\n0NJ+44D07QLr16933u+VcCcKAADAAUUUAACAA4ooAAAABxRRAAAADmJxLx1eLjuMxTw1lQEAAATl\nanULd6IAAAAcUEQBAAA4oIgCAABwQBEFAADgIJSJ5UuWLLnk393d3b5uv6qqyoodPXrUitXW1lqx\nt99+24oNDw9bMWmSdlpamhUbHBy0YlKDmnZS9aJFi1Tr+vv7Veu85OK3qOeSlZVlxaRpy5df31ci\nTbXW5hKl4xJELtddd90l/37vvfesNcXFxVasr69Ptf3R0VHVOmnCuPTa/Px81fa010BhYaEVq6ys\ntGKvvvqqFZuN14p0/DIzM63YuXPnEp6L38hFnmIufROFlIv0zQzSuvb2dium/baGmTz8xp0oAAAA\nBxRRAAAADiiiAAAAHFBEAQAAOAilsfzyRnKpYVdqyNY6duyYal1RUZEV0zaeSU1wXnKejdLT01Xr\nRkZGEpxJMKQmci2pIVlqkGxubnbex1z2/vvvf+Sajo4OKzY9Pe1rHmNjY6p1XhrLpQcTNm7cqNqe\nF34/tDJXLFy40IpJn/9+X2uS5cuXWzHpwSfpvRAlU1NTzq+VPiOlh8mys7OtmLY2mAnuRAEAADig\niAIAAHBAEQUAAOCAIgoAAMBBKI3ll5vJdNDL5ebm+phJ9EWpqTOIRsrZSGoWlprIJStXrvQ7nchI\nSUlRrdM+3HG5KF2PXhpnJU1NTVbMS/Ow9I0LUiOuJIjPoM7OTlXMb1ITuTQNe8EC+/6D39ffihUr\nrJiUn9RYPpdJx0D6tpCgcCcKAADAAUUUAACAA4ooAAAABxRRAAAADiLRWC5NAZaaxzIyMqyYNGX3\n/Pnzqv1euHDBirk2tV7J+vXrfd1elGinN0M/iXzLli0JziQ8fr+3ouzUqVNWTPqskmLSgwlSzG/S\n+9nLQz9aUpO2JIgHB6QHlXp7e62YNLHci+uvv96KlZSUWLHDhw9bsahPJw/CiRMnrFhQDffciQIA\nAHBAEQUAAOCAIgoAAMABRRQAAICDSDSWSw3jkszMTF/329DQoFqXk5Njxfr6+nzNBZhLUlNTrZi2\ngXhkZMRpn0lJSVbM78nhc4XUGB3ERHBJVlaWFRscHAwhE9n4+HjC9yE1zUtT6rW/s+Yy6XwEcY6u\nhDtRAAAADiiiAAAAHFBEAQAAOKCIAgAAcBBKY/nljYRSw6k0Jba/v9/XPAoLC62YNFl61apVqu1J\nzebt7e0zTwxzTn5+vmrdmTNnVOuSk+23rt9TlL3we5p9ZWXlR66JehO5l88v6aGauTLd3u/PdS/C\n+rxevny5FUtPT7di0kMXx48fT0hO0OFOFAAAgAOKKAAAAAcUUQAAAA4oogAAABzE4vF4PNAdxmIm\n4F0CAAA4uVrdwp0oAAAABxRRAAAADiiiAAAAHFBEAQAAOAhlYnksFgt8n1JTWBh5GBNMLkuXLlWt\nu3DhQsJz0ZKOizS1d2Jiwop5mVZdU1NjxQ4dOmTFonRc5nsuUcnDGDmXJUuWWLFFixZZsdTUVCsm\nXcunTp1yzkU6LtJ+JV4mz0f9HEU9l4KCAtX2Ojo6Ep5LEKRcpEnuubm5Vmx8fNyKDQ0NWbHGxkbn\nXK6EO1EAAAAOKKIAAAAcUEQBAAA4oIgCAABwEMrE8jBEvYHO71yysrJU6wYGBhKei5b2uFRUVKi2\n19DQkPBcguAlF6mZWdLf35/wXPwUlTyMkXMpKipSvba9vd2KFRcXq17b2tqqykU6LtLnw+LFi62Y\ndF309fWp8vNyjrwcA79zKSkpUa1raWnxNZfs7GzV9qQG6unpaV9zkWjzk37HeMmlqqpKtb3R0VHV\nOun3xOW5MLEcAADAZxRRAAAADiiiAAAAHFBEAQAAOAhlYnmU5eXlqdZJk3ylBr+wSBNcpdhs1NXV\nZcW0TYRz2aZNm1TrBgcHrZi2sdxvGRkZqnXDw8O+7bO0tFS1rrm52XkfYR1PLemBg6SkpBAy0Tco\nB0H7QE4QkpPtX8/SOYrS750gnD59WrVO+60dy5Yt85IOd6IAAABcUEQBAAA4oIgCAABwQBEFAADg\nYF43lqekpFgxqbG8u7vbikWpmW/Lli2qdXv27ElwJv6TzpF07BcsSPx/DxQUFKjWdXR0JDgTYxYu\nXOj82mPHjvmYCSReHnTQTuH2QvvgiTTFXIp5+XYAifQe106+1srNzVWtkx5q0E5t15I+v7QPU2in\nk/vN7/Mhka61np4e1Wula1L6faJ90ORKuBMFAADggCIKAADAAUUUAACAA4ooAAAAB/O6sTwtLc2K\nSdOcpcZyREsQzZXSBOGwZGZmWrGWlhYr1tTUFEQ6zvycRK7lZRL5XNHZ2alaF8QE7yAalL3wu4lc\nIjWWx+NxKzZXvnUiLJOTk1ZM+p0/E9yJAgAAcEARBQAA4MBTETU1NWU2btxo7rnnHmPM7//sVVdX\nZyorK80dd9xhent7fUkSAAAgajwVUU899ZSprq42sVjMGGPM9u3bTV1dnTlx4oS5/fbbzfbt231J\nEgAAIGqcO2UvXLhgXnrpJfP3f//35p//+Z+NMcbs3LnT7N271xhjzNatW01tbW2kC6lPfepTViwj\nI8OKffDBB1bs0KFDqn0EMUlbanwvKSmxYuXl5QnPRUtq6pdMTU1ZMb+byLXnSJpmL5EavP0mTe3V\nTvL1W05OjmpdEA26UfGH/7D8MKlRWHpAQCI1xI6NjaleK32jQVFRkRU7cuSIFXv//fdV+9BO/46S\nIP5Skp2drVq3atUq1bq58m0D2gcW/P5Mk96DXV1dnrbp/Bv+G9/4hvne9753yS+gtra2i2/OoqIi\n09bW5ik5AACAqHIqol588UVTWFhoNm7cKFZ2xvz+v8Sk/xoDAACYC5z+nPfGG2+YnTt3mpdeesmM\njo6a/v5+8/DDD5uioiLT2tpqiouLTUtLiyksLPQ7XwAAgISpr6839fX1qrVOd6K++93vmsbGRnP2\n7Fnz7LPPmk996lPm5z//ubn33nvNjh07jDHG7Nixw9x3330umwcAAAhFbW2tefzxxy/+39XE4lf6\ne5zS3r17zfe//32zc+dO093dbR588EFz/vx5U1FRYZ5//nmr4TAWi13xT4AAAABRcrW6xXMR5Wcy\nAAAAUXK1uoWJ5QAAAA4oogAAABxQRAEAADhwnljuRRjzo6S/Z4Y1xyrquSQn25eFNDlcsnDhQiv2\n8Y9/3IpJ05bffPNNKxbEcZGmp4+MjKhykSbvbt68WbVfabL54cOHrZh0jtauXWvF+vv7rdjw8LAV\n8zKpWcpl8eLFViw/P1+1vaamJismHXtNHtJ06ImJCVUe0vVYUFBgxTo6OlS5ROn9PBtz0a7T9tdK\n65YtW2bFpGuourraih08eNCKbdiwwYpJn6XPPPOMFYvSOZI+04aGhlTbk14rfQatW7fOir333ntW\nLIjjkpKSYsXGx8fVr+dOFAAAgAOKKAAAAAcUUQAAAA4oogAAAByEMmwzDNomx4qKCiuWkZFhxU6f\nPm3FpOZUL7lIgmi4XL58uRU7f/68antezJWm2PLyciu2ZMkSKyY1PWsby6N+XLSN5VLDqmtjudTU\nKr13JVLDuNRYnp6ebsXOnTtnxbTnR9qeRHNMjJmd14oX2vMrXWdBHBfpoYvu7m5VLn5/1mtfG8Rx\nKSkpsWLNzc2+5nL5t6UYI7+PpN/blx8Xhm0CAAD4jCIKAADAAUUUAACAA4ooAAAAB6FMLI+yBQuo\nK6WmvyAay6OutLTUii1atMiKSU3KjY2NCckpqqSG6aSkJCvW2dmp2l5OTs5HrpGah7WTliVSI6m2\nkVlL2zAOmTQNOwjSZ4EkrPMrfS5J778gSL9TpW9r8Jv07RmJOB9UDAAAAA4oogAAABxQRAEAADig\niAIAAHAwrxvLU1NTrVh7e7sVk5oXp6enE5LTRwliwLyXfUjNfBJpmqxE2ww5NTWlWudFYWGhal1X\nV1eCM9H7q7/6K9W6l156yYpduHBB9dqysjLVukSfI+la0e5TahiX3veDg4MzTwyzmnaqvKS/v9/5\ntQF/mciMSQ3j0u/FsH5XSr/LE4E7UQAAAA4oogAAABxQRAEAADigiAIAAHAwrxvLJRMTE1YsrMa4\nsJw7d875tePj4z5mop8gH0RjudQwrp24Pd9ITbHaRnWpkbevr89zTn9w2223qdZJ74OGhgbf8kC4\n8vPzrZj0fl69erVqe6dOnbJifn8uaR+A8NLQLn1jhTRhfL79XrwS7kQBAAA4oIgCAABwQBEFAADg\ngCIKAADAwbxuLB8bGws7hUBpJ263tbU57yMWi6nWZWdnq9ZlZWVZMalpube3V7U9LxobGxO+D7+9\n+OKLVmzVqlVWLCUlxYppG0eTk+2PEe2kecnIyIjT67QTnqWfVSL9/NKxC0taWlrYKURSaWmpal1R\nUZEVkxoBr9PXAAAgAElEQVTLpevgE5/4hBW75ZZbrNjvfvc7VS6SnJwc59dKtO9J6cGLAwcOWLET\nJ06otrd06VIrtmTJEtVrvZB+XulbSlw/b/6AO1EAAAAOKKIAAAAcUEQBAAA4oIgCAABwEItruzH9\n2mEspm4ABQAACNPV6hbuRAEAADigiAIAAHBAEQUAAOCAIgoAAMBBKBPLNVOttZOvtU3q0jrtPqSJ\nzJOTk6rXanORJuBKOjo6rFh7e7sV6+npcc5FOi7SdOR169ap9vHOO+8455Kenm7FpGPv5Xxoc9Fe\nL36bK7ksX77ciknn99ixYwnNw29SLtdee60VO3XqlOq10vtK2l5XV5cV27lzpxWTPr8k0iT3NWvW\nWLHMzEwrduHCBSt27tw5Kxalc7Ro0SIrNjAw4LyPxYsXWzHpc7O5udmKScde2t7KlStVuezbt0+1\nTvs+WrhwoRWTvnVC2l53d7evuUjHdHR0VLUPrZk8/MadKAAAAAcUUQAAAA4oogAAABxQRAEAADgI\npbFcI0pTzf1uWpZIDeOS/v5+531IjYBaGRkZVmxkZET1WqkpcXx8XPVaqWFQasKUYhMTE6p9aFVV\nVVmxs2fPWrGxsTFf9zvf5OXlWTFtc6qGdK1IvFw/UoNyUlKSFZM+5/73f/9XFSsrK3PMztv7JScn\nx4pJjeV+0/68bW1tqnVemsgl2od5grB06VIrpj0uEunzure314rl5+dbsaKiIl9z8buJ3CvuRAEA\nADigiAIAAHBAEQUAAOCAIgoAAMBBZBvLo0TbkO2lUVFq0tNub3h42IpJU4VXr14988T+j9REfuTI\nESumbdr1wu+GcQRDmmCdmppqxaanpxOah3T9+H3dXnfddVbslVdeUb1W20AtNfFKSktLrZj0sEdf\nX58Vk6asv/fee6r9euHlIZggSA8/SLQPREgPL0nN3EePHrViCxbo7oX4/YDU1NSUr9ubrbgTBQAA\n4IAiCgAAwAFFFAAAgAOKKAAAAAc0lkeENIVVahgPi3Y6uXYS+Wx07NixhO9DarT28tqoT0+PSnNq\nEA8rDA0NWbHa2lrVa/ft22fF1q5d6zWlS0gN/VLOYZEa3/2eOq4VpfdVlCale5lEPltxJwoAAMAB\nRRQAAIADiigAAAAHFFEAAAAOaCxXCKJ5UWqalBQUFFixjo4OKyY1hEpT0QH47+TJk75uT3rwRKu1\ntdWK+d1IX1xc7Ov2wmoYl9x6662qda+99przPgoLC1Xr2tvbnfcBWSwW8/R67kQBAAA4oIgCAABw\nQBEFAADggCIKAADAQSiN5YsWLbrk3/39/dYabbNXPB63YitXrnRLzBizYIFdVyYn24fJ78nc6enp\nVkyaEr5+/XrV9t544w0r1tDQMOO8EkU6plG3cOFCK6a9DpYvX27FsrOzrdihQ4dmntj/idIUZa3J\nycmwU0iI5uZm1bq77rrLin384x+3YkeOHLFi//AP/zDzxHywZMkSK1ZUVBRCJsHo7OxUrcvPz3d+\nbWVlpWqd1HCv/TYJyKQaYia4EwUAAOCAIgoAAMABRRQAAIADiigAAAAHsbjXrqqZ7jAW89zIBQAA\nEISr1S3ciQIAAHBAEQUAAOCAIgoAAMABRRQAAICDSEwsl6awSlNxe3p6rNj09LRqn1JTmHYqut+k\nXG655RYrJk0d96K4uNiKtbS0WLGkpCQrpj3OmzdvtmJZWVmq2H/+539aMekcpaamWjEv07ql7Y2O\njlox6fi1tbU571crrGtXmqju5dsF/KQ9JuvWrVNtz8uk+LDOjzT1f2Jiwoo9/PDDqu39x3/8h2rd\nXPnMjVIuixcvtmK9vb2q7Uk/h7QP6TNX+t2rPS7S7wnpM0P6ObZs2WLFXnnlFedc/DaTh9+4EwUA\nAOCAIgoAAMABRRQAAIADiigAAAAHoTSWS81sl+vq6gogk+hobm72dXsLFy60Yjk5OarXahtHJadO\nnbJiUnNgZWWl8z6khw78Pn6SIJrIo0TzPo26Y8eOWbHJyckQMvGf3z+Hl/c9vNE2kUu0TdCDg4PO\n+5BMTU1ZMe3PcfDgQV9zCRN3ogAAABxQRAEAADigiAIAAHAQSk/UbCP14CxYYNef0sBHaTihpKGh\nwYplZmaqXjs0NGTFxsfHrdjIyIhqe14sXbpUte7111933ofUYyUNfpP+Zi+ZyWA1PxUVFVkxbU+B\ndE3Otz5CjbnS/+TFvn37wk5h1khJSbFiUq+Y9rPFb+np6ap1QXzWeyENzp6tuBMFAADggCIKAADA\nAUUUAACAA4ooAAAAB7F4wF21sVjMGgQpNUH7Tfst3nl5eap15eXlVmx4eNiKnThxQpWL1BgtrdOe\nLunnkEjNyF6+OTs3N9eKSYM/29vbrZj2HEnN61JTf2dn5xXz/ChR/9b3tLQ0K6bNb3R01Ndcwjgu\nUcnDmNmZi/SelHj5bPb7uKxfv96KScNUpc8CKZe7777biu3Zs8eKSZ/rXki5SIOQtQ8l+Z2LdI6y\nsrKsWGlpqRWTft95yUU7INrvY3V5LrFY7Iq/e7kTBQAA4IAiCgAAwAFFFAAAgAPnIqq3t9c88MAD\nZu3ataa6utq89dZbpru729TV1ZnKykpzxx13ePpSRQAAgChznlj+ta99zXz60582v/zlL83k5KQZ\nGhoy3/nOd0xdXZ159NFHzZNPPmm2b99utm/f7luyUiNbc3Oz8/a0TY5S87XfzfCLFy9W7Veru7vb\nigXR7BpE4ez3t5F7oT2mfj+/ITXPSg8naFVUVHjIJrpWrVplxS5cuGDFvDTbw3/S56H0XpPeB1qf\n/exnrZg03d3vxvIgaJvDvfDyu1dL+mYQaYJ8mJzuRPX19ZlXX33VfOlLXzLGGJOcnGxycnLMzp07\nzdatW40xxmzdutW88MIL/mUKAAAQIU5F1NmzZ01BQYF55JFHzPXXX2++8pWvmKGhIdPW1nbx+8CK\niopMW1ubr8kCAABEhdOf8yYnJ82BAwfMj3/8Y3PDDTeYr3/969af7WKx2BX/1PHhLwWVbtcBAACE\nob6+3tTX16vWOhVRZWVlpqyszNxwww3GGGMeeOABs23bNlNcXGxaW1tNcXGxaWlpMYWFhfJOk51b\nsQAAABKmtrbW1NbWXvz3E088ccW1TtVMcXGxKS8vNydOnDCVlZVm9+7dpqamxtTU1JgdO3aYxx57\nzOzYscPcd9994uunpqY+ch+ZmZlWTDtlV0tq9pUasiUDAwMJz0WyfPlyK3bu3DnVa6VmTYlU/H74\n7uEfLFu2zIpt3LhRtY/du3er1kn6+vqsmDQpXYrl5+c771cS8MD/q9K8r2ZCOn5zwVz5j7iUlBTn\n13p5MKakpMSK+X3t9fT0qGJeSMdv7dq1Vuy1115z3of2YQ+//yKzYsUKX7enfZgnPT1dtU76xg+J\nNIk8ao3lzp8mP/rRj8yf/dmfmfHxcbNy5Urzs5/9zExNTZkHH3zQPP3006aiosI8//zzfuYKAAAQ\nGc5F1Pr1683bb79txb3cYQAAAJgt6OoGAABwQBEFAADgIBYPuDM2FotFqhkXAADgSq5Wt3AnCgAA\nwAFFFAAAgAOKKAAAAAcUUQAAAA5CGd37hy8pvpr29nbn7VdUVFixs2fPWrGqqirVOi/TfSVSg9qV\nvmfQT9I02eHhYVUu0nTy8+fPW7ENGzZYMemLqFtaWqyYl+Oind48MTFhxdatW2fFPvjgA1UuWVlZ\nVkyarC9N4Jc0NjZasbCuF0lYuSxatOiSf0tT66N0TC7P1xhjNm3aZMWkSdUHDhywYtJEcOma7+zs\ntGJROi7Se0N6T2pJ0+elb1eI+nsoOzvbiv3ha9U+yp49e3zNRfqsevDBB61YR0eHFfvNb36j2q90\n3qTrIErn6Eq4EwUAAOCAIgoAAMABRRQAAIADiigAAAAHoTSWa3hpFG5oaFC99vjx41ZManycK0ZG\nRlTrpCby3NxcKyY1lodl5cqVqnXHjh2zYocOHXLe7+DgoGqdtrEcsry8PN+2JV3L2u2fOXNGtU5q\niJUacaUm6J6eHtU+ZqMlS5ZYsdbWVuftScfPb9K59PtbN6RG6+bmZis2OjpqxaQHhiTaz3/J888/\nb8Wkh5KipLi42Irl5+dbMS/XnzHciQIAAHBCEQUAAOCAIgoAAMABRRQAAICDUBrLL2+cjFLTrd/T\nybWWLl2qWtfU1JTgTLw5ePBgwveRk5OT8H34TZpEDr3S0lKn191yyy1WTGri9fv89Pf3WzEvDzDM\nFStWrLBiXht7/ZSWlmbFpMZtv5v/e3t7rVhYv4ukhvHbbrtN9dq9e/eq1mkfBAqC14cEuBMFAADg\ngCIKAADAAUUUAACAA4ooAAAAB5GdWC5NIvebNJm7ra3Nio2NjSU8F+nnDWIar0SaRC5NWw5Lamqq\nFevs7FTF5rKioiIrJl3Ps9H09LRv25LeV9pJ5Frahx/6+vp83W/URamJXCJ9Dgfxu0gS1kTwm266\nyYpJk9Lfeust531MTU05v1ZLutakBz68HmfuRAEAADigiAIAAHBAEQUAAOCAIgoAAMBBKI3llzfq\nSdNagyBNpw2iiVwiTVH20hi9adMmK+alQXJkZMT5tUHwcqxisZiPmchuvvlmKyY1fZ8+fdp5H2E9\niFBTU2PFDh8+7Lw9aUJ0e3u707Zef/115zy8uP76661YSkqKFTt37pwVO378uBXLyMiwYtJnRtT5\n3cDvtyAanqNuzZo1Vky6Jr3wMvFd+oaToaEh1WsT0azPnSgAAAAHFFEAAAAOKKIAAAAcUEQBAAA4\nmH2diZeRmlDz8/NVr/3kJz9pxU6cOGHFsrOzVdsbGBhQrZNIjaNepjRL06u1vDTuSQoLC62Ya6Ow\n19dKtNOlpUZeqZk7Ly/POZcFC9z/u6arq8v5tV6UlZVZMamxXHv8pPdbSUmJY3bhkBpns7KyVOsk\npaWlVkzbWJ6UlGTFqqqqrFhTU5MV8/uhn4997GNWTLpWpAnZCEZjY6MVk6aT5+bmWjHpWpM+l6T3\ngkT6/V5cXKx6rfSQzqpVq1SvnQnuRAEAADigiAIAAHBAEQUAAOCAIgoAAMBBLB6PxwPdYSxmAt4l\nAACAk6vVLdyJAgAAcEARBQAA4IAiCgAAwAFFFAAAgINQJpbHYrHA9yk1hUkTf2tra5338bvf/c6K\nSVNdpSnF0jGRpphLhoeHVesk0nEJ4/wYE0wu2km50vT5uXxctKKSi5c8pOnfExMTVqyjo8OKSdP8\nBwcHrZj02TI1NaXKT0uaFC9Nm5Z+XmlieUpKihVrbm62YocOHVLlF5VrxRg5l9tuu82KdXd3WzFp\n4nZbW5sVk45famqqFevr67Ni2m9N6O/vV63Tko7LkiVLrNiNN95oxTZu3Kjax/e//30rNj4+rsrF\ny/Xyuc99TrXuueeeU+VyJdyJAgAAcEARBQAA4IAiCgAAwAFFFAAAgINQGsujQmr0lJrDJYsWLbJi\nUtNyb2/vzBP7P1LDuNRsnp+fb8U6Ozud9zsbpaenW7GRkRErJjUBA5KVK1daMW3DqZcmcmm/UoNt\nU1OT8z6OHTtmxaTm+rn8OSI1aWub5iVjY2OqmDaXKNm/f78Vk3KWHrxYvXq1FTt8+LA/iV1FYWGh\nap30+3MmuBMFAADggCIKAADAAUUUAACAA4ooAAAAB/O6sdwLqXF0aGjIiknTX72QJiFDP/F9dHTU\nik1PTyckpw9LSkqyYn5PsJZIjZ4S6doNy8KFCwPfvjSpWnp4JCxpaWlWTLqmJC0tLX6n40x6T3r5\nxgUvPvjgg4TvY/PmzQnfh9+k94I04V47ZV2yfPly59dq7dmzx4qVl5f7vh/uRAEAADigiAIAAHBA\nEQUAAOCAIgoAAMBBJLqUpebXKDW6SrT5paamqtZJTaxSE2Zra6tqewiGdN6CmD5cWlqqWtfX15fg\nTPyX6EZ/6fxIDxycPn06oXlcSVj71U5ulqaYe536HIYgHuxIRCNzGKT3pBSTrt1Tp05ZsRUrVviT\n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\nAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first fully connected layer, `fc6` (rectified)\n", + "\n", + "We show the output values and the histogram of the positive values" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['fc6'].data[4]\n", + "plt.subplot(2, 1, 1)\n", + "plt.plot(feat.flat)\n", + "plt.subplot(2, 1, 2)\n", + "_ = plt.hist(feat.flat[feat.flat > 0], bins=100)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nU5H09eF2OQuHDx8+PLHLv2TJEk2ePFnz5s3rrj6vxOXetm2bGhoaNHXq1Kra3rnlPvXUUyVV/vbu\n6upSTU2N0ul096PRatjedsstVf72/vrXv64f/ehHOuKIw5f9atjedsudSqUC397Gk6tUGJ/ujtj6\n9evV0NCgVatW6c4779STTz7Z4/dUKlVyPVTKOiq3nJXkiiuu0NatW9XY2Khhw4Zp/vz5UYcUiPb2\nds2ZM0eLFy/WgAEDevxWydu7vb1d559/vhYvXqz+/ftXxfY+4ogj1NjYqB07duiJJ57Q2rVre/xe\nqdu7cLkzmUzFb+//+I//0JAhQ1RbW2tbYyNV5vYuttxhbG/jyZWTDkaTbtiwYZKk4447Tuedd542\nbNigdDqt5uZmSVJTU5OGvP9hu8L1sWPHDg0fPjz8oA1xs5wjRozQ8OHDtSPvmxRJXf4hQ4Z0n3wu\nv/zy7ke7lbTcnZ2dmjNnji6++GLNnj1bUnVs79xyX3TRRd3LXQ3bO+fDH/6wPv/5z+vZZ5+tiu2d\nk1vuZ555puK395/+9CetXLlSo0eP1ty5c7VmzRpdfPHFFb+97Zb7kksuCWd7G2ktlqezs9P62Mc+\nZm3dutV67733Kq5Be0dHh/XOO+9YlmVZ7e3t1qc//WnrP//zP61vfOMb1qJFiyzLsqybbrqpV8PA\n9957z9qyZYv1sY99rLuBXBJs3bq1V4N2t8s5ZcoU66mnnrK6uroS0wCycLnfeOON7n/feuut1ty5\ncy3Lqpzl7urqsi6++GLr6quv7jG80rd3seWu9O391ltvWXv27LEsy7L27dtnTZs2zXr00UcrfnsX\nW+6mpqbucSpxe+fLZDLWOeecY1lW5R/f+fKXO4zj23hyZVmW9cc//tEaO3asNWbMGOvGG28MYhaR\n2bJlizV58mRr8uTJ1vjx47uXb/fu3dYZZ5xhnXDCCdaMGTO6D2DLsqwf/OAH1pgxY6yPf/zj1urV\nq6MK3bULL7zQGjZsmNW3b19rxIgR1i9+8QtPy/nMM89YEyZMsMaMGWN99atfjWJRXClc7nvuuce6\n+OKLrYkTJ1qTJk2y/v7v/95qbm7uHr8SlvvJJ5+0UqmUNXnyZKumpsaqqamxVq1aVfHb2265//jH\nP1b89n7++eet2tpaa/LkydbEiROtH/7wh5ZleTuPVcJyV/r2zpfJZLrfmqv07Z1v7dq13ct90UUX\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 16 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The second fully connected layer, `fc7` (rectified)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['fc7'].data[4]\n", + "plt.subplot(2, 1, 1)\n", + "plt.plot(feat.flat)\n", + "plt.subplot(2, 1, 2)\n", + "_ = plt.hist(feat.flat[feat.flat > 0], bins=100)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nuOMOSdI999yj559/Xrfeeuv+aYYNG6aVK1eaiRQAACBCQ4cO1RtvvGGkrMBvEQ4aNEhr1qzZ//81\na9Zo8ODB3aYxFSQAAECaBH5EeOKJJ+r111/X6tWrtWfPHt133306++yzTcYGAACQSoFrsHr16qXb\nbrtNZ555prq6unTZZZdp5MiRJmMDAABIpcBtsAAAAOAukqFyst4B6ZAhQ3T88cerqalJJ598siRp\n06ZNamlp0fDhwzVp0iRt3rx5//Q33nijjj32WI0YMUKPPvpoUmH7Nm3aNDU0NGjs2LH7PwuynosW\nLdLYsWN17LHH6sorr4x1HYJwW+8ZM2Zo8ODBampqUlNTkx5++OH9f8vKeq9Zs0YTJkzQ6NGjNWbM\nGN1yyy2Ssr/PK6131vf57t27NX78eDU2NmrUqFG69tprJWV/f1da76zv76Kuri41NTVp8uTJkrK/\nv4vK1zuW/e0Y1tnZ6QwdOtRZtWqVs2fPHmfcuHHOsmXLTC8mUUOGDHE2btzY7bOvfvWrzk033eQ4\njuO0tbU511xzjeM4jvPKK68448aNc/bs2eOsWrXKGTp0qNPV1RV7zEE89dRTzuLFi50xY8bs/8zP\neu7bt89xHMc56aSTnOeff95xHMf5+Mc/7jz88MMxr4k/bus9Y8YM53vf+16PabO03u3t7c6SJUsc\nx3Gcbdu2OcOHD3eWLVuW+X1eab3rYZ/v2LHDcRzH2bt3rzN+/Hjn6aefzvz+dhz39a6H/e04jvO9\n733P+cxnPuNMnjzZcZz6uKY7Ts/1jmN/G6/BqpcOSJ2yJ6uzZ89Wa2urJKm1tVWzZs2SJD3wwAO6\n8MIL1bt3bw0ZMkTDhg3TwoULY483iNNOO039+vXr9pmf9Xz++efV3t6ubdu27a/pu+SSS/bPYyu3\n9ZZ67nMpW+s9cOBANTY2SpL69OmjkSNHat26dZnf55XWW8r+Pj/kkEMkSXv27FFXV5f69euX+f0t\nua+3lP39vXbtWs2ZM0eXX375/nWth/3ttt6O40S+v40nWLZ2QGpSLpfTGWecoRNPPHF/P2AdHR1q\naGiQJDU0NKijo0OStH79+m7dV6R9e/hdz/LPBw0alNr1v/XWWzVu3Dhddtll+6vRs7req1ev1pIl\nSzR+/Pi62ufF9f7oRz8qKfv7fN++fWpsbFRDQ8P+x6T1sL/d1lvK/v6++uqr9d3vflcHHXTg1l8P\n+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\nAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final probability output, `prob`" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "feat = net.caffenet.blobs['prob'].data[4]\n", + "plt.plot(feat.flat)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 18, + "text": [ + "[]" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nbNTB34dJkv777d2brvtv/k266+uJJ9Lv2VLH1G3YEPHv//3ojx9s16502//RH0VcfXXEv/gXB7bb\nsO99L2LVqgP3h4YiTj01nV384AcP7LI+2MEzYf/jfxw4Keu3v50eH7hzZ8Sxx6Zf97e/HXHvvenX\nNeyuu9LH/uIv0vvDhxscLooPds89UXI2vFA4/DFhERGbNkX82397+PX27j0Qn08/nW774e/lsSJs\n586IT3wi/Z47EvbsqW0Gvre3fmOJGONkrS1lHsCR1Din/zu/M9rzlvqcpR978cWISZPSDT5tWvpN\n0d6efgPt2hUxYULE9OnpN/K2bekP9rnnRvzzf57+cm5pSX+YTzoprfl3f87R3i93udHeHxpKf3me\nemrE+98/+teYF889F/GDHxz+saPh/DDvvJP+0La2ptvmuOPSt08+mf6PdvbsdMp92PCPzKOPpi8m\nEyakHxu+DSv1PTPW/WrWHb42XZKkL3hJkr4gfPSjEUuXpt/zw8u+8EL6ff+zn6X/u3788TTYLroo\nfVHr7IyYODH92XnmmfQF4X//74j/9J/SXU4R6ed74YUDn+eYY9IX3NNPj7j55vTfsbMzfcH+6EfT\nF+JjjjlwIsqWlvTf+bvfTX9Op04t/jd+6630e+/tt9PtM2tWxOTJB86U//3vp8v+4z9GLFpUfE6w\noaGIvr50LA8+mN7+6389cMHh005Lt+3Bu2EP3na7d6fj/3f/Lr2cy2/8RjqW119Px/rJT6azBZMm\npTNA3/te+j3y6qvp75/jjkt/to89Nv06Xnklffyv/iqN3a1bI/7gDw59gZs3L+KMM9LdWaefnobW\nt7+dvohu354+3xlnpGN9+uk01o49Nv39d+qp6e/E005LX+y3bUvHPHFiup1nzUqD7ZRTIk44Id31\n+b73RSxenP5bPPpo+vi8eelzn3BC+jV+5CPp1xORPt8776TbYeHC9Pfn5MkHdq9GpCF30kkR/+pf\npW+/8510nQ9+MP13HN7FNXlyxG/9VvpzN3z76U/T392//GX673bGGREdHen2fuONNCZPOCHi+OPT\n5davT5+7tTXdjhddlL4dGjpwwexCIX2NSJKI//N/0u+zk08+sN3ffPPA99iECek2fOGFA7sNP/rR\n9PvgjjvS146INPj27ElD6j3vSb8vFixIP88VV0T8l/+SvuZt3Xogtt55J32dueqqdMboPe9J/z1+\n9KP0eZcsifj0pyNuuSU9e32SpNvmfe9L33/iiYj//t8jrrsu4sIL0zFFpG8nT05/tt79u2j452v4\n3/GYY9IZtD170t9d+/enPydJEvGBD6T/2fnoR4ujbd26dOaytTXdJj//efpa+973pjOff//36djP\nOSfdJtdeG7FmTRqWB/8hwvDPV5KkYzj22DRkZ8w48LEpUw4sV+mxpQcfCrFlS/q2uzvdtsOXV3rj\njfRrOPHE9N9q+N9r+PdAkqRf2+7dlX3uMgY3ukcffTRZsmTJyP0vfvGLyY033li0zMqVK5P169eP\n3J81a1aye/fustZNkiSZPn16EhFubm5ubm5ubrm/TZ8+vVQ6VaTkTNi8efNi69atsWPHjpg6dWrc\nddddsX79+qJlli1bFmvXro3ly5fHY489FieddFKceuqpMXHixDHXjYjYtm1bqSEAAByVSkZYa2tr\nrF27NpYsWRKFQiFWrFgR3d3dsW7duoiIWLlyZVx88cWxcePGmDFjRkyYMCFuv/32kusCABDRkiRH\nw5E7AADNJdMz5juZa74NDAzEb//2b8dZZ50VZ599dnzlK1+JiIif//znsWjRojjjjDNi8eLF8fpB\nfyb4pS99KWbOnBldXV1x//33ZzV0fq1QKMTcuXPjkksuiQjbrpm8/vrr8bGPfSy6u7vjzDPPjMcf\nf9z2ayJf+tKX4qyzzopzzjknPvGJT8Rbb71l++XUpz/96Tj11FPjnHPOGflYNdvqiSeeiHPOOSdm\nzpwZf/iHf1jeJ6/b0WUVGhoaSqZPn55s37492b9/fzJnzpxky5YtWQ2Hw3jppZeSJ598MkmSJHnz\nzTeTM844I9myZUvyp3/6p8maNWuSJEmSG2+8MfmzP/uzJEmS5Mc//nEyZ86cZP/+/cn27duT6dOn\nJ4VCIbPxkyRf/vKXk0984hPJJZdckiRJYts1kauvvjq59dZbkyRJkrfffjt5/fXXbb8msX379uS0\n005LfvWrXyVJkiS/93u/l9xxxx22X0499NBDyebNm5Ozzz575GOVbKt33nknSZIkmT9/fvL4448n\nSZIkS5cuTe67774xP3dmM2FO5pp/kydPjnPPPTciIo477rjo7u6OwcHBohP0XnPNNXHPPfdERMSG\nDRvi4x//eLS1tUVnZ2fMmDEj+ofP0EfD7dq1KzZu3Bif+cxnRk4jY9s1hzfeeCMefvjh+PSnPx0R\n6TG2J554ou3XJE444YRoa2uLffv2xdDQUOzbty+mTp1q++XUwoUL4+ThSxn8WiXb6vHHH4+XXnop\n3nzzzViwYEFERFx99dUj65SSWYSVcyJY8mPHjh3x5JNPxnnnnRcvv/xynHrqqRERceqpp8bLvz47\n44svvhgdHR0j69im2fqjP/qj+Ou//us45pgDP+a2XXPYvn17TJo0KT71qU/Fb/7mb8a1114be/fu\ntf2axCmnnBJ//Md/HL/xG78RU6dOjZNOOikWLVpk+zWRSrfVuz/e3t5e1jbMLMLKPREs2duzZ09c\nccUVcdNNN8Xxxx9f9FhLS0vJbWk7Z+Nb3/pWfOADH4i5c+eOejJl2y6/hoaGYvPmzfH7v//7sXnz\n5pgwYULceOONRcvYfvn1/PPPx9/8zd/Ejh074sUXX4w9e/bEN77xjaJlbL/mMda2qkVmEdbe3h4D\nB12/YWBgoKgiyYe33347rrjiirjqqqvi0ksvjYj0fwW7f33a4Jdeeik+8IEPRMSh23TXrl3R3t7e\n+EET3//+9+Pee++N0047LT7+8Y/Hgw8+GFdddZVt1yQ6Ojqio6Mj5s+fHxERH/vYx2Lz5s0xefJk\n268J/PCHP4zf+q3fiokTJ0Zra2tcfvnl8eijj9p+TaSS35UdHR3R3t4eu4avXRblb8PMIuzgE8Hu\n378/7rrrrli2bFlWw+EwkiSJFStWxJlnnhmf//znRz6+bNmy+OqvL7j31a9+dSTOli1bFnfeeWfs\n378/tm/fHlu3bh3ZP05jffGLX4yBgYHYvn173HnnnXHBBRfE17/+dduuSUyePDmmTZsWzz33XERE\nbNq0Kc4666y45JJLbL8m0NXVFY899lj88pe/jCRJYtOmTXHmmWfafk2k0t+VkydPjhNOOCEef/zx\nSJIkvv71r4+sU1Id/8CgYhs3bkzOOOOMZPr06ckXv/jFLIfCYTz88MNJS0tLMmfOnOTcc89Nzj33\n3OS+++5LfvaznyUXXnhhMnPmzGTRokXJa6+9NrLOX/7lXybTp09PZs2alfT29mY4eob19fWN/HWk\nbdc8nnrqqWTevHnJ7Nmzk8suuyx5/fXXbb8msmbNmuTMM89Mzj777OTqq69O9u/fb/vl1PLly5Mp\nU6YkbW1tSUdHR3LbbbdVta1++MMfJmeffXYyffr05A/+4A/K+txO1goAkIFMT9YKADBeiTAAgAyI\nMACADIgwAIAMiDAAgAyIMACADIgwAIAMiDAAgAz8fx1o94trs5o2AAAAAElFTkSuQmCC\n", + "text": [ + "" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the top 5 predicted labels" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "labels = np.loadtxt(caffe_root + 'data/ilsvrc12/synset_words.txt', str, delimiter='\\t')" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 19 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "top_k = net.caffenet.blobs['prob'].data[4].flatten().argsort()[-1:-6:-1]\n", + "print labels[top_k]" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "['n02808304 bath towel' 'n02869837 bonnet, poke bonnet'\n", + " 'n03124170 cowboy hat, ten-gallon hat' 'n04259630 sombrero'\n", + " 'n04209133 shower cap']\n" + ] + } + ], + "prompt_number": 20 + } + ], + "metadata": {} + } + ] +} \ No newline at end of file From 9de468220ed9976ed79518290ca07a2cb9af482e Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Mon, 17 Mar 2014 21:11:36 -0700 Subject: [PATCH 087/113] Add the feature and filter visualization example (Lena) to docs --- docs/index.md | 1 + docs/lena_imagenet.md | 280 ++++++++++++++++++ .../lena_imagenet_10_0.text | 8 + .../lena_imagenet_14_0.png | Bin 0 -> 167280 bytes .../lena_imagenet_14_0.text | 1 + .../lena_imagenet_16_0.png | Bin 0 -> 48740 bytes .../lena_imagenet_16_0.text | 1 + .../lena_imagenet_18_0.png | Bin 0 -> 109734 bytes .../lena_imagenet_18_0.text | 1 + .../lena_imagenet_20_0.png | Bin 0 -> 106842 bytes .../lena_imagenet_20_0.text | 1 + .../lena_imagenet_22_0.png | Bin 0 -> 31815 bytes .../lena_imagenet_22_0.text | 1 + .../lena_imagenet_24_0.png | Bin 0 -> 69889 bytes .../lena_imagenet_24_0.text | 1 + .../lena_imagenet_26_0.png | Bin 0 -> 76025 bytes .../lena_imagenet_26_0.text | 1 + .../lena_imagenet_28_0.png | Bin 0 -> 28800 bytes .../lena_imagenet_28_0.text | 1 + .../lena_imagenet_30_0.png | Bin 0 -> 20702 bytes .../lena_imagenet_30_0.text | 1 + .../lena_imagenet_32_0.png | Bin 0 -> 22051 bytes .../lena_imagenet_32_0.text | 1 + .../lena_imagenet_34_0.png | Bin 0 -> 23550 bytes .../lena_imagenet_34_0.text | 1 + .../lena_imagenet_36_0.text | 1 + .../lena_imagenet_36_1.png | Bin 0 -> 12819 bytes .../lena_imagenet_36_1.text | 1 + .../lena_imagenet_39_0.text | 3 + .../lena_imagenet_8_0.text | 15 + 30 files changed, 320 insertions(+) create mode 100644 docs/lena_imagenet.md create mode 100644 docs/lena_imagenet_files/lena_imagenet_10_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_14_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_14_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_16_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_16_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_18_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_18_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_20_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_20_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_22_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_22_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_24_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_24_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_26_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_26_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_28_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_28_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_30_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_30_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_32_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_32_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_34_0.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_34_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_36_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_36_1.png create mode 100644 docs/lena_imagenet_files/lena_imagenet_36_1.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_39_0.text create mode 100644 docs/lena_imagenet_files/lena_imagenet_8_0.text diff --git a/docs/index.md b/docs/index.md index 49c33279077..95d7ce5b2be 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,6 +37,7 @@ Quick Links * [Training ImageNet](imagenet_training.html): tutorial on end-to-end training of an ImageNet classifier. * [Running Pretrained ImageNet](imagenet_pretrained.html): simply runs in Python! * [Running Detection](imagenet_detection.html): run a pretrained model as a detector. +* [Visualizing Features and Filters](lena_imagenet.html): Lena viewed layer-by-layer. Citing Caffe diff --git a/docs/lena_imagenet.md b/docs/lena_imagenet.md new file mode 100644 index 00000000000..db4e2df38c3 --- /dev/null +++ b/docs/lena_imagenet.md @@ -0,0 +1,280 @@ +--- +layout: default +title: Caffe +--- + +Visualizing ImageNet Features and Filters +========================================= + +[View this page as an IPython Notebook](http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/filter_visualization/lena_imagenet.ipynb) + +--- + +Here we visualize filters and outputs using the network architecture proposed by +Krizhevsky et al. for ImageNet and implemented in `caffe`. + +(This page follows the DeCAF visualizations originally by Yangqing Jia.) + +First, import required modules and set plotting parameters + + + import numpy as np + import matplotlib.pyplot as plt + %matplotlib inline + + # normally this file is located in caffe/examples/filter_visualization + caffe_root = '../../' + import sys + sys.path.insert(0, caffe_root + 'python') + + import caffe + import caffe.imagenet + + plt.rcParams['figure.figsize'] = (10, 10) + plt.rcParams['image.interpolation'] = 'nearest' + plt.rcParams['image.cmap'] = 'gray' + +Load the net and specify test phase (since we are doing classification) and CPU +mode + + + net = caffe.imagenet.ImageNetClassifier(caffe_root + 'models/imagenet.prototxt', + caffe_root + 'models/caffe_reference_imagenet_model') + net.caffenet.set_phase_test() + net.caffenet.set_mode_cpu() + +Run a classification pass + + + scores = net.predict(caffe_root + 'examples/filter_visualization/lena.png') + +The layer features and their shapes (10 is the batch size, corresponding to the +the ten subcrops used by Krizhevsky et al.) + + + [(k, v.data.shape) for k, v in net.caffenet.blobs.items()] + + + + + [('data', (10, 3, 227, 227)), + ('conv1', (10, 96, 55, 55)), + ('pool1', (10, 96, 27, 27)), + ('norm1', (10, 96, 27, 27)), + ('conv2', (10, 256, 27, 27)), + ('pool2', (10, 256, 13, 13)), + ('norm2', (10, 256, 13, 13)), + ('conv3', (10, 384, 13, 13)), + ('conv4', (10, 384, 13, 13)), + ('conv5', (10, 256, 13, 13)), + ('pool5', (10, 256, 6, 6)), + ('fc6', (10, 4096, 1, 1)), + ('fc7', (10, 4096, 1, 1)), + ('fc8', (10, 1000, 1, 1)), + ('prob', (10, 1000, 1, 1))] + + + +The parameters and their shapes (each of these layers also has biases which are +omitted here) + + + [(k, v[0].data.shape) for k, v in net.caffenet.params.items()] + + + + + [('conv1', (96, 3, 11, 11)), + ('conv2', (256, 48, 5, 5)), + ('conv3', (384, 256, 3, 3)), + ('conv4', (384, 192, 3, 3)), + ('conv5', (256, 192, 3, 3)), + ('fc6', (1, 1, 4096, 9216)), + ('fc7', (1, 1, 4096, 4096)), + ('fc8', (1, 1, 1000, 4096))] + + + +Helper functions for visualization + + + # our network takes BGR images, so we need to switch color channels + def showimage(im): + if im.ndim == 3: + im = im[:, :, ::-1] + plt.imshow(im) + + # take an array of shape (n, height, width) or (n, height, width, channels) + # and visualize each (height, width) thing in a grid of size approx. sqrt(n) by sqrt(n) + def vis_square(data, padsize=1, padval=0): + data -= data.min() + data /= data.max() + + # force the number of filters to be square + n = int(np.ceil(np.sqrt(data.shape[0]))) + padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3) + data = np.pad(data, padding, mode='constant', constant_values=(padval, padval)) + + # tile the filters into an image + data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1))) + data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:]) + + showimage(data) + +The input image + + + # index four is the center crop + image = net.caffenet.blobs['data'].data[4].copy() + image -= image.min() + image /= image.max() + showimage(image.transpose(1, 2, 0)) + + +![png](lena_imagenet_files/lena_imagenet_14_0.png) + + +The first layer filters, `conv1` + + + # the parameters are a list of [weights, biases] + filters = net.caffenet.params['conv1'][0].data + vis_square(filters.transpose(0, 2, 3, 1)) + + +![png](lena_imagenet_files/lena_imagenet_16_0.png) + + +The first layer output, `conv1` (rectified responses of the filters above, first +36 only) + + + feat = net.caffenet.blobs['conv1'].data[4, :36] + vis_square(feat, padval=1) + + +![png](lena_imagenet_files/lena_imagenet_18_0.png) + + +The second layer filters, `conv2` + +There are 128 filters, each of which has dimension 5 x 5 x 48. We show only the +first 48 filters, with each channel shown separately, so that each filter is a +row. + + + filters = net.caffenet.params['conv2'][0].data + vis_square(filters[:48].reshape(48**2, 5, 5)) + + +![png](lena_imagenet_files/lena_imagenet_20_0.png) + + +The second layer output, `conv2` (rectified, only the first 36 of 256 channels) + + + feat = net.caffenet.blobs['conv2'].data[4, :36] + vis_square(feat, padval=1) + + +![png](lena_imagenet_files/lena_imagenet_22_0.png) + + +The third layer output, `conv3` (rectified, all 384 channels) + + + feat = net.caffenet.blobs['conv3'].data[4] + vis_square(feat, padval=0.5) + + +![png](lena_imagenet_files/lena_imagenet_24_0.png) + + +The fourth layer output, `conv4` (rectified, all 384 channels) + + + feat = net.caffenet.blobs['conv4'].data[4] + vis_square(feat, padval=0.5) + + +![png](lena_imagenet_files/lena_imagenet_26_0.png) + + +The fifth layer output, `conv5` (rectified, all 256 channels) + + + feat = net.caffenet.blobs['conv5'].data[4] + vis_square(feat, padval=0.5) + + +![png](lena_imagenet_files/lena_imagenet_28_0.png) + + +The fifth layer after pooling, `pool5` + + + feat = net.caffenet.blobs['pool5'].data[4] + vis_square(feat, padval=1) + + +![png](lena_imagenet_files/lena_imagenet_30_0.png) + + +The first fully connected layer, `fc6` (rectified) + +We show the output values and the histogram of the positive values + + + feat = net.caffenet.blobs['fc6'].data[4] + plt.subplot(2, 1, 1) + plt.plot(feat.flat) + plt.subplot(2, 1, 2) + _ = plt.hist(feat.flat[feat.flat > 0], bins=100) + + +![png](lena_imagenet_files/lena_imagenet_32_0.png) + + +The second fully connected layer, `fc7` (rectified) + + + feat = net.caffenet.blobs['fc7'].data[4] + plt.subplot(2, 1, 1) + plt.plot(feat.flat) + plt.subplot(2, 1, 2) + _ = plt.hist(feat.flat[feat.flat > 0], bins=100) + + +![png](lena_imagenet_files/lena_imagenet_34_0.png) + + +The final probability output, `prob` + + + feat = net.caffenet.blobs['prob'].data[4] + plt.plot(feat.flat) + + + + + [] + + + + +![png](lena_imagenet_files/lena_imagenet_36_1.png) + + +And the top 5 predicted labels + + + labels = np.loadtxt(caffe_root + 'data/ilsvrc12/synset_words.txt', str, delimiter='\t') + + + top_k = net.caffenet.blobs['prob'].data[4].flatten().argsort()[-1:-6:-1] + print labels[top_k] + + ['n02808304 bath towel' 'n02869837 bonnet, poke bonnet' + 'n03124170 cowboy hat, ten-gallon hat' 'n04259630 sombrero' + 'n04209133 shower cap'] + diff --git a/docs/lena_imagenet_files/lena_imagenet_10_0.text b/docs/lena_imagenet_files/lena_imagenet_10_0.text new file mode 100644 index 00000000000..4c6065c294d --- /dev/null +++ b/docs/lena_imagenet_files/lena_imagenet_10_0.text @@ -0,0 +1,8 @@ +[('conv1', (96, 3, 11, 11)), + ('conv2', (256, 48, 5, 5)), + ('conv3', (384, 256, 3, 3)), + ('conv4', (384, 192, 3, 3)), + ('conv5', (256, 192, 3, 3)), + ('fc6', (1, 1, 4096, 9216)), + ('fc7', (1, 1, 4096, 4096)), + ('fc8', (1, 1, 1000, 4096))] \ No newline at end of file diff --git a/docs/lena_imagenet_files/lena_imagenet_14_0.png b/docs/lena_imagenet_files/lena_imagenet_14_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe56feaf65b4e308f4400a13964f623a09ec0ca GIT binary patch literal 167280 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