如何为Tensorflow对象检测python模型绑定框添加自定义颜色?

时间:2018-08-08 04:19:42

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

当前,我正在使用经过定制培训的标准Tensorflow对象检测脚本,我想更改绑定框的颜色以适合我的应用程序的性质。但是,我似乎找不到办法。例如,与其绘制绿色框ID,不如在检测到的对象周围绘制红色框。预先谢谢你!

2 个答案:

答案 0 :(得分:1)

我遇到了麻烦-找到了办法。我没有发现任何记录如何执行此操作的文件。 有点,因为某些颜色似乎不起作用。

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

位于第164行的正下方,

draw = ImageDraw.Draw(image),

输入新行

color ='粉红色'

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

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

答案 1 :(得分:0)

  1. 在标签图pbtxt文件中添加“颜色”属性。即

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

  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     对于范围(max_num_classes)中的class_id:       Categories.append({           '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'