Inference time of tiny-yolo-v3 on GPU - tensorflow

I am doing inference of tiny-yolo-v3 on google collab using GPU runtime.
GPU used was Tesla P100-PCIE-16GB.
After running the darknet inference command , The predicted time shown was 0.91 seconds.
I could see from code that this time stamp is the processing time of the network on GPU which excludes pre and post processing of image.
I have created cells which contains the same results.
Now, I am little confused regarding this . I know these GPUs are very costly and gives good performance. But 0.91 seconds inference time accounts to performance of 0.9 frames/second , which is not significant.
Can anyone tell me whether I am doing something wrong here?
Or It is the actual performance of GPUs?
I know inference time depends on lot of parameters like network size etc, but how fast GPUs can process data in terms of Frames/second in networks like tiny-yolo-v3?
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 4007284112891679343, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 16862634677760767602
physical_device_desc: "device: XLA_CPU device", name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 10729193134179919719
physical_device_desc: "device: XLA_GPU device", name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 15701463552
locality {
bus_id: 1
links {
}
}
incarnation: 8937778522862983933
physical_device_desc: "device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:00:04.0, compute capability: 6.0"]
import tensorflow as tf
tf.test.gpu_device_name()
/device:GPU:0'
!./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg /yolov3-tiny.weights data/dog.jpg
layer filters size input output
0 conv 16 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BFLOPs
1 max 2 x 2 / 2 416 x 416 x 16 -> 208 x 208 x 16
2 conv 32 3 x 3 / 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BFLOPs
3 max 2 x 2 / 2 208 x 208 x 32 -> 104 x 104 x 32
4 conv 64 3 x 3 / 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BFLOPs
5 max 2 x 2 / 2 104 x 104 x 64 -> 52 x 52 x 64
6 conv 128 3 x 3 / 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BFLOPs
7 max 2 x 2 / 2 52 x 52 x 128 -> 26 x 26 x 128
8 conv 256 3 x 3 / 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BFLOPs
9 max 2 x 2 / 2 26 x 26 x 256 -> 13 x 13 x 256
10 conv 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs
11 max 2 x 2 / 1 13 x 13 x 512 -> 13 x 13 x 512
12 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs
13 conv 256 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 256 0.089 BFLOPs
14 conv 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs
15 conv 255 1 x 1 / 1 13 x 13 x 512 -> 13 x 13 x 255 0.044 BFLOPs
16 yolo
17 route 13
18 conv 128 1 x 1 / 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BFLOPs
19 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128
20 route 19 8
21 conv 256 3 x 3 / 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BFLOPs
22 conv 255 1 x 1 / 1 26 x 26 x 256 -> 26 x 26 x 255 0.088 BFLOPs
23 yolo
Loading weights from /content/gdrive/My Drive/Darknet/yolov3-tiny.weights...Done!
data/dog.jpg: Predicted in 0.917487 seconds.
dog: 57%
car: 52%
truck: 56%
car: 62%
bicycle: 59%

You have to make the darknet with GPU enabled, in order to be able to use GPU to perform inference, and the time you get for inference currently, is because the inference is being done by CPU, rather than GPU.
I came across this problem, and on my own laptop, I got an inference time of 1.2 seconds. After I enabled CUDA and made the project with GPU enabled, I got an inference time of approximately 0.2 seconds on Nvidia Geforce GTX 960.
In order to make darknet with GPU, open the Makefile, and change the line GPU=0 to GPU=1. Then make the project again. I assume that you would get an inference time of 0.05 seconds if you run the code on colab.

Related

No signal screen on Ubuntu when start training YOLOv4 model on GPU

