【问题标题】:How to add custom colors to Tensorflow object detection python model bound boxes?如何将自定义颜色添加到 Tensorflow 对象检测 python 模型绑定框?
【发布时间】:2018-08-08 04:19:42
【问题描述】:

目前我正在使用经过自定义训练的标准 Tensorflow 对象检测脚本,我想更改绑定框的颜色以适应我的应用程序的性质。但是我似乎找不到这样做的方法。例如,与其绘制绿色框 id,不如在检测到的对象周围绘制一个红色框。提前谢谢!

【问题讨论】:

    标签: python tensorflow computer-vision data-science object-detection


    【解决方案1】:

    我有点找到了一种方法——在经历了很多麻烦之后。我没有发现任何记录如何做到这一点。 有点,因为有些颜色似乎不起作用。

    打开“visualizations_utils.py”。应该在 Lib\site-packages\utils 中。 第 41 到 63 行是您的颜色。

    在第 164 行的正下方,

    draw = ImageDraw.Draw(图像),

    输入一个新行

    color = '粉色'

    保存它,您现在已将颜色更改为粉红色。第 175 行,您可以将标签文本变小。

    某些颜色似乎不起作用,例如“红色”。

    【讨论】:

      【解决方案2】:
      1. 在标签映射 pbtxt 文件中添加“颜色”属性。即

        项目{ 名称:“/m/01g317” 编号:1 显示名称:“人” 颜色:“粉红色” }

      2. 打开文件“research/object_detection/protos/string_int_label_map.proto”。添加以下行。

        optional string color = 4;
        

        注意分号、花括号。

      3. 然后需要序列化数据,所以从研究中运行以下命令 文件夹

        protoc object_detection/protos/*.proto --python_out=.
        

        在此之前,您必须根据您的操作系统安装 protobuf。

      4. 更改文件object_detection/utils/lable_map_util.py的“convert_label_map_to_categories”函数代码

        类别 = [] list_of_ids_already_added = [] 如果不是 label_map: label_id_offset = 1 对于范围内的class_id(max_num_classes): 类别.附加({ “id”:class_id + label_id_offset, 'name': 'category_{}'.format(class_id + label_id_offset) }) 返回类别 对于 label_map.item 中的项目:

        if not 0 < item.id <= max_num_classes:
          logging.info(
              'Ignore item %d since it falls outside of requested '
              'label range.', item.id)
          continue
        if use_display_name and item.HasField('display_name'):
          name = item.display_name
        else:
          name = item.name
        
        if use_display_name and item.HasField('color'):
          color = item.color
        else:
          color = ''
        
        if item.id not in list_of_ids_already_added:
          list_of_ids_already_added.append(item.id)
          categories.append({'id': item.id, 'name': name, 'color': color})          
        return categories
        

      5.打开文件“object_detection/utils/visualization_utils.py”。转到名为的函数 “visualize_boxes_and_labels_on_image_array”。添加以下代码

      else:
               if classes[i] in category_index.keys():
                  class_color = category_index[classes[i]]['color']
                  box_to_color_map[box] = class_color
      

      代码之后

      if agnostic_mode:
                box_to_color_map[box] = 'DarkOrange'
      

      【讨论】:

        猜你喜欢
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 2018-06-30
        • 2017-07-26
        • 1970-01-01
        • 2021-09-29
        • 2018-07-27
        相关资源
        最近更新 更多