summaryrefslogtreecommitdiff
path: root/examples/imagenet
diff options
context:
space:
mode:
authorEvan Shelhamer <shelhamer@imaginarynumber.net>2014-06-11 15:22:04 -0700
committerEvan Shelhamer <shelhamer@imaginarynumber.net>2014-06-11 15:22:04 -0700
commita7e397abbda52c0b90323c23ab95bdeabee90a98 (patch)
tree9c5b1876e29dddaa0c669dc483ff49d6b7cc088c /examples/imagenet
parent63c7429d9a1f8a5688889fc6c65046c0683e6e3d (diff)
parent9882d47dad8ee3f0b5fa0c0831fdc3355ee3255d (diff)
downloadcaffeonacl-a7e397abbda52c0b90323c23ab95bdeabee90a98.tar.gz
caffeonacl-a7e397abbda52c0b90323c23ab95bdeabee90a98.tar.bz2
caffeonacl-a7e397abbda52c0b90323c23ab95bdeabee90a98.zip
Merge pull request #482 from shelhamer/rcnn-detector-example
Make R-CNN the Caffe detection example
Diffstat (limited to 'examples/imagenet')
-rwxr-xr-xexamples/imagenet/get_caffe_rcnn_imagenet_model.sh27
-rw-r--r--examples/imagenet/rcnn_imagenet_deploy.prototxt207
2 files changed, 234 insertions, 0 deletions
diff --git a/examples/imagenet/get_caffe_rcnn_imagenet_model.sh b/examples/imagenet/get_caffe_rcnn_imagenet_model.sh
new file mode 100755
index 00000000..7cd47fa3
--- /dev/null
+++ b/examples/imagenet/get_caffe_rcnn_imagenet_model.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env sh
+# This scripts downloads the Caffe R-CNN ImageNet
+# for ILSVRC13 detection.
+
+MODEL=caffe_rcnn_imagenet_model
+CHECKSUM=42c1556d2d47a9128c4a90e0a9c5341c
+
+if [ -f $MODEL ]; then
+ echo "Model already exists. Checking md5..."
+ 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
+ else
+ echo "Model checksum is incorrect. Need to download again."
+ fi
+fi
+
+echo "Downloading..."
+
+wget --no-check-certificate https://www.dropbox.com/s/0i3etlgmsmgf5ei/$MODEL
+echo "Done. Please run this command again to verify that checksum = $CHECKSUM."
diff --git a/examples/imagenet/rcnn_imagenet_deploy.prototxt b/examples/imagenet/rcnn_imagenet_deploy.prototxt
new file mode 100644
index 00000000..ef75a0a5
--- /dev/null
+++ b/examples/imagenet/rcnn_imagenet_deploy.prototxt
@@ -0,0 +1,207 @@
+name: "R-CNN-ilsvrc13"
+input: "data"
+input_dim: 10
+input_dim: 3
+input_dim: 227
+input_dim: 227
+layers {
+ name: "conv1"
+ type: CONVOLUTION
+ bottom: "data"
+ top: "conv1"
+ convolution_param {
+ num_output: 96
+ kernel_size: 11
+ stride: 4
+ }
+}
+layers {
+ name: "relu1"
+ type: RELU
+ bottom: "conv1"
+ top: "conv1"
+}
+layers {
+ name: "pool1"
+ type: POOLING
+ bottom: "conv1"
+ top: "pool1"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ }
+}
+layers {
+ name: "norm1"
+ type: LRN
+ bottom: "pool1"
+ top: "norm1"
+ lrn_param {
+ local_size: 5
+ alpha: 0.0001
+ beta: 0.75
+ }
+}
+layers {
+ name: "conv2"
+ type: CONVOLUTION
+ bottom: "norm1"
+ top: "conv2"
+ convolution_param {
+ num_output: 256
+ pad: 2
+ kernel_size: 5
+ group: 2
+ }
+}
+layers {
+ name: "relu2"
+ type: RELU
+ bottom: "conv2"
+ top: "conv2"
+}
+layers {
+ name: "pool2"
+ type: POOLING
+ bottom: "conv2"
+ top: "pool2"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ }
+}
+layers {
+ name: "norm2"
+ type: LRN
+ bottom: "pool2"
+ top: "norm2"
+ lrn_param {
+ local_size: 5
+ alpha: 0.0001
+ beta: 0.75
+ }
+}
+layers {
+ name: "conv3"
+ type: CONVOLUTION
+ bottom: "norm2"
+ top: "conv3"
+ convolution_param {
+ num_output: 384
+ pad: 1
+ kernel_size: 3
+ }
+}
+layers {
+ name: "relu3"
+ type: RELU
+ bottom: "conv3"
+ top: "conv3"
+}
+layers {
+ name: "conv4"
+ type: CONVOLUTION
+ bottom: "conv3"
+ top: "conv4"
+ convolution_param {
+ num_output: 384
+ pad: 1
+ kernel_size: 3
+ group: 2
+ }
+}
+layers {
+ name: "relu4"
+ type: RELU
+ bottom: "conv4"
+ top: "conv4"
+}
+layers {
+ name: "conv5"
+ type: CONVOLUTION
+ bottom: "conv4"
+ top: "conv5"
+ convolution_param {
+ num_output: 256
+ pad: 1
+ kernel_size: 3
+ group: 2
+ }
+}
+layers {
+ name: "relu5"
+ type: RELU
+ bottom: "conv5"
+ top: "conv5"
+}
+layers {
+ name: "pool5"
+ type: POOLING
+ bottom: "conv5"
+ top: "pool5"
+ pooling_param {
+ pool: MAX
+ kernel_size: 3
+ stride: 2
+ }
+}
+layers {
+ name: "fc6"
+ type: INNER_PRODUCT
+ bottom: "pool5"
+ top: "fc6"
+ inner_product_param {
+ num_output: 4096
+ }
+}
+layers {
+ name: "relu6"
+ type: RELU
+ bottom: "fc6"
+ top: "fc6"
+}
+layers {
+ name: "drop6"
+ type: DROPOUT
+ bottom: "fc6"
+ top: "fc6"
+ dropout_param {
+ dropout_ratio: 0.5
+ }
+}
+layers {
+ name: "fc7"
+ type: INNER_PRODUCT
+ bottom: "fc6"
+ top: "fc7"
+ inner_product_param {
+ num_output: 4096
+ }
+}
+layers {
+ name: "relu7"
+ type: RELU
+ bottom: "fc7"
+ top: "fc7"
+}
+layers {
+ name: "drop7"
+ type: DROPOUT
+ bottom: "fc7"
+ top: "fc7"
+ dropout_param {
+ dropout_ratio: 0.5
+ }
+}
+# R-CNN classification layer made from R-CNN ILSVRC13 SVMs.
+layers {
+ name: "fc-rcnn"
+ type: INNER_PRODUCT
+ bottom: "fc7"
+ top: "fc-rcnn"
+ inner_product_param {
+ num_output: 200
+ }
+}