I'm working on Ubuntu 20.04 with Geforce 3060 Ti GPU.
I followed this link step by step.
When i run the below training command
./darknet detector train data/obj.data cfg/yolov4-custom.cfg ../training/yolov4-custom_last.weights -dont_show -map
The training process started, but the screen went off shortly after the start.
After restarting the system, no checkpoints are saved.
Also there is no error or warning when training start:
CUDA-version: 11080 (11080), cuDNN: 8.5.0, CUDNN_HALF=1, GPU count: 1
CUDNN_HALF=1
OpenCV version: 4.2.0
Prepare additional network for mAP calculation...
0 : compute_capability = 860, cudnn_half = 1, GPU: NVIDIA GeForce RTX 3060 Ti
net.optimized_memory = 0
mini_batch = 1, batch = 24, time_steps = 1, train = 0
layer filters size/strd(dil) input output
0 Create CUDA-stream - 0
Create cudnn-handle 0
conv 32 3 x 3/ 2 416 x 416 x 3 -> 208 x 208 x 32 0.075 BF
1 conv 64 3 x 3/ 2 208 x 208 x 32 -> 104 x 104 x 64 0.399 BF
2 conv 64 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.797 BF
3 route 2 1/2 -> 104 x 104 x 32
4 conv 32 3 x 3/ 1 104 x 104 x 32 -> 104 x 104 x 32 0.199 BF
5 conv 32 3 x 3/ 1 104 x 104 x 32 -> 104 x 104 x 32 0.199 BF
6 route 5 4 -> 104 x 104 x 64
7 conv 64 1 x 1/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.089 BF
8 route 2 7 -> 104 x 104 x 128
9 max 2x 2/ 2 104 x 104 x 128 -> 52 x 52 x 128 0.001 BF
10 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
11 route 10 1/2 -> 52 x 52 x 64
12 conv 64 3 x 3/ 1 52 x 52 x 64 -> 52 x 52 x 64 0.199 BF
13 conv 64 3 x 3/ 1 52 x 52 x 64 -> 52 x 52 x 64 0.199 BF
14 route 13 12 -> 52 x 52 x 128
15 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
16 route 10 15 -> 52 x 52 x 256
17 max 2x 2/ 2 52 x 52 x 256 -> 26 x 26 x 256 0.001 BF
18 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
19 route 18 1/2 -> 26 x 26 x 128
20 conv 128 3 x 3/ 1 26 x 26 x 128 -> 26 x 26 x 128 0.199 BF
21 conv 128 3 x 3/ 1 26 x 26 x 128 -> 26 x 26 x 128 0.199 BF
22 route 21 20 -> 26 x 26 x 256
23 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
24 route 18 23 -> 26 x 26 x 512
25 max 2x 2/ 2 26 x 26 x 512 -> 13 x 13 x 512 0.000 BF
26 conv 512 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.797 BF
27 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
28 conv 512 3 x 3/ 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BF
29 conv 24 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 24 0.004 BF
30 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
31 route 27 -> 13 x 13 x 256
32 conv 128 1 x 1/ 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BF
33 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128
34 route 33 23 -> 26 x 26 x 384
35 conv 256 3 x 3/ 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BF
36 conv 24 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 24 0.008 BF
37 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 6.790
avg_outputs = 299930
Allocate additional workspace_size = 134.22 MB
custom-yolov4-tiny-detector
0 : compute_capability = 860, cudnn_half = 1, GPU: NVIDIA GeForce RTX 3060 Ti
net.optimized_memory = 0
mini_batch = 2, batch = 48, time_steps = 1, train = 1
What I try so far:
Reinstalling the Ubuntu
Turn off the GUI and using the command line only
Thanks in advance

YOLO V4 Darknet error location: ./src/image.c, make_image, line #797 Calloc error - possibly out of CPU RAM: File exists Error

