Autonomous Driving - Car Detection

Hello,
I am working on Autonomous Driving - Car Detection,
I got mistake Cannot convert 0.5 to EagerTensor of dtype int64,
after running code in
yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold = 0.6)

It brings me back on filtering_mask = box_class_scores >= threshold, line of code

1 Like

Please share your full error.


TypeError Traceback (most recent call last)
in
4 boxes = tf.random.normal([19, 19, 5, 4], mean=1, stddev=4, seed = 1)
5 box_class_probs = tf.random.normal([19, 19, 5, 80], mean=1, stddev=4, seed = 1)
----> 6 scores, boxes, classes = yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold = 0.5)
7 print("scores[2] = " + str(scores[2].numpy()))
8 print("boxes[2] = " + str(boxes[2].numpy()))

in yolo_filter_boxes(boxes, box_confidence, box_class_probs, threshold)
36 # same dimension as box_class_scores, and be True for the boxes you want to keep (with probability >= threshold)
37 ## (≈ 1 line)
—> 38 filtering_mask = box_class_scores >= threshold
39
40 # Step 4: Apply the mask to box_class_scores, boxes and box_classes

/opt/conda/lib/python3.7/site-packages/tensorflow/python/ops/gen_math_ops.py in greater_equal(x, y, name)
4053 _result = pywrap_tfe.TFE_Py_FastPathExecute(
4054 _ctx._context_handle, tld.device_name, “GreaterEqual”, name,
→ 4055 tld.op_callbacks, x, y)
4056 return _result
4057 except _core._NotOkStatusException as e:

TypeError: Cannot convert 0.5 to EagerTensor of dtype int64

In your yolo_filter_boxes function, make sure to use tf.math.argmax and tf.math.reduce_max and set the axis to -1.

Yes, that error is fairly common and you can find other threads about it. Most likely you are mixing up the scores (which are floats) and the classes (which are integers). I added some print statements to my code to show the types and shapes of everything and here’s what I see:

boxes.shape (19, 19, 5, 4)
boxes.dtype <dtype: 'float32'>
box_scores.shape (19, 19, 5, 80)
box_scores.dtype <dtype: 'float32'>
box_classes.shape (19, 19, 5)
box_classes.dtype <dtype: 'int64'>
box_class_scores.shape (19, 19, 5)
box_class_scores.dtype <dtype: 'float32'>
filtering_mask.shape (19, 19, 5)
filtering_mask.dtype <dtype: 'bool'>
sum(filtering_mask) = 1789
scores[2] = 9.270486
boxes[2] = [ 4.6399336  3.2303846  4.431282  -2.202031 ]
classes[2] = 8
scores.shape = (1789,)
boxes.shape = (1789, 4)
classes.shape = (1789,)
 All tests passed!

What do you see? I’ll bet it’s different and that should point you to which variable is incorrect. :nerd_face:

1 Like