自定义TF对象检测边界框厚度&标签字体大小

时间:2017-11-11 19:54:23

标签: tensorflow fonts object-detection labels bounding-box

使用https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb运行预测。

  • OS平台和分发(例如,Linux Ubuntu 16.04)
      

    Linux Ubuntu 16.04

想要自定义标签字体大小&边界框厚度作为我的标签文字& bbox在图像检测中太厚。

Cannot see detections!

感谢您的帮助!如果你自己完成了这个,请传递你的知识! :)

3 个答案:

答案 0 :(得分:2)

您可以通过更改line_thickness中的visualize_boxes_and_labels_on_image_array参数来更改边界框厚度,如下所示:

vis_util.visualize_boxes_and_labels_on_image_array(
          image_np,
          np.squeeze(boxes),
          np.squeeze(classes).astype(np.int32),
          np.squeeze(scores),
          category_index,
          use_normalized_coordinates=True,
          line_thickness=8)

答案 1 :(得分:0)

Ubuntu 16.04似乎没有附带arial.ttf字体 - 而且遗憾的是vis_util.visualize_boxes_and_labels_on_image_array默认使用它,除了更改python代码之外它是不可配置的。当它无法找到该字体时,它会使用默认的位图字体,但分辨率太低,无法用于多种用途,尤其是在低DPI设置下。

但是,您可以通过多种方式解决此问题:

  • 安装Microsoft核心字体:sudo apt-get install ttf-mscorefonts-installer(但这对我不起作用 - 不确定原因)
  • 或将非常相似的字体DejaVuSans.ttf复制到目录arial.ttf
  • 中名称为/usr/share/fonts/truetype/dejavu的文件中
  • 或将DejaVuSans.ttf复制到arial.ttf目录中名称为object_detection的文件中(假设您在那里运行代码)

然后,您可以使用DPI=100显示您的方框和标签,并仍然可以阅读字体。

之前 - 使用默认位图字体的100 DPI:

enter image description here

之后 - 带有arial.ttf

的100 DPI

enter image description here

答案 2 :(得分:0)

更改字体大小:

在文件models/research/object_detection/utils/visualization_utils.py中 从第202行开始:

尝试:

  font = ImageFont.truetype('arial.ttf', 24) 
except IOError:
  font = ImageFont.load_default()

在这里,我们只需要将数字24更改为所需的字体大小即可。