I have trained my YOLO V4 model and it can predict the objects but it is not able to create predictions.jpg. I think there is a problem with darknet. I have added my output below. It gives an Out of CPU error. Also, it is not creating an prediciton image with bboxes. In my previous tests, model was creating an predictions.jpg file. I don't understand what is going on. Thanks for your help..
CUDA-version: 11010 (11020), cuDNN: 7.6.5, CUDNN_HALF=1, GPU count: 1
CUDNN_HALF=1
OpenCV version: 3.2.0
0 : compute_capability = 600, cudnn_half = 0, GPU: Tesla P100-PCIE-16GB
net.optimized_memory = 0
mini_batch = 1, batch = 1, time_steps = 1, train = 0
layer filters size/strd(dil) input output
0 Create CUDA-stream - 0
Create cudnn-handle 0
conv 32 3 x 3/ 1 288 x 288 x 3 -> 288 x 288 x 32 0.143 BF
1 conv 64 3 x 3/ 2 288 x 288 x 32 -> 144 x 144 x 64 0.764 BF
2 conv 64 1 x 1/ 1 144 x 144 x 64 -> 144 x 144 x 64 0.170 BF
3 route 1 -> 144 x 144 x 64
4 conv 64 1 x 1/ 1 144 x 144 x 64 -> 144 x 144 x 64 0.170 BF
5 conv 32 1 x 1/ 1 144 x 144 x 64 -> 144 x 144 x 32 0.085 BF
6 conv 64 3 x 3/ 1 144 x 144 x 32 -> 144 x 144 x 64 0.764 BF
7 Shortcut Layer: 4, wt = 0, wn = 0, outputs: 144 x 144 x 64 0.001 BF
8 conv 64 1 x 1/ 1 144 x 144 x 64 -> 144 x 144 x 64 0.170 BF
9 route 8 2 -> 144 x 144 x 128
10 conv 64 1 x 1/ 1 144 x 144 x 128 -> 144 x 144 x 64 0.340 BF
11 conv 128 3 x 3/ 2 144 x 144 x 64 -> 72 x 72 x 128 0.764 BF
12 conv 64 1 x 1/ 1 72 x 72 x 128 -> 72 x 72 x 64 0.085 BF
13 route 11 -> 72 x 72 x 128
14 conv 64 1 x 1/ 1 72 x 72 x 128 -> 72 x 72 x 64 0.085 BF
15 conv 64 1 x 1/ 1 72 x 72 x 64 -> 72 x 72 x 64 0.042 BF
16 conv 64 3 x 3/ 1 72 x 72 x 64 -> 72 x 72 x 64 0.382 BF
17 Shortcut Layer: 14, wt = 0, wn = 0, outputs: 72 x 72 x 64 0.000 BF
18 conv 64 1 x 1/ 1 72 x 72 x 64 -> 72 x 72 x 64 0.042 BF
19 conv 64 3 x 3/ 1 72 x 72 x 64 -> 72 x 72 x 64 0.382 BF
20 Shortcut Layer: 17, wt = 0, wn = 0, outputs: 72 x 72 x 64 0.000 BF
21 conv 64 1 x 1/ 1 72 x 72 x 64 -> 72 x 72 x 64 0.042 BF
22 route 21 12 -> 72 x 72 x 128
23 conv 128 1 x 1/ 1 72 x 72 x 128 -> 72 x 72 x 128 0.170 BF
24 conv 256 3 x 3/ 2 72 x 72 x 128 -> 36 x 36 x 256 0.764 BF
25 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
26 route 24 -> 36 x 36 x 256
27 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
28 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
29 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
31 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
32 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
34 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
35 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
37 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
38 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
39 Shortcut Layer: 36, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
40 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
41 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
42 Shortcut Layer: 39, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
43 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
44 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
45 Shortcut Layer: 42, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
46 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
47 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
48 Shortcut Layer: 45, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
49 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
50 conv 128 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.382 BF
51 Shortcut Layer: 48, wt = 0, wn = 0, outputs: 36 x 36 x 128 0.000 BF
52 conv 128 1 x 1/ 1 36 x 36 x 128 -> 36 x 36 x 128 0.042 BF
53 route 52 25 -> 36 x 36 x 256
54 conv 256 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 256 0.170 BF
55 conv 512 3 x 3/ 2 36 x 36 x 256 -> 18 x 18 x 512 0.764 BF
56 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
57 route 55 -> 18 x 18 x 512
58 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
59 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
60 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
62 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
63 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
64 Shortcut Layer: 61, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
65 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
66 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
67 Shortcut Layer: 64, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
68 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
69 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
70 Shortcut Layer: 67, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
71 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
72 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
73 Shortcut Layer: 70, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
74 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
75 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
76 Shortcut Layer: 73, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
77 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
78 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
79 Shortcut Layer: 76, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
80 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
81 conv 256 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.382 BF
82 Shortcut Layer: 79, wt = 0, wn = 0, outputs: 18 x 18 x 256 0.000 BF
83 conv 256 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 256 0.042 BF
84 route 83 56 -> 18 x 18 x 512
85 conv 512 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 512 0.170 BF
86 conv 1024 3 x 3/ 2 18 x 18 x 512 -> 9 x 9 x1024 0.764 BF
87 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
88 route 86 -> 9 x 9 x1024
89 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
90 conv 512 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.042 BF
91 conv 512 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.382 BF
92 Shortcut Layer: 89, wt = 0, wn = 0, outputs: 9 x 9 x 512 0.000 BF
93 conv 512 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.042 BF
94 conv 512 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.382 BF
95 Shortcut Layer: 92, wt = 0, wn = 0, outputs: 9 x 9 x 512 0.000 BF
96 conv 512 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.042 BF
97 conv 512 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.382 BF
98 Shortcut Layer: 95, wt = 0, wn = 0, outputs: 9 x 9 x 512 0.000 BF
99 conv 512 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.042 BF
100 conv 512 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.382 BF
101 Shortcut Layer: 98, wt = 0, wn = 0, outputs: 9 x 9 x 512 0.000 BF
102 conv 512 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.042 BF
103 route 102 87 -> 9 x 9 x1024
104 conv 1024 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x1024 0.170 BF
105 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
106 conv 1024 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x1024 0.764 BF
107 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
108 max 5x 5/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.001 BF
109 route 107 -> 9 x 9 x 512
110 max 9x 9/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.003 BF
111 route 107 -> 9 x 9 x 512
112 max 13x13/ 1 9 x 9 x 512 -> 9 x 9 x 512 0.007 BF
113 route 112 110 108 107 -> 9 x 9 x2048
114 conv 512 1 x 1/ 1 9 x 9 x2048 -> 9 x 9 x 512 0.170 BF
115 conv 1024 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x1024 0.764 BF
116 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
117 conv 256 1 x 1/ 1 9 x 9 x 512 -> 9 x 9 x 256 0.021 BF
118 upsample 2x 9 x 9 x 256 -> 18 x 18 x 256
119 route 85 -> 18 x 18 x 512
120 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
121 route 120 118 -> 18 x 18 x 512
122 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
123 conv 512 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 512 0.764 BF
124 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
125 conv 512 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 512 0.764 BF
126 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
127 conv 128 1 x 1/ 1 18 x 18 x 256 -> 18 x 18 x 128 0.021 BF
128 upsample 2x 18 x 18 x 128 -> 36 x 36 x 128
129 route 54 -> 36 x 36 x 256
130 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
131 route 130 128 -> 36 x 36 x 256
132 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
133 conv 256 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 256 0.764 BF
134 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
135 conv 256 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 256 0.764 BF
136 conv 128 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 128 0.085 BF
137 conv 256 3 x 3/ 1 36 x 36 x 128 -> 36 x 36 x 256 0.764 BF
138 conv 27 1 x 1/ 1 36 x 36 x 256 -> 36 x 36 x 27 0.018 BF
139 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.20
nms_kind: greedynms (1), beta = 0.600000
140 route 136 -> 36 x 36 x 128
141 conv 256 3 x 3/ 2 36 x 36 x 128 -> 18 x 18 x 256 0.191 BF
142 route 141 126 -> 18 x 18 x 512
143 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
144 conv 512 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 512 0.764 BF
145 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
146 conv 512 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 512 0.764 BF
147 conv 256 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 256 0.085 BF
148 conv 512 3 x 3/ 1 18 x 18 x 256 -> 18 x 18 x 512 0.764 BF
149 conv 27 1 x 1/ 1 18 x 18 x 512 -> 18 x 18 x 27 0.009 BF
150 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.10
nms_kind: greedynms (1), beta = 0.600000
151 route 147 -> 18 x 18 x 256
152 conv 512 3 x 3/ 2 18 x 18 x 256 -> 9 x 9 x 512 0.191 BF
153 route 152 116 -> 9 x 9 x1024
154 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
155 conv 1024 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x1024 0.764 BF
156 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
157 conv 1024 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x1024 0.764 BF
158 conv 512 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 512 0.085 BF
159 conv 1024 3 x 3/ 1 9 x 9 x 512 -> 9 x 9 x1024 0.764 BF
160 conv 27 1 x 1/ 1 9 x 9 x1024 -> 9 x 9 x 27 0.004 BF
161 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 28.558
avg_outputs = 234935
Allocate additional workspace_size = 52.43 MB
Loading weights from /content/drive/MyDrive/Data/Backup/yolov4-custom_best.weights...
seen 64, trained: 468 K-images (7 Kilo-batches_64)
Done! Loaded 162 layers from weights-file
Detection layer: 139 - type = 28
Detection layer: 150 - type = 28
Detection layer: 161 - type = 28
frame_007376.jpg: Predicted in 16.638000 milli-seconds.
UAİ: 100%
UAİ: 72%
UAİ: 99%
UAİ: 97%
UAİ: 96%
UAİ: 39%
Taşıt: 99%
UAİ: 100%
UAİ: 99%
UAİ: 95%
UAİ: 100%
UAİ: 100%
UAİ: 100%
UAİ: 100%
UAİ: 100%
UAİ: 98%
Taşıt: 92%
UAİ: 99%
UAİ: 100%
UAİ: 100%
Failed to calloc 17179869184.0 GiB
Darknet error location: ./src/image.c, make_image, line #797
Calloc error - possibly out of CPU RAM: File exists

