@wanghuijiao
2022-04-20T22:18:50.000000Z
字数 6072
阅读 597
技术文档
classDiagram
HardSampleAnalysis ..> DrawUtils
HardSampleAnalysis ..> ConfigParser
HardSampleAnalysis ..> ConfusionMatrixBoxes
HardSampleAnalysis ..> DrawOutputUtils
class ConfigParser{
+ parser(cfg_path)
}
class HardSampleAnalysis{
+ findout_boxes_from_one_dataset(image_path,dataset: BaseDetectionDateset)
+ analysis_hard_samples(dataset_dict, draw_config_dict, draw_output_config: DrawOutputConfig)
}
class DrawUtils{
+ draw_one_image(img, boxes, config: DrawConfig, image_text='', box_text_list=[]):
+ concate_images(img_list, mode)
}
class DrawOutputUtils{
+ output(img)
}
class ConfusionMatrixBoxes{
+ calculate_tp_fp_fn(gt_boxes_list, pred_boxes_list)
}
graph TB
Start(开始) --> ConfigParser[ConfigParser]
ConfigParser --> HardSampleAnalysis[HardSampleAnalysis]
HardSampleAnalysis --> ConfusionMatrixBoxes[ConfusionMatrixBoxes]
ConfusionMatrixBoxes --> DrawUtils[DrawUtils]
DrawUtils --> DrawOutputUtils[DrawOutputUtils]
DrawOutputUtils --> img_list{"是否还有图片?"}
img_list --是--> HardSampleAnalysis
img_list --否--> End(结束)
功能点及类与方法的实现:
输入是
[GT_dataset]
# groudtruth 数据集名称标识,将会显示在图片上用以区分不同的结果来源
dataset_name = GT_dataset
# groudtruth 数据集根路径
dataset_path = tests/data/coco_dataset
# 支持coco\yolo两种格式
dataset_type = coco
# 是否打乱图片顺序显示
shuffle = True
# 要可视化的子集名称
# coco: test.json\train.json\val.json
# yolo: train.txt\test.txt\val.txt
split = test.json
# DrawConfig参数设置
# 任选TP, FP, FN三者中一个或多个,并以逗号分割
hard_sample_type = TP,FP,FN
# hard_sample_type选项对应的颜色设置,要求长度与hard_sample_type输入顺序与个数相对应
hard_sample_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]
# iou阈值, 超过此阈值的Box被认为是TP
iou_threshold = 0.5
# score阈值,超过此阈值的box才会被用于计算TP\FP\FN
score_threshold = 0.1
# 画框线段粗细
line_thickness = 2
# 画框线段类型
lineType = 15
# 框备注信息的字体类型
font = 0
# 框备注信息的字体字号
fontscale = 2
# 框备注信息的字体线段粗细
text_line_thickness = 2
# 框备注信息线段类型
text_lineType = 16
# 框备注信息的字体颜色
text_color = (255, 0, 0)
# 画框是否采用断点线段
dotted_line = False
# 是否显示置信度分数
show_score = True
# 是否显示图片索引, 即当前图片是第几张
show_index = True
# 图片显示进度信息在图片上的位置
img_text_index = (10, 100)
# 图片显示进度信息在图片上的颜色
img_text_color = (0, 255, 0)
# DrawOutputConfig参数设置
# 是否保存可视化结果图片格式到本地
output_image = True
# 图片保存路径
output_path = tests/visualization/test_draw_datasets_in_multi_images
# 是否直接显示可视化结果
imshow = False
# 可视化的图片高和宽尺寸设置
height = 480
width = 640
# 难例画框模式,对于单个模型结果(除GT之外的模型)提供两种画框拼接模式,叠加(True)显示或分开(False)显示TP\FP\FN;对于多个模型仅提供单张图片叠加显示TP\FP\FN框;
hard_sample_concate = True
[m1]
# 模型结果名称标识,将会显示在图片上用以区分不同的结果来源
dataset_name = m1
# groudtruth 数据集根路径
dataset_path = tests/data/coco_dataset
# 支持coco\yolo两种格式
dataset_type = coco
# 是否打乱图片顺序显示
shuffle = True
# 要可视化的子集名称
# coco: test.json\train.json\val.json
# yolo: train.txt\test.txt\val.txt
split = test.json
# DrawConfig参数设置
# 任选TP, FP, FN三者中一个或多个,并以逗号分割
hard_sample_type = TP,FP,FN
# hard_sample_type选项对应的颜色设置,要求长度与hard_sample_type输入顺序与个数相对应
hard_sample_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]
# iou阈值, 超过此阈值的Box被认为是TP
iou_threshold = 0.5
# score阈值,超过此阈值的box才会被用于计算TP\FP\FN
score_threshold = 0.1
# 画框线段粗细
line_thickness = 2
# 画框线段类型
lineType = 15
# 框备注信息的字体类型
font = 0
# 框备注信息的字体字号
fontscale = 2
# 框备注信息的字体线段粗细
text_line_thickness = 2
# 框备注信息线段类型
text_lineType = 16
# 框备注信息的字体颜色
text_color = (255, 0, 0)
# 画框是否采用断点线段
dotted_line = False
# 是否显示置信度分数
show_score = True
# 是否显示图片索引, 即当前图片是第几张
show_index = True
# 图片显示进度信息在图片上的位置
img_text_index = (10, 100)
# 图片显示进度信息在图片上的颜色
img_text_color = (0, 255, 0)
# DrawOutputConfig参数设置
# 是否保存可视化结果图片格式到本地
output_image = True
# 图片保存路径
output_path = tests/visualization/test_draw_datasets_in_multi_images
# 是否直接显示可视化结果
imshow = False
# 可视化的图片高和宽尺寸设置
height = 480
width = 640
# 难例画框模式,对于单个模型结果(除GT之外的模型)提供两种画框拼接模式,叠加(True)显示或分开(False)显示TP\FP\FN;对于多个模型仅提供单张图片叠加显示TP\FP\FN框;
hard_sample_concate = True
[m2]
# 模型结果名称标识,将会显示在图片上用以区分不同的结果来源
dataset_name = m2
# groudtruth 数据集根路径
dataset_path = tests/data/coco_dataset
# 支持coco\yolo两种格式
dataset_type = coco
# 是否打乱图片顺序显示
shuffle = True
# 要可视化的子集名称
# coco: test.json\train.json\val.json
# yolo: train.txt\test.txt\val.txt
split = test.json
# DrawConfig参数设置
# 任选TP, FP, FN三者中一个或多个,并以逗号分割
hard_sample_type = TP,FP,FN
# hard_sample_type选项对应的颜色设置,要求长度与hard_sample_type输入顺序与个数相对应
hard_sample_colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]
# iou阈值, 超过此阈值的Box被认为是TP
iou_threshold = 0.5
# score阈值,超过此阈值的box才会被用于计算TP\FP\FN
score_threshold = 0.1
# 画框线段粗细
line_thickness = 2
# 画框线段类型
lineType = 15
# 框备注信息的字体类型
font = 0
# 框备注信息的字体字号
fontscale = 2
# 框备注信息的字体线段粗细
text_line_thickness = 2
# 框备注信息线段类型
text_lineType = 16
# 框备注信息的字体颜色
text_color = (255, 0, 0)
# 画框是否采用断点线段
dotted_line = False
# 是否显示置信度分数
show_score = True
# 是否显示图片索引, 即当前图片是第几张
show_index = True
# 图片显示进度信息在图片上的位置
img_text_index = (10, 100)
# 图片显示进度信息在图片上的颜色
img_text_color = (0, 255, 0)
# DrawOutputConfig参数设置
# 是否保存可视化结果图片格式到本地
output_image = True
# 图片保存路径
output_path = tests/visualization/test_draw_datasets_in_multi_images
# 是否直接显示可视化结果
imshow = False
# 可视化的图片高和宽尺寸设置
height = 480
width = 640
# 难例画框模式,对于单个模型结果(除GT之外的模型)提供两种画框拼接模式,叠加(True)显示或分开(False)显示TP\FP\FN;对于多个模型仅提供单张图片叠加显示TP\FP\FN框;
hard_sample_concate = True
graph TB
A(开始)
B[打开冰箱门]
C{"冰箱小不小"}
D((连接))
可视化什么?
算法逻辑
脚本使用步骤