NVIDIA / DIGITS

Deep Learning GPU Training System
https://developer.nvidia.com/digits
BSD 3-Clause "New" or "Revised" License
4.12k stars 1.38k forks source link

Detectnet doesn't always place bounding box and mAP is always zero with custom dataset. #1384

Open AlexPalauDomenech opened 7 years ago

AlexPalauDomenech commented 7 years ago

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:

34003

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: image image capture2 capture pene

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!).

image image image

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: 1) 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?

2) 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)?

3) 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.

4) Any other suggestion or recommendations will be highly appreciated.

Thank you very much. I really need some help here. Thanks! :)

sulthanashafi commented 7 years ago

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 notifications@github.com 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" 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 notifications@github.com wrote:

What param/model/dataset changes helped in increasing the accuracy to the current value?

On Apr 20, 2017 6:31 AM, "sulthanashafi" notifications@github.com 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-295521900, 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 < https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-295525882>, 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-295527502, 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-295528618, 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" } }

sulthanashafi commented 7 years ago

Also try using with and without custom class mentioned.Use ADAM Solver itself.

On 20-Apr-2017, at 6:57 AM, Sulthana Shafi sulthana.shafi@triassicsolutions.com wrote:

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] > > > > 2592-11e7-87a9-8b99cb4cb9ec.png> > > > > > > > — > > > You are receiving this because you were mentioned. > > > Reply to this email directly, view it on GitHub > > > >, > or mute > > > the thread > > > > AX39aDlAl7fPuIOeSUYdQY8WAYY2fj3iks5rxq5SgaJpZM4LfTqE> > > > . > > > > > — > > You are receiving this because you commented. > > Reply to this email directly, view it on GitHub < > https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-295525882 >, or > mute the thread > auth/AZZckO1yA1s81grrCi4H-PgfkPDeO8_4ks5rxrEAgaJpZM4LfTqE>. > > > > > — > You are receiving this because you were mentioned. > Reply to this email directly, view it on GitHub > >, or mute > the thread > > > . > — > You are receiving this because you commented. > Reply to this email directly, view it on GitHub , or mute the thread . >
shreyasramesh commented 7 years ago

@sulthanashafi https://github.com/NVIDIA/DIGITS/issues/1011 provides details on how you could improve your accuracy

sulthanashafi commented 7 years ago

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 notifications@github.com wrote:

@sulthanashafi https://github.com/sulthanashafi #1011 https://github.com/NVIDIA/DIGITS/issues/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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-296040599, or mute the thread https://github.com/notifications/unsubscribe-auth/AZZckBEpRcnHdoQ8-s6_AoVQfWHxO6Slks5ryCLGgaJpZM4LfTqE.

shreyasramesh commented 7 years ago

Hello, it did not work for me. Actually didn't get even classifier and coverage output.

sulthanashafi commented 7 years ago

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 notifications@github.com 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-296421894, or mute the thread https://github.com/notifications/unsubscribe-auth/AZZckD-SpRXAq5kae_My6VKALTB3Bo-vks5ryukVgaJpZM4LfTqE.

MohammadMoradi commented 7 years ago

Hi I have exactly the same problem. All mAPs and recalls are zero but loss is decreasing. Does anyone manage to solve it?

sulthanashafi commented 7 years ago

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 notifications@github.com 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-296421894, or mute the thread https://github.com/notifications/unsubscribe-auth/AZZckD-SpRXAq5kae_My6VKALTB3Bo-vks5ryukVgaJpZM4LfTqE.

sulth commented 6 years ago

anyone finetuned the network for 2 class detection.Please help me

plieningerweb commented 6 years ago

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.

screenshot from 2017-10-02 11-33-38

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.

sulth commented 6 years ago

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 notifications@github.com 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 https://github.com/NVIDIA/DIGITS/issues/1384#issuecomment-333504690, or mute the thread https://github.com/notifications/unsubscribe-auth/Ab8uGureaAlMjSVrsf9kVCwn2mI_Y1X4ks5soMR_gaJpZM4LfTqE .