代碼中的問題及解決方法

目錄

    • YOLOX
        • 1. AttributeError: 'VOCDetection' object has no attribute 'cache'
        • 2. ValueError: operands could not be broadcast together with shapes (8,5) (0,)
        • 3. windows遠程查看服務器的tensorboard
        • 4. AttributeError: 'int' object has no attribute 'numel'

YOLOX

1. AttributeError: ‘VOCDetection’ object has no attribute ‘cache’

在這里插入圖片描述

conda activate yolox
pip uninstall yolox
python3 setup.py develop

莫名其妙就行了

2. ValueError: operands could not be broadcast together with shapes (8,5) (0,)

在這里插入圖片描述
修改YOLOX-main/yolox/data/datasets/voc.py
在這里插入圖片描述

3. windows遠程查看服務器的tensorboard

服務器端

tensorboard --lodir=/path/ --port 6006

window本地

ssh -L 6007:localhost:6006 root@xx.xx.xxx.xx -p 22

連接成功要輸入登錄密碼,其中6007是本地指定的端口,6006是服務器段指定的端口,22是ssh連接的端口。
然后網頁打開http://127.0.0.1:6007/就可以查看了

4. AttributeError: ‘int’ object has no attribute ‘numel’

使用yolox_voc_nano.py進行訓練的時候會報錯
報錯的:

# encoding: utf-8
import os
import torch.nn as nnfrom yolox.data import get_yolox_datadir
from yolox.exp import Exp as MyExpclass Exp(MyExp):def __init__(self):super(Exp, self).__init__()self.num_classes = 1self.depth = 0.33self.width = 0.25self.input_size = (416, 416)self.random_size = (10, 20)self.mosaic_scale = (0.5, 1.5)self.test_size = (416, 416)self.mosaic_prob = 0.5self.enable_mixup = Falseself.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]def get_model(self, sublinear=False):def init_yolo(M):for m in M.modules():if isinstance(m, nn.BatchNorm2d):m.eps = 1e-3m.momentum = 0.03if "model" not in self.__dict__:from yolox.models import YOLOX, YOLOPAFPN, YOLOXHeadin_channels = [256, 512, 1024]# NANO model use depthwise = True, which is main difference.backbone = YOLOPAFPN(self.depth, self.width, in_channels=in_channels,act=self.act, depthwise=True,)head = YOLOXHead(self.num_classes, self.width, in_channels=in_channels,act=self.act, depthwise=True)self.model = YOLOX(backbone, head)self.model.apply(init_yolo)self.model.head.initialize_biases(1e-2)return self.modeldef get_dataset(self, cache: bool, cache_type: str = "ram"):from yolox.data import VOCDetection, TrainTransformreturn VOCDetection(data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),image_sets=[('2007', 'trainval')],img_size=self.input_size,preproc=TrainTransform(max_labels=50,flip_prob=self.flip_prob,hsv_prob=self.hsv_prob),cache=cache,cache_type=cache_type,)def get_eval_dataset(self, **kwargs):from yolox.data import VOCDetection, ValTransformlegacy = kwargs.get("legacy", False)return VOCDetection(data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),image_sets=[('2007', 'test')],img_size=self.test_size,preproc=ValTransform(legacy=legacy),)def get_evaluator(self, batch_size, is_distributed, testdev=False, legacy=False):from yolox.evaluators import VOCEvaluatorreturn VOCEvaluator(dataloader=self.get_eval_loader(batch_size, is_distributed,testdev=testdev, legacy=legacy),img_size=self.test_size,confthre=self.test_conf,nmsthre=self.nmsthre,num_classes=self.num_classes,)

修改為:

# encoding: utf-8
import osimport torch
import torch.distributed as distimport torch.nn as nnfrom yolox.data import get_yolox_datadir
from yolox.exp import Exp as MyExpclass Exp(MyExp):def __init__(self):super(Exp, self).__init__()self.num_classes = 1self.depth = 0.33self.width = 0.25self.input_size = (416, 416)self.random_size = (10, 20)self.mosaic_scale = (0.5, 1.5)self.test_size = (416, 416)self.max_epoch = 500self.enable_mixup = Falseself.exp_name = os.path.split(os.path.realpath(__file__))[1].split(".")[0]def get_model(self, sublinear=False):def init_yolo(M):for m in M.modules():if isinstance(m, nn.BatchNorm2d):m.eps = 1e-3m.momentum = 0.03if "model" not in self.__dict__:from yolox.models import YOLOX, YOLOPAFPN, YOLOXHeadin_channels = [256, 512, 1024]# NANO model use depthwise = True, which is main difference.backbone = YOLOPAFPN(self.depth, self.width, in_channels=in_channels,act=self.act, depthwise=True,)head = YOLOXHead(self.num_classes, self.width, in_channels=in_channels,act=self.act, depthwise=True)self.model = YOLOX(backbone, head)self.model.apply(init_yolo)self.model.head.initialize_biases(1e-2)return self.modeldef get_data_loader(self, batch_size, is_distributed, no_aug=False, cache_img=False):from yolox.data import (VOCDetection,TrainTransform,YoloBatchSampler,DataLoader,InfiniteSampler,MosaicDetection,worker_init_reset_seed,)from yolox.utils import (wait_for_the_master,get_local_rank,)local_rank = get_local_rank()with wait_for_the_master(local_rank):dataset = VOCDetection(data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),image_sets=[('2007', 'trainval')],img_size=self.input_size,preproc=TrainTransform(max_labels=50,flip_prob=self.flip_prob,hsv_prob=self.hsv_prob),cache=cache_img,)dataset = MosaicDetection(dataset,mosaic=not no_aug,img_size=self.input_size,preproc=TrainTransform(max_labels=120,flip_prob=self.flip_prob,hsv_prob=self.hsv_prob),degrees=self.degrees,translate=self.translate,mosaic_scale=self.mosaic_scale,mixup_scale=self.mixup_scale,shear=self.shear,enable_mixup=self.enable_mixup,mosaic_prob=self.mosaic_prob,mixup_prob=self.mixup_prob,)self.dataset = datasetif is_distributed:batch_size = batch_size // dist.get_world_size()sampler = InfiniteSampler(len(self.dataset), seed=self.seed if self.seed else 0)batch_sampler = YoloBatchSampler(sampler=sampler,batch_size=batch_size,drop_last=False,mosaic=not no_aug,)dataloader_kwargs = {"num_workers": self.data_num_workers, "pin_memory": True}dataloader_kwargs["batch_sampler"] = batch_sampler# Make sure each process has different random seed, especially for 'fork' methoddataloader_kwargs["worker_init_fn"] = worker_init_reset_seedtrain_loader = DataLoader(self.dataset, **dataloader_kwargs)return train_loaderdef get_eval_loader(self, batch_size, is_distributed, testdev=False, legacy=False):from yolox.data import VOCDetection, ValTransformvaldataset = VOCDetection(data_dir=os.path.join(get_yolox_datadir(), "VOCdevkit"),image_sets=[('2007', 'test')],img_size=self.test_size,preproc=ValTransform(legacy=legacy),)if is_distributed:batch_size = batch_size // dist.get_world_size()sampler = torch.utils.data.distributed.DistributedSampler(valdataset, shuffle=False)else:sampler = torch.utils.data.SequentialSampler(valdataset)dataloader_kwargs = {"num_workers": self.data_num_workers,"pin_memory": True,"sampler": sampler,}dataloader_kwargs["batch_size"] = batch_sizeval_loader = torch.utils.data.DataLoader(valdataset, **dataloader_kwargs)return val_loaderdef get_evaluator(self, batch_size, is_distributed, testdev=False, legacy=False):from yolox.evaluators import VOCEvaluatorval_loader = self.get_eval_loader(batch_size, is_distributed, testdev, legacy)evaluator = VOCEvaluator(dataloader=val_loader,img_size=self.test_size,confthre=self.test_conf,nmsthre=self.nmsthre,num_classes=self.num_classes,)return evaluator

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908201.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908201.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JVM】Java類加載機制

【JVM】Java類加載機制 什么是類加載? 在 Java 的世界里,每一個類或接口在經過編譯后,都會生成對應的 .class 字節碼文件。 所謂類加載機制,就是 JVM 將這些 .class 文件中的二進制數據加載到內存中,并對其進行校驗…

vue的監聽屬性watch的詳解

文章目錄 1. 監聽屬性 watch2. 常規用法3. 監聽對象和route變化4. 使用場景 1. 監聽屬性 watch watch 是一個對象,鍵是需要觀察的表達式,用于觀察 Vue 實例上的一個表達式或者一個函數計算結果的變化。回調函數的參數是新值和舊值。值也可以是方法名&am…

如何在 Ubuntu 24.04 服務器上安裝 Apache Solr

Apache Solr 是一個免費、開源的搜索平臺,廣泛應用于實時索引。其強大的可擴展性和容錯能力使其在高流量互聯網場景下表現優異。 Solr 基于 Java 開發,提供了分布式索引、復制、負載均衡及自動故障轉移和恢復等功能。 本教程將指導您如何在 Ubuntu 24.…

Linux內核中TCP三次握手的實現機制詳解

TCP三次握手是建立可靠網絡連接的核心過程,其在內核中的實現涉及復雜的協議棧協作。本文將深入分析Linux內核中三次握手的實現機制,涵蓋客戶端與服務端的分工、關鍵函數調用、協議號驗證及數據包處理流程。 一、三次握手的整體流程 三次握手分為三個階段,客戶端與服務端通過…

服務器--寶塔命令

一、寶塔面板安裝命令 ?? 必須使用 root 用戶 或 sudo 權限執行! sudo su - 1. CentOS 系統: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系統…

優化 Spring Boot API 性能:利用 GZIP 壓縮處理大型有效載荷

引言 在構建需要處理和傳輸大量數據的API服務時,響應時間是一個關鍵的性能指標。一個常見的場景是,即使后端邏輯和數據庫查詢已得到充分優化,當API端點返回大型數據集(例如,數千條記錄的列表)時&#xff0…

【WPF】WPF 項目實戰:構建一個可增刪、排序的光源類型管理界面(含源碼)

