fasterRCNN修改识别框颜色

在predict.py脚本中,找到并编辑draw_objs函数,将colors变量的赋值改为指定颜色序号,如将颜色改为红色(列表中的第98个),保存并运行predict.py以应用更改。

fasterRCNN修改识别框颜色

首先进入predict.py脚本, 找到plot_img = draw_objs函数:
在这里插入图片描述ctrl+左键点击draw_objs,,进入该函数:
在这里插入图片描述colors = [ImageColor.getrgb(STANDARD_COLORS[cls % len(STANDARD_COLORS)]) for cls in classes] 这一句,修改为:
colors = [ImageColor.getrgb(STANDARD_COLORS[98]) for cls in classes]
其中: ImageColor.getrgb(STANDARD_COLORS[xx])中,xx颜色序号参照该脚本(draw_box_utils.py)开始处的STANDARD_COLORS进行修改:
在这里插入图片描述
需要哪个颜色就输入哪个颜色 的序号就行。比如,我要改称红色,红色为该列表中的第98个,所以用98代替xx输入就行:

colors = [ImageColor.getrgb(STANDARD_COLORS[cls % len(STANDARD_COLORS)]) for cls in classes]

然后返回predict.py运行,搞定!

ps:本文使用的fasterrcnn的代码为b站霹雳吧啦WZ的github仓库fasterrcnn代码包。

### 如何实现 Faster R-CNN 结果的可视化 为了实现 Faster R-CNN 的结果可视化,通常会利用 `demo.py` 文件来加载预训练模型并对单张图片执行目标检测并绘制边界。此过程涉及准备环境、设置配置文件以及编写或调整 Python 脚本来完成绘图操作。 #### 准备工作 确保已经安装了必要的依赖库,并且按照官方指南设置了开发环境[^4]。对于 PyTorch 版本的 Faster R-CNN 实现来说,还需要确认已成功构建好 GeneralizedRCNN 类实例及其组件(backbone, rpn, roi_heads)[^2]。 #### 使用 `demo.py` 在大多数开源架中,都会有一个名为 `tools/demo.py` 或者类似的脚本用于快速演示模型的功能。这个脚本能帮助用户轻松地看到模型预测的效果而无需深入了解内部细节。要使用它来进行结果可视化: 1. 修改 `demo.py` 中的相关参数以适应个人需求; 2. 提供一张或多张待测图片作为输入; 3. 执行如下命令启动程序: ```bash python tools/demo.py --config-file PATH_TO_CONFIG_FILE \ --input INPUT_IMAGE_PATH \ --output OUTPUT_DIR \ [--confidence-threshold CONFIDENCE_THRESHOLD] ``` 这里的关键选项解释如下: - `--config-file`: 配置文件路径,包含了关于网络结构、超参设定等方面的信息。 - `--input`: 输入图像的位置。 - `--output`: 输出目录,保存带有标注后的图像。 - `[--confidence-threshold]`: (可选) 设置分类得分阈值,默认情况下可能为 0.7 左右。 当上述命令被执行之后,将会读取给定的图片并通过调用预训练好的 Faster R-CNN 模型对其进行推理分析,最后将识别到的对象连同其位置信息一起画回到原始图片上形成最终视觉化成果[^5]。 #### 自定义绘图逻辑 如果希望进一步定制可视化的样式,则可以在 `demo.py` 内部找到负责渲染的部分进行修改。一般而言,这部分代码会涉及到 OpenCV 库中的图形绘制功能,比如线条颜色的选择、字体大小等都可以根据实际应用场景灵活调整。 以下是简化版自定义绘图逻辑的例子: ```python import cv2 from PIL import ImageDraw, ImageFont def draw_bounding_boxes(image_path, predictions, output_dir): image = cv2.imread(image_path) # 创建PIL对象以便更方便地处理文字显示 pil_image = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB)) drawer = ImageDraw.Draw(pil_image) font = ImageFont.load_default() for box in predictions['boxes']: x_min, y_min, x_max, y_max = map(int, box.tolist()) label = f"{predictions['labels'][i]} {scores[i]:.2f}" color = tuple(map(int, np.random.randint(0, 256, size=3))) # 绘制矩形边 drawer.rectangle([x_min, y_min, x_max, y_max], outline=color, width=3) # 添加标签和分数 text_width, _ = drawer.textsize(label, font=font) drawer.rectangle( [(x_min, y_min), (x_min + text_width + 8, y_min + 16)], fill=color ) drawer.text((x_min + 4, y_min), label, fill='white', font=font) result_img = cv2.cvtColor(np.array(pil_image),cv2.COLOR_RGB2BGR) save_name = os.path.join(output_dir, 'result_' + os.path.basename(image_path)) cv2.imwrite(save_name, result_img) ``` 这段代码展示了如何遍历每一个预测出来的边界,并为其分配随机的颜色,同时把类别名称与置信度附加于顶部附近区域。注意这里的 `ImageFont.load_default()` 只是一个简单的例子,在生产环境中建议替换为自己喜欢的字体文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值