yolov8 pycharm运行(predict,不用command line)

news2025/1/19 7:53:52

yolov8就不介绍了,见主页

这里说下用pycharm运行。
代码参考segment页

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n-seg.pt')  # load an official model

# Predict with the model
results = model('test_img.jpg')  # predict on an image

不通过command line,结果就只会显示predict时间和几个坐标。
并没有显示图片,也没有保存输出图片。

在这里插入图片描述

results里面的数据如下:

在这里插入图片描述

难道需要自己把box画出来?
不需要自己去写后处理,model里面自带的,现在来把它找出来。

ultralytics/yolo/engine/predictor.py的BasePredictor中,看到了predict的流程,
可以看到,如果args.save或者args.show为True, 就会保存结果,
args.show和self.plotted_img同时为True, 就会显示结果.

如果用Command line执行,show和save是直接设置的,那么pycharm在哪里设置?
(在Run->Edit Configurations的parameters里面设置show=True save=True并没什么用)。

class BasePredictor:
    def stream_inference(self, source=None, model=None):
    ...
        for batch in self.dataset:
            ...
            # Preprocess
            with profilers[0]:
                im = self.preprocess(im0s)

            # Inference
            with profilers[1]:
                preds = self.model(im, augment=self.args.augment, visualize=visualize)

            # Postprocess
            with profilers[2]:
                self.results = self.postprocess(preds, im, im0s)
            self.run_callbacks('on_predict_postprocess_end')

            # Visualize, save, write results
           ...
                if self.args.verbose or self.args.save or self.args.save_txt or self.args.show:
                    s += self.write_results(i, self.results, (p, im, im0))

                if self.args.show and self.plotted_img is not None:
                    self.show(p)

                if self.args.save and self.plotted_img is not None:
                    self.save_preds(vid_cap, i, str(self.save_dir / p.name))

先看self.plotted_img怎么设置,
可以看到只要show或save任意一个为True,它就不是None.
下面问题简化到了在哪里设置show和save.

    def write_results(self, idx, results, batch):
        if self.args.save or self.args.show:  # Add bbox to image
            ...
            self.plotted_img = result.plot(**plot_args)

在下面的get_cfg中,找到了有一个cfg文件,

def get_cfg(cfg: Union[str, Path, Dict, SimpleNamespace] = DEFAULT_CFG_DICT, overrides: Dict = None):
    """
    Load and merge configuration data from a file or dictionary.

    Args:
        cfg (str) or (Path) or (Dict) or (SimpleNamespace): Configuration data.
        overrides (str) or (Dict), optional: Overrides in the form of a file name or a dictionary. Default is None.

    Returns:
        (SimpleNamespace): Training arguments namespace.
    """
    cfg = cfg2dict(cfg)

找到设置文件为ultralytics/yolo/cfg/default.yaml
把里面的show改为True.
就会通过show函数。

    def show(self, p):
        """Display an image in a window using OpenCV imshow()."""
        im0 = self.plotted_img
        if platform.system() == 'Linux' and p not in self.windows:
            self.windows.append(p)
            cv2.namedWindow(str(p), cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO)  # allow window resize (Linux)
            cv2.resizeWindow(str(p), im0.shape[1], im0.shape[0])
        cv2.imshow(str(p), im0)
        cv2.waitKey(500 if self.batch[3].startswith('image') else 1)  # 1 millisecond

函数中,图片只会显示0.5s,video的话每张图片会显示1ms.
也就是说,基本上显示一瞬间就没了。
可以在show函数中改时间,或者保存图片。
但是现在不希望改show函数,想通过args.save解决。

default.yaml中已经有save为True, 但是仍然不保存图片。
于是找到cfg变量,看到save仍然为False,肯定是在哪里被覆盖掉了。

class YOLO:
    def predict(self, source=None, stream=False, **kwargs):
        if not is_cli:
            overrides['save'] = kwargs.get('save', False)  # do not save by default if called in Python

这里明确了,如果不是command line执行的,就不会保存,设置了save为True也会被改成False.
把这里改一下,运行时就会有一个新的文件夹runs, 里面有保存的图片。

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cube Map 系列之:手把手教你 实现 环境光贴图

什么是环境光贴图 下面先看两个例子: 使用左侧的纹理 渲染茶壶,得到茶壶对真实空间的反射效果 同样使用左侧的纹理,得到中心的球对四周物体的反射效果 所以,环境光贴图指的是通过构建物体周围世界的纹理,使用纹理贴…

25的大学生转行学云计算,能拿到10k+的月薪,是真的吗?

25的大学生转行学云计算,能拿到10k的月薪,是真的吗? 对于IT行业来说,月薪上万并不少见,毕竟互联网常年占据行业薪资排行榜首。作为技术行业,由于其发展的前沿性,引导性,也是作为其他…

26-2 vue-router

原始的方式好多东西需要我们自己去写,vue-router是一个集成好了的路由包,vue-router 官网 Vue Router | Vue.js 的官方路由 并非原始的东西就不好,只要是包就可能存在版本兼容问题,如果是简单的需求就建议用原始的方法 目录 1 …

如何进行远程控制电脑

电脑在我们日常生活中的作用是非常大的,尤其是在信息时代地位非常高。 其中,最常见、最具代表性的功能是实现远程控制功能。它可以直接解决一些问题,而不需要去现场,在一定程度上提高了工作效率。但是有很多朋友不知道如何实现远…

边缘计算盒子有哪些?边缘计算应用场景