Extra class prediction result shown when testing on AlexeyAB Yolov4 Darknet package on Colab

I have done the model training for Yolov4 objection detection from AlexeyAB Darknet package on Colab.
(from https://github.com/AlexeyAB/darknet)
Two classes are defined named "scratch" and "blood".
Then run the following commands for testing on a single image:
!./darknet detector test data/obj.data cfg/yolo-obj.cfg backup/yolo-object_last.weights images/meat/test/376.jpg -dont show
and the result is shown below. It's expected that there are only one scratch and blood shown with probabilities in the result.
However, it shows so many scratch and blood predictions (the last few lines of this post)!
The number of classes (=2), class names, and shoud have been set properly in obj.data and yolo-obj.cfg.
Can anyone advice why and how to resolve it?
CUDA-version: 11010 (11020), cuDNN: 7.6.5, GPU count: 1
OpenCV version: 3.2.0
0 : compute_capability = 370, cudnn_half = 0, GPU: Tesla K80
net.optimized_memory = 0
mini_batch = 1, batch = 1, time_steps = 1, train = 0
layer filters size/strd(dil) input output
0 Create CUDA-stream - 0
Create cudnn-handle 0
conv 32 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 32 0.299 BF
1 conv 64 3 x 3/ 2 416 x 416 x 32 -> 208 x 208 x 64 1.595 BF
2 conv 64 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 64 0.354 BF
3 route 1 -> 208 x 208 x 64
4 conv 64 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 64 0.354 BF
5 conv 32 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 32 0.177 BF
6 conv 64 3 x 3/ 1 208 x 208 x 32 -> 208 x 208 x 64 1.595 BF
7 Shortcut Layer: 4, wt = 0, wn = 0, outputs: 208 x 208 x 64 0.003 BF
8 conv 64 1 x 1/ 1 208 x 208 x 64 -> 208 x 208 x 64 0.354 BF
9 route 8 2 -> 208 x 208 x 128
10 conv 64 1 x 1/ 1 208 x 208 x 128 -> 208 x 208 x 64 0.709 BF
11 conv 128 3 x 3/ 2 208 x 208 x 64 -> 104 x 104 x 128 1.595 BF
12 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
13 route 11 -> 104 x 104 x 128
14 conv 64 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 64 0.177 BF
15 conv 64 1 x 1/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.089 BF
16 conv 64 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.797 BF
17 Shortcut Layer: 14, wt = 0, wn = 0, outputs: 104 x 104 x 64 0.001 BF
18 conv 64 1 x 1/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.089 BF
19 conv 64 3 x 3/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.797 BF
20 Shortcut Layer: 17, wt = 0, wn = 0, outputs: 104 x 104 x 64 0.001 BF
21 conv 64 1 x 1/ 1 104 x 104 x 64 -> 104 x 104 x 64 0.089 BF
22 route 21 12 -> 104 x 104 x 128
23 conv 128 1 x 1/ 1 104 x 104 x 128 -> 104 x 104 x 128 0.354 BF
24 conv 256 3 x 3/ 2 104 x 104 x 128 -> 52 x 52 x 256 1.595 BF
25 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
26 route 24 -> 52 x 52 x 256
27 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
28 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
29 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
31 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
32 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
34 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
35 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
37 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
38 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
39 Shortcut Layer: 36, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
40 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
41 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
42 Shortcut Layer: 39, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
43 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
44 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
45 Shortcut Layer: 42, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
46 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
47 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
48 Shortcut Layer: 45, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
49 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
50 conv 128 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.797 BF
51 Shortcut Layer: 48, wt = 0, wn = 0, outputs: 52 x 52 x 128 0.000 BF
52 conv 128 1 x 1/ 1 52 x 52 x 128 -> 52 x 52 x 128 0.089 BF
53 route 52 25 -> 52 x 52 x 256
54 conv 256 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 256 0.354 BF
55 conv 512 3 x 3/ 2 52 x 52 x 256 -> 26 x 26 x 512 1.595 BF
56 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
57 route 55 -> 26 x 26 x 512
58 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
59 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
60 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
62 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
63 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
64 Shortcut Layer: 61, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
65 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
66 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
67 Shortcut Layer: 64, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
68 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
69 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
70 Shortcut Layer: 67, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
71 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
72 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
73 Shortcut Layer: 70, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
74 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
75 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
76 Shortcut Layer: 73, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
77 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
78 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
79 Shortcut Layer: 76, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
80 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
81 conv 256 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.797 BF
82 Shortcut Layer: 79, wt = 0, wn = 0, outputs: 26 x 26 x 256 0.000 BF
83 conv 256 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 256 0.089 BF
84 route 83 56 -> 26 x 26 x 512
85 conv 512 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 512 0.354 BF
86 conv 1024 3 x 3/ 2 26 x 26 x 512 -> 13 x 13 x1024 1.595 BF
87 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
88 route 86 -> 13 x 13 x1024
89 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
90 conv 512 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.089 BF
91 conv 512 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.797 BF
92 Shortcut Layer: 89, wt = 0, wn = 0, outputs: 13 x 13 x 512 0.000 BF
93 conv 512 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.089 BF
94 conv 512 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.797 BF
95 Shortcut Layer: 92, wt = 0, wn = 0, outputs: 13 x 13 x 512 0.000 BF
96 conv 512 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.089 BF
97 conv 512 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.797 BF
98 Shortcut Layer: 95, wt = 0, wn = 0, outputs: 13 x 13 x 512 0.000 BF
99 conv 512 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.089 BF
100 conv 512 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.797 BF
101 Shortcut Layer: 98, wt = 0, wn = 0, outputs: 13 x 13 x 512 0.000 BF
102 conv 512 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.089 BF
103 route 102 87 -> 13 x 13 x1024
104 conv 1024 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x1024 0.354 BF
105 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
106 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
107 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
108 max 5x 5/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.002 BF
109 route 107 -> 13 x 13 x 512
110 max 9x 9/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.007 BF
111 route 107 -> 13 x 13 x 512
112 max 13x13/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.015 BF
113 route 112 110 108 107 -> 13 x 13 x2048
114 conv 512 1 x 1/ 1 13 x 13 x2048 -> 13 x 13 x 512 0.354 BF
115 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
116 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
117 conv 256 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 256 0.044 BF
118 upsample 2x 13 x 13 x 256 -> 26 x 26 x 256
119 route 85 -> 26 x 26 x 512
120 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
121 route 120 118 -> 26 x 26 x 512
122 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
123 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
124 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
125 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
126 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
127 conv 128 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 128 0.044 BF
128 upsample 2x 26 x 26 x 128 -> 52 x 52 x 128
129 route 54 -> 52 x 52 x 256
130 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
131 route 130 128 -> 52 x 52 x 256
132 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
133 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
134 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
135 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
136 conv 128 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
137 conv 256 3 x 3/ 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
138 conv 21 1 x 1/ 1 52 x 52 x 256 -> 52 x 52 x 21 0.029 BF
139 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.20
nms_kind: greedynms (1), beta = 0.600000
140 route 136 -> 52 x 52 x 128
141 conv 256 3 x 3/ 2 52 x 52 x 128 -> 26 x 26 x 256 0.399 BF
142 route 141 126 -> 26 x 26 x 512
143 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
144 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
145 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
146 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
147 conv 256 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 256 0.177 BF
148 conv 512 3 x 3/ 1 26 x 26 x 256 -> 26 x 26 x 512 1.595 BF
149 conv 21 1 x 1/ 1 26 x 26 x 512 -> 26 x 26 x 21 0.015 BF
150 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.10
nms_kind: greedynms (1), beta = 0.600000
151 route 147 -> 26 x 26 x 256
152 conv 512 3 x 3/ 2 26 x 26 x 256 -> 13 x 13 x 512 0.399 BF
153 route 152 116 -> 13 x 13 x1024
154 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
155 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
156 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
157 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
158 conv 512 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 512 0.177 BF
159 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
160 conv 21 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 21 0.007 BF
161 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 59.570
avg_outputs = 489910
Allocate additional workspace_size = 12.46 MB
Loading weights from backup/yolo-object_last.weights...
seen 64, trained: 57 K-images (0 Kilo-batches_64)
Done! Loaded 160 layers from weights-file
Detection layer: 139 - type = 28
Detection layer: 150 - type = 28
Detection layer: 161 - type = 28
images/meat/13.jpg: Predicted in 101.928000 milli-seconds.
scratch: 52%
blood: 36%
scratch: 68%
blood: 68%
scratch: 42%
blood: 42%
scratch: 60%
blood: 60%
scratch: 43%
blood: 43%
scratch: 45%
blood: 45%
blood: 48%
scratch: 42%
scratch: 45%
blood: 45%
scratch: 65%
blood: 65%
scratch: 56%
.....(much more scratch and blood shown below....)
This is normal behaviour.
You are "always" going to get a lot of detections. But you can also see that some of your detections are below the 50% confidence score. Which should be discarded.
I think the pipeline already performs Non-maximum suppression (NMS) to remove duplicates and overlapping detections (not sure), but you can additionally set up confidence score threshold as well, to show only above 50% with -thresh 0.5
This will give you final expected results. Still, if you continue to obtain more than you should, well, this is the goal of everyone :)
It's all about hyperparameter tuning and more data to train our models to give our desired outcome.

