(篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试

ultralytics-8.3.28版本debug记录

1传入文件

代码太多不粘贴在这里了,完整代码写在了篇三

    def open_src_file(self):
        config_file = 'config/fold.json'
        config = json.load(open(config_file, 'r', encoding='utf-8'))
        open_fold = config['open_fold']
        if not os.path.exists(open_fold):
            open_fold = os.getcwd()
        name, _ = QFileDialog.getOpenFileName(self, 'Video/image', open_fold, "Pic File(*.mp4 *.mkv *.avi *.flv *.jpg *.png)")
        if name:
            self.yolo_predict.source = name  #将图片或者视频传入到source中
            print(name)
            self.show_status('Load File:{}'.format(os.path.basename(name)))
            config['open_fold'] = os.path.dirname(name)
            config_json = json.dumps(config, ensure_ascii=False, indent=2) # 重新保存json的信息
            with open(config_file, 'w', encoding='utf-8') as f:
                f.write(config_json)
            self.stop()

最终我们发现,打开的图片其实保存到了YoloPredictor下面的source,但是BasePredictor(yolo检测器)这个文件下是没有source这个属性的。因此这一步并没有完成图片与yolo检测器之间的链接

# 设置输入源
self.setup_source(self.source if self.source is not None else self.args.source)# 打开的图片从这被self.args.source被加载进去
  • 在setup_source函数中,发现传入的source被包含到了self.dataset当中,我们要在这里找出self.dataset对于图片检测和视频检测都有什么区别。
1图片检测
“”“yolo检测器”“”
def setup_source(self, source):
	   """Sets up source and inference mode."""
	   self.imgsz = check_imgsz(self.args.imgsz,
(yolov9) C:\Users\xu>pip install ultralytics opencv-python albumentations tqdm pandas Collecting ultralytics Downloading ultralytics-8.3.169-py3-none-any.whl.metadata (37 kB) Collecting opencv-python Downloading opencv_python-4.12.0.88-cp37-abi3-win_amd64.whl.metadata (19 kB) Collecting albumentations Downloading albumentations-1.4.18-py3-none-any.whl.metadata (32 kB) Collecting tqdm Using cached tqdm-4.67.1-py3-none-any.whl.metadata (57 kB) Collecting pandas Using cached pandas-2.0.3-cp38-cp38-win_amd64.whl.metadata (18 kB) Requirement already satisfied: numpy>=1.23.0 in d:\rujian\pc\envs\yolov9\lib\site-packages (from ultralytics) (1.24.1) INFO: pip is looking at multiple versions of ultralytics to determine which version is compatible with other requirements. This could take a while. Collecting ultralytics Downloading ultralytics-8.3.168-py3-none-any.whl.metadata (37 kB) Using cached ultralytics-8.3.167-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.166-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.165-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.164-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.163-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.162-py3-none-any.whl.metadata (37 kB) INFO: pip is still looking at multiple versions of ultralytics to determine which version is compatible with other requirements. This could take a while. Downloading ultralytics-8.3.161-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.160-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.159-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.158-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.157-py3-none-any.whl.metadata (37 kB) INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C. Downloading ultralytics-8.3.156-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.155-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.154-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.153-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.152-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.151-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.150-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.149-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.148-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.147-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.146-py3-none-any.whl.metadata (37 kB) Downloading ultralytics-8.3.145-py3-none-any.whl.metadata (37 kB) ERROR: Operation cancelled by user (yolov9) C:\Users\xu> (yolov9) C:\Users\xu> (yolov9) C:\Users\xu> (yolov9) C:\Users\xu> 什么意思
最新发布
07-23
<think>我们遇到了一个pip安装问题。用户尝试安装多个包(ultralytics, opencv-python, albumentations, tqdm, pandas),但是pip在解决依赖关系时花费了很长时间,最终用户按下了Ctrl+C终止了操作。 问题分析: 1. 依赖冲突:pip在尝试安装这些包时,需要解决它们之间的依赖关系,特别是版本兼容性问题。 2. 回溯(backtracking):当pip无法立即找到满足所有要求的版本组合时,它会回溯尝试更早的版本,这可能导致很长的解决时间。 3. 用户终止:由于等待时间过长,用户按下了Ctrl+C,导致安装被取消。 解决方案: 为了减少解决依赖关系的时间,我们可以尝试以下方法: 方法1:单独安装每个包,并指定较新的版本(特别是对于有冲突的包)。 方法2:使用更严格的约束条件,例如指定某些包的版本范围,避免pip回溯过多版本。 方法3:升级pip到最新版本,因为新版本的pip在依赖解析上可能更高效。 方法4:使用虚拟环境,确保环境干净,避免已有包造成冲突。 根据错误信息,问题主要出现在`ultralytics`包的版本回溯上。我们可以尝试单独安装`ultralytics`并指定一个版本,然后再安装其他包。 步骤建议: 1. 先升级pip:`python -m pip install --upgrade pip` 2. 尝试安装一个较新的`ultralytics`版本(例如8.0.0以上),但注意不要指定过高的版本,以免与其他包冲突。 3. 如果还是不行,可以尝试逐个安装,并注意观察哪个包导致问题。 但是,根据错误信息,pip尝试了从`ultralytics-8.3.168`一直到`ultralytics-8.3.145`的多个版本,说明这些版本可能与其他包有冲突。 我们可以尝试以下命令: 先安装`opencv-python`、`albumentations`、`tqdm`、`pandas`,然后再安装`ultralytics`,并指定一个较新的版本(例如8.3.169,因为一开始尝试下载的就是这个版本)。 具体命令: ``` pip install opencv-python albumentations tqdm pandas pip install ultralytics==8.3.169 ``` 如果这样还是不行,我们可以尝试降低`ultralytics`的版本,或者查看这些包的最新版本兼容性信息。 另外,`albumentations`包可能对某些包有版本限制。我们可以查看`albumentations`的文档,看看它要求的依赖版本。 但是,由于用户是在Windows环境下,并且使用的是Python3.8(从pandas的包名中可以看出),我们还可以尝试使用`--no-deps`选项来跳过依赖安装(不推荐,因为可能导致功能缺失)或者使用`--use-deprecated=legacy-resolver`(但pip新版本已经移除了这个选项)。 更可靠的方法是创建一个新的虚拟环境,然后按照以下顺序安装: 1. 安装pandas(因为它通常需要编译,可能会与其他包有冲突) 2. 安装opencv-python 3. 安装albumentations(注意:albumentations可能依赖于特定版本的opencv-python) 4. 安装tqdm 5. 最后安装ultralytics 或者,我们可以尝试使用一个已经测试过的版本组合,例如: ``` pip install ultralytics==8.0.0 pip install opencv-python==4.5.5.64 pip install albumentations==1.0.0 pip install tqdm==4.62.3 pip install pandas==1.3.5 ``` 但是,这可能会降低版本,不一定符合需求。 考虑到时间,我们也可以使用`pip install`的`--no-cache-dir`选项来避免使用缓存,有时候缓存会导致问题。 不过,从错误信息来看,最直接的问题是`ultralytics`的版本回溯。我们可以尝试指定一个较新的版本(如8.3.169)并单独安装,然后再安装其他包。 让我们尝试以下步骤: 步骤1:升级pip 步骤2:单独安装ultralytics(指定版本) 步骤3:安装其他包 代码: ```bash pip install --upgrade pip pip install ultralytics==8.3.169 pip install opencv-python albumentations tqdm pandas ``` 如果上述步骤中安装`ultralytics==8.3.169`失败(比如没有这个版本),我们可以尝试不指定版本,或者指定一个更早的版本(如8.3.168)。 注意:我们也可以尝试使用`--pre`选项来安装预发布版本(如果有的话),但通常不需要。 如果还是无法解决,我们可以考虑使用`conda`来安装部分包(如果用户使用的是Anaconda环境),因为conda的依赖解析有时会更好。 但是,用户已经使用了虚拟环境(从路径中的`(yolov9)`可以看出),并且使用的是`pip`。 因此,我们给出以下解决方案: 1. 升级pip。 2. 尝试安装指定版本的ultralytics(例如8.3.169,如果不存在则尝试8.3.168,以此类推)。 3. 然后安装其他包。 如果用户遇到特定包版本不存在的错误,可以查看可用的版本:https://pypi.org/project/ultralytics/#history 根据历史记录,ultralytics的版本8.3.169是存在的(2024年7月10日发布)。 因此,我们建议用户运行: ```bash pip install --upgrade pip pip install ultralytics==8.3.169 pip install opencv-python albumentations tqdm pandas ``` 如果这样还是出现回溯问题,我们可以尝试同时指定所有包的版本(使用一个已知兼容的版本组合)。但是,由于我们不知道确切的兼容组合,这可能需要一些尝试。 另一个方案:使用`requirements.txt`文件,并固定版本。例如,创建一个`requirements.txt`文件,内容如下: ``` ultralytics==8.3.169 opencv-python==4.12.0.88 albumentations==1.4.18 tqdm==4.67.1 pandas==2.0.3 ``` 然后运行: ```bash pip install -r requirements.txt ``` 这样,pip会一次性解决所有依赖,但是可能仍然会遇到回溯问题。如果遇到,我们可以尝试先安装依赖较多的包(如numpy),然后再安装其他包。 但是,考虑到用户已经尝试安装,并且出现了长时间的回溯,我们可以尝试使用`--use-feature=2020-resolver`,但新版本的pip默认使用新的解析器,所以这个选项已经不需要了。 最后,如果以上方法都不行,我们可以尝试使用`pip`的`--ignore-requires-python`选项(但这不是解决依赖冲突的正确方式,不推荐)。 综上所述,我们优先推荐分步安装,并指定`ultralytics`的版本。 注意:在安装过程中,如果出现某个包版本不兼容的错误,再根据错误信息调整。 由于用户已经终止了安装,我们重新开始。 下面我们给出一个分步安装的代码示例: ```bash # 升级pip python -m pip install --upgrade pip # 先安装ultralytics的指定版本(8.3.169) pip install ultralytics==8.3.169 # 然后安装其他包 pip install opencv-python albumentations tqdm pandas ``` 解释: 1. 第一步升级pip,确保pip是最新的,因为新版本的pip在依赖解析上可能有所改进。 2. 单独安装ultralytics,因为它是导致回溯的主要包,指定一个存在的版本(8.3.169)可以避免pip去尝试多个版本。 3. 然后安装剩下的包,这些包可能对ultralytics的依赖较少,因此可以顺利安装。 如果第二步安装ultralytics时,提示找不到版本8.3.169,我们可以尝试8.3.168(在错误信息中,pip尝试下载过这个版本,说明它存在)。所以可以改为: ```bash pip install ultralytics==8.3.168 ``` 如果还是不行,我们可以尝试安装更早的版本,比如8.3.0(但可能功能有差异)。 另外,注意albumentations可能对opencv-python-headless有依赖,但opencv-python已经包含了headless版本。所以通常没有问题。 如果安装过程中出现其他错误,请根据错误信息再调整。 相关问题: 我们按照要求提出相关问题:</think>这个错误信息表明你在使用 `pip` 安装 Python 包时遇到了依赖解析问题。让我详细解释一下原因和解决方案: ### 问题原因分析 1. **依赖冲突**: - 你要安装的包(`ultralytics`, `opencv-python`, `albumentations`, `tqdm`, `pandas`)有相互依赖关系 - `pip` 需要找到一组兼容的版本组合,但在这个过程中花费了过多时间 2. **回溯问题 (Backtracking)**: - `pip` 尝试了多个版本的 `ultralytics`(从 8.3.1688.3.145) - 每个版本都需要检查与其他包的兼容性 - 这个过程非常耗时,最终你按 Ctrl+C 取消了操作 3. **环境信息**: - 你在 Windows 系统上 - 使用 Python 3.8(从 pandas 的包名 `pandas-2.0.3-cp38-cp38-win_amd64.whl` 可以看出) - 使用名为 `yolov9` 的虚拟环境 ### 解决方案 #### 方法 1:分步安装(推荐) ```bash # 1. 先安装基础依赖 pip install numpy opencv-python tqdm pandas # 2. 单独安装 albumentations pip install albumentations # 3. 最后安装 ultralytics(指定最新版本) pip install ultralytics==8.3.169 ``` #### 方法 2:使用约束文件 创建 `requirements.txt` 文件: ```txt ultralytics==8.3.169 opencv-python==4.12.0.88 albumentations==1.4.18 tqdm==4.67.1 pandas==2.0.3 numpy==1.24.1 ``` 然后运行: ```bash pip install -r requirements.txt ``` #### 方法 3:升级 pip 并重试 ```bash # 升级 pip 到最新版本 python -m pip install --upgrade pip # 然后尝试重新安装 pip install ultralytics opencv-python albumentations tqdm pandas ``` ### 为什么会出现这个问题? 1. **版本冲突**: - `ultralytics` 的新版本可能依赖更高版本的 NumPy 或其他包 - 你环境中已安装的包可能与新包不兼容 2. **依赖解析算法**: - `pip` 的新版本使用更严格的依赖解析器 - 当包依赖关系复杂时,可能需要尝试多个版本组合 3. **Windows 环境**: - Windows 上的二进制包兼容性问题更多 - 需要找到同时兼容 Python 3.8 和 Windows 的版本 ### 预防措施 1. **使用虚拟环境**: ```bash # 创建新环境 python -m venv yolov9-new # 激活环境 .\yolov9-new\Scripts\activate ``` 2. **固定版本号**: 在 `requirements.txt` 中明确指定所有包的版本 3. **使用轻量级安装**: ```bash pip install --no-cache-dir ultralytics opencv-python ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又又土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值