-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Detectnet doesn't always place bounding box and mAP is always zero with custom dataset. #1384
Comments
Did you specify the Custom Class field when you created your own dataset? |
No, I didn't. I thought that if I used "car" as the label, it was not necessary. What do you recommend me to specify in that field? |
https://github.com/NVIDIA/DIGITS/blob/master/digits/extensions/data/objectDetection/README.md |
That's correct. @ls27706 do you think an upright bounding box is a good locater for your objects? Don't you think semantic segmentation such as in this medical imaging example would be more appropriate? Object detection and image segmentation actually share a lot of common traits: the feature extractor is very similar (FCN type of network) but the difference is in the network output. It takes some effort to tune the bounding box regressor in Detectnet. In semantic image segmentation you do not have to do that though you need to post-process the network output to locate the area of interest. |
@gheinrich Thanks for the answers, I really appreciate that you guys are investing your time to help me. The reason for using object detection instead of image segmentation was that we already had the bounding boxes located manually by experts. We cannot spend all the resources needed to manually label the regions to segment the images (we have more than 120k images and we are only doing an internship). In addition, the outputs we desire is one point more or less in the center of the blood vessel... The aim is not to fit perfectly the blood vessel, but to mimic the bounding boxes placed by the doctor. Do you still recommend image segmentation? What do you think may be causing our algorithm to not place always the bounding box? It would be much easier and faster to us if we could keep working on object detection instead of changing to image segmentation. |
@ls27706 So far, I have no idea how to solve it. I think that this kind of failure is very probably related to the setting of network or dataset. //////////////////////////////////////////////////////////////////////////////// @gheinrich Can you give some advises? Thanks. |
@look-recognize Hey, thanks for your reply! It's good to know I'm not the only one having issues with the mAP and the bounding boxes placement. Anyway, I think our problems come from a different source. I would appreciate if you could modify your post so the thread is more readable (for instance, you could upload the code in a txt and then insert it in your post: Your network.txt) or create a new issue, to avoid divert from my problem. The reason I think we don't have the same problem source is because you have less than 200 images and have trained only for 30 epoch. I have 120k images (very different images from the ones detectnet has been trained btw) and I have been training the network for more than 500 epoch. Here you can find some issues on this forum where they discuss your problem, normally they say that you have to wait a little bit longer and add more images: https://github.com/NVIDIA/DIGITS/issues/1279 Furthermore, I have some questions: |
I think this problem rises from the fact that for Fine-tuning the DetectNet, some layers must be renamed but the author of the DetectNet tutorial has missed that. otherwise a pre-trained network should converge much faster than this otherwise it is training from scratch! |
Hi, @ls27706 Thanks for your clarification and suggestion about this issue. For your questions:
|
@ls27706
You can understand Detectnet as a network that does two things at the same time:
The |
Hello @ls27706. Here is an explanation to what could be happening. The coverage map you see is actually the predicted offset for the bounding box corner at each pixel. The coverage map shows the likelihood that an object is present at each location. The clustering layer that post-processes the DetectNet output applies a threshold based on the coverage value, so even though the coverage map shows that the network is sensitive to the presence of the objects, the coverage value may not be exceeding this threshold. Credit where credit is due to @jbarker-nvidia. |
Hi, I just want to add that I'm trying to use DetectNet for areal object detection, and I'm having the same problem that @ls27706 described so I'll be interested to see what it takes to solve this problem. I'm trying to compare DetectNet against several other networks and network structures, like SegNet and VGGNet. In my application, detection or segmentation are both valid approaches. I have tried many variations on my KITTI output, and I have yet to get a DetectNet network to place a single BBOX on my images. I haven't figured out the problem yet, but after a lot of trial and error, I have two hunches:
|
You shouldn't need to include any boxes explicitely marked as Dontcare. Also you should be fine with DIGITS 4. What do your training losses and metrics look like? In particular, are any of them pegged at zero for the whole time? The most common cause of issues I've seen with training is that there is a problem with the data format at ingest time causing the database to not contain any valid bounding boxes for objects of interest. |
I'd confirm that, after tweaking the input parameters of on the protox I am getting amazingly good results Any ideas on what to modify for multi class detection? I've seen this: |
What input parameters did you modify? |
@lesterlo In input_shape check the dims, also in the layer with the name cluster you have you make it suit your dimensions, sometimes you might see your mAP not improving but if you eval one image in the bbox/regressor you can see a box being generated, that depends on the parameters of the cluster, as I said, you need to resize according to your image size and the minimum size of the object you are trying to detect. |
My image size is 1280x1024 and bounding box size is above 50x50;how to set cluster layer parameters{ |
We are using Digit 4 detectnet for detecting and tracking tiny object in our work.We have created a dataset of 1299 images for training ;107 images for the validation along with their labels.The format of labels used is mentioned below:Car 0.0 0 0.0 1153.5 122.5 1194.5 158.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0.We took image size 10001000 and bounding box size above 5050; I have used the network of KITTI DATASET |
@sulthanashafi I had a similar situation, and these were the steps I followed to alleviate the flat graph:
NOTE: You can use any size image for training. It does not have to be 1248x384. Please ensure the 'necessary' modifications are made to the network provided here. You may also want to consider revisiting Point 2. Kind Regards, |
Iam really thankful for the response given in time and will try with the customNetwork you provided.May i also know about the pertained weight’s you have used.
… On 24-Mar-2017, at 8:06 AM, shreyasramesh ***@***.***> wrote:
@sulthanashafi <https://github.com/sulthanashafi> I had a similar situation, and these were the steps I followed to alleviate the flat graph:
I made sure that all my images were 1248x384, object sizes were at least 50px50p and the bounding boxes actually were bounding the object correctly.
My training set & validation set sizes were increased - Somewhere around 2.5K images for training and 500 images for validation.
Used the following custom DetectNet Network -
customNetwork.txt <https://github.com/NVIDIA/DIGITS/files/866700/customNetwork.txt>
NOTE: You can use any size image for training. It does not have to be 1248x384. Please ensure the 'necessary' modifications are made to the network provided here. You may also want to consider revisiting Point 2.
After that, you can use the network attached in Point 3 and see if it helps your case.
Kind Regards,
Shreyas Ramesh.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckEGshUGHreKN_0ytCpxGnxx5rInsks5roywzgaJpZM4LfTqE>.
|
You can use the vanilla blvc_GoogLeNet model for pre-trained weights as suggested by the DetectNet blog. |
Hi,
I have got really good response for my input when i changed my custom net
as mentioned.However not drawing boundingbox.So, i have increased my
dataset to 6000 training and 650 validation images.but unfortunately ,iam
facing another problem of loading the dataset.
Error message:File "/home/sfm/digits/digits/tools/create_generic_db.py",
line 247, in run
entry_value = self.extension.encode_entry(entry_id)
File "/home/sfm/digits/digits/extensions/data/objectDetection/data.py",
line 57, in encode_entry
img = digits.utils.image.load_image(image_filename)
File "/home/sfm/digits/digits/utils/image.py", line 67, in load_image
raise errors.LoadImageError, 'IOError: %s' % e.message
LoadImageError: IOError: image file is truncated (0 bytes not processed)
I have tried to add the changes in the image.py as mentioned down:
from PIL import ImageFileImageFile.LOAD_TRUNCATED_IMAGES = True
But it is still giving this error.Please suggest if you have resolved
this type of problem?I have used png and txt files.
On 24-Mar-2017, at 8:06 AM, shreyasramesh <notifications@github.com> wrote:
@sulthanashafi <https://github.com/sulthanashafi> I had a similar
situation, and these were the steps I followed to alleviate the flat graph:
1. I made sure that all my images were 1248x384, object sizes were at
least 50px50p and the bounding boxes actually were bounding the object
correctly.
2. My training set & validation set sizes were increased - Somewhere
around 2.5K images for training and 500 images for validation.
3. Used the following custom DetectNet Network -
customNetwork.txt
<https://github.com/NVIDIA/DIGITS/files/866700/customNetwork.txt>
NOTE: You can use any size image for training. It does not have to be
1248x384. Please ensure the 'necessary' modifications are made to the
network provided here. You may also want to consider revisiting Point 2.
After that, you can use the network attached in Point 3 and see if it helps
your case.
Kind Regards,
Shreyas Ramesh.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AZZckEGshUGHreKN_0ytCpxGnxx5rInsks5roywzgaJpZM4LfTqE>
.
|
Unfortunately, I haven't come across the creation of data set issue that you currently face. The best way around this maybe to try and create data sets of incremental image chunks, say 1.5k, 2k, 2.5k images and so on. I should have added a disclaimer in my previous post that my model did not predict the bounding boxes as well. I wasn't very concerned of no bounding boxes because my requirement was satisfied through the coverage prediction (pretty good). The bounding boxes not appearing may have something to do with the coverage or clustering threshold. That's just a loose guess. If you find a way around the problems, do let me know :) |
I have solved the problem of truncation n it was due to image corruption .Evenafter ,modifying the custom net as you suggested,iam unable to get the boundingbox yet.My object size is 20X20 pixels and bounding box of size 50x50.how can i adjust stride value along with other parameters.Please help me to find it. |
Also iam attaching the part of log file of a running model.07:31:38.303081 10805 net.cpp:264] This network produces output precision |
Thanks for the file. Will compare with my results and let you know ASAP. https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa Meanwhile, please check this publicly available prototext and see if this makes sense for your problem at hand. If it does, tune your images to fit the above prototext image format: 1280x1280 instead of 1000x1000. https://devblogs.nvidia.com/parallelforall/exploring-spacenet-dataset-using-digits/ |
Really thankful.Meanwhile i will check with the trained nets mentioned.
… On 10-Apr-2017, at 3:45 PM, shreyasramesh ***@***.***> wrote:
Thanks for the file. Will compare with my results and let you know ASAP.
https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa <https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa>
Meanwhile, please check this publicly available prototext and see if this makes sense for your problem at hand. If it does, tune your images to fit the above prototext image format: 1280x1280 instead of 1000x1000.
https://devblogs.nvidia.com/parallelforall/exploring-spacenet-dataset-using-digits/ <https://devblogs.nvidia.com/parallelforall/exploring-spacenet-dataset-using-digits/>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckCDkLdqVsyfZX4qfn8iHRbSKqNbyks5rugFBgaJpZM4LfTqE>.
|
Iam attaching a custom code for trying on your dataset changing the stride value.Hope it will work for you.Also have you got to suggest any modification in my dataset.
On 10-Apr-2017, at 3:45 PM, shreyasramesh ***@***.***> wrote:
Thanks for the file. Will compare with my results and let you know ASAP.
https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa <https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa>
Meanwhile, please check this publicly available prototext and see if this makes sense for your problem at hand. If it does, tune your images to fit the above prototext image format: 1280x1280 instead of 1000x1000.
https://devblogs.nvidia.com/parallelforall/exploring-spacenet-dataset-using-digits/ <https://devblogs.nvidia.com/parallelforall/exploring-spacenet-dataset-using-digits/>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckCDkLdqVsyfZX4qfn8iHRbSKqNbyks5rugFBgaJpZM4LfTqE>.
# DetectNet network
# Data/Input layers
name: "DetectNet"
layer {
name: "train_data"
type: "Data"
top: "data"
data_param {
backend: LMDB
source: "examples/kitti/kitti_train_images.lmdb"
batch_size: 10
}
include: { phase: TRAIN }
}
layer {
name: "train_label"
type: "Data"
top: "label"
data_param {
backend: LMDB
source: "examples/kitti/kitti_train_labels.lmdb"
batch_size: 10
}
include: { phase: TRAIN }
}
layer {
name: "val_data"
type: "Data"
top: "data"
data_param {
backend: LMDB
source: "examples/kitti/kitti_test_images.lmdb"
batch_size: 6
}
include: { phase: TEST stage: "val" }
}
layer {
name: "val_label"
type: "Data"
top: "label"
data_param {
backend: LMDB
source: "examples/kitti/kitti_test_labels.lmdb"
batch_size: 6
}
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_data"
type: "Input"
top: "data"
input_param {
shape {
dim: 1
dim: 3
dim: 384
dim: 1248
}
}
include: { phase: TEST not_stage: "val" }
}
# Data transformation layers
layer {
name: "train_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 8
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 1248
image_size_y: 384
crop_bboxes: true
object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
}
detectnet_augmentation_param: {
crop_prob: 1
shift_x: 32
shift_y: 32
flip_prob: 0.5
rotation_prob: 0
max_rotate_degree: 5
scale_prob: 0.4
scale_min: 0.8
scale_max: 1.2
hue_rotation_prob: 0.8
hue_rotation: 30
desaturation_prob: 0.8
desaturation_max: 0.8
}
transform_param: {
mean_value: 127
}
include: { phase: TRAIN }
}
layer {
name: "val_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 8
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 1248
image_size_y: 384
crop_bboxes: false
object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
}
transform_param: {
mean_value: 127
}
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_transform"
type: "Power"
bottom: "data"
top: "transformed_data"
power_param {
shift: -127
}
include: { phase: TEST not_stage: "val" }
}
# Label conversion layers
layer {
name: "slice-label"
type: "Slice"
bottom: "transformed_label"
top: "foreground-label"
top: "bbox-label"
top: "size-label"
top: "obj-label"
top: "coverage-label"
slice_param {
slice_dim: 1
slice_point: 1
slice_point: 5
slice_point: 7
slice_point: 8
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage-block"
type: "Concat"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
top: "coverage-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "size-block"
type: "Concat"
bottom: "size-label"
bottom: "size-label"
top: "size-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "obj-block"
type: "Concat"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
top: "obj-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-label-norm"
type: "Eltwise"
bottom: "bbox-label"
bottom: "size-block"
top: "bbox-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-obj-norm"
type: "Eltwise"
bottom: "bbox-label-norm"
bottom: "obj-block"
top: "bbox-obj-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
######################################################################
# Start of convolutional network
######################################################################
layer {
name: "conv1/7x7_s2"
type: "Convolution"
bottom: "transformed_data"
top: "conv1/7x7_s2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 3
kernel_size: 7
stride: 2
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv1/relu_7x7"
type: "ReLU"
bottom: "conv1/7x7_s2"
top: "conv1/7x7_s2"
}
layer {
name: "pool1/3x3_s2"
type: "Pooling"
bottom: "conv1/7x7_s2"
top: "pool1/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "pool1/norm1"
type: "LRN"
bottom: "pool1/3x3_s2"
top: "pool1/norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv2/3x3_reduce"
type: "Convolution"
bottom: "pool1/norm1"
top: "conv2/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3_reduce"
type: "ReLU"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3_reduce"
}
layer {
name: "conv2/3x3"
type: "Convolution"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3"
type: "ReLU"
bottom: "conv2/3x3"
top: "conv2/3x3"
}
layer {
name: "conv2/norm2"
type: "LRN"
bottom: "conv2/3x3"
top: "conv2/norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "pool2/3x3_s2"
type: "Pooling"
bottom: "conv2/norm2"
top: "pool2/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "inception_3a/1x1"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_1x1"
type: "ReLU"
bottom: "inception_3a/1x1"
top: "inception_3a/1x1"
}
layer {
name: "inception_3a/3x3_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3_reduce"
}
layer {
name: "inception_3a/3x3"
type: "Convolution"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3"
type: "ReLU"
bottom: "inception_3a/3x3"
top: "inception_3a/3x3"
}
layer {
name: "inception_3a/5x5_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5_reduce"
}
layer {
name: "inception_3a/5x5"
type: "Convolution"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5"
type: "ReLU"
bottom: "inception_3a/5x5"
top: "inception_3a/5x5"
}
layer {
name: "inception_3a/pool"
type: "Pooling"
bottom: "pool2/3x3_s2"
top: "inception_3a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3a/pool_proj"
type: "Convolution"
bottom: "inception_3a/pool"
top: "inception_3a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_pool_proj"
type: "ReLU"
bottom: "inception_3a/pool_proj"
top: "inception_3a/pool_proj"
}
layer {
name: "inception_3a/output"
type: "Concat"
bottom: "inception_3a/1x1"
bottom: "inception_3a/3x3"
bottom: "inception_3a/5x5"
bottom: "inception_3a/pool_proj"
top: "inception_3a/output"
}
layer {
name: "inception_3b/1x1"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_1x1"
type: "ReLU"
bottom: "inception_3b/1x1"
top: "inception_3b/1x1"
}
layer {
name: "inception_3b/3x3_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3_reduce"
}
layer {
name: "inception_3b/3x3"
type: "Convolution"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3"
type: "ReLU"
bottom: "inception_3b/3x3"
top: "inception_3b/3x3"
}
layer {
name: "inception_3b/5x5_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5_reduce"
}
layer {
name: "inception_3b/5x5"
type: "Convolution"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5"
type: "ReLU"
bottom: "inception_3b/5x5"
top: "inception_3b/5x5"
}
layer {
name: "inception_3b/pool"
type: "Pooling"
bottom: "inception_3a/output"
top: "inception_3b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3b/pool_proj"
type: "Convolution"
bottom: "inception_3b/pool"
top: "inception_3b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_pool_proj"
type: "ReLU"
bottom: "inception_3b/pool_proj"
top: "inception_3b/pool_proj"
}
layer {
name: "inception_3b/output"
type: "Concat"
bottom: "inception_3b/1x1"
bottom: "inception_3b/3x3"
bottom: "inception_3b/5x5"
bottom: "inception_3b/pool_proj"
top: "inception_3b/output"
}
layer {
name: "pool3/3x3_s2"
type: "Pooling"
bottom: "inception_3b/output"
top: "pool3/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 1
stride: 1
}
}
layer {
name: "inception_4a/1x1"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_1x1"
type: "ReLU"
bottom: "inception_4a/1x1"
top: "inception_4a/1x1"
}
layer {
name: "inception_4a/3x3_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3_reduce"
}
layer {
name: "inception_4a/3x3"
type: "Convolution"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 208
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3"
type: "ReLU"
bottom: "inception_4a/3x3"
top: "inception_4a/3x3"
}
layer {
name: "inception_4a/5x5_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5_reduce"
}
layer {
name: "inception_4a/5x5"
type: "Convolution"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5"
type: "ReLU"
bottom: "inception_4a/5x5"
top: "inception_4a/5x5"
}
layer {
name: "inception_4a/pool"
type: "Pooling"
bottom: "pool3/3x3_s2"
top: "inception_4a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4a/pool_proj"
type: "Convolution"
bottom: "inception_4a/pool"
top: "inception_4a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_pool_proj"
type: "ReLU"
bottom: "inception_4a/pool_proj"
top: "inception_4a/pool_proj"
}
layer {
name: "inception_4a/output"
type: "Concat"
bottom: "inception_4a/1x1"
bottom: "inception_4a/3x3"
bottom: "inception_4a/5x5"
bottom: "inception_4a/pool_proj"
top: "inception_4a/output"
}
layer {
name: "inception_4b/1x1"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_1x1"
type: "ReLU"
bottom: "inception_4b/1x1"
top: "inception_4b/1x1"
}
layer {
name: "inception_4b/3x3_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3_reduce"
}
layer {
name: "inception_4b/3x3"
type: "Convolution"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 224
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3"
type: "ReLU"
bottom: "inception_4b/3x3"
top: "inception_4b/3x3"
}
layer {
name: "inception_4b/5x5_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5_reduce"
}
layer {
name: "inception_4b/5x5"
type: "Convolution"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5"
type: "ReLU"
bottom: "inception_4b/5x5"
top: "inception_4b/5x5"
}
layer {
name: "inception_4b/pool"
type: "Pooling"
bottom: "inception_4a/output"
top: "inception_4b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4b/pool_proj"
type: "Convolution"
bottom: "inception_4b/pool"
top: "inception_4b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_pool_proj"
type: "ReLU"
bottom: "inception_4b/pool_proj"
top: "inception_4b/pool_proj"
}
layer {
name: "inception_4b/output"
type: "Concat"
bottom: "inception_4b/1x1"
bottom: "inception_4b/3x3"
bottom: "inception_4b/5x5"
bottom: "inception_4b/pool_proj"
top: "inception_4b/output"
}
layer {
name: "inception_4c/1x1"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_1x1"
type: "ReLU"
bottom: "inception_4c/1x1"
top: "inception_4c/1x1"
}
layer {
name: "inception_4c/3x3_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3_reduce"
}
layer {
name: "inception_4c/3x3"
type: "Convolution"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3"
type: "ReLU"
bottom: "inception_4c/3x3"
top: "inception_4c/3x3"
}
layer {
name: "inception_4c/5x5_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5_reduce"
}
layer {
name: "inception_4c/5x5"
type: "Convolution"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5"
type: "ReLU"
bottom: "inception_4c/5x5"
top: "inception_4c/5x5"
}
layer {
name: "inception_4c/pool"
type: "Pooling"
bottom: "inception_4b/output"
top: "inception_4c/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4c/pool_proj"
type: "Convolution"
bottom: "inception_4c/pool"
top: "inception_4c/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_pool_proj"
type: "ReLU"
bottom: "inception_4c/pool_proj"
top: "inception_4c/pool_proj"
}
layer {
name: "inception_4c/output"
type: "Concat"
bottom: "inception_4c/1x1"
bottom: "inception_4c/3x3"
bottom: "inception_4c/5x5"
bottom: "inception_4c/pool_proj"
top: "inception_4c/output"
}
layer {
name: "inception_4d/1x1"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_1x1"
type: "ReLU"
bottom: "inception_4d/1x1"
top: "inception_4d/1x1"
}
layer {
name: "inception_4d/3x3_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 144
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3_reduce"
}
layer {
name: "inception_4d/3x3"
type: "Convolution"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 288
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3"
type: "ReLU"
bottom: "inception_4d/3x3"
top: "inception_4d/3x3"
}
layer {
name: "inception_4d/5x5_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5_reduce"
}
layer {
name: "inception_4d/5x5"
type: "Convolution"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5"
type: "ReLU"
bottom: "inception_4d/5x5"
top: "inception_4d/5x5"
}
layer {
name: "inception_4d/pool"
type: "Pooling"
bottom: "inception_4c/output"
top: "inception_4d/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4d/pool_proj"
type: "Convolution"
bottom: "inception_4d/pool"
top: "inception_4d/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_pool_proj"
type: "ReLU"
bottom: "inception_4d/pool_proj"
top: "inception_4d/pool_proj"
}
layer {
name: "inception_4d/output"
type: "Concat"
bottom: "inception_4d/1x1"
bottom: "inception_4d/3x3"
bottom: "inception_4d/5x5"
bottom: "inception_4d/pool_proj"
top: "inception_4d/output"
}
layer {
name: "inception_4e/1x1"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_1x1"
type: "ReLU"
bottom: "inception_4e/1x1"
top: "inception_4e/1x1"
}
layer {
name: "inception_4e/3x3_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3_reduce"
}
layer {
name: "inception_4e/3x3"
type: "Convolution"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3"
type: "ReLU"
bottom: "inception_4e/3x3"
top: "inception_4e/3x3"
}
layer {
name: "inception_4e/5x5_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5_reduce"
}
layer {
name: "inception_4e/5x5"
type: "Convolution"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5"
type: "ReLU"
bottom: "inception_4e/5x5"
top: "inception_4e/5x5"
}
layer {
name: "inception_4e/pool"
type: "Pooling"
bottom: "inception_4d/output"
top: "inception_4e/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4e/pool_proj"
type: "Convolution"
bottom: "inception_4e/pool"
top: "inception_4e/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_pool_proj"
type: "ReLU"
bottom: "inception_4e/pool_proj"
top: "inception_4e/pool_proj"
}
layer {
name: "inception_4e/output"
type: "Concat"
bottom: "inception_4e/1x1"
bottom: "inception_4e/3x3"
bottom: "inception_4e/5x5"
bottom: "inception_4e/pool_proj"
top: "inception_4e/output"
}
layer {
name: "inception_5a/1x1"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_1x1"
type: "ReLU"
bottom: "inception_5a/1x1"
top: "inception_5a/1x1"
}
layer {
name: "inception_5a/3x3_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3_reduce"
}
layer {
name: "inception_5a/3x3"
type: "Convolution"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3"
type: "ReLU"
bottom: "inception_5a/3x3"
top: "inception_5a/3x3"
}
layer {
name: "inception_5a/5x5_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5_reduce"
}
layer {
name: "inception_5a/5x5"
type: "Convolution"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5"
type: "ReLU"
bottom: "inception_5a/5x5"
top: "inception_5a/5x5"
}
layer {
name: "inception_5a/pool"
type: "Pooling"
bottom: "inception_4e/output"
top: "inception_5a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5a/pool_proj"
type: "Convolution"
bottom: "inception_5a/pool"
top: "inception_5a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_pool_proj"
type: "ReLU"
bottom: "inception_5a/pool_proj"
top: "inception_5a/pool_proj"
}
layer {
name: "inception_5a/output"
type: "Concat"
bottom: "inception_5a/1x1"
bottom: "inception_5a/3x3"
bottom: "inception_5a/5x5"
bottom: "inception_5a/pool_proj"
top: "inception_5a/output"
}
layer {
name: "inception_5b/1x1"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_1x1"
type: "ReLU"
bottom: "inception_5b/1x1"
top: "inception_5b/1x1"
}
layer {
name: "inception_5b/3x3_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 1
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3_reduce"
}
layer {
name: "inception_5b/3x3"
type: "Convolution"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3"
type: "ReLU"
bottom: "inception_5b/3x3"
top: "inception_5b/3x3"
}
layer {
name: "inception_5b/5x5_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5_reduce"
}
layer {
name: "inception_5b/5x5"
type: "Convolution"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5"
type: "ReLU"
bottom: "inception_5b/5x5"
top: "inception_5b/5x5"
}
layer {
name: "inception_5b/pool"
type: "Pooling"
bottom: "inception_5a/output"
top: "inception_5b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5b/pool_proj"
type: "Convolution"
bottom: "inception_5b/pool"
top: "inception_5b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_pool_proj"
type: "ReLU"
bottom: "inception_5b/pool_proj"
top: "inception_5b/pool_proj"
}
layer {
name: "inception_5b/output"
type: "Concat"
bottom: "inception_5b/1x1"
bottom: "inception_5b/3x3"
bottom: "inception_5b/5x5"
bottom: "inception_5b/pool_proj"
top: "inception_5b/output"
}
layer {
name: "pool5/drop_s1"
type: "Dropout"
bottom: "inception_5b/output"
top: "pool5/drop_s1"
dropout_param {
dropout_ratio: 0.4
}
}
layer {
name: "cvg/classifier"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "cvg/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 1
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
layer {
name: "coverage/sig"
type: "Sigmoid"
bottom: "cvg/classifier"
top: "coverage"
}
layer {
name: "bbox/regressor"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "bboxes"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 4
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
######################################################################
# End of convolutional network
######################################################################
# Convert bboxes
layer {
name: "bbox_mask"
type: "Eltwise"
bottom: "bboxes"
bottom: "coverage-block"
top: "bboxes-masked"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-norm"
type: "Eltwise"
bottom: "bboxes-masked"
bottom: "size-block"
top: "bboxes-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-obj-norm"
type: "Eltwise"
bottom: "bboxes-masked-norm"
bottom: "obj-block"
top: "bboxes-obj-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Loss layers
layer {
name: "bbox_loss"
type: "L1Loss"
bottom: "bboxes-obj-masked-norm"
bottom: "bbox-obj-label-norm"
top: "loss_bbox"
loss_weight: 2
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage_loss"
type: "EuclideanLoss"
bottom: "coverage"
bottom: "coverage-label"
top: "loss_coverage"
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Cluster bboxes
layer {
type: 'Python'
name: 'cluster'
bottom: 'coverage'
bottom: 'bboxes'
top: 'bbox-list'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterDetections'
param_str : '1248, 352, 8, 0.6, 3, 0.02, 22, 1'
}
include: { phase: TEST }
}
# Calculate mean average precision
layer {
type: 'Python'
name: 'cluster_gt'
bottom: 'coverage-label'
bottom: 'bbox-label'
top: 'bbox-list-label'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterGroundtruth'
param_str : '1248, 352, 8, 1'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'score'
bottom: 'bbox-list-label'
bottom: 'bbox-list'
top: 'bbox-list-scored'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'ScoreDetections'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'mAP'
bottom: 'bbox-list-scored'
top: 'mAP'
top: 'precision'
top: 'recall'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'mAP'
param_str : '1248, 352, 8'
}
include: { phase: TEST stage: "val" }
}
|
Did the custom script produce bounding boxes for your dataset?
Sorry, got very busy yesterday. I'll definitely have a look today!
…On Apr 11, 2017 10:57 AM, "sulthanashafi" ***@***.***> wrote:
Iam attaching a custom code for trying on your dataset changing the stride
value.Hope it will work for you.Also have you got to suggest any
modification in my dataset.
> On 10-Apr-2017, at 3:45 PM, shreyasramesh ***@***.***>
wrote:
>
> Thanks for the file. Will compare with my results and let you know ASAP.
>
> https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa
<https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa>
> Meanwhile, please check this publicly available prototext and see if
this makes sense for your problem at hand. If it does, tune your images to
fit the above prototext image format: 1280x1280 instead of 1000x1000.
>
> https://devblogs.nvidia.com/parallelforall/exploring-
spacenet-dataset-using-digits/ <https://devblogs.nvidia.com/
parallelforall/exploring-spacenet-dataset-using-digits/>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub <
#1384 (comment)>, or
mute the thread <https://github.com/notifications/unsubscribe-auth/
AZZckCDkLdqVsyfZX4qfn8iHRbSKqNbyks5rugFBgaJpZM4LfTqE>.
>
# DetectNet network
# Data/Input layers
name: "DetectNet"
layer {
name: "train_data"
type: "Data"
top: "data"
data_param {
backend: LMDB
source: "examples/kitti/kitti_train_images.lmdb"
batch_size: 10
}
include: { phase: TRAIN }
}
layer {
name: "train_label"
type: "Data"
top: "label"
data_param {
backend: LMDB
source: "examples/kitti/kitti_train_labels.lmdb"
batch_size: 10
}
include: { phase: TRAIN }
}
layer {
name: "val_data"
type: "Data"
top: "data"
data_param {
backend: LMDB
source: "examples/kitti/kitti_test_images.lmdb"
batch_size: 6
}
include: { phase: TEST stage: "val" }
}
layer {
name: "val_label"
type: "Data"
top: "label"
data_param {
backend: LMDB
source: "examples/kitti/kitti_test_labels.lmdb"
batch_size: 6
}
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_data"
type: "Input"
top: "data"
input_param {
shape {
dim: 1
dim: 3
dim: 384
dim: 1248
}
}
include: { phase: TEST not_stage: "val" }
}
# Data transformation layers
layer {
name: "train_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 8
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 1248
image_size_y: 384
crop_bboxes: true
object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
}
detectnet_augmentation_param: {
crop_prob: 1
shift_x: 32
shift_y: 32
flip_prob: 0.5
rotation_prob: 0
max_rotate_degree: 5
scale_prob: 0.4
scale_min: 0.8
scale_max: 1.2
hue_rotation_prob: 0.8
hue_rotation: 30
desaturation_prob: 0.8
desaturation_max: 0.8
}
transform_param: {
mean_value: 127
}
include: { phase: TRAIN }
}
layer {
name: "val_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 8
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 1248
image_size_y: 384
crop_bboxes: false
object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
}
transform_param: {
mean_value: 127
}
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_transform"
type: "Power"
bottom: "data"
top: "transformed_data"
power_param {
shift: -127
}
include: { phase: TEST not_stage: "val" }
}
# Label conversion layers
layer {
name: "slice-label"
type: "Slice"
bottom: "transformed_label"
top: "foreground-label"
top: "bbox-label"
top: "size-label"
top: "obj-label"
top: "coverage-label"
slice_param {
slice_dim: 1
slice_point: 1
slice_point: 5
slice_point: 7
slice_point: 8
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage-block"
type: "Concat"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
top: "coverage-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "size-block"
type: "Concat"
bottom: "size-label"
bottom: "size-label"
top: "size-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "obj-block"
type: "Concat"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
top: "obj-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-label-norm"
type: "Eltwise"
bottom: "bbox-label"
bottom: "size-block"
top: "bbox-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-obj-norm"
type: "Eltwise"
bottom: "bbox-label-norm"
bottom: "obj-block"
top: "bbox-obj-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
######################################################################
# Start of convolutional network
######################################################################
layer {
name: "conv1/7x7_s2"
type: "Convolution"
bottom: "transformed_data"
top: "conv1/7x7_s2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 3
kernel_size: 7
stride: 2
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv1/relu_7x7"
type: "ReLU"
bottom: "conv1/7x7_s2"
top: "conv1/7x7_s2"
}
layer {
name: "pool1/3x3_s2"
type: "Pooling"
bottom: "conv1/7x7_s2"
top: "pool1/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "pool1/norm1"
type: "LRN"
bottom: "pool1/3x3_s2"
top: "pool1/norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv2/3x3_reduce"
type: "Convolution"
bottom: "pool1/norm1"
top: "conv2/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3_reduce"
type: "ReLU"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3_reduce"
}
layer {
name: "conv2/3x3"
type: "Convolution"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3"
type: "ReLU"
bottom: "conv2/3x3"
top: "conv2/3x3"
}
layer {
name: "conv2/norm2"
type: "LRN"
bottom: "conv2/3x3"
top: "conv2/norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "pool2/3x3_s2"
type: "Pooling"
bottom: "conv2/norm2"
top: "pool2/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "inception_3a/1x1"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_1x1"
type: "ReLU"
bottom: "inception_3a/1x1"
top: "inception_3a/1x1"
}
layer {
name: "inception_3a/3x3_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3_reduce"
}
layer {
name: "inception_3a/3x3"
type: "Convolution"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3"
type: "ReLU"
bottom: "inception_3a/3x3"
top: "inception_3a/3x3"
}
layer {
name: "inception_3a/5x5_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5_reduce"
}
layer {
name: "inception_3a/5x5"
type: "Convolution"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5"
type: "ReLU"
bottom: "inception_3a/5x5"
top: "inception_3a/5x5"
}
layer {
name: "inception_3a/pool"
type: "Pooling"
bottom: "pool2/3x3_s2"
top: "inception_3a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3a/pool_proj"
type: "Convolution"
bottom: "inception_3a/pool"
top: "inception_3a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_pool_proj"
type: "ReLU"
bottom: "inception_3a/pool_proj"
top: "inception_3a/pool_proj"
}
layer {
name: "inception_3a/output"
type: "Concat"
bottom: "inception_3a/1x1"
bottom: "inception_3a/3x3"
bottom: "inception_3a/5x5"
bottom: "inception_3a/pool_proj"
top: "inception_3a/output"
}
layer {
name: "inception_3b/1x1"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_1x1"
type: "ReLU"
bottom: "inception_3b/1x1"
top: "inception_3b/1x1"
}
layer {
name: "inception_3b/3x3_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3_reduce"
}
layer {
name: "inception_3b/3x3"
type: "Convolution"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3"
type: "ReLU"
bottom: "inception_3b/3x3"
top: "inception_3b/3x3"
}
layer {
name: "inception_3b/5x5_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5_reduce"
}
layer {
name: "inception_3b/5x5"
type: "Convolution"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5"
type: "ReLU"
bottom: "inception_3b/5x5"
top: "inception_3b/5x5"
}
layer {
name: "inception_3b/pool"
type: "Pooling"
bottom: "inception_3a/output"
top: "inception_3b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3b/pool_proj"
type: "Convolution"
bottom: "inception_3b/pool"
top: "inception_3b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_pool_proj"
type: "ReLU"
bottom: "inception_3b/pool_proj"
top: "inception_3b/pool_proj"
}
layer {
name: "inception_3b/output"
type: "Concat"
bottom: "inception_3b/1x1"
bottom: "inception_3b/3x3"
bottom: "inception_3b/5x5"
bottom: "inception_3b/pool_proj"
top: "inception_3b/output"
}
layer {
name: "pool3/3x3_s2"
type: "Pooling"
bottom: "inception_3b/output"
top: "pool3/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 1
stride: 1
}
}
layer {
name: "inception_4a/1x1"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_1x1"
type: "ReLU"
bottom: "inception_4a/1x1"
top: "inception_4a/1x1"
}
layer {
name: "inception_4a/3x3_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3_reduce"
}
layer {
name: "inception_4a/3x3"
type: "Convolution"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 208
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3"
type: "ReLU"
bottom: "inception_4a/3x3"
top: "inception_4a/3x3"
}
layer {
name: "inception_4a/5x5_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5_reduce"
}
layer {
name: "inception_4a/5x5"
type: "Convolution"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5"
type: "ReLU"
bottom: "inception_4a/5x5"
top: "inception_4a/5x5"
}
layer {
name: "inception_4a/pool"
type: "Pooling"
bottom: "pool3/3x3_s2"
top: "inception_4a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4a/pool_proj"
type: "Convolution"
bottom: "inception_4a/pool"
top: "inception_4a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_pool_proj"
type: "ReLU"
bottom: "inception_4a/pool_proj"
top: "inception_4a/pool_proj"
}
layer {
name: "inception_4a/output"
type: "Concat"
bottom: "inception_4a/1x1"
bottom: "inception_4a/3x3"
bottom: "inception_4a/5x5"
bottom: "inception_4a/pool_proj"
top: "inception_4a/output"
}
layer {
name: "inception_4b/1x1"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_1x1"
type: "ReLU"
bottom: "inception_4b/1x1"
top: "inception_4b/1x1"
}
layer {
name: "inception_4b/3x3_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3_reduce"
}
layer {
name: "inception_4b/3x3"
type: "Convolution"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 224
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3"
type: "ReLU"
bottom: "inception_4b/3x3"
top: "inception_4b/3x3"
}
layer {
name: "inception_4b/5x5_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5_reduce"
}
layer {
name: "inception_4b/5x5"
type: "Convolution"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5"
type: "ReLU"
bottom: "inception_4b/5x5"
top: "inception_4b/5x5"
}
layer {
name: "inception_4b/pool"
type: "Pooling"
bottom: "inception_4a/output"
top: "inception_4b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4b/pool_proj"
type: "Convolution"
bottom: "inception_4b/pool"
top: "inception_4b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_pool_proj"
type: "ReLU"
bottom: "inception_4b/pool_proj"
top: "inception_4b/pool_proj"
}
layer {
name: "inception_4b/output"
type: "Concat"
bottom: "inception_4b/1x1"
bottom: "inception_4b/3x3"
bottom: "inception_4b/5x5"
bottom: "inception_4b/pool_proj"
top: "inception_4b/output"
}
layer {
name: "inception_4c/1x1"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_1x1"
type: "ReLU"
bottom: "inception_4c/1x1"
top: "inception_4c/1x1"
}
layer {
name: "inception_4c/3x3_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3_reduce"
}
layer {
name: "inception_4c/3x3"
type: "Convolution"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3"
type: "ReLU"
bottom: "inception_4c/3x3"
top: "inception_4c/3x3"
}
layer {
name: "inception_4c/5x5_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5_reduce"
}
layer {
name: "inception_4c/5x5"
type: "Convolution"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5"
type: "ReLU"
bottom: "inception_4c/5x5"
top: "inception_4c/5x5"
}
layer {
name: "inception_4c/pool"
type: "Pooling"
bottom: "inception_4b/output"
top: "inception_4c/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4c/pool_proj"
type: "Convolution"
bottom: "inception_4c/pool"
top: "inception_4c/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_pool_proj"
type: "ReLU"
bottom: "inception_4c/pool_proj"
top: "inception_4c/pool_proj"
}
layer {
name: "inception_4c/output"
type: "Concat"
bottom: "inception_4c/1x1"
bottom: "inception_4c/3x3"
bottom: "inception_4c/5x5"
bottom: "inception_4c/pool_proj"
top: "inception_4c/output"
}
layer {
name: "inception_4d/1x1"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_1x1"
type: "ReLU"
bottom: "inception_4d/1x1"
top: "inception_4d/1x1"
}
layer {
name: "inception_4d/3x3_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 144
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3_reduce"
}
layer {
name: "inception_4d/3x3"
type: "Convolution"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 288
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3"
type: "ReLU"
bottom: "inception_4d/3x3"
top: "inception_4d/3x3"
}
layer {
name: "inception_4d/5x5_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5_reduce"
}
layer {
name: "inception_4d/5x5"
type: "Convolution"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5"
type: "ReLU"
bottom: "inception_4d/5x5"
top: "inception_4d/5x5"
}
layer {
name: "inception_4d/pool"
type: "Pooling"
bottom: "inception_4c/output"
top: "inception_4d/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4d/pool_proj"
type: "Convolution"
bottom: "inception_4d/pool"
top: "inception_4d/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_pool_proj"
type: "ReLU"
bottom: "inception_4d/pool_proj"
top: "inception_4d/pool_proj"
}
layer {
name: "inception_4d/output"
type: "Concat"
bottom: "inception_4d/1x1"
bottom: "inception_4d/3x3"
bottom: "inception_4d/5x5"
bottom: "inception_4d/pool_proj"
top: "inception_4d/output"
}
layer {
name: "inception_4e/1x1"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_1x1"
type: "ReLU"
bottom: "inception_4e/1x1"
top: "inception_4e/1x1"
}
layer {
name: "inception_4e/3x3_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3_reduce"
}
layer {
name: "inception_4e/3x3"
type: "Convolution"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3"
type: "ReLU"
bottom: "inception_4e/3x3"
top: "inception_4e/3x3"
}
layer {
name: "inception_4e/5x5_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5_reduce"
}
layer {
name: "inception_4e/5x5"
type: "Convolution"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5"
type: "ReLU"
bottom: "inception_4e/5x5"
top: "inception_4e/5x5"
}
layer {
name: "inception_4e/pool"
type: "Pooling"
bottom: "inception_4d/output"
top: "inception_4e/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4e/pool_proj"
type: "Convolution"
bottom: "inception_4e/pool"
top: "inception_4e/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_pool_proj"
type: "ReLU"
bottom: "inception_4e/pool_proj"
top: "inception_4e/pool_proj"
}
layer {
name: "inception_4e/output"
type: "Concat"
bottom: "inception_4e/1x1"
bottom: "inception_4e/3x3"
bottom: "inception_4e/5x5"
bottom: "inception_4e/pool_proj"
top: "inception_4e/output"
}
layer {
name: "inception_5a/1x1"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_1x1"
type: "ReLU"
bottom: "inception_5a/1x1"
top: "inception_5a/1x1"
}
layer {
name: "inception_5a/3x3_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3_reduce"
}
layer {
name: "inception_5a/3x3"
type: "Convolution"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3"
type: "ReLU"
bottom: "inception_5a/3x3"
top: "inception_5a/3x3"
}
layer {
name: "inception_5a/5x5_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5_reduce"
}
layer {
name: "inception_5a/5x5"
type: "Convolution"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5"
type: "ReLU"
bottom: "inception_5a/5x5"
top: "inception_5a/5x5"
}
layer {
name: "inception_5a/pool"
type: "Pooling"
bottom: "inception_4e/output"
top: "inception_5a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5a/pool_proj"
type: "Convolution"
bottom: "inception_5a/pool"
top: "inception_5a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_pool_proj"
type: "ReLU"
bottom: "inception_5a/pool_proj"
top: "inception_5a/pool_proj"
}
layer {
name: "inception_5a/output"
type: "Concat"
bottom: "inception_5a/1x1"
bottom: "inception_5a/3x3"
bottom: "inception_5a/5x5"
bottom: "inception_5a/pool_proj"
top: "inception_5a/output"
}
layer {
name: "inception_5b/1x1"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_1x1"
type: "ReLU"
bottom: "inception_5b/1x1"
top: "inception_5b/1x1"
}
layer {
name: "inception_5b/3x3_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 1
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3_reduce"
}
layer {
name: "inception_5b/3x3"
type: "Convolution"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3"
type: "ReLU"
bottom: "inception_5b/3x3"
top: "inception_5b/3x3"
}
layer {
name: "inception_5b/5x5_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5_reduce"
}
layer {
name: "inception_5b/5x5"
type: "Convolution"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5"
type: "ReLU"
bottom: "inception_5b/5x5"
top: "inception_5b/5x5"
}
layer {
name: "inception_5b/pool"
type: "Pooling"
bottom: "inception_5a/output"
top: "inception_5b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5b/pool_proj"
type: "Convolution"
bottom: "inception_5b/pool"
top: "inception_5b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_pool_proj"
type: "ReLU"
bottom: "inception_5b/pool_proj"
top: "inception_5b/pool_proj"
}
layer {
name: "inception_5b/output"
type: "Concat"
bottom: "inception_5b/1x1"
bottom: "inception_5b/3x3"
bottom: "inception_5b/5x5"
bottom: "inception_5b/pool_proj"
top: "inception_5b/output"
}
layer {
name: "pool5/drop_s1"
type: "Dropout"
bottom: "inception_5b/output"
top: "pool5/drop_s1"
dropout_param {
dropout_ratio: 0.4
}
}
layer {
name: "cvg/classifier"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "cvg/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 1
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
layer {
name: "coverage/sig"
type: "Sigmoid"
bottom: "cvg/classifier"
top: "coverage"
}
layer {
name: "bbox/regressor"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "bboxes"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 4
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
######################################################################
# End of convolutional network
######################################################################
# Convert bboxes
layer {
name: "bbox_mask"
type: "Eltwise"
bottom: "bboxes"
bottom: "coverage-block"
top: "bboxes-masked"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-norm"
type: "Eltwise"
bottom: "bboxes-masked"
bottom: "size-block"
top: "bboxes-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-obj-norm"
type: "Eltwise"
bottom: "bboxes-masked-norm"
bottom: "obj-block"
top: "bboxes-obj-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Loss layers
layer {
name: "bbox_loss"
type: "L1Loss"
bottom: "bboxes-obj-masked-norm"
bottom: "bbox-obj-label-norm"
top: "loss_bbox"
loss_weight: 2
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage_loss"
type: "EuclideanLoss"
bottom: "coverage"
bottom: "coverage-label"
top: "loss_coverage"
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Cluster bboxes
layer {
type: 'Python'
name: 'cluster'
bottom: 'coverage'
bottom: 'bboxes'
top: 'bbox-list'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterDetections'
param_str : '1248, 352, 8, 0.6, 3, 0.02, 22, 1'
}
include: { phase: TEST }
}
# Calculate mean average precision
layer {
type: 'Python'
name: 'cluster_gt'
bottom: 'coverage-label'
bottom: 'bbox-label'
top: 'bbox-list-label'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterGroundtruth'
param_str : '1248, 352, 8, 1'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'score'
bottom: 'bbox-list-label'
bottom: 'bbox-list'
top: 'bbox-list-scored'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'ScoreDetections'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'mAP'
bottom: 'bbox-list-scored'
top: 'mAP'
top: 'precision'
top: 'recall'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'mAP'
param_str : '1248, 352, 8'
}
include: { phase: TEST stage: "val" }
}
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AX39aAv6CfJETsM5bD2qfHRiXbGMwIWbks5ruw8ygaJpZM4LfTqE>
.
...
|
No.It haven’t produced boundingbox yet for me and now it is running.I will inform if it gives any better output…but you may also try with it as ideally it should work.Also do you know the parameters other than stride ,dimension in the cluster threshold section .
… On 11-Apr-2017, at 12:46 PM, shreyasramesh ***@***.***> wrote:
Did the custom script produce bounding boxes for your dataset?
Sorry, got very busy yesterday. I'll definitely have a look today!
On Apr 11, 2017 10:57 AM, "sulthanashafi" ***@***.***> wrote:
> Iam attaching a custom code for trying on your dataset changing the stride
> value.Hope it will work for you.Also have you got to suggest any
> modification in my dataset.
> > On 10-Apr-2017, at 3:45 PM, shreyasramesh ***@***.***>
> wrote:
> >
> > Thanks for the file. Will compare with my results and let you know ASAP.
> >
> > https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa
> <https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa>
> > Meanwhile, please check this publicly available prototext and see if
> this makes sense for your problem at hand. If it does, tune your images to
> fit the above prototext image format: 1280x1280 instead of 1000x1000.
> >
> > https://devblogs.nvidia.com/parallelforall/exploring-
> spacenet-dataset-using-digits/ <https://devblogs.nvidia.com/
> parallelforall/exploring-spacenet-dataset-using-digits/>
> > —
> > You are receiving this because you commented.
> > Reply to this email directly, view it on GitHub <
> #1384 (comment)>, or
> mute the thread <https://github.com/notifications/unsubscribe-auth/
> AZZckCDkLdqVsyfZX4qfn8iHRbSKqNbyks5rugFBgaJpZM4LfTqE>.
> >
>
>
> # DetectNet network
>
> # Data/Input layers
> name: "DetectNet"
> layer {
> name: "train_data"
> type: "Data"
> top: "data"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_train_images.lmdb"
> batch_size: 10
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "train_label"
> type: "Data"
> top: "label"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_train_labels.lmdb"
> batch_size: 10
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "val_data"
> type: "Data"
> top: "data"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_test_images.lmdb"
> batch_size: 6
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "val_label"
> type: "Data"
> top: "label"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_test_labels.lmdb"
> batch_size: 6
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "deploy_data"
> type: "Input"
> top: "data"
> input_param {
> shape {
> dim: 1
> dim: 3
> dim: 384
> dim: 1248
> }
> }
> include: { phase: TEST not_stage: "val" }
> }
>
> # Data transformation layers
> layer {
> name: "train_transform"
> type: "DetectNetTransformation"
> bottom: "data"
> bottom: "label"
> top: "transformed_data"
> top: "transformed_label"
> detectnet_groundtruth_param: {
> stride: 8
> scale_cvg: 0.4
> gridbox_type: GRIDBOX_MIN
> coverage_type: RECTANGULAR
> min_cvg_len: 20
> obj_norm: true
> image_size_x: 1248
> image_size_y: 384
> crop_bboxes: true
> object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
> }
> detectnet_augmentation_param: {
> crop_prob: 1
> shift_x: 32
> shift_y: 32
> flip_prob: 0.5
> rotation_prob: 0
> max_rotate_degree: 5
> scale_prob: 0.4
> scale_min: 0.8
> scale_max: 1.2
> hue_rotation_prob: 0.8
> hue_rotation: 30
> desaturation_prob: 0.8
> desaturation_max: 0.8
> }
> transform_param: {
> mean_value: 127
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "val_transform"
> type: "DetectNetTransformation"
> bottom: "data"
> bottom: "label"
> top: "transformed_data"
> top: "transformed_label"
> detectnet_groundtruth_param: {
> stride: 8
> scale_cvg: 0.4
> gridbox_type: GRIDBOX_MIN
> coverage_type: RECTANGULAR
> min_cvg_len: 20
> obj_norm: true
> image_size_x: 1248
> image_size_y: 384
> crop_bboxes: false
> object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
> }
> transform_param: {
> mean_value: 127
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "deploy_transform"
> type: "Power"
> bottom: "data"
> top: "transformed_data"
> power_param {
> shift: -127
> }
> include: { phase: TEST not_stage: "val" }
> }
>
> # Label conversion layers
> layer {
> name: "slice-label"
> type: "Slice"
> bottom: "transformed_label"
> top: "foreground-label"
> top: "bbox-label"
> top: "size-label"
> top: "obj-label"
> top: "coverage-label"
> slice_param {
> slice_dim: 1
> slice_point: 1
> slice_point: 5
> slice_point: 7
> slice_point: 8
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "coverage-block"
> type: "Concat"
> bottom: "foreground-label"
> bottom: "foreground-label"
> bottom: "foreground-label"
> bottom: "foreground-label"
> top: "coverage-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "size-block"
> type: "Concat"
> bottom: "size-label"
> bottom: "size-label"
> top: "size-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "obj-block"
> type: "Concat"
> bottom: "obj-label"
> bottom: "obj-label"
> bottom: "obj-label"
> bottom: "obj-label"
> top: "obj-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bb-label-norm"
> type: "Eltwise"
> bottom: "bbox-label"
> bottom: "size-block"
> top: "bbox-label-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bb-obj-norm"
> type: "Eltwise"
> bottom: "bbox-label-norm"
> bottom: "obj-block"
> top: "bbox-obj-label-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> ######################################################################
> # Start of convolutional network
> ######################################################################
>
> layer {
> name: "conv1/7x7_s2"
> type: "Convolution"
> bottom: "transformed_data"
> top: "conv1/7x7_s2"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 3
> kernel_size: 7
> stride: 2
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv1/relu_7x7"
> type: "ReLU"
> bottom: "conv1/7x7_s2"
> top: "conv1/7x7_s2"
> }
>
> layer {
> name: "pool1/3x3_s2"
> type: "Pooling"
> bottom: "conv1/7x7_s2"
> top: "pool1/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 2
> }
> }
>
> layer {
> name: "pool1/norm1"
> type: "LRN"
> bottom: "pool1/3x3_s2"
> top: "pool1/norm1"
> lrn_param {
> local_size: 5
> alpha: 0.0001
> beta: 0.75
> }
> }
>
> layer {
> name: "conv2/3x3_reduce"
> type: "Convolution"
> bottom: "pool1/norm1"
> top: "conv2/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv2/relu_3x3_reduce"
> type: "ReLU"
> bottom: "conv2/3x3_reduce"
> top: "conv2/3x3_reduce"
> }
>
> layer {
> name: "conv2/3x3"
> type: "Convolution"
> bottom: "conv2/3x3_reduce"
> top: "conv2/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv2/relu_3x3"
> type: "ReLU"
> bottom: "conv2/3x3"
> top: "conv2/3x3"
> }
>
> layer {
> name: "conv2/norm2"
> type: "LRN"
> bottom: "conv2/3x3"
> top: "conv2/norm2"
> lrn_param {
> local_size: 5
> alpha: 0.0001
> beta: 0.75
> }
> }
>
> layer {
> name: "pool2/3x3_s2"
> type: "Pooling"
> bottom: "conv2/norm2"
> top: "pool2/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 2
> }
> }
>
> layer {
> name: "inception_3a/1x1"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_1x1"
> type: "ReLU"
> bottom: "inception_3a/1x1"
> top: "inception_3a/1x1"
> }
>
> layer {
> name: "inception_3a/3x3_reduce"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_3a/3x3_reduce"
> top: "inception_3a/3x3_reduce"
> }
>
> layer {
> name: "inception_3a/3x3"
> type: "Convolution"
> bottom: "inception_3a/3x3_reduce"
> top: "inception_3a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_3x3"
> type: "ReLU"
> bottom: "inception_3a/3x3"
> top: "inception_3a/3x3"
> }
>
> layer {
> name: "inception_3a/5x5_reduce"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 16
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_3a/5x5_reduce"
> top: "inception_3a/5x5_reduce"
> }
> layer {
> name: "inception_3a/5x5"
> type: "Convolution"
> bottom: "inception_3a/5x5_reduce"
> top: "inception_3a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_5x5"
> type: "ReLU"
> bottom: "inception_3a/5x5"
> top: "inception_3a/5x5"
> }
>
> layer {
> name: "inception_3a/pool"
> type: "Pooling"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
>
> layer {
> name: "inception_3a/pool_proj"
> type: "Convolution"
> bottom: "inception_3a/pool"
> top: "inception_3a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_3a/pool_proj"
> top: "inception_3a/pool_proj"
> }
>
> layer {
> name: "inception_3a/output"
> type: "Concat"
> bottom: "inception_3a/1x1"
> bottom: "inception_3a/3x3"
> bottom: "inception_3a/5x5"
> bottom: "inception_3a/pool_proj"
> top: "inception_3a/output"
> }
>
> layer {
> name: "inception_3b/1x1"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3b/relu_1x1"
> type: "ReLU"
> bottom: "inception_3b/1x1"
> top: "inception_3b/1x1"
> }
>
> layer {
> name: "inception_3b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_3b/3x3_reduce"
> top: "inception_3b/3x3_reduce"
> }
> layer {
> name: "inception_3b/3x3"
> type: "Convolution"
> bottom: "inception_3b/3x3_reduce"
> top: "inception_3b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_3x3"
> type: "ReLU"
> bottom: "inception_3b/3x3"
> top: "inception_3b/3x3"
> }
>
> layer {
> name: "inception_3b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_3b/5x5_reduce"
> top: "inception_3b/5x5_reduce"
> }
> layer {
> name: "inception_3b/5x5"
> type: "Convolution"
> bottom: "inception_3b/5x5_reduce"
> top: "inception_3b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_5x5"
> type: "ReLU"
> bottom: "inception_3b/5x5"
> top: "inception_3b/5x5"
> }
>
> layer {
> name: "inception_3b/pool"
> type: "Pooling"
> bottom: "inception_3a/output"
> top: "inception_3b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_3b/pool_proj"
> type: "Convolution"
> bottom: "inception_3b/pool"
> top: "inception_3b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_3b/pool_proj"
> top: "inception_3b/pool_proj"
> }
> layer {
> name: "inception_3b/output"
> type: "Concat"
> bottom: "inception_3b/1x1"
> bottom: "inception_3b/3x3"
> bottom: "inception_3b/5x5"
> bottom: "inception_3b/pool_proj"
> top: "inception_3b/output"
> }
>
> layer {
> name: "pool3/3x3_s2"
> type: "Pooling"
> bottom: "inception_3b/output"
> top: "pool3/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 1
> stride: 1
> }
> }
>
> layer {
> name: "inception_4a/1x1"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_1x1"
> type: "ReLU"
> bottom: "inception_4a/1x1"
> top: "inception_4a/1x1"
> }
>
> layer {
> name: "inception_4a/3x3_reduce"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4a/3x3_reduce"
> top: "inception_4a/3x3_reduce"
> }
>
> layer {
> name: "inception_4a/3x3"
> type: "Convolution"
> bottom: "inception_4a/3x3_reduce"
> top: "inception_4a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 208
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_3x3"
> type: "ReLU"
> bottom: "inception_4a/3x3"
> top: "inception_4a/3x3"
> }
>
> layer {
> name: "inception_4a/5x5_reduce"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 16
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4a/5x5_reduce"
> top: "inception_4a/5x5_reduce"
> }
> layer {
> name: "inception_4a/5x5"
> type: "Convolution"
> bottom: "inception_4a/5x5_reduce"
> top: "inception_4a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 48
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_5x5"
> type: "ReLU"
> bottom: "inception_4a/5x5"
> top: "inception_4a/5x5"
> }
> layer {
> name: "inception_4a/pool"
> type: "Pooling"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4a/pool_proj"
> type: "Convolution"
> bottom: "inception_4a/pool"
> top: "inception_4a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4a/pool_proj"
> top: "inception_4a/pool_proj"
> }
> layer {
> name: "inception_4a/output"
> type: "Concat"
> bottom: "inception_4a/1x1"
> bottom: "inception_4a/3x3"
> bottom: "inception_4a/5x5"
> bottom: "inception_4a/pool_proj"
> top: "inception_4a/output"
> }
>
> layer {
> name: "inception_4b/1x1"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4b/relu_1x1"
> type: "ReLU"
> bottom: "inception_4b/1x1"
> top: "inception_4b/1x1"
> }
> layer {
> name: "inception_4b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 112
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4b/3x3_reduce"
> top: "inception_4b/3x3_reduce"
> }
> layer {
> name: "inception_4b/3x3"
> type: "Convolution"
> bottom: "inception_4b/3x3_reduce"
> top: "inception_4b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 224
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_3x3"
> type: "ReLU"
> bottom: "inception_4b/3x3"
> top: "inception_4b/3x3"
> }
> layer {
> name: "inception_4b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 24
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4b/5x5_reduce"
> top: "inception_4b/5x5_reduce"
> }
> layer {
> name: "inception_4b/5x5"
> type: "Convolution"
> bottom: "inception_4b/5x5_reduce"
> top: "inception_4b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_5x5"
> type: "ReLU"
> bottom: "inception_4b/5x5"
> top: "inception_4b/5x5"
> }
> layer {
> name: "inception_4b/pool"
> type: "Pooling"
> bottom: "inception_4a/output"
> top: "inception_4b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4b/pool_proj"
> type: "Convolution"
> bottom: "inception_4b/pool"
> top: "inception_4b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4b/pool_proj"
> top: "inception_4b/pool_proj"
> }
> layer {
> name: "inception_4b/output"
> type: "Concat"
> bottom: "inception_4b/1x1"
> bottom: "inception_4b/3x3"
> bottom: "inception_4b/5x5"
> bottom: "inception_4b/pool_proj"
> top: "inception_4b/output"
> }
>
> layer {
> name: "inception_4c/1x1"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4c/relu_1x1"
> type: "ReLU"
> bottom: "inception_4c/1x1"
> top: "inception_4c/1x1"
> }
>
> layer {
> name: "inception_4c/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4c/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4c/3x3_reduce"
> top: "inception_4c/3x3_reduce"
> }
> layer {
> name: "inception_4c/3x3"
> type: "Convolution"
> bottom: "inception_4c/3x3_reduce"
> top: "inception_4c/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_3x3"
> type: "ReLU"
> bottom: "inception_4c/3x3"
> top: "inception_4c/3x3"
> }
> layer {
> name: "inception_4c/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 24
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4c/5x5_reduce"
> top: "inception_4c/5x5_reduce"
> }
> layer {
> name: "inception_4c/5x5"
> type: "Convolution"
> bottom: "inception_4c/5x5_reduce"
> top: "inception_4c/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_5x5"
> type: "ReLU"
> bottom: "inception_4c/5x5"
> top: "inception_4c/5x5"
> }
> layer {
> name: "inception_4c/pool"
> type: "Pooling"
> bottom: "inception_4b/output"
> top: "inception_4c/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4c/pool_proj"
> type: "Convolution"
> bottom: "inception_4c/pool"
> top: "inception_4c/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4c/pool_proj"
> top: "inception_4c/pool_proj"
> }
> layer {
> name: "inception_4c/output"
> type: "Concat"
> bottom: "inception_4c/1x1"
> bottom: "inception_4c/3x3"
> bottom: "inception_4c/5x5"
> bottom: "inception_4c/pool_proj"
> top: "inception_4c/output"
> }
>
> layer {
> name: "inception_4d/1x1"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 112
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_1x1"
> type: "ReLU"
> bottom: "inception_4d/1x1"
> top: "inception_4d/1x1"
> }
> layer {
> name: "inception_4d/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 144
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4d/3x3_reduce"
> top: "inception_4d/3x3_reduce"
> }
> layer {
> name: "inception_4d/3x3"
> type: "Convolution"
> bottom: "inception_4d/3x3_reduce"
> top: "inception_4d/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 288
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_3x3"
> type: "ReLU"
> bottom: "inception_4d/3x3"
> top: "inception_4d/3x3"
> }
> layer {
> name: "inception_4d/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4d/5x5_reduce"
> top: "inception_4d/5x5_reduce"
> }
> layer {
> name: "inception_4d/5x5"
> type: "Convolution"
> bottom: "inception_4d/5x5_reduce"
> top: "inception_4d/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_5x5"
> type: "ReLU"
> bottom: "inception_4d/5x5"
> top: "inception_4d/5x5"
> }
> layer {
> name: "inception_4d/pool"
> type: "Pooling"
> bottom: "inception_4c/output"
> top: "inception_4d/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4d/pool_proj"
> type: "Convolution"
> bottom: "inception_4d/pool"
> top: "inception_4d/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4d/pool_proj"
> top: "inception_4d/pool_proj"
> }
> layer {
> name: "inception_4d/output"
> type: "Concat"
> bottom: "inception_4d/1x1"
> bottom: "inception_4d/3x3"
> bottom: "inception_4d/5x5"
> bottom: "inception_4d/pool_proj"
> top: "inception_4d/output"
> }
>
> layer {
> name: "inception_4e/1x1"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_1x1"
> type: "ReLU"
> bottom: "inception_4e/1x1"
> top: "inception_4e/1x1"
> }
> layer {
> name: "inception_4e/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4e/3x3_reduce"
> top: "inception_4e/3x3_reduce"
> }
> layer {
> name: "inception_4e/3x3"
> type: "Convolution"
> bottom: "inception_4e/3x3_reduce"
> top: "inception_4e/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 320
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_3x3"
> type: "ReLU"
> bottom: "inception_4e/3x3"
> top: "inception_4e/3x3"
> }
> layer {
> name: "inception_4e/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4e/5x5_reduce"
> top: "inception_4e/5x5_reduce"
> }
> layer {
> name: "inception_4e/5x5"
> type: "Convolution"
> bottom: "inception_4e/5x5_reduce"
> top: "inception_4e/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_5x5"
> type: "ReLU"
> bottom: "inception_4e/5x5"
> top: "inception_4e/5x5"
> }
> layer {
> name: "inception_4e/pool"
> type: "Pooling"
> bottom: "inception_4d/output"
> top: "inception_4e/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4e/pool_proj"
> type: "Convolution"
> bottom: "inception_4e/pool"
> top: "inception_4e/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4e/pool_proj"
> top: "inception_4e/pool_proj"
> }
> layer {
> name: "inception_4e/output"
> type: "Concat"
> bottom: "inception_4e/1x1"
> bottom: "inception_4e/3x3"
> bottom: "inception_4e/5x5"
> bottom: "inception_4e/pool_proj"
> top: "inception_4e/output"
> }
>
>
>
> layer {
> name: "inception_5a/1x1"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_1x1"
> type: "ReLU"
> bottom: "inception_5a/1x1"
> top: "inception_5a/1x1"
> }
>
> layer {
> name: "inception_5a/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_5a/3x3_reduce"
> top: "inception_5a/3x3_reduce"
> }
>
> layer {
> name: "inception_5a/3x3"
> type: "Convolution"
> bottom: "inception_5a/3x3_reduce"
> top: "inception_5a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 320
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_3x3"
> type: "ReLU"
> bottom: "inception_5a/3x3"
> top: "inception_5a/3x3"
> }
> layer {
> name: "inception_5a/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_5a/5x5_reduce"
> top: "inception_5a/5x5_reduce"
> }
> layer {
> name: "inception_5a/5x5"
> type: "Convolution"
> bottom: "inception_5a/5x5_reduce"
> top: "inception_5a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_5x5"
> type: "ReLU"
> bottom: "inception_5a/5x5"
> top: "inception_5a/5x5"
> }
> layer {
> name: "inception_5a/pool"
> type: "Pooling"
> bottom: "inception_4e/output"
> top: "inception_5a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_5a/pool_proj"
> type: "Convolution"
> bottom: "inception_5a/pool"
> top: "inception_5a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_5a/pool_proj"
> top: "inception_5a/pool_proj"
> }
> layer {
> name: "inception_5a/output"
> type: "Concat"
> bottom: "inception_5a/1x1"
> bottom: "inception_5a/3x3"
> bottom: "inception_5a/5x5"
> bottom: "inception_5a/pool_proj"
> top: "inception_5a/output"
> }
>
> layer {
> name: "inception_5b/1x1"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 384
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_1x1"
> type: "ReLU"
> bottom: "inception_5b/1x1"
> top: "inception_5b/1x1"
> }
> layer {
> name: "inception_5b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 1
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_5b/3x3_reduce"
> top: "inception_5b/3x3_reduce"
> }
> layer {
> name: "inception_5b/3x3"
> type: "Convolution"
> bottom: "inception_5b/3x3_reduce"
> top: "inception_5b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 384
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_3x3"
> type: "ReLU"
> bottom: "inception_5b/3x3"
> top: "inception_5b/3x3"
> }
> layer {
> name: "inception_5b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 48
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_5b/5x5_reduce"
> top: "inception_5b/5x5_reduce"
> }
> layer {
> name: "inception_5b/5x5"
> type: "Convolution"
> bottom: "inception_5b/5x5_reduce"
> top: "inception_5b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_5x5"
> type: "ReLU"
> bottom: "inception_5b/5x5"
> top: "inception_5b/5x5"
> }
> layer {
> name: "inception_5b/pool"
> type: "Pooling"
> bottom: "inception_5a/output"
> top: "inception_5b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_5b/pool_proj"
> type: "Convolution"
> bottom: "inception_5b/pool"
> top: "inception_5b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_5b/pool_proj"
> top: "inception_5b/pool_proj"
> }
> layer {
> name: "inception_5b/output"
> type: "Concat"
> bottom: "inception_5b/1x1"
> bottom: "inception_5b/3x3"
> bottom: "inception_5b/5x5"
> bottom: "inception_5b/pool_proj"
> top: "inception_5b/output"
> }
> layer {
> name: "pool5/drop_s1"
> type: "Dropout"
> bottom: "inception_5b/output"
> top: "pool5/drop_s1"
> dropout_param {
> dropout_ratio: 0.4
> }
> }
> layer {
> name: "cvg/classifier"
> type: "Convolution"
> bottom: "pool5/drop_s1"
> top: "cvg/classifier"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 1
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.
> }
> }
> }
> layer {
> name: "coverage/sig"
> type: "Sigmoid"
> bottom: "cvg/classifier"
> top: "coverage"
> }
> layer {
> name: "bbox/regressor"
> type: "Convolution"
> bottom: "pool5/drop_s1"
> top: "bboxes"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 4
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.
> }
> }
> }
>
> ######################################################################
> # End of convolutional network
> ######################################################################
>
> # Convert bboxes
> layer {
> name: "bbox_mask"
> type: "Eltwise"
> bottom: "bboxes"
> bottom: "coverage-block"
> top: "bboxes-masked"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bbox-norm"
> type: "Eltwise"
> bottom: "bboxes-masked"
> bottom: "size-block"
> top: "bboxes-masked-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bbox-obj-norm"
> type: "Eltwise"
> bottom: "bboxes-masked-norm"
> bottom: "obj-block"
> top: "bboxes-obj-masked-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> # Loss layers
> layer {
> name: "bbox_loss"
> type: "L1Loss"
> bottom: "bboxes-obj-masked-norm"
> bottom: "bbox-obj-label-norm"
> top: "loss_bbox"
> loss_weight: 2
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "coverage_loss"
> type: "EuclideanLoss"
> bottom: "coverage"
> bottom: "coverage-label"
> top: "loss_coverage"
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> # Cluster bboxes
> layer {
> type: 'Python'
> name: 'cluster'
> bottom: 'coverage'
> bottom: 'bboxes'
> top: 'bbox-list'
> python_param {
> module: 'caffe.layers.detectnet.clustering'
> layer: 'ClusterDetections'
> param_str : '1248, 352, 8, 0.6, 3, 0.02, 22, 1'
> }
> include: { phase: TEST }
> }
>
> # Calculate mean average precision
> layer {
> type: 'Python'
> name: 'cluster_gt'
> bottom: 'coverage-label'
> bottom: 'bbox-label'
> top: 'bbox-list-label'
> python_param {
> module: 'caffe.layers.detectnet.clustering'
> layer: 'ClusterGroundtruth'
> param_str : '1248, 352, 8, 1'
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> type: 'Python'
> name: 'score'
> bottom: 'bbox-list-label'
> bottom: 'bbox-list'
> top: 'bbox-list-scored'
> python_param {
> module: 'caffe.layers.detectnet.mean_ap'
> layer: 'ScoreDetections'
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> type: 'Python'
> name: 'mAP'
> bottom: 'bbox-list-scored'
> top: 'mAP'
> top: 'precision'
> top: 'recall'
> python_param {
> module: 'caffe.layers.detectnet.mean_ap'
> layer: 'mAP'
> param_str : '1248, 352, 8'
> }
> include: { phase: TEST stage: "val" }
> }
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <#1384 (comment)>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AX39aAv6CfJETsM5bD2qfHRiXbGMwIWbks5ruw8ygaJpZM4LfTqE>
> .
> ...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckOomlXp0aK6Ip7mgSeQ7QNUeFl1Rks5ruyjXgaJpZM4LfTqE>.
|
It is from deploy.text .param_str: "1248, 352, 8, 0.6, 3, 0.02, 22, 1"
the first two are dimension,third is stride value,last 1 is for number of classes.May i know what other 0.6,3,0.02,22 used for and how to change it.
… On 11-Apr-2017, at 12:46 PM, shreyasramesh ***@***.***> wrote:
Did the custom script produce bounding boxes for your dataset?
Sorry, got very busy yesterday. I'll definitely have a look today!
On Apr 11, 2017 10:57 AM, "sulthanashafi" ***@***.***> wrote:
> Iam attaching a custom code for trying on your dataset changing the stride
> value.Hope it will work for you.Also have you got to suggest any
> modification in my dataset.
> > On 10-Apr-2017, at 3:45 PM, shreyasramesh ***@***.***>
> wrote:
> >
> > Thanks for the file. Will compare with my results and let you know ASAP.
> >
> > https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa
> <https://gist.github.com/jbarker-nvidia/127947d8a961bfbe2d0d403dd9bed2aa>
> > Meanwhile, please check this publicly available prototext and see if
> this makes sense for your problem at hand. If it does, tune your images to
> fit the above prototext image format: 1280x1280 instead of 1000x1000.
> >
> > https://devblogs.nvidia.com/parallelforall/exploring-
> spacenet-dataset-using-digits/ <https://devblogs.nvidia.com/
> parallelforall/exploring-spacenet-dataset-using-digits/>
> > —
> > You are receiving this because you commented.
> > Reply to this email directly, view it on GitHub <
> #1384 (comment)>, or
> mute the thread <https://github.com/notifications/unsubscribe-auth/
> AZZckCDkLdqVsyfZX4qfn8iHRbSKqNbyks5rugFBgaJpZM4LfTqE>.
> >
>
>
> # DetectNet network
>
> # Data/Input layers
> name: "DetectNet"
> layer {
> name: "train_data"
> type: "Data"
> top: "data"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_train_images.lmdb"
> batch_size: 10
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "train_label"
> type: "Data"
> top: "label"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_train_labels.lmdb"
> batch_size: 10
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "val_data"
> type: "Data"
> top: "data"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_test_images.lmdb"
> batch_size: 6
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "val_label"
> type: "Data"
> top: "label"
> data_param {
> backend: LMDB
> source: "examples/kitti/kitti_test_labels.lmdb"
> batch_size: 6
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "deploy_data"
> type: "Input"
> top: "data"
> input_param {
> shape {
> dim: 1
> dim: 3
> dim: 384
> dim: 1248
> }
> }
> include: { phase: TEST not_stage: "val" }
> }
>
> # Data transformation layers
> layer {
> name: "train_transform"
> type: "DetectNetTransformation"
> bottom: "data"
> bottom: "label"
> top: "transformed_data"
> top: "transformed_label"
> detectnet_groundtruth_param: {
> stride: 8
> scale_cvg: 0.4
> gridbox_type: GRIDBOX_MIN
> coverage_type: RECTANGULAR
> min_cvg_len: 20
> obj_norm: true
> image_size_x: 1248
> image_size_y: 384
> crop_bboxes: true
> object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
> }
> detectnet_augmentation_param: {
> crop_prob: 1
> shift_x: 32
> shift_y: 32
> flip_prob: 0.5
> rotation_prob: 0
> max_rotate_degree: 5
> scale_prob: 0.4
> scale_min: 0.8
> scale_max: 1.2
> hue_rotation_prob: 0.8
> hue_rotation: 30
> desaturation_prob: 0.8
> desaturation_max: 0.8
> }
> transform_param: {
> mean_value: 127
> }
> include: { phase: TRAIN }
> }
> layer {
> name: "val_transform"
> type: "DetectNetTransformation"
> bottom: "data"
> bottom: "label"
> top: "transformed_data"
> top: "transformed_label"
> detectnet_groundtruth_param: {
> stride: 8
> scale_cvg: 0.4
> gridbox_type: GRIDBOX_MIN
> coverage_type: RECTANGULAR
> min_cvg_len: 20
> obj_norm: true
> image_size_x: 1248
> image_size_y: 384
> crop_bboxes: false
> object_class: { src: 1 dst: 0} # obj class 1 -> cvg index 0
> }
> transform_param: {
> mean_value: 127
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> name: "deploy_transform"
> type: "Power"
> bottom: "data"
> top: "transformed_data"
> power_param {
> shift: -127
> }
> include: { phase: TEST not_stage: "val" }
> }
>
> # Label conversion layers
> layer {
> name: "slice-label"
> type: "Slice"
> bottom: "transformed_label"
> top: "foreground-label"
> top: "bbox-label"
> top: "size-label"
> top: "obj-label"
> top: "coverage-label"
> slice_param {
> slice_dim: 1
> slice_point: 1
> slice_point: 5
> slice_point: 7
> slice_point: 8
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "coverage-block"
> type: "Concat"
> bottom: "foreground-label"
> bottom: "foreground-label"
> bottom: "foreground-label"
> bottom: "foreground-label"
> top: "coverage-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "size-block"
> type: "Concat"
> bottom: "size-label"
> bottom: "size-label"
> top: "size-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "obj-block"
> type: "Concat"
> bottom: "obj-label"
> bottom: "obj-label"
> bottom: "obj-label"
> bottom: "obj-label"
> top: "obj-block"
> concat_param {
> concat_dim: 1
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bb-label-norm"
> type: "Eltwise"
> bottom: "bbox-label"
> bottom: "size-block"
> top: "bbox-label-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bb-obj-norm"
> type: "Eltwise"
> bottom: "bbox-label-norm"
> bottom: "obj-block"
> top: "bbox-obj-label-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> ######################################################################
> # Start of convolutional network
> ######################################################################
>
> layer {
> name: "conv1/7x7_s2"
> type: "Convolution"
> bottom: "transformed_data"
> top: "conv1/7x7_s2"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 3
> kernel_size: 7
> stride: 2
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv1/relu_7x7"
> type: "ReLU"
> bottom: "conv1/7x7_s2"
> top: "conv1/7x7_s2"
> }
>
> layer {
> name: "pool1/3x3_s2"
> type: "Pooling"
> bottom: "conv1/7x7_s2"
> top: "pool1/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 2
> }
> }
>
> layer {
> name: "pool1/norm1"
> type: "LRN"
> bottom: "pool1/3x3_s2"
> top: "pool1/norm1"
> lrn_param {
> local_size: 5
> alpha: 0.0001
> beta: 0.75
> }
> }
>
> layer {
> name: "conv2/3x3_reduce"
> type: "Convolution"
> bottom: "pool1/norm1"
> top: "conv2/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv2/relu_3x3_reduce"
> type: "ReLU"
> bottom: "conv2/3x3_reduce"
> top: "conv2/3x3_reduce"
> }
>
> layer {
> name: "conv2/3x3"
> type: "Convolution"
> bottom: "conv2/3x3_reduce"
> top: "conv2/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "conv2/relu_3x3"
> type: "ReLU"
> bottom: "conv2/3x3"
> top: "conv2/3x3"
> }
>
> layer {
> name: "conv2/norm2"
> type: "LRN"
> bottom: "conv2/3x3"
> top: "conv2/norm2"
> lrn_param {
> local_size: 5
> alpha: 0.0001
> beta: 0.75
> }
> }
>
> layer {
> name: "pool2/3x3_s2"
> type: "Pooling"
> bottom: "conv2/norm2"
> top: "pool2/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 2
> }
> }
>
> layer {
> name: "inception_3a/1x1"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_1x1"
> type: "ReLU"
> bottom: "inception_3a/1x1"
> top: "inception_3a/1x1"
> }
>
> layer {
> name: "inception_3a/3x3_reduce"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_3a/3x3_reduce"
> top: "inception_3a/3x3_reduce"
> }
>
> layer {
> name: "inception_3a/3x3"
> type: "Convolution"
> bottom: "inception_3a/3x3_reduce"
> top: "inception_3a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3a/relu_3x3"
> type: "ReLU"
> bottom: "inception_3a/3x3"
> top: "inception_3a/3x3"
> }
>
> layer {
> name: "inception_3a/5x5_reduce"
> type: "Convolution"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 16
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_3a/5x5_reduce"
> top: "inception_3a/5x5_reduce"
> }
> layer {
> name: "inception_3a/5x5"
> type: "Convolution"
> bottom: "inception_3a/5x5_reduce"
> top: "inception_3a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_5x5"
> type: "ReLU"
> bottom: "inception_3a/5x5"
> top: "inception_3a/5x5"
> }
>
> layer {
> name: "inception_3a/pool"
> type: "Pooling"
> bottom: "pool2/3x3_s2"
> top: "inception_3a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
>
> layer {
> name: "inception_3a/pool_proj"
> type: "Convolution"
> bottom: "inception_3a/pool"
> top: "inception_3a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_3a/pool_proj"
> top: "inception_3a/pool_proj"
> }
>
> layer {
> name: "inception_3a/output"
> type: "Concat"
> bottom: "inception_3a/1x1"
> bottom: "inception_3a/3x3"
> bottom: "inception_3a/5x5"
> bottom: "inception_3a/pool_proj"
> top: "inception_3a/output"
> }
>
> layer {
> name: "inception_3b/1x1"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_3b/relu_1x1"
> type: "ReLU"
> bottom: "inception_3b/1x1"
> top: "inception_3b/1x1"
> }
>
> layer {
> name: "inception_3b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_3b/3x3_reduce"
> top: "inception_3b/3x3_reduce"
> }
> layer {
> name: "inception_3b/3x3"
> type: "Convolution"
> bottom: "inception_3b/3x3_reduce"
> top: "inception_3b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_3x3"
> type: "ReLU"
> bottom: "inception_3b/3x3"
> top: "inception_3b/3x3"
> }
>
> layer {
> name: "inception_3b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_3a/output"
> top: "inception_3b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_3b/5x5_reduce"
> top: "inception_3b/5x5_reduce"
> }
> layer {
> name: "inception_3b/5x5"
> type: "Convolution"
> bottom: "inception_3b/5x5_reduce"
> top: "inception_3b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_5x5"
> type: "ReLU"
> bottom: "inception_3b/5x5"
> top: "inception_3b/5x5"
> }
>
> layer {
> name: "inception_3b/pool"
> type: "Pooling"
> bottom: "inception_3a/output"
> top: "inception_3b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_3b/pool_proj"
> type: "Convolution"
> bottom: "inception_3b/pool"
> top: "inception_3b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_3b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_3b/pool_proj"
> top: "inception_3b/pool_proj"
> }
> layer {
> name: "inception_3b/output"
> type: "Concat"
> bottom: "inception_3b/1x1"
> bottom: "inception_3b/3x3"
> bottom: "inception_3b/5x5"
> bottom: "inception_3b/pool_proj"
> top: "inception_3b/output"
> }
>
> layer {
> name: "pool3/3x3_s2"
> type: "Pooling"
> bottom: "inception_3b/output"
> top: "pool3/3x3_s2"
> pooling_param {
> pool: MAX
> kernel_size: 1
> stride: 1
> }
> }
>
> layer {
> name: "inception_4a/1x1"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_1x1"
> type: "ReLU"
> bottom: "inception_4a/1x1"
> top: "inception_4a/1x1"
> }
>
> layer {
> name: "inception_4a/3x3_reduce"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 96
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4a/3x3_reduce"
> top: "inception_4a/3x3_reduce"
> }
>
> layer {
> name: "inception_4a/3x3"
> type: "Convolution"
> bottom: "inception_4a/3x3_reduce"
> top: "inception_4a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 208
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4a/relu_3x3"
> type: "ReLU"
> bottom: "inception_4a/3x3"
> top: "inception_4a/3x3"
> }
>
> layer {
> name: "inception_4a/5x5_reduce"
> type: "Convolution"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 16
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4a/5x5_reduce"
> top: "inception_4a/5x5_reduce"
> }
> layer {
> name: "inception_4a/5x5"
> type: "Convolution"
> bottom: "inception_4a/5x5_reduce"
> top: "inception_4a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 48
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_5x5"
> type: "ReLU"
> bottom: "inception_4a/5x5"
> top: "inception_4a/5x5"
> }
> layer {
> name: "inception_4a/pool"
> type: "Pooling"
> bottom: "pool3/3x3_s2"
> top: "inception_4a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4a/pool_proj"
> type: "Convolution"
> bottom: "inception_4a/pool"
> top: "inception_4a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4a/pool_proj"
> top: "inception_4a/pool_proj"
> }
> layer {
> name: "inception_4a/output"
> type: "Concat"
> bottom: "inception_4a/1x1"
> bottom: "inception_4a/3x3"
> bottom: "inception_4a/5x5"
> bottom: "inception_4a/pool_proj"
> top: "inception_4a/output"
> }
>
> layer {
> name: "inception_4b/1x1"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4b/relu_1x1"
> type: "ReLU"
> bottom: "inception_4b/1x1"
> top: "inception_4b/1x1"
> }
> layer {
> name: "inception_4b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 112
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4b/3x3_reduce"
> top: "inception_4b/3x3_reduce"
> }
> layer {
> name: "inception_4b/3x3"
> type: "Convolution"
> bottom: "inception_4b/3x3_reduce"
> top: "inception_4b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 224
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_3x3"
> type: "ReLU"
> bottom: "inception_4b/3x3"
> top: "inception_4b/3x3"
> }
> layer {
> name: "inception_4b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4a/output"
> top: "inception_4b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 24
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4b/5x5_reduce"
> top: "inception_4b/5x5_reduce"
> }
> layer {
> name: "inception_4b/5x5"
> type: "Convolution"
> bottom: "inception_4b/5x5_reduce"
> top: "inception_4b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_5x5"
> type: "ReLU"
> bottom: "inception_4b/5x5"
> top: "inception_4b/5x5"
> }
> layer {
> name: "inception_4b/pool"
> type: "Pooling"
> bottom: "inception_4a/output"
> top: "inception_4b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4b/pool_proj"
> type: "Convolution"
> bottom: "inception_4b/pool"
> top: "inception_4b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4b/pool_proj"
> top: "inception_4b/pool_proj"
> }
> layer {
> name: "inception_4b/output"
> type: "Concat"
> bottom: "inception_4b/1x1"
> bottom: "inception_4b/3x3"
> bottom: "inception_4b/5x5"
> bottom: "inception_4b/pool_proj"
> top: "inception_4b/output"
> }
>
> layer {
> name: "inception_4c/1x1"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4c/relu_1x1"
> type: "ReLU"
> bottom: "inception_4c/1x1"
> top: "inception_4c/1x1"
> }
>
> layer {
> name: "inception_4c/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
>
> layer {
> name: "inception_4c/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4c/3x3_reduce"
> top: "inception_4c/3x3_reduce"
> }
> layer {
> name: "inception_4c/3x3"
> type: "Convolution"
> bottom: "inception_4c/3x3_reduce"
> top: "inception_4c/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_3x3"
> type: "ReLU"
> bottom: "inception_4c/3x3"
> top: "inception_4c/3x3"
> }
> layer {
> name: "inception_4c/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4b/output"
> top: "inception_4c/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 24
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4c/5x5_reduce"
> top: "inception_4c/5x5_reduce"
> }
> layer {
> name: "inception_4c/5x5"
> type: "Convolution"
> bottom: "inception_4c/5x5_reduce"
> top: "inception_4c/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_5x5"
> type: "ReLU"
> bottom: "inception_4c/5x5"
> top: "inception_4c/5x5"
> }
> layer {
> name: "inception_4c/pool"
> type: "Pooling"
> bottom: "inception_4b/output"
> top: "inception_4c/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4c/pool_proj"
> type: "Convolution"
> bottom: "inception_4c/pool"
> top: "inception_4c/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4c/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4c/pool_proj"
> top: "inception_4c/pool_proj"
> }
> layer {
> name: "inception_4c/output"
> type: "Concat"
> bottom: "inception_4c/1x1"
> bottom: "inception_4c/3x3"
> bottom: "inception_4c/5x5"
> bottom: "inception_4c/pool_proj"
> top: "inception_4c/output"
> }
>
> layer {
> name: "inception_4d/1x1"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 112
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_1x1"
> type: "ReLU"
> bottom: "inception_4d/1x1"
> top: "inception_4d/1x1"
> }
> layer {
> name: "inception_4d/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 144
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4d/3x3_reduce"
> top: "inception_4d/3x3_reduce"
> }
> layer {
> name: "inception_4d/3x3"
> type: "Convolution"
> bottom: "inception_4d/3x3_reduce"
> top: "inception_4d/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 288
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_3x3"
> type: "ReLU"
> bottom: "inception_4d/3x3"
> top: "inception_4d/3x3"
> }
> layer {
> name: "inception_4d/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4c/output"
> top: "inception_4d/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4d/5x5_reduce"
> top: "inception_4d/5x5_reduce"
> }
> layer {
> name: "inception_4d/5x5"
> type: "Convolution"
> bottom: "inception_4d/5x5_reduce"
> top: "inception_4d/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_5x5"
> type: "ReLU"
> bottom: "inception_4d/5x5"
> top: "inception_4d/5x5"
> }
> layer {
> name: "inception_4d/pool"
> type: "Pooling"
> bottom: "inception_4c/output"
> top: "inception_4d/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4d/pool_proj"
> type: "Convolution"
> bottom: "inception_4d/pool"
> top: "inception_4d/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 64
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4d/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4d/pool_proj"
> top: "inception_4d/pool_proj"
> }
> layer {
> name: "inception_4d/output"
> type: "Concat"
> bottom: "inception_4d/1x1"
> bottom: "inception_4d/3x3"
> bottom: "inception_4d/5x5"
> bottom: "inception_4d/pool_proj"
> top: "inception_4d/output"
> }
>
> layer {
> name: "inception_4e/1x1"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_1x1"
> type: "ReLU"
> bottom: "inception_4e/1x1"
> top: "inception_4e/1x1"
> }
> layer {
> name: "inception_4e/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_4e/3x3_reduce"
> top: "inception_4e/3x3_reduce"
> }
> layer {
> name: "inception_4e/3x3"
> type: "Convolution"
> bottom: "inception_4e/3x3_reduce"
> top: "inception_4e/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 320
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_3x3"
> type: "ReLU"
> bottom: "inception_4e/3x3"
> top: "inception_4e/3x3"
> }
> layer {
> name: "inception_4e/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4d/output"
> top: "inception_4e/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_4e/5x5_reduce"
> top: "inception_4e/5x5_reduce"
> }
> layer {
> name: "inception_4e/5x5"
> type: "Convolution"
> bottom: "inception_4e/5x5_reduce"
> top: "inception_4e/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_5x5"
> type: "ReLU"
> bottom: "inception_4e/5x5"
> top: "inception_4e/5x5"
> }
> layer {
> name: "inception_4e/pool"
> type: "Pooling"
> bottom: "inception_4d/output"
> top: "inception_4e/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_4e/pool_proj"
> type: "Convolution"
> bottom: "inception_4e/pool"
> top: "inception_4e/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_4e/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_4e/pool_proj"
> top: "inception_4e/pool_proj"
> }
> layer {
> name: "inception_4e/output"
> type: "Concat"
> bottom: "inception_4e/1x1"
> bottom: "inception_4e/3x3"
> bottom: "inception_4e/5x5"
> bottom: "inception_4e/pool_proj"
> top: "inception_4e/output"
> }
>
>
>
> layer {
> name: "inception_5a/1x1"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 256
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_1x1"
> type: "ReLU"
> bottom: "inception_5a/1x1"
> top: "inception_5a/1x1"
> }
>
> layer {
> name: "inception_5a/3x3_reduce"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 160
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.09
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_5a/3x3_reduce"
> top: "inception_5a/3x3_reduce"
> }
>
> layer {
> name: "inception_5a/3x3"
> type: "Convolution"
> bottom: "inception_5a/3x3_reduce"
> top: "inception_5a/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 320
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_3x3"
> type: "ReLU"
> bottom: "inception_5a/3x3"
> top: "inception_5a/3x3"
> }
> layer {
> name: "inception_5a/5x5_reduce"
> type: "Convolution"
> bottom: "inception_4e/output"
> top: "inception_5a/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 32
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.2
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_5a/5x5_reduce"
> top: "inception_5a/5x5_reduce"
> }
> layer {
> name: "inception_5a/5x5"
> type: "Convolution"
> bottom: "inception_5a/5x5_reduce"
> top: "inception_5a/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_5x5"
> type: "ReLU"
> bottom: "inception_5a/5x5"
> top: "inception_5a/5x5"
> }
> layer {
> name: "inception_5a/pool"
> type: "Pooling"
> bottom: "inception_4e/output"
> top: "inception_5a/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_5a/pool_proj"
> type: "Convolution"
> bottom: "inception_5a/pool"
> top: "inception_5a/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5a/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_5a/pool_proj"
> top: "inception_5a/pool_proj"
> }
> layer {
> name: "inception_5a/output"
> type: "Concat"
> bottom: "inception_5a/1x1"
> bottom: "inception_5a/3x3"
> bottom: "inception_5a/5x5"
> bottom: "inception_5a/pool_proj"
> top: "inception_5a/output"
> }
>
> layer {
> name: "inception_5b/1x1"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/1x1"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 384
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_1x1"
> type: "ReLU"
> bottom: "inception_5b/1x1"
> top: "inception_5b/1x1"
> }
> layer {
> name: "inception_5b/3x3_reduce"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/3x3_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 1
> decay_mult: 0
> }
> convolution_param {
> num_output: 192
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_3x3_reduce"
> type: "ReLU"
> bottom: "inception_5b/3x3_reduce"
> top: "inception_5b/3x3_reduce"
> }
> layer {
> name: "inception_5b/3x3"
> type: "Convolution"
> bottom: "inception_5b/3x3_reduce"
> top: "inception_5b/3x3"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 384
> pad: 1
> kernel_size: 3
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_3x3"
> type: "ReLU"
> bottom: "inception_5b/3x3"
> top: "inception_5b/3x3"
> }
> layer {
> name: "inception_5b/5x5_reduce"
> type: "Convolution"
> bottom: "inception_5a/output"
> top: "inception_5b/5x5_reduce"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 48
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_5x5_reduce"
> type: "ReLU"
> bottom: "inception_5b/5x5_reduce"
> top: "inception_5b/5x5_reduce"
> }
> layer {
> name: "inception_5b/5x5"
> type: "Convolution"
> bottom: "inception_5b/5x5_reduce"
> top: "inception_5b/5x5"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> pad: 2
> kernel_size: 5
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_5x5"
> type: "ReLU"
> bottom: "inception_5b/5x5"
> top: "inception_5b/5x5"
> }
> layer {
> name: "inception_5b/pool"
> type: "Pooling"
> bottom: "inception_5a/output"
> top: "inception_5b/pool"
> pooling_param {
> pool: MAX
> kernel_size: 3
> stride: 1
> pad: 1
> }
> }
> layer {
> name: "inception_5b/pool_proj"
> type: "Convolution"
> bottom: "inception_5b/pool"
> top: "inception_5b/pool_proj"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 128
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.1
> }
> bias_filler {
> type: "constant"
> value: 0.2
> }
> }
> }
> layer {
> name: "inception_5b/relu_pool_proj"
> type: "ReLU"
> bottom: "inception_5b/pool_proj"
> top: "inception_5b/pool_proj"
> }
> layer {
> name: "inception_5b/output"
> type: "Concat"
> bottom: "inception_5b/1x1"
> bottom: "inception_5b/3x3"
> bottom: "inception_5b/5x5"
> bottom: "inception_5b/pool_proj"
> top: "inception_5b/output"
> }
> layer {
> name: "pool5/drop_s1"
> type: "Dropout"
> bottom: "inception_5b/output"
> top: "pool5/drop_s1"
> dropout_param {
> dropout_ratio: 0.4
> }
> }
> layer {
> name: "cvg/classifier"
> type: "Convolution"
> bottom: "pool5/drop_s1"
> top: "cvg/classifier"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 1
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.
> }
> }
> }
> layer {
> name: "coverage/sig"
> type: "Sigmoid"
> bottom: "cvg/classifier"
> top: "coverage"
> }
> layer {
> name: "bbox/regressor"
> type: "Convolution"
> bottom: "pool5/drop_s1"
> top: "bboxes"
> param {
> lr_mult: 1
> decay_mult: 1
> }
> param {
> lr_mult: 2
> decay_mult: 0
> }
> convolution_param {
> num_output: 4
> kernel_size: 1
> weight_filler {
> type: "xavier"
> std: 0.03
> }
> bias_filler {
> type: "constant"
> value: 0.
> }
> }
> }
>
> ######################################################################
> # End of convolutional network
> ######################################################################
>
> # Convert bboxes
> layer {
> name: "bbox_mask"
> type: "Eltwise"
> bottom: "bboxes"
> bottom: "coverage-block"
> top: "bboxes-masked"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bbox-norm"
> type: "Eltwise"
> bottom: "bboxes-masked"
> bottom: "size-block"
> top: "bboxes-masked-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "bbox-obj-norm"
> type: "Eltwise"
> bottom: "bboxes-masked-norm"
> bottom: "obj-block"
> top: "bboxes-obj-masked-norm"
> eltwise_param {
> operation: PROD
> }
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> # Loss layers
> layer {
> name: "bbox_loss"
> type: "L1Loss"
> bottom: "bboxes-obj-masked-norm"
> bottom: "bbox-obj-label-norm"
> top: "loss_bbox"
> loss_weight: 2
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
> layer {
> name: "coverage_loss"
> type: "EuclideanLoss"
> bottom: "coverage"
> bottom: "coverage-label"
> top: "loss_coverage"
> include { phase: TRAIN }
> include { phase: TEST stage: "val" }
> }
>
> # Cluster bboxes
> layer {
> type: 'Python'
> name: 'cluster'
> bottom: 'coverage'
> bottom: 'bboxes'
> top: 'bbox-list'
> python_param {
> module: 'caffe.layers.detectnet.clustering'
> layer: 'ClusterDetections'
> param_str : '1248, 352, 8, 0.6, 3, 0.02, 22, 1'
> }
> include: { phase: TEST }
> }
>
> # Calculate mean average precision
> layer {
> type: 'Python'
> name: 'cluster_gt'
> bottom: 'coverage-label'
> bottom: 'bbox-label'
> top: 'bbox-list-label'
> python_param {
> module: 'caffe.layers.detectnet.clustering'
> layer: 'ClusterGroundtruth'
> param_str : '1248, 352, 8, 1'
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> type: 'Python'
> name: 'score'
> bottom: 'bbox-list-label'
> bottom: 'bbox-list'
> top: 'bbox-list-scored'
> python_param {
> module: 'caffe.layers.detectnet.mean_ap'
> layer: 'ScoreDetections'
> }
> include: { phase: TEST stage: "val" }
> }
> layer {
> type: 'Python'
> name: 'mAP'
> bottom: 'bbox-list-scored'
> top: 'mAP'
> top: 'precision'
> top: 'recall'
> python_param {
> module: 'caffe.layers.detectnet.mean_ap'
> layer: 'mAP'
> param_str : '1248, 352, 8'
> }
> include: { phase: TEST stage: "val" }
> }
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <#1384 (comment)>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AX39aAv6CfJETsM5bD2qfHRiXbGMwIWbks5ruw8ygaJpZM4LfTqE>
> .
> ...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckOomlXp0aK6Ip7mgSeQ7QNUeFl1Rks5ruyjXgaJpZM4LfTqE>.
|
I think/hope we have this documented somewhere, but for now check out this piece of code: |
At first glance, it looks like my network's coverage layer prediction is different from yours. (Picture attached). However, it looks like your network's output for cvg/classifier layer is similar to mine. Please refer to the link provided by @lukeyeager for the param names. |
Thanks @lukeyeager <https://github.com/lukeyeager> and shreyasramesh.Iam not getting even the coverage value.Also i will try lowering the threshold parameters mentioned.Please let me know for any other changes could be applied.
… On 11-Apr-2017, at 10:16 PM, shreyasramesh ***@***.***> wrote:
At first glance, it looks like my network's coverage layer prediction is different from yours. (Picture attached). However, it looks like your network's output for cvg/classifier layer is similar to mine.
<https://cloud.githubusercontent.com/assets/25034088/24919794/6e3dc21e-1f02-11e7-8663-219d6e2342d2.png>
Please refer to the link provided by @lukeyeager <https://github.com/lukeyeager> for the param names.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckLjEzr9WD9BWCfiS_hRLc6SWu6Muks5ru65ogaJpZM4LfTqE>.
|
Hi,Iam trying the changes one by one;haven’t got any improvement till now.May i get the log file of a working kitty data set as i lost it and felt it will be good if compared with it.Also please let me be updated too with the detect net improvements.
… On 11-Apr-2017, at 10:16 PM, shreyasramesh ***@***.***> wrote:
At first glance, it looks like my network's coverage layer prediction is different from yours. (Picture attached). However, it looks like your network's output for cvg/classifier layer is similar to mine.
<https://cloud.githubusercontent.com/assets/25034088/24919794/6e3dc21e-1f02-11e7-8663-219d6e2342d2.png>
Please refer to the link provided by @lukeyeager <https://github.com/lukeyeager> for the param names.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckLjEzr9WD9BWCfiS_hRLc6SWu6Muks5ru65ogaJpZM4LfTqE>.
|
Hi, |
What param/model/dataset changes helped in increasing the accuracy to the
current value?
…On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.***> wrote:
Now iam getting a accuracy graph as mentioned.How can i improve MAP value.
[image: screen shot 2017-04-20 at 6 30 06 am]
<https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350-2592-11e7-87a9-8b99cb4cb9ec.png>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
.
|
Please sent your custom detectnet being used now.I will change in it and sent you back.Please try on it.If possible,sent a image of yours being treated or please let me know the properties of the image being used.I hope i can help you.
… On 20-Apr-2017, at 6:42 AM, shreyasramesh ***@***.***> wrote:
What param/model/dataset changes helped in increasing the accuracy to the
current value?
On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.***> wrote:
> Now iam getting a accuracy graph as mentioned.How can i improve MAP value.
> [image: screen shot 2017-04-20 at 6 30 06 am]
> <https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350-2592-11e7-87a9-8b99cb4cb9ec.png>
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#1384 (comment)>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
> .
>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>.
|
I'm using the customNetwork that I sent you before. Can you change that and
send it back? I'll try it out
Thanks!
On Apr 20, 2017 6:46 AM, "sulthanashafi" <notifications@github.com> wrote:
Please sent your custom detectnet being used now.I will change in it and
sent you back.Please try on it.If possible,sent a image of yours being
treated or please let me know the properties of the image being used.I hope
i can help you.
On 20-Apr-2017, at 6:42 AM, shreyasramesh ***@***.***>
wrote:
What param/model/dataset changes helped in increasing the accuracy to the
current value?
On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.***> wrote:
> Now iam getting a accuracy graph as mentioned.How can i improve MAP
value.
> [image: screen shot 2017-04-20 at 6 30 06 am]
> <https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350-
2592-11e7-87a9-8b99cb4cb9ec.png>
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#1384 (comment)>,
or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/
AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
> .
>
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <
#1384 (comment)>, or
mute the thread <https://github.com/notifications/unsubscribe-
auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AX39aNim4o6ez5jKgSmKemO30-U9YPOLks5rxrIAgaJpZM4LfTqE>
.
|
As mentioned before, my images are 1248x384. 2000 train and 500 test.
…On Apr 20, 2017 6:46 AM, "sulthanashafi" ***@***.***> wrote:
Please sent your custom detectnet being used now.I will change in it and
sent you back.Please try on it.If possible,sent a image of yours being
treated or please let me know the properties of the image being used.I hope
i can help you.
> On 20-Apr-2017, at 6:42 AM, shreyasramesh ***@***.***>
wrote:
>
> What param/model/dataset changes helped in increasing the accuracy to the
> current value?
>
>
> On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.***>
wrote:
>
> > Now iam getting a accuracy graph as mentioned.How can i improve MAP
value.
> > [image: screen shot 2017-04-20 at 6 30 06 am]
> > <https://cloud.githubusercontent.com/assets/
26631312/25208518/e02ba350-2592-11e7-87a9-8b99cb4cb9ec.png>
> >
> > —
> > You are receiving this because you were mentioned.
> > Reply to this email directly, view it on GitHub
> > <#1384 (comment)>,
or mute
> > the thread
> > <https://github.com/notifications/unsubscribe-auth/
AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
> > .
> >
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub <
#1384 (comment)>, or
mute the thread <https://github.com/notifications/unsubscribe-
auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>.
>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AX39aNim4o6ez5jKgSmKemO30-U9YPOLks5rxrIAgaJpZM4LfTqE>
.
|
I hope it will work for you too.Trying using this and please also let me know your status.Thank you
On 20-Apr-2017, at 6:49 AM, shreyasramesh ***@***.***> wrote:
I'm using the customNetwork that I sent you before. Can you change that and
send it back? I'll try it out
Thanks!
On Apr 20, 2017 6:46 AM, "sulthanashafi" ***@***.***> wrote:
Please sent your custom detectnet being used now.I will change in it and
sent you back.Please try on it.If possible,sent a image of yours being
treated or please let me know the properties of the image being used.I hope
i can help you.
> On 20-Apr-2017, at 6:42 AM, shreyasramesh ***@***.***>
wrote:
>
> What param/model/dataset changes helped in increasing the accuracy to the
> current value?
>
>
> On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.***> wrote:
>
> > Now iam getting a accuracy graph as mentioned.How can i improve MAP
value.
> > [image: screen shot 2017-04-20 at 6 30 06 am]
> > <https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350-
2592-11e7-87a9-8b99cb4cb9ec.png>
> >
> > —
> > You are receiving this because you were mentioned.
> > Reply to this email directly, view it on GitHub
> > <#1384 (comment)>,
or mute
> > the thread
> > <https://github.com/notifications/unsubscribe-auth/
AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
> > .
> >
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub <
#1384 (comment)>, or
mute the thread <https://github.com/notifications/unsubscribe-
auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>.
>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AX39aNim4o6ez5jKgSmKemO30-U9YPOLks5rxrIAgaJpZM4LfTqE>
.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckBBs-AtOyjm5ZJ9kRGmURBn6RdAaks5rxrK2gaJpZM4LfTqE>.
# DetectNet network
# Data/Input layers
name: "DetectNet"
layer {
name: "train_data"
type: "Data"
top: "data"
include: { phase: TRAIN }
}
layer {
name: "train_label"
type: "Data"
top: "label"
include: { phase: TRAIN }
}
layer {
name: "val_data"
type: "Data"
top: "data"
include: { phase: TEST stage: "val" }
}
layer {
name: "val_label"
type: "Data"
top: "label"
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_data"
type: "Input"
top: "data"
include: { phase: TEST not_stage: "val" }
}
# Data transformation layers
layer {
name: "train_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 16
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 512
image_size_y: 512
crop_bboxes: false
}
detectnet_augmentation_param: {
crop_prob: 1
shift_x: 32
shift_y: 32
flip_prob: 0
rotation_prob: 0
max_rotate_degree: 5
scale_prob: 0
scale_min: 0.8
scale_max: 1.2
hue_rotation_prob: 0
hue_rotation: 30
desaturation_prob: 0
desaturation_max: 0.8
}
transform_param: {
mean_value: 127
}
include: { phase: TRAIN }
}
layer {
name: "val_transform"
type: "DetectNetTransformation"
bottom: "data"
bottom: "label"
top: "transformed_data"
top: "transformed_label"
detectnet_groundtruth_param: {
stride: 16
scale_cvg: 0.4
gridbox_type: GRIDBOX_MIN
coverage_type: RECTANGULAR
min_cvg_len: 20
obj_norm: true
image_size_x: 1248
image_size_y: 384
crop_bboxes: false
}
transform_param: {
mean_value: 127
}
include: { phase: TEST stage: "val" }
}
layer {
name: "deploy_transform"
type: "Power"
bottom: "data"
top: "transformed_data"
power_param {
shift: -127
}
include: { phase: TEST not_stage: "val" }
}
# Label conversion layers
layer {
name: "slice-label"
type: "Slice"
bottom: "transformed_label"
top: "foreground-label"
top: "bbox-label"
top: "size-label"
top: "obj-label"
top: "coverage-label"
slice_param {
slice_dim: 1
slice_point: 1
slice_point: 5
slice_point: 7
slice_point: 8
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage-block"
type: "Concat"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
bottom: "foreground-label"
top: "coverage-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "size-block"
type: "Concat"
bottom: "size-label"
bottom: "size-label"
top: "size-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "obj-block"
type: "Concat"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
bottom: "obj-label"
top: "obj-block"
concat_param {
concat_dim: 1
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-label-norm"
type: "Eltwise"
bottom: "bbox-label"
bottom: "size-block"
top: "bbox-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bb-obj-norm"
type: "Eltwise"
bottom: "bbox-label-norm"
bottom: "obj-block"
top: "bbox-obj-label-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
######################################################################
# Start of convolutional network
######################################################################
layer {
name: "conv1/7x7_s2"
type: "Convolution"
bottom: "transformed_data"
top: "conv1/7x7_s2"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 3
kernel_size: 7
stride: 2
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv1/relu_7x7"
type: "ReLU"
bottom: "conv1/7x7_s2"
top: "conv1/7x7_s2"
}
layer {
name: "pool1/3x3_s2"
type: "Pooling"
bottom: "conv1/7x7_s2"
top: "pool1/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "pool1/norm1"
type: "LRN"
bottom: "pool1/3x3_s2"
top: "pool1/norm1"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "conv2/3x3_reduce"
type: "Convolution"
bottom: "pool1/norm1"
top: "conv2/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3_reduce"
type: "ReLU"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3_reduce"
}
layer {
name: "conv2/3x3"
type: "Convolution"
bottom: "conv2/3x3_reduce"
top: "conv2/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "conv2/relu_3x3"
type: "ReLU"
bottom: "conv2/3x3"
top: "conv2/3x3"
}
layer {
name: "conv2/norm2"
type: "LRN"
bottom: "conv2/3x3"
top: "conv2/norm2"
lrn_param {
local_size: 5
alpha: 0.0001
beta: 0.75
}
}
layer {
name: "pool2/3x3_s2"
type: "Pooling"
bottom: "conv2/norm2"
top: "pool2/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "inception_3a/1x1"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_1x1"
type: "ReLU"
bottom: "inception_3a/1x1"
top: "inception_3a/1x1"
}
layer {
name: "inception_3a/3x3_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3_reduce"
}
layer {
name: "inception_3a/3x3"
type: "Convolution"
bottom: "inception_3a/3x3_reduce"
top: "inception_3a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_3x3"
type: "ReLU"
bottom: "inception_3a/3x3"
top: "inception_3a/3x3"
}
layer {
name: "inception_3a/5x5_reduce"
type: "Convolution"
bottom: "pool2/3x3_s2"
top: "inception_3a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5_reduce"
}
layer {
name: "inception_3a/5x5"
type: "Convolution"
bottom: "inception_3a/5x5_reduce"
top: "inception_3a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_5x5"
type: "ReLU"
bottom: "inception_3a/5x5"
top: "inception_3a/5x5"
}
layer {
name: "inception_3a/pool"
type: "Pooling"
bottom: "pool2/3x3_s2"
top: "inception_3a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3a/pool_proj"
type: "Convolution"
bottom: "inception_3a/pool"
top: "inception_3a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3a/relu_pool_proj"
type: "ReLU"
bottom: "inception_3a/pool_proj"
top: "inception_3a/pool_proj"
}
layer {
name: "inception_3a/output"
type: "Concat"
bottom: "inception_3a/1x1"
bottom: "inception_3a/3x3"
bottom: "inception_3a/5x5"
bottom: "inception_3a/pool_proj"
top: "inception_3a/output"
}
layer {
name: "inception_3b/1x1"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_1x1"
type: "ReLU"
bottom: "inception_3b/1x1"
top: "inception_3b/1x1"
}
layer {
name: "inception_3b/3x3_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3_reduce"
}
layer {
name: "inception_3b/3x3"
type: "Convolution"
bottom: "inception_3b/3x3_reduce"
top: "inception_3b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_3x3"
type: "ReLU"
bottom: "inception_3b/3x3"
top: "inception_3b/3x3"
}
layer {
name: "inception_3b/5x5_reduce"
type: "Convolution"
bottom: "inception_3a/output"
top: "inception_3b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5_reduce"
}
layer {
name: "inception_3b/5x5"
type: "Convolution"
bottom: "inception_3b/5x5_reduce"
top: "inception_3b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_5x5"
type: "ReLU"
bottom: "inception_3b/5x5"
top: "inception_3b/5x5"
}
layer {
name: "inception_3b/pool"
type: "Pooling"
bottom: "inception_3a/output"
top: "inception_3b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_3b/pool_proj"
type: "Convolution"
bottom: "inception_3b/pool"
top: "inception_3b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_3b/relu_pool_proj"
type: "ReLU"
bottom: "inception_3b/pool_proj"
top: "inception_3b/pool_proj"
}
layer {
name: "inception_3b/output"
type: "Concat"
bottom: "inception_3b/1x1"
bottom: "inception_3b/3x3"
bottom: "inception_3b/5x5"
bottom: "inception_3b/pool_proj"
top: "inception_3b/output"
}
layer {
name: "pool3/3x3_s2"
type: "Pooling"
bottom: "inception_3b/output"
top: "pool3/3x3_s2"
pooling_param {
pool: MAX
kernel_size: 3
stride: 2
}
}
layer {
name: "inception_4a/1x1"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_1x1"
type: "ReLU"
bottom: "inception_4a/1x1"
top: "inception_4a/1x1"
}
layer {
name: "inception_4a/3x3_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 96
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3_reduce"
}
layer {
name: "inception_4a/3x3"
type: "Convolution"
bottom: "inception_4a/3x3_reduce"
top: "inception_4a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 208
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_3x3"
type: "ReLU"
bottom: "inception_4a/3x3"
top: "inception_4a/3x3"
}
layer {
name: "inception_4a/5x5_reduce"
type: "Convolution"
bottom: "pool3/3x3_s2"
top: "inception_4a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 16
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5_reduce"
}
layer {
name: "inception_4a/5x5"
type: "Convolution"
bottom: "inception_4a/5x5_reduce"
top: "inception_4a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_5x5"
type: "ReLU"
bottom: "inception_4a/5x5"
top: "inception_4a/5x5"
}
layer {
name: "inception_4a/pool"
type: "Pooling"
bottom: "pool3/3x3_s2"
top: "inception_4a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4a/pool_proj"
type: "Convolution"
bottom: "inception_4a/pool"
top: "inception_4a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4a/relu_pool_proj"
type: "ReLU"
bottom: "inception_4a/pool_proj"
top: "inception_4a/pool_proj"
}
layer {
name: "inception_4a/output"
type: "Concat"
bottom: "inception_4a/1x1"
bottom: "inception_4a/3x3"
bottom: "inception_4a/5x5"
bottom: "inception_4a/pool_proj"
top: "inception_4a/output"
}
layer {
name: "inception_4b/1x1"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_1x1"
type: "ReLU"
bottom: "inception_4b/1x1"
top: "inception_4b/1x1"
}
layer {
name: "inception_4b/3x3_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3_reduce"
}
layer {
name: "inception_4b/3x3"
type: "Convolution"
bottom: "inception_4b/3x3_reduce"
top: "inception_4b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 224
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_3x3"
type: "ReLU"
bottom: "inception_4b/3x3"
top: "inception_4b/3x3"
}
layer {
name: "inception_4b/5x5_reduce"
type: "Convolution"
bottom: "inception_4a/output"
top: "inception_4b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5_reduce"
}
layer {
name: "inception_4b/5x5"
type: "Convolution"
bottom: "inception_4b/5x5_reduce"
top: "inception_4b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_5x5"
type: "ReLU"
bottom: "inception_4b/5x5"
top: "inception_4b/5x5"
}
layer {
name: "inception_4b/pool"
type: "Pooling"
bottom: "inception_4a/output"
top: "inception_4b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4b/pool_proj"
type: "Convolution"
bottom: "inception_4b/pool"
top: "inception_4b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4b/relu_pool_proj"
type: "ReLU"
bottom: "inception_4b/pool_proj"
top: "inception_4b/pool_proj"
}
layer {
name: "inception_4b/output"
type: "Concat"
bottom: "inception_4b/1x1"
bottom: "inception_4b/3x3"
bottom: "inception_4b/5x5"
bottom: "inception_4b/pool_proj"
top: "inception_4b/output"
}
layer {
name: "inception_4c/1x1"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_1x1"
type: "ReLU"
bottom: "inception_4c/1x1"
top: "inception_4c/1x1"
}
layer {
name: "inception_4c/3x3_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3_reduce"
}
layer {
name: "inception_4c/3x3"
type: "Convolution"
bottom: "inception_4c/3x3_reduce"
top: "inception_4c/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_3x3"
type: "ReLU"
bottom: "inception_4c/3x3"
top: "inception_4c/3x3"
}
layer {
name: "inception_4c/5x5_reduce"
type: "Convolution"
bottom: "inception_4b/output"
top: "inception_4c/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 24
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5_reduce"
}
layer {
name: "inception_4c/5x5"
type: "Convolution"
bottom: "inception_4c/5x5_reduce"
top: "inception_4c/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_5x5"
type: "ReLU"
bottom: "inception_4c/5x5"
top: "inception_4c/5x5"
}
layer {
name: "inception_4c/pool"
type: "Pooling"
bottom: "inception_4b/output"
top: "inception_4c/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4c/pool_proj"
type: "Convolution"
bottom: "inception_4c/pool"
top: "inception_4c/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4c/relu_pool_proj"
type: "ReLU"
bottom: "inception_4c/pool_proj"
top: "inception_4c/pool_proj"
}
layer {
name: "inception_4c/output"
type: "Concat"
bottom: "inception_4c/1x1"
bottom: "inception_4c/3x3"
bottom: "inception_4c/5x5"
bottom: "inception_4c/pool_proj"
top: "inception_4c/output"
}
layer {
name: "inception_4d/1x1"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 112
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_1x1"
type: "ReLU"
bottom: "inception_4d/1x1"
top: "inception_4d/1x1"
}
layer {
name: "inception_4d/3x3_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 144
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3_reduce"
}
layer {
name: "inception_4d/3x3"
type: "Convolution"
bottom: "inception_4d/3x3_reduce"
top: "inception_4d/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 288
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_3x3"
type: "ReLU"
bottom: "inception_4d/3x3"
top: "inception_4d/3x3"
}
layer {
name: "inception_4d/5x5_reduce"
type: "Convolution"
bottom: "inception_4c/output"
top: "inception_4d/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5_reduce"
}
layer {
name: "inception_4d/5x5"
type: "Convolution"
bottom: "inception_4d/5x5_reduce"
top: "inception_4d/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_5x5"
type: "ReLU"
bottom: "inception_4d/5x5"
top: "inception_4d/5x5"
}
layer {
name: "inception_4d/pool"
type: "Pooling"
bottom: "inception_4c/output"
top: "inception_4d/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4d/pool_proj"
type: "Convolution"
bottom: "inception_4d/pool"
top: "inception_4d/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 64
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4d/relu_pool_proj"
type: "ReLU"
bottom: "inception_4d/pool_proj"
top: "inception_4d/pool_proj"
}
layer {
name: "inception_4d/output"
type: "Concat"
bottom: "inception_4d/1x1"
bottom: "inception_4d/3x3"
bottom: "inception_4d/5x5"
bottom: "inception_4d/pool_proj"
top: "inception_4d/output"
}
layer {
name: "inception_4e/1x1"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_1x1"
type: "ReLU"
bottom: "inception_4e/1x1"
top: "inception_4e/1x1"
}
layer {
name: "inception_4e/3x3_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3_reduce"
}
layer {
name: "inception_4e/3x3"
type: "Convolution"
bottom: "inception_4e/3x3_reduce"
top: "inception_4e/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_3x3"
type: "ReLU"
bottom: "inception_4e/3x3"
top: "inception_4e/3x3"
}
layer {
name: "inception_4e/5x5_reduce"
type: "Convolution"
bottom: "inception_4d/output"
top: "inception_4e/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5_reduce"
}
layer {
name: "inception_4e/5x5"
type: "Convolution"
bottom: "inception_4e/5x5_reduce"
top: "inception_4e/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_5x5"
type: "ReLU"
bottom: "inception_4e/5x5"
top: "inception_4e/5x5"
}
layer {
name: "inception_4e/pool"
type: "Pooling"
bottom: "inception_4d/output"
top: "inception_4e/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_4e/pool_proj"
type: "Convolution"
bottom: "inception_4e/pool"
top: "inception_4e/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_4e/relu_pool_proj"
type: "ReLU"
bottom: "inception_4e/pool_proj"
top: "inception_4e/pool_proj"
}
layer {
name: "inception_4e/output"
type: "Concat"
bottom: "inception_4e/1x1"
bottom: "inception_4e/3x3"
bottom: "inception_4e/5x5"
bottom: "inception_4e/pool_proj"
top: "inception_4e/output"
}
layer {
name: "inception_5a/1x1"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 256
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_1x1"
type: "ReLU"
bottom: "inception_5a/1x1"
top: "inception_5a/1x1"
}
layer {
name: "inception_5a/3x3_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 160
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.09
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3_reduce"
}
layer {
name: "inception_5a/3x3"
type: "Convolution"
bottom: "inception_5a/3x3_reduce"
top: "inception_5a/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 320
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_3x3"
type: "ReLU"
bottom: "inception_5a/3x3"
top: "inception_5a/3x3"
}
layer {
name: "inception_5a/5x5_reduce"
type: "Convolution"
bottom: "inception_4e/output"
top: "inception_5a/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5_reduce"
}
layer {
name: "inception_5a/5x5"
type: "Convolution"
bottom: "inception_5a/5x5_reduce"
top: "inception_5a/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_5x5"
type: "ReLU"
bottom: "inception_5a/5x5"
top: "inception_5a/5x5"
}
layer {
name: "inception_5a/pool"
type: "Pooling"
bottom: "inception_4e/output"
top: "inception_5a/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5a/pool_proj"
type: "Convolution"
bottom: "inception_5a/pool"
top: "inception_5a/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5a/relu_pool_proj"
type: "ReLU"
bottom: "inception_5a/pool_proj"
top: "inception_5a/pool_proj"
}
layer {
name: "inception_5a/output"
type: "Concat"
bottom: "inception_5a/1x1"
bottom: "inception_5a/3x3"
bottom: "inception_5a/5x5"
bottom: "inception_5a/pool_proj"
top: "inception_5a/output"
}
layer {
name: "inception_5b/1x1"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/1x1"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_1x1"
type: "ReLU"
bottom: "inception_5b/1x1"
top: "inception_5b/1x1"
}
layer {
name: "inception_5b/3x3_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/3x3_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 1
decay_mult: 0
}
convolution_param {
num_output: 192
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3_reduce"
type: "ReLU"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3_reduce"
}
layer {
name: "inception_5b/3x3"
type: "Convolution"
bottom: "inception_5b/3x3_reduce"
top: "inception_5b/3x3"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 384
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_3x3"
type: "ReLU"
bottom: "inception_5b/3x3"
top: "inception_5b/3x3"
}
layer {
name: "inception_5b/5x5_reduce"
type: "Convolution"
bottom: "inception_5a/output"
top: "inception_5b/5x5_reduce"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 48
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5_reduce"
type: "ReLU"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5_reduce"
}
layer {
name: "inception_5b/5x5"
type: "Convolution"
bottom: "inception_5b/5x5_reduce"
top: "inception_5b/5x5"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
pad: 2
kernel_size: 5
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_5x5"
type: "ReLU"
bottom: "inception_5b/5x5"
top: "inception_5b/5x5"
}
layer {
name: "inception_5b/pool"
type: "Pooling"
bottom: "inception_5a/output"
top: "inception_5b/pool"
pooling_param {
pool: MAX
kernel_size: 3
stride: 1
pad: 1
}
}
layer {
name: "inception_5b/pool_proj"
type: "Convolution"
bottom: "inception_5b/pool"
top: "inception_5b/pool_proj"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 128
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.1
}
bias_filler {
type: "constant"
value: 0.2
}
}
}
layer {
name: "inception_5b/relu_pool_proj"
type: "ReLU"
bottom: "inception_5b/pool_proj"
top: "inception_5b/pool_proj"
}
layer {
name: "inception_5b/output"
type: "Concat"
bottom: "inception_5b/1x1"
bottom: "inception_5b/3x3"
bottom: "inception_5b/5x5"
bottom: "inception_5b/pool_proj"
top: "inception_5b/output"
}
layer {
name: "pool5/drop_s1"
type: "Dropout"
bottom: "inception_5b/output"
top: "pool5/drop_s1"
dropout_param {
dropout_ratio: 0.4
}
}
layer {
name: "cvg/classifier"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "cvg/classifier"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 1
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
layer {
name: "coverage/sig"
type: "Sigmoid"
bottom: "cvg/classifier"
top: "coverage"
}
layer {
name: "bbox/regressor"
type: "Convolution"
bottom: "pool5/drop_s1"
top: "bboxes"
param {
lr_mult: 1
decay_mult: 1
}
param {
lr_mult: 2
decay_mult: 0
}
convolution_param {
num_output: 4
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.03
}
bias_filler {
type: "constant"
value: 0.
}
}
}
######################################################################
# End of convolutional network
######################################################################
# Convert bboxes
layer {
name: "bbox_mask"
type: "Eltwise"
bottom: "bboxes"
bottom: "coverage-block"
top: "bboxes-masked"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-norm"
type: "Eltwise"
bottom: "bboxes-masked"
bottom: "size-block"
top: "bboxes-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "bbox-obj-norm"
type: "Eltwise"
bottom: "bboxes-masked-norm"
bottom: "obj-block"
top: "bboxes-obj-masked-norm"
eltwise_param {
operation: PROD
}
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Loss layers
layer {
name: "bbox_loss"
type: "L1Loss"
bottom: "bboxes-obj-masked-norm"
bottom: "bbox-obj-label-norm"
top: "loss_bbox"
loss_weight: 2
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
layer {
name: "coverage_loss"
type: "EuclideanLoss"
bottom: "coverage"
bottom: "coverage-label"
top: "loss_coverage"
include { phase: TRAIN }
include { phase: TEST stage: "val" }
}
# Cluster bboxes
layer {
type: 'Python'
name: 'cluster'
bottom: 'coverage'
bottom: 'bboxes'
top: 'bbox-list'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterDetections'
param_str : '1248, 352, 16, 0.06, 2, 0.025, 10'
}
include: { phase: TEST }
}
# Calculate mean average precision
layer {
type: 'Python'
name: 'cluster_gt'
bottom: 'coverage-label'
bottom: 'bbox-label'
top: 'bbox-list-label'
python_param {
module: 'caffe.layers.detectnet.clustering'
layer: 'ClusterGroundtruth'
param_str : '1248, 352, 16'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'score'
bottom: 'bbox-list-label'
bottom: 'bbox-list'
top: 'bbox-list-scored'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'ScoreDetections'
}
include: { phase: TEST stage: "val" }
}
layer {
type: 'Python'
name: 'mAP'
bottom: 'bbox-list-scored'
top: 'mAP'
top: 'precision'
top: 'recall'
python_param {
module: 'caffe.layers.detectnet.mean_ap'
layer: 'mAP'
param_str : '1248, 352, 16'
}
include: { phase: TEST stage: "val" }
}
|
Also try using with and without custom class mentioned.Use ADAM Solver itself.
… On 20-Apr-2017, at 6:57 AM, Sulthana Shafi ***@***.***> wrote:
<customNetworkchange.txt>
I hope it will work for you too.Trying using this and please also let me know your status.Thank you
> On 20-Apr-2017, at 6:49 AM, shreyasramesh ***@***.*** ***@***.***>> wrote:
>
> I'm using the customNetwork that I sent you before. Can you change that and
> send it back? I'll try it out
> Thanks!
>
> On Apr 20, 2017 6:46 AM, "sulthanashafi" ***@***.*** ***@***.***>> wrote:
>
> Please sent your custom detectnet being used now.I will change in it and
> sent you back.Please try on it.If possible,sent a image of yours being
> treated or please let me know the properties of the image being used.I hope
> i can help you.
>
> > On 20-Apr-2017, at 6:42 AM, shreyasramesh ***@***.*** ***@***.***>>
> wrote:
> >
> > What param/model/dataset changes helped in increasing the accuracy to the
> > current value?
> >
> >
> > On Apr 20, 2017 6:31 AM, "sulthanashafi" ***@***.*** ***@***.***>> wrote:
> >
> > > Now iam getting a accuracy graph as mentioned.How can i improve MAP
> value.
> > > [image: screen shot 2017-04-20 at 6 30 06 am]
> > > <https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350- <https://cloud.githubusercontent.com/assets/26631312/25208518/e02ba350->
> 2592-11e7-87a9-8b99cb4cb9ec.png>
>
> > >
> > > —
> > > You are receiving this because you were mentioned.
> > > Reply to this email directly, view it on GitHub
> > > <#1384 (comment) <#1384 (comment)>>,
> or mute
> > > the thread
> > > <https://github.com/notifications/unsubscribe-auth/ <https://github.com/notifications/unsubscribe-auth/>
> AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE>
> > > .
> > >
> > —
> > You are receiving this because you commented.
> > Reply to this email directly, view it on GitHub <
> #1384 (comment) <#1384 (comment)>>, or
> mute the thread <https://github.com/notifications/unsubscribe- <https://github.com/notifications/unsubscribe->
> auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>.
>
> >
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <#1384 (comment) <#1384 (comment)>>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/AX39aNim4o6ez5jKgSmKemO30-U9YPOLks5rxrIAgaJpZM4LfTqE <https://github.com/notifications/unsubscribe-auth/AX39aNim4o6ez5jKgSmKemO30-U9YPOLks5rxrIAgaJpZM4LfTqE>>
> .
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckBBs-AtOyjm5ZJ9kRGmURBn6RdAaks5rxrK2gaJpZM4LfTqE>.
>
|
@sulthanashafi #1011 provides details on how you could improve your accuracy |
Hi,Are you able to get boundingbox now.Then,may i know about your accuracy graph.
Thank you
… On 21-Apr-2017, at 9:00 AM, shreyasramesh ***@***.***> wrote:
@sulthanashafi <https://github.com/sulthanashafi> #1011 <#1011> provides details on how you could improve your accuracy
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckBEpRcnHdoQ8-s6_AoVQfWHxO6Slks5ryCLGgaJpZM4LfTqE>.
|
Hello, it did not work for me. Actually didn't get even classifier and coverage output. |
Oh ..If you could share more about your image type /details being used.Then i will also try to find it out for you .
… On 23-Apr-2017, at 11:30 AM, shreyasramesh ***@***.***> wrote:
Hello, it did not work for me. Actually didn't get even classifier and coverage output.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckD-SpRXAq5kae_My6VKALTB3Bo-vks5ryukVgaJpZM4LfTqE>.
|
Hi |
Hi,Have you got the boundingbox for your system.May i please know how to take the coverage value alone from detectnet .
… On 23-Apr-2017, at 11:30 AM, shreyasramesh ***@***.***> wrote:
Hello, it did not work for me. Actually didn't get even classifier and coverage output.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#1384 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AZZckD-SpRXAq5kae_My6VKALTB3Bo-vks5ryukVgaJpZM4LfTqE>.
|
anyone finetuned the network for 2 class detection.Please help me |
THE SOLUTIONWe got the same problem, that mAP always stays at 0. For us, the problem was the way we created our custom dataset. As the first poster mentioned, for every image, e.g. 0001.jpg he has a label called 0001.txt with this content:
Problem: Original Kitti Dataset looks like this:
Solution: You have to write "Car" and not "car" in your custom classes configuration in the dataset. Otherwise, all classes wich are not recognized in the dataset class mapping will be mapped to DontCare. The result is, that mAP will always be zero, because there are no classes besides background. How to fix?Name classes the same way as in Original Kitti dataset or change your class mapping to match your classes (also respect upper/lower case). E.g. if you have a custom dataset with class "Bear" and the following label file:
Set the custom class in your dataset to the following: Now training actually works and mAP is 0.8 and higher. |
Hi ,Thanks for your tip.Iam now working on multiple object detection,after
getting a satisfactory result from single object detection in Digits.I have
tried your suggestion too.But it is not learning for two class.Do you have
any other suggestion please.
…On Mon, Oct 2, 2017 at 4:39 PM, plieningerweb ***@***.***> wrote:
THE SOLUTION
We got the same problem, that mAP always stays at 0. For us, the problem
was the way we created our custom dataset.
As the first poster mentioned, for every image, e.g. 0001.jpg he has a
label called 0001.txt with this content:
car 0.0 0 0.0 12.0 172.0 402.0 318.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
*Problem*: Original Kitti Dataset looks like this:
Car 0.96 0 -0.86 0.00 201.73 304.22 369.00 1.50 1.78 3.69 -3.16 1.68 3.36 -1.56
Cyclist 0.00 1 -1.60 991.74 147.41 1029.71 217.49 1.72 0.78 1.71 10.46 0.91 18.32 -1.08
Car 0.00 0 -0.02 760.94 163.22 878.26 207.91 1.44 1.64 3.68 7.22 0.90 24.06 0.27
DontCare -1 -1 -10 418.79 163.43 449.65 188.12 -1 -1 -1 -1000 -1000 -1000 -10
DontCare -1 -1 -10 600.71 159.32 702.49 176.82 -1 -1 -1 -1000 -1000 -1000 -10
*Solution:* You have to write "Car" and not "car" in your *custom classes*
configuration in the dataset. Otherwise, *all classes wich are not
recognized in the dataset class mapping will be mapped to DontCare*. The
result is, that mAP will always be zero, because there are no classes
besides background.
[image: screenshot from 2017-10-02 11-33-38]
<https://user-images.githubusercontent.com/481107/31071904-1e06b0e8-a766-11e7-95f4-3bbc2fc230c7.png>
How to fix?
Name classes the same way as in Original Kitti dataset or change your
class mapping to match your classes (also respect upper/lower case). E.g.
if you have a custom dataset with class "Bear" and the following label file:
Bear 0.0 0 -1 9.0 229.0 57.0 260.0 -1 -1 -1 -1 -1 -1 -1
Set the custom class in your dataset to the following: DontCare,Bear
Now training actually works and mAP is 0.8 and higher.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#1384 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/Ab8uGureaAlMjSVrsf9kVCwn2mI_Y1X4ks5soMR_gaJpZM4LfTqE>
.
|
Hi there!
I'm trying to use Detectnet network on DIGITS to detect blood vessels in ultrasound images (only one blood vessel per image). My images are originally 128x128 pixels and grayscale, so I had to do some resizing (512x512) so that its easier for the Detectnet network to place the bounding box and convert the images to RGB (doing a 3-matrix with the same Image). I also compress the images with .jpeg.
Those are an example of an image I'm using and the label of that image printed with Matlab:
For the labels of the images I use the following format (this is the label from the previous image):
car 0.0 0 0.0 12.0 172.0 402.0 318.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
I have checked it out, and ALL the bounding boxes are between 50x50 and 400x400 pixels, so that shouldn't be a problem.
Here are the parameters I have used in the last run and also the results I got:
But as you can see the MAP value is always zero and when I try to test a single or a list of images, the network doesn't place the bounding box (even if I test images that I use for training!).
As you can see it doesn't place the bounding box, but the coverage "map" is correct and it identifies correctly the blood vessel. Plus, if eventually in some random images (normally images I used for training) it does place the Bounding box, it is always correctly placed.
Finally, I'll post the code in caffe of the network we are using. Maybe I've missed something and you can point it out to me:
Detectnet.txt
With all this, I wonder the following:
After some epoch, the network starts to overfit without having increased the mAP at all, even with 130k images... Do you have any idea of what could be going wrong?
With the amount of images that I´m using, I don´t understand why it doesn´t place the box even after 300 epoch. Do you think that the sizes are an issue? Should we increase the size to 1024x1024 of the image (512x512) via padding (to keep the bounding boxes between 50x50 - 400x400)?
I am aware that in the phyton layers, there are the parameters in param_str: https://github.com/gheinrich/caffe/blob/08c0ce38d1cd144aad11d62ee0045d12265b6cbf/examples/kitti/detectnet_network.prototxt#L2502). I try to change them but I cannot diminish the threshold so the neural network places more bounding boxes... How should we tune it in order to make the network place only one bounding box per image? It seems it shouldn't be hard, taking into account that the coverage is almost perfect.
Any other suggestion or recommendations will be highly appreciated.
Thank you very much. I really need some help here.
Thanks!
:)
The text was updated successfully, but these errors were encountered: