您好,
会员登录 快速注册
退出 ( 条未读消息)
关于本站 意见反馈 首页

公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!
全部文章分类
  • 人工智能 >

  • 编程语言 >

  • WPF系列 >

  • ASP.NET系列 >

  • Linux >

  • 数据库 >

  • 嵌入式 >

  • WEB技术 >

  • PLC系列 >

  • 微服务与框架 >

  • 小宅DIY >

  • 学习资料 >

OpenCv基础 ANN车牌识别 yolov5车牌识别 指针式仪表识别 ROS系列 YOLO Halcon Detectron2 昇腾AI ChatGPT在线体验 英伟达JETSON ChatGLM ChatTTS FunASR 地平线 ByteTrack 魔搭社区 LangChain
C C# C++ Python Java Go
WPF
ASP.NET小功能 GPS定位系统-MVC GPS定位系统-VUE ASP.NET WebRTC
Linux Linux内核 Shell MakeFile
MySql SqlServer Oracle
STM8 STM32 51单片机
VUE入门 HTML JavaScript CSS layui镜像网站 ElementUi中文官网 element-plus 图标
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
Detectron2
Detectron2 介绍 Windows11下安装cuda Detectron2 环境搭建 Detectron2 利用代码进行模型测试 Detectron2 利用现有数据集进行训练 Detectron2 自定义数据集
Detectron2 环境搭建
Detectron2 利用现有数据集进行训练
激萌の小宅 小宅博客网 Detectron2

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

Detectron2 利用代码进行模型测试

参考博客:detectron2训练自己的数据集

在上一节章节中,我们已经搭建好了Detectron2的运行环境,我在网上还发现了另一种运行方式。

在Detectron2根目录下新建两个py文件:Detector.py和test.py,代码如下:

test.py:

from Detector import *

detector = Detector(model_type="IS")

detector.onImage('demo/images/1.jpg')

Detector.py:

from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.data import MetadataCatalog
from detectron2.utils.visualizer import ColorMode, Visualizer
from detectron2 import model_zoo
import os

import cv2


class Detector:
    def __init__(self, model_type="OD"):
        self.cfg = get_cfg()

        if model_type == "OD":
            self.cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml"))
            self.cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml")
        elif model_type == "IS":
            self.cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
            self.cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
            # 调用自定义pth模型
            # self.cfg.MODEL.WEIGHTS = os.path.join(self.cfg.OUTPUT_DIR, "model_final.pth")
        self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.4  # set the testing threshold for this model
        # 使用自定义模型时,需要设置该参数
        # self.cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1

        # cuda、cpu
        self.cfg.MODEL.DEVICE = "cpu"

        self.predictor = DefaultPredictor(self.cfg)

    def onImage(self, imagepath):
        image = cv2.imread(imagepath, flags=1)

        predictions = self.predictor(image)

        viz = Visualizer(image[:, :, ::-1], metadata=MetadataCatalog.get(self.cfg.DATASETS.TRAIN[0]),
                         instance_mode=ColorMode.SEGMENTATION)

        output = viz.draw_instance_predictions(predictions["instances"].to("cpu"))

        cv2.imshow("Result", output.get_image()[:, :, ::-1])
        cv2.waitKey(0)


注意:

1、这里有个坑爹的地方,在上一节中我们有下载一个model_final_f10217.pkl文件,放在models目录下,如下:

QQ截图20230312194525.jpg

然后,但是在Detector.py代码中,将self.cfg.MODEL.WEIGHTS的值修改成pkl的文件路径,程序是无法执行的,但是按网上的说明,改成yaml文件后,执行test.py时,坑爹是程序会重新下载个一个pkl文件,并且你还找不到该文件下载到哪个目录下了。。。

2、还有一个注意点,第一个跑test.py文件时,会报下面这个错误:

QQ截图20230312195148.jpg

后来,我按上一节的教程,跑了一次demo/demo.py文件,然后再跑test.py文件,好家伙,跑成功了。

3、我这里还是推荐直接跑官方的demo.py文件比较靠谱,网上这个代码有点坑。。。

4、这个Detector.py代码不是每次都能跑成功,基本上隔三差五的都会报上面这几个错。


运行效果如下:

Result.jpg

Detectron2 环境搭建
Detectron2 利用现有数据集进行训练

友情链接: CSDN激萌の小宅 95知识库 自考题库 罗分明个人网络博客 精益编程leanboot

小宅博客  www.bilibili996.com All Rights Reserved. 备案号: 闽ICP备2024034575号

网站经营许可证  福建省福州市 Copyright©2021-2025 版权所有

小宅博客
首页 智能家居 地图定位
公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 0

    累计评价

Detectron2 利用代码进行模型测试

参考博客:detectron2训练自己的数据集

在上一节章节中,我们已经搭建好了Detectron2的运行环境,我在网上还发现了另一种运行方式。

在Detectron2根目录下新建两个py文件:Detector.py和test.py,代码如下:

test.py:

from Detector import *

detector = Detector(model_type="IS")

detector.onImage('demo/images/1.jpg')

Detector.py:

from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.data import MetadataCatalog
from detectron2.utils.visualizer import ColorMode, Visualizer
from detectron2 import model_zoo
import os

import cv2


class Detector:
    def __init__(self, model_type="OD"):
        self.cfg = get_cfg()

        if model_type == "OD":
            self.cfg.merge_from_file(model_zoo.get_config_file("COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml"))
            self.cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml")
        elif model_type == "IS":
            self.cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
            self.cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")
            # 调用自定义pth模型
            # self.cfg.MODEL.WEIGHTS = os.path.join(self.cfg.OUTPUT_DIR, "model_final.pth")
        self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.4  # set the testing threshold for this model
        # 使用自定义模型时,需要设置该参数
        # self.cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1

        # cuda、cpu
        self.cfg.MODEL.DEVICE = "cpu"

        self.predictor = DefaultPredictor(self.cfg)

    def onImage(self, imagepath):
        image = cv2.imread(imagepath, flags=1)

        predictions = self.predictor(image)

        viz = Visualizer(image[:, :, ::-1], metadata=MetadataCatalog.get(self.cfg.DATASETS.TRAIN[0]),
                         instance_mode=ColorMode.SEGMENTATION)

        output = viz.draw_instance_predictions(predictions["instances"].to("cpu"))

        cv2.imshow("Result", output.get_image()[:, :, ::-1])
        cv2.waitKey(0)


注意:

1、这里有个坑爹的地方,在上一节中我们有下载一个model_final_f10217.pkl文件,放在models目录下,如下:

QQ截图20230312194525.jpg

然后,但是在Detector.py代码中,将self.cfg.MODEL.WEIGHTS的值修改成pkl的文件路径,程序是无法执行的,但是按网上的说明,改成yaml文件后,执行test.py时,坑爹是程序会重新下载个一个pkl文件,并且你还找不到该文件下载到哪个目录下了。。。

2、还有一个注意点,第一个跑test.py文件时,会报下面这个错误:

QQ截图20230312195148.jpg

后来,我按上一节的教程,跑了一次demo/demo.py文件,然后再跑test.py文件,好家伙,跑成功了。

3、我这里还是推荐直接跑官方的demo.py文件比较靠谱,网上这个代码有点坑。。。

4、这个Detector.py代码不是每次都能跑成功,基本上隔三差五的都会报上面这几个错。


运行效果如下:

Result.jpg