Reshape neural network input based on condition

Numerical data, using DL Neural Networks. I'm using Keras library for this purpose
p u d ms action B x y-c pre area finger
0 0 36 3 1334893336790 0 1 262 262 262 0.044444 0.0
1 0 36 3 1334893336790 2 1 262 271 0.32 0.044444 0.0
2 0 36 3 1334893336795 2 1 123 327 0.28 0.044444 0.0
3 0 36 3 1334893336800 1 1 123 327 0.28 0.044444 0.0
4 0 36 3 1334893336885 0 1 216 298 0.34 0.044444 0.0
5 0 36 3 1334893336907 2 1 216 298 0.38 0.044444 0.0
6 0 36 3 1334893336926 2 1 147 312 0.60 0.088889 0.0
7 0 36 3 1334893336949 2 1 115 328 0.63 0.044444 0.0
8 0 36 3 1334893336952 2 1 98 336 0.17 0.133333 0.0
9 0 36 3 1334893336971 1 1 98 336 0.17 0.133333 0.0
1 0 36 3 1334893337798 0 1 108 339 0.48 0.044444 0.0
The below code is working but, as I understand neural network inputs are rowed by row as input, here I'm trying to make the input and output based on action column like the below example when it starts with 0 and ends with 1 then the first input for the neural network from row [0 to 3] 3 included and the second input is [4 to 9] 9 is included and etc...
The elements in the action column represent the hand movement, if the value 0 means that the finger of the hand presses on the screen, either if 1 means that the hand was lifted from the screen, so I try to divide into n number of stroke,trying to make input on neural network based on finger pressure and lifting(stroke),based on this idea input will decrease from 900k to 20k but each time the input will be multi-rows based
the first input will be as below:
p u d ms action B x y-c pre area finger
0 0 36 3 1334893336790 0 1 262 262 262 0.044444 0.0
1 0 36 3 1334893336790 2 1 262 271 0.32 0.044444 0.0
2 0 36 3 1334893336795 2 1 123 327 0.28 0.044444 0.0
3 0 36 3 1334893336800 1 1 123 327 0.28 0.044444 0.0
and the second input will be :
p u d ms action B x y-c pre area finger
4 0 36 3 1334893336885 0 1 216 298 0.34 0.044444 0.0
5 0 36 3 1334893336907 2 1 216 298 0.38 0.044444 0.0
6 0 36 3 1334893336926 2 1 147 312 0.60 0.088889 0.0
7 0 36 3 1334893336949 2 1 115 328 0.63 0.044444 0.0
8 0 36 3 1334893336952 2 1 98 336 0.17 0.133333 0.0
9 0 36 3 1334893336971 1 1 98 336 0.17 0.133333 0.0
here is my code and its working well in the normal cycle for NN but im trying to change it based on my idea..
#o = no_of_click
o=0
lenf=len(dataset)
for h in dataset.index[dataset.iloc[:, 4] == 0]:
if dataset.iloc[h+1,4]==1 :
dataset.iloc[h+1,4]=-1
dataset.iloc[h , 4] = -1
o=o+1
dataset=dataset.drop(dataset[dataset.iloc[:, 4] == -1].index)
lenf=(o*2)
X = dataset.iloc[:, 2:].values #here 3to 11 for x
y = dataset.iloc[:, 1].values #here user id 2 only y
binariz = LabelBinarizer()
s = binariz.fit_transform(X[:, 0])
X = np.delete(X, [0], axis=1)
X = np.hstack([s,X])
y = binariz.fit_transform(y)
# X Features scaling
sc_X = StandardScaler()
X = sc_X.fit_transform(X)
# Splitting Data
X_train, X_test,y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
classifier = Sequential()
# Adding the input layer and the first hidden layer
classifier.add(Dense(units = 50, activation = 'relu', input_dim = X_train.shape[1]))
# Adding the second hidden layer
classifier.add(Dense(units = 50, activation = 'relu'))
# Adding the output layer
classifier.add(Dense(units = y.shape[1], activation = 'softmax'))
# Compiling the ANN
classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
# Fitting the ANN to the Training set
classifier.fit(X_train, y_train, batch_size = 100, epochs = 10)
I'm not sure if I understood your question correctly; apologies in advance if I'm making incorrect assumptions.
It seems to me that you are asking whether you can reshape the input vector so in one case it has shape=(4,) and in the other shape=(6,).
I don't believe you can, since when you add a Dense layer after an input layer this Dense layer has a weights matrix that is shaped as (input_dims, output_dims). This is selected when the graph is built.
Even if you could, I don't think you would want to.
The input vector to a NN is a set of features; it seems that in your case this is a set of different measurements. You don't want to feed the network with measurement of feature0 in the input tensor position 0 in one scenario and measurement of feature4 in another scenario. That makes it much harder for the network to understand how to process these values.
Given that you have a small set of features, is there any reason you don't just pass all the data all the time ?

