小编Mik*_*e B的帖子

YOLOv8获取预测边界框

我想将 OpenCV 与 YOLOv8 集成ultralytics,所以我想从模型预测中获取边界框坐标。我该怎么做呢?

from ultralytics import YOLO
import cv2

model = YOLO('yolov8n.pt')
cap = cv2.VideoCapture(0)
cap.set(3, 640)
cap.set(4, 480)

while True:
    _, frame = cap.read()
    
    img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    results = model.predict(img)

    for r in results:
        for c in r.boxes.cls:
            print(model.names[int(c)])

    cv2.imshow('YOLO V8 Detection', frame)
    if cv2.waitKey(1) & 0xFF == ord(' '):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我想在 OpenCV 中显示 YOLO 带注释的图像。我知道我可以在model.predict(source='0', show=True). 但我想连续监视我的程序的预测类名称,同时显示图像输出。

python opencv yolo

10
推荐指数
2
解决办法
3万
查看次数

YOLOV8如何处理不同的图像尺寸

Yolov8 和我怀疑 Yolov5 可以很好地处理非方形图像。我看不到任何裁剪输入图像的证据,即检测似乎到达最长边的边缘。它是否会调整为 640x604 的正方形,从而改变对象的纵横比,使它们更难以检测?

当从预训练模型开始对自定义数据集进行训练时,imgsz(图像大小)参数实际上有什么作用?

python deep-learning conv-neural-network yolo

9
推荐指数
1
解决办法
2万
查看次数

训练 PyTorch 脚本直至收敛的标准方法是什么?

检测模型是否收敛的标准方法是什么?我打算记录 5 次损失,每次损失有 95 个置信区间,如果他们都同意,那么我\xe2\x80\x99d 停止脚本。我假设收敛之前的训练必须已经在 PyTorch 或 PyTorch Lightning 中的某个地方实现。我不需要一个完美的解决方案,只需自动执行此操作的标准方法 - 即收敛时停止。

\n

我的解决方案很容易实现。一旦创建了一个标准并将减少更改为none。然后它将输出一个大小为 的张量[B]。每次记录时都会记录下来,并且它是 95 置信区间(如果您愿意,也可以是 std,但这精度要低得多)。然后,每次添加新损失及其置信区间时,请确保其大小保持为 5(或 10),并且 5 个损失彼此之间的 CI 范围在 95 以内。那么如果这是真的就停下来。

\n

您可以使用以下方法计算 CI:

\n
def torch_compute_confidence_interval(data: Tensor,\n                                           confidence: float = 0.95\n                                           ) -> Tensor:\n    """\n    Computes the confidence interval for a given survey of a data set.\n    """\n    n = len(data)\n    mean: Tensor = data.mean()\n    # se: Tensor = scipy.stats.sem(data)  # compute standard error\n    # se, mean: Tensor = …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning pytorch pytorch-lightning

6
推荐指数
1
解决办法
1836
查看次数

YOLOv8:运行时错误:在当前进程完成引导阶段之前尝试启动新进程

在当前进程完成其引导阶段之前,已尝试启动新进程。

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.
Run Code Online (Sandbox Code Playgroud)

** 尝试在 python 环境中训练 YOLOv8 模型时会出现此错误** from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.yaml")  # build a new model from scratch
model = YOLO("yolov8n.pt") …
Run Code Online (Sandbox Code Playgroud)

python yolo

6
推荐指数
1
解决办法
5112
查看次数

YOLOv8 获取预测的类名

我只想在我的 python 脚本中获取类数据,例如:人、汽车、卡车、狗 ,但我的输出不止于此。我也不能将结果用作字符串。

Python脚本:

from ultralytics import YOLO

model = YOLO("yolov8n.pt") 
results = model.predict(source="0")
Run Code Online (Sandbox Code Playgroud)

输出:

0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.2ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 7.9ms
0: 480x640 1 person, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
0: 480x640 1 person, 1 car, 7.1ms
Run Code Online (Sandbox Code Playgroud)

python object-detection yolo

5
推荐指数
1
解决办法
1万
查看次数

指定要在预训练模型上使用 YOLOv8 进行检测的类

我是 YOLOv8 的新手,我只想让模型仅检测某些类,而不是模型训练的所有 80 个类。如何指定 YOLOv8 模型仅检测一类?例如仅人。

from ultralytics import YOLO
model = YOLO('YOLOv8m.pt')
Run Code Online (Sandbox Code Playgroud)

我记得我们可以用 YOLOv5 做到这一点,但我不能用 YOLOv8 做到同样的事情:

model = torch.hub.load("ultralytics/yolov5", 'custom', path='yolov5s.pt')
model.classes = [0]  # Only person
model.conf = 0.6
Run Code Online (Sandbox Code Playgroud)

python detection computer-vision yolo

4
推荐指数
1
解决办法
6097
查看次数

隐藏终端的 Ultralytics' Yolov8 model.predict() 输出

我有这个输出是由model.predict()

0: 480x640 1 Hole, 234.1ms
Speed: 3.0ms preprocess, 234.1ms inference, 4.0ms postprocess per image at shape (1, 3, 640, 640)

0: 480x640 1 Hole, 193.6ms
Speed: 3.0ms preprocess, 193.6ms inference, 3.5ms postprocess per image at shape (1, 3, 640, 640)

...
Run Code Online (Sandbox Code Playgroud)

如何隐藏终端的输出?

我在这个官方链接中找不到信息 https://docs.ultralytics.com/modes/predict/#arguments

python stdout output yolo yolov8

4
推荐指数
1
解决办法
5936
查看次数

Pytorch Lightning 中forward 和train_step 的区别?

我在 Pytorch Lightning 中设置了一个迁移学习 Resnet。该结构借自此 wandb 教程 https://wandb.ai/wandb/wandb-lightning/reports/Image-Classification-using-PyTorch-Lightning--VmlldzoyODk1NzY

并查看文档https://pytorch-lightning.readthedocs.io/en/latest/common/lightning_module.html

我对 defforward () 和 def Training_step() 方法之间的区别感到困惑。

最初在 PL 文档中,模型不会在训练步骤中调用,仅在前向调用中调用。但在训练步骤中也不会调用前向。我一直在数据上运行模型,输出看起来很合理(我有一个图像回调,我可以看到模型正在学习,并最终获得了良好的准确性结果)。但我担心,鉴于没有调用前向方法,该模型在某种程度上没有被实现?

型号代码为:

class TransferLearning(pl.LightningModule):
    "Works for Resnet at the moment"
    def __init__(self, model, learning_rate, optimiser = 'Adam', weights = [ 1/2288  , 1/1500], av_type = 'macro' ):
        super().__init__()
        self.class_weights = torch.FloatTensor(weights)
        self.optimiser = optimiser
        self.thresh  =  0.5
        self.save_hyperparameters()
        self.learning_rate = learning_rate
        
        #add metrics for tracking 
        self.accuracy = Accuracy()
        self.loss= nn.CrossEntropyLoss()
        self.recall = Recall(num_classes=2, threshold=self.thresh, average = av_type)
        self.prec = Precision( num_classes=2, …
Run Code Online (Sandbox Code Playgroud)

python resnet pytorch pytorch-lightning

3
推荐指数
1
解决办法
7827
查看次数

如何在 Colab 中更改 yolov8 模型的训练模型位置

这是在colab中训练模型的命令

!yolo task=detect mode=train model=yolov8s.pt data=coco.yaml epochs=10 imgsz=640 
Run Code Online (Sandbox Code Playgroud)

我想将模型的保存位置从 /runs/exp 更改为 /content/drive/MyDrive/yolov8,我该怎么做

我尝试了 --weights 参数和其他一些参数,但没有成功

python machine-learning object-detection computer-vision yolo

3
推荐指数
1
解决办法
2745
查看次数

trainer类是如何选择YOLOv8最佳损失模型的?

从 YOLOv8 文档中,我不清楚 YOLOv8 训练器类使用哪个损失指标来确定训练运行中保存的最佳损失模型。是基于验证还是训练损失?

具体来说,当我查看 YOLOv8 训练运行的输出时,我没有看到任何元数据表明哪个纪元导致保存在 running/train/weights/best.pt 的最佳损失模型

python loss yolo

3
推荐指数
1
解决办法
1006
查看次数

如何用Matplotlib绘制损失曲线?

我正在使用 Pytorch Lighting 和 Tensorboard,因为 PyTorch Forecasting 库是使用它们构建的。我想通过 matplotlib 创建自己的损失曲线,并且不想使用 Tensorboard。

是否可以通过方法访问每个时期的指标?验证损失、训练损失等?

我的代码如下:

logger = TensorBoardLogger("logs", name = "model")
trainer = pl.Trainer(#Some params)
Run Code Online (Sandbox Code Playgroud)

记录员或培训师是否有任何方法来访问此信息?

PL 文档不清楚,并且有许多与记录器和训练器相关的方法。

python tensorboard pytorch-lightning

2
推荐指数
1
解决办法
934
查看次数