边缘计算(Edge Computing)是一种分布式计算模型,旨在将数据处理和计算功能从中心数据中心移到数据源附近的边缘设备上。它的目标是在接近数据生成的地方进行实时数据处理和分析,减少数据传输延迟和网络拥塞,提高应用程…

计算机图形学-GAMES101-2

Vectors向量 一、向量的介绍 表示一个方向。计算向量的方法:AB (B-A)。向量对应的单位向量 AB / ||AB|| 。向量具有平移性,我们不关心它的开始位置。向量求和:三角形法则和平行四边形法则。在代数上计算直接把向量的…

如何防止网站被黑客攻击?黑客是怎样炼成的?

现在的黑客网站可谓是多如牛毛,不管在哪里只要你愿意学,都可以学到一招半式。看过别人的个性签名:卖菜的王大妈是黑客,烤红薯的李大爷也是黑客,对面成人用品店的老板,挖日,还是黑客-_-~!..黑客还真多啊!!!据…

关于对自动化测试的理解:目的与本质!(新手必看)

其实自动化测试很好理解,由两部分组成,“自动化”和“测试”,所以我们要理解自动化测试,就必须理解“自动化”和“测试”,只有理解了这些概念,才能更轻松的做好的自动化测试。其中“自动化”可以想象成通过…

晶飞FLA5000光谱仪.FlaSpec格式解析批处理导出CSV文件

引言 首先说明下晶飞上位机软件存在的问题,实验所采用的FLA5000型号光谱仪,光谱波段从280-970nm,FWHM值为2.4nm。 1、上位机软件中的光谱数据复制功能基本是废的,最多只能到599.9nm,后面的数据全部消失。 2、上位机软…

2023系统分析师---软件工程、系统规划高频错题

系统规划---成本效益分析 评价信息系统经济效益常用的方法主要有成本效益分析法,投入产出分析法和价值工程方法。盈亏平衡法常用于销售定价; 可行性分析 系统规划是信息系统生命周期的第一个阶段,其任务是对企业的环境、目标以及现有系统的状况进行初步调查,根据企业目标…

示波器的数据处理怎么记录?

示波器的使用 - 记录和保存示波器测试结果 安泰测试为您分享如何记录示波器的数据。 "从您把示波器探头连接到器件的那一刻起,信号就开启了一次瞬间即可完成的重大旅程。它必须 跨过五个不同的“模块”,才能完成从器件到示波器,最后返回…

Vue电商项目--开发floor模块

获取floor组件mock数据 开发floor组件 在开发之前,说一下之前存在的一些小毛病 那就是在开发vue中还需要通过dom这种方式来操作元素吗? 我们用ref来做这个 我们先写api 然后去找仓库 getFloorList这个action在哪里触发,是需要在Home路由组件…

计算机组成原理硬件实验 - 计算机组成实验FAQ作业

一、 Quartus II 9.0 (32-Bit) 使用问题: Q1【示例】: 显示【未授权】或者【编译成功不能生成SOF文件】 A1: 在quartus中点击【TOOLS】→【license setup】,在license.DAT中修改“HOSTID”后的字段,设置为“你的电脑最新显卡ID” Q2【示例】…

怎么学习网络安全?这篇文带你从入门级开始学习网络安全

随着网络安全被列为国家安全战略的一部分,这个曾经细分的领域发展提速了不少,除了一些传统安全厂商以外,一些互联网大厂也都纷纷加码了在这一块的投入,随之而来的吸引了越来越多的新鲜血液不断涌入。 不同于Java、C/C等后端开发岗…

网络安全学什么

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我: 我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选&#xff…

卷麻了,可别再为难软件测试人了

前言 有不少技术友在测试群里讨论,近期的面试越来越难了,要背的八股文越来越多了,考察得越来越细,越来越底层,明摆着就是想让我们徒手造航母嘛!实在是太为难我们这些测试工程师了。 这不,为了帮大家节约时…

最“拼爹妈”的美国大学TOP10,什么是Legacy 录取?

Legacy的直译是遗产的意思,父母和大学的关系,就像家庭的遗产一样,可以传递给孩子一代(有时候,亲哥哥,亲姐姐也会被算作是 legacy)。有的大学祖父母如果是校友,也会算作 legacy。再远…

Docker部署配置Gitlab

Docker部署配置Gitlab 1 参考文档2 Gitlab相关介绍2.1 Gitlab2.2 Git和SVN的区别2.3 Git、Gitlab、GitHub的简单区别 3 搭建Gitlab仓库3.1 拉取镜像3.2 启动容器 4 修改配置文件并配置邮箱4.1 开放linux端口4.2 设置IP、端口4.3 配置邮箱4.4 让配置生效 5 管理员登录Gitlab6 创…

【输变电线路 JL-8C/12反时限电流继电器 报警信号、切除故障 JOSEF约瑟】

系列型号 JL-8C/11反时限电流继电器; JL-8C/12反时限电流继电器; JL-8C/12X反时限电流继电器; JL-8C/21-1反时限电流继电器; JL-8C/21-2反时限电流继电器; JL-8C/21-3反时限电流继电器; JL-8C/21-4反…

在线域名批量查询工具-在什么网站可以挖到老域名

怎么能挖掘到好域名 挖掘到好域名对于网站的建设和SEO排名是非常重要的,因为好的域名可以提高网站的置信度,增加自然引荐的数量,并且可以在搜索引擎排名中获得优势。下面介绍一些优秀的老域名挖掘方法,以及一种常用、免费的老域名…