Darkflow's .pb model unable to detect objects whereas the original darknet weights file is able to

I'm creating a custom training model using darknet and am trying to convert the weights file generated to a tensorflow weights file using this command:
flow --model cfg/custom.cfg --load bin/custom.weights --savepb
The execution is successful and a .pb file is generated. The original weights file is able to detect objects but when I run the .pb file there is no detection.
This is the output when I run the .pb file:
./darknet detector test cfg/obj.data cfg/tiny-yolo-obj.cfg tiny-yolo-obj.weights pos-1.jpg --threshold 0
layer filters size input output
0 conv 16 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BFLOPs
1 max 2 x 2 / 2 416 x 416 x 16 -> 208 x 208 x 16
2 conv 32 3 x 3 / 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BFLOPs
3 max 2 x 2 / 2 208 x 208 x 32 -> 104 x 104 x 32
4 conv 64 3 x 3 / 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BFLOPs
5 max 2 x 2 / 2 104 x 104 x 64 -> 52 x 52 x 64
6 conv 128 3 x 3 / 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BFLOPs
7 max 2 x 2 / 2 52 x 52 x 128 -> 26 x 26 x 128
8 conv 256 3 x 3 / 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BFLOPs
9 max 2 x 2 / 2 26 x 26 x 256 -> 13 x 13 x 256
10 conv 512 3 x 3 / 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BFLOPs
11 max 2 x 2 / 1 13 x 13 x 512 -> 13 x 13 x 512
12 conv 1024 3 x 3 / 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BFLOPs
13 conv 1024 3 x 3 / 1 13 x 13 x1024 -> 13 x 13 x1024 3.190 BFLOPs
14 conv 30 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 30 0.010 BFLOPs
15 detection
mask_scale: Using default '1.000000'
Loading weights from tiny-yolo-obj.weights...Done!
pos-1.jpg: Predicted in 0.010284 seconds.