mmrotate 修改标注框粗细,去除标签文本

在mmrotate中如果想要修改标注框的线条粗细并且不显示标签的类别及得分进行如下两处修改:
1、mmrotate/models/detectors/base.py中修改第26行的thickness,以修改标注框的线条粗细

    def show_result(self,
                    img,
                    result,
                    score_thr=0.3,
                    bbox_color=(72, 101, 241),
                    text_color=(72, 101, 241),
                    mask_color=None,
                    thickness=9, #默认为2,可以修改为自己需要的数值
                    font_size=13,
                    win_name='',
                    show=False,
                    wait_time=0,
                    out_file=None,
                    **kwargs):

2、mmrotate/core/visualization/image.py中将draw_lables注释掉(180至189行),即可在得到的检测结果中不显示标注结果及其得分

    if bboxes is not None:
        num_bboxes = bboxes.shape[0]
        bbox_palette = palette_val(get_palette(bbox_color, max_label + 1))
        colors = [bbox_palette[label] for label in labels[:num_bboxes]]
        draw_rbboxes(ax, bboxes, colors, alpha=0.8, thickness=thickness)

        horizontal_alignment = 'left'
        positions = bboxes[:, :2].astype(np.int32) + thickness
        areas = bboxes[:, 2] * bboxes[:, 3]
        scales = _get_adaptive_scales(areas)
        scores = bboxes[:, 5] if bboxes.shape[1] == 6 else None
        将
        # draw_labels(
        #     ax,
        #     labels[:num_bboxes],
        #     positions,
        #     scores=scores,
        #     class_names=class_names,
        #     color=text_colors,
        #     font_size=font_size,
        #     scales=scales,
        #     horizontal_alignment=horizontal_alignment)

修改后结果
在这里插入图片描述

### 如何在 MMRotate 测试过程中显示每个类别的 mAP 值 为了在 `mmrotate` 的测试流程中获取并展示每个类别的 mAP 值,可以通过调整配置文件以及修改日志记录的方式实现。以下是具体的计算方法及可视化方式: #### 配置文件中的设置 在 `mmrotate` 中,默认情况下会报告整体的平均精度 (mAP),但如果希望查看每个类别的表现,则需要确保评估指标支持按类别统计的功能。这通常涉及以下几个方面: 1. **指定多标签分类模式** 在配置文件 (`config.py`) 中,需确认评估器设置了 `classwise=True` 参数,以便分别计算各个类别的 AP 和 mAP[^4]。 ```python val_evaluator = dict( type='RotatedCocoMetric', ann_file=data_root + 'annotations/test.json', classwise=True, # 添加此选项以启用逐类别分析 metric=['bbox'] ) test_evaluator = val_evaluator.copy() ``` 2. **保存详细的评估结果** 如果仅运行测试脚本而不启动验证过程,可以在命令行中加入参数来存储完整的评估细节。例如,在调用 `tools/test.py` 脚本时加上如下标志位: ```bash python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --eval bbox --out results.pkl ``` 此操作将把预测结果序列化至外部文件(如 `results.pkl`),后续可加载这些数据进一步解析每种类别对应的性能指标。 3. **自定义回调函数提取信息** 对于更灵活的需求,比如实时打印各阶段的结果或者绘制图表对比不同模型的表现,可以编写扩展逻辑挂钩到训练或推断周期里去捕获中间变量状态变化情况。下面给出一段伪代码示范如何处理此类任务: ```python from mmengine.evaluator import Evaluator def custom_callback(log_vars): ap_per_class = log_vars['ap_per_class'] # 获取各类别AP数组 for cls_idx, value in enumerate(ap_per_class): print(f'Class {cls_idx}: Average Precision(AP)={value}') evaluator = Evaluator(metrics=[...], callbacks=[custom_callback]) ``` #### 可视化的推荐方案 除了单纯依赖终端输出外,还可以利用第三方库制作更加直观易懂的数据呈现形式。例如借助 Matplotlib 或 Seaborn 绘制柱状图比较各项得分高低差异;又或者是采用 TensorBoard 将实验进展同步上传云端供团队成员共同审阅讨论。 ```python import matplotlib.pyplot as plt def plot_mAP_by_category(categories_names, ap_scores): fig, ax = plt.subplots(figsize=(10, 6)) bars = ax.barh(y=categories_names[::-1], width=ap_scores[::-1], color="skyblue") ax.set_title('Mean Average Precision by Category') ax.set_xlabel('Average Precision Score') ax.set_ylabel('Category Name') plt.show() # Example usage after obtaining category names and their respective scores. plot_mAP_by_category(['Airplane', 'Car', ...], [0.85, 0.79, ...]) ``` 以上便是关于如何在 `mmrotate` 平台上完成细化到单一目标类型的评价体系构建指南。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值