当前,我正在使用经过定制培训的标准Tensorflow对象检测脚本,我想更改绑定框的颜色以适合我的应用程序的性质。但是,我似乎找不到办法。例如,与其绘制绿色框ID,不如在检测到的对象周围绘制红色框。预先谢谢你!
答案 0 :(得分:1)
我遇到了麻烦-找到了办法。我没有发现任何记录如何执行此操作的文件。 有点,因为某些颜色似乎不起作用。
打开“ visualizations_utils.py”。应该在Lib \ site-packages \ utils中。 第41至63行是您的颜色。
位于第164行的正下方,
draw = ImageDraw.Draw(image),
输入新行
color ='粉红色'
保存它,现在您将颜色更改为粉红色。在第175行中,您可以缩小标签文本。
某些颜色似乎不起作用,例如“红色”。
答案 1 :(得分:0)
在标签图pbtxt文件中添加“颜色”属性。即
项目{ 名称:“ / m / 01g317” 编号:1 display_name:“人” 颜色:“粉红色” }
打开文件“ research / object_detection / protos / string_int_label_map.proto”。添加以下行。
optional string color = 4;
注意分号,花括号。
然后需要序列化数据,因此请从研究中运行以下命令 文件夹
protoc object_detection/protos/*.proto --python_out=.
在此之前,您必须根据您的操作系统安装protobuf。
更改文件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'