💡WPF 項目實戰:構建一個可增刪、排序的光源類型管理界面(含源碼) 在實際的圖像處理項目中,我們經常需要對“光源類型”進行篩選或管理。今天我們來一步步構建一個實用的 WPF 界面,實現以下功能&#xff1…

C++23 已棄用特性

文章目錄 1. std::aligned_storage 與 std::aligned_union1.1 特性介紹1.2 被棄用的原因1.3 替代方案 2. std::numeric_limits::has_denorm2.1 特性介紹2.2 被棄用的原因 3. 總結 C23 已棄用特性包括:std::aligned_storage、std::aligned_union 與 std::numeric_lim…

十三、【核心功能篇】測試計劃管理:組織和編排測試用例

【核心功能篇】測試計劃管理:組織和編排測試用例 前言準備工作第一部分:后端實現 (Django)1. 定義 `TestPlan` 模型2. 生成并應用數據庫遷移3. 創建 `TestPlanSerializer`4. 創建 `TestPlanViewSet`5. 注冊路由6. 注冊到 Django Admin第二部分:前端實現 (Vue3)1. 創建 `Test…

STM32最小CLion開發環境

文章目錄 1 必須文件2 工具鏈3 CLion 全局配置4 CLion 新項目配置ST-Link 調試 5 點亮 LED6 分析 elf 文件7 項目模板 1 必須文件 ST 提供的頭文件支持 MDK-ARM, GCC, IAR 3種編譯器, 下面采用 GCC 編譯器 Arm GNU Toolchain Downloads – Arm Developer 或 安裝包版 調試器服…

核函數:解鎖支持向量機的強大能力

在機器學習的世界中,支持向量機(SVM)是一種強大的分類算法,而核函數則是其背后的“魔法”,讓 SVM 能夠處理復雜的非線性問題。今天,我們就來深入探討核函數的奧秘,看看它們是如何幫助 SVM 在高維…

【Go-6】數據結構與集合

6. 數據結構與集合 數據結構是編程中用于組織和存儲數據的方式,直接影響程序的效率和性能。Go語言提供了多種內置的數據結構,如數組、切片、Map和結構體,支持不同類型的數據管理和操作。本章將詳細介紹Go語言中的主要數據結構與集合&#xf…

3. 簡述node.js特性與底層原理

😺😺😺 一、Node.js 底層原理(簡化版) Node.js 是一個 基于 Chrome V8 引擎構建的 JavaScript 運行時,底層核心由幾部分組成: 組成部分簡要說明 1.V8 引擎 將 JS 編譯成機器碼執行&#xff0…

Web開發主流前后端框架總結

🖥 一、前端主流框架 前端框架的核心是提升用戶界面開發效率,實現高交互性應用。當前三大主流框架各有側重: React (Meta/Facebook) 核心特點:采用組件化架構與虛擬DOM技術(減少真實DOM操作,優化渲染性能&…

大語言模型備案與深度合成算法備案的區別與聯系

“什么情況下做算法備案?” “什么情況下做大模型備案呢?” 進行大模型備案的企業必然要進行算法備案,而進行算法備案的企業則需根據其提供的服務性質判斷是否需要進行大模型備案。 算法備案與大模型備案已經是個老生常談的話題了&#xf…

微軟PowerBI考試 PL300-Power BI 入門

Power BI 入門 上篇更新了微軟PowerBI考試 PL-300學習指南,今天分享PowerBI入門學習內容。 簡介 Microsoft Power BI 是一個完整的報表解決方案,通過開發工具和聯機平臺提供數據準備、數據可視化、分發和管理。 Power BI 可以從使用單個數據源的簡單…

【Hive入門】

之前實習寫的筆記,上傳留個備份。 1. 使用docker-compose快速搭建Hive集群 使用docker快速配置Hive環境 拉取鏡像 2. Hive數據類型 隱式轉換:窄的可以向寬的轉換顯式轉換:cast 3. Hive讀寫文件 SerDe:序列化(對象轉為字節碼…

設計模式——簡單工廠模式(創建型)

摘要 本文主要介紹了簡單工廠模式,包括其定義、結構、實現方式、適用場景、實戰示例以及思考。簡單工廠模式是一種創建型設計模式,通過工廠類根據參數決定創建哪一種產品類的實例,封裝了對象創建的細節,使客戶端無需關心具體類的…

抽象工廠模式與策略模式結合使用小案例

目錄 1.前言1.示例說明1.1定義通用接口1.2 定義抽象工廠1.3 支付寶實現1.4 微信實現1.5 客戶端使用代碼(組合使用)1.6 示例結果輸出1.7 總結 1.前言 上一篇章就通過簡單的案例來了解抽象工廠模式和策略模式的使用,現在就用個支付場景的小案例…

通過WiFi無線連接小米手機攝像頭到電腦的方法

通過WiFi無線連接小米手機攝像頭到電腦的方法 以下是基于Scrcpy和DroidCam兩種工具的無線連接方案,需提前完成開發者模式與USB調試的開啟(參考原教程步驟): 方法一:Scrcpy無線投屏(無需手機端安裝&#xf…