用pytorch跑yolov8神经网络,在朋友的电脑能跑,我的就出现这些报错,查了类似问题的文章,但苦于本人水平不高,尝试跟着他人的方法也解决不了,重新装了anaconda环境和pytorch也解决不了,求big佬指点!

图一

图二

图三

图四
用pytorch跑yolov8神经网络,在朋友的电脑能跑,我的就出现这些报错,查了类似问题的文章,但苦于本人水平不高,尝试跟着他人的方法也解决不了,重新装了anaconda环境和pytorch也解决不了,求big佬指点!




关注以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。
为了确保PYTHON运行在PYTORCH上并能够正确使用YOLOV8神经网络进行训练,你可能需要遵循以下步骤:
首先,你需要安装PANDAS, NUMPY, 和 TORCHVISION 等库。你可以从官方网站下载并安装它们:
PIP INSTALL PANDAS NUMPY TORCH TORCHVISION
创建一个包含图像文件和标签的数据集。这里是一个简单的示例,只包含两个类别的图像:
IMPORT OS
IMPORT CV2
FROM PIL IMPORT IMAGE
# 加载图像
IMAGE_PATHS = ['PATH/TO/YOUR/IMAGE_1.JPG', 'PATH/TO/YOUR/IMAGE_2.JPG']
LABELS = ['LABEL1', 'LABEL2']
IMAGES = []
FOR PATH IN IMAGE_PATHS:
IMG = CV2.IMREAD(PATH)
IMAGES.APPEND(IMG)
# 将图像转换为PIL对象以供TENSORFLOW处理
IMAGES = [IMAGE.FROMARRAY(IMAGE) FOR IMAGE IN IMAGES]
定义一个训练函数,用于处理图像、标注数据以及网络参数等:
DEF TRAIN_MODEL(MODEL, DATA_LOADER, CRITERION, OPTIMIZER, DEVICE):
MODEL.TRAIN()
EPOCH_LOSS = 0
CORRECT = 0
TOTAL = 0
FOR BATCH_IDX, (INPUTS, TARGETS) IN ENUMERATE(DATA_LOADER):
INPUTS, TARGETS = INPUTS.TO(DEVICE), TARGETS.TO(DEVICE)
# FORWARD PASS
OUTPUTS = MODEL(INPUTS)
LOSS = CRITERION(OUTPUTS, TARGETS)
# BACKWARD AND OPTIMIZE
OPTIMIZER.ZERO_GRAD()
LOSS.BACKWARD()
OPTIMIZER.STEP()
# UPDATE THE EPOCH LOSS
EPOCH_LOSS += LOSS.ITEM() * INPUTS.SIZE(0)
# CALCULATE ACCURACY
_, PREDICTED = TORCH.MAX(OUTPUTS.DATA, 1)
TOTAL += TARGETS.SIZE(0)
CORRECT += (PREDICTED == TARGETS).SUM().ITEM()
RETURN EPOCH_LOSS / LEN(DATA_LOADER.DATASET), CORRECT / TOTAL
在训练过程中,你可以通过打印损失(LOSS)和准确率来监控网络性能:
MODEL.EVAL()
WITH TORCH.NO_GRAD():
CORRECT = 0
TOTAL = 0
FOR INPUTS, TARGETS IN DATA_LOADER:
INPUTS, TARGETS = INPUTS.TO(DEVICE), TARGETS.TO(DEVICE)
OUTPUTS = MODEL(INPUTS)
_, PREDICTED = TORCH.MAX(OUTPUTS.DATA, 1)
TOTAL += TARGETS.SIZE(0)
CORRECT += (PREDICTED == TARGETS).SUM().ITEM()
PRINT(F"LOSS: {EPOCH_LOSS:.4F}, ACCURACY: {CORRECT}/{TOTAL}")
将训练好的模型部署到实际环境中,并对测试数据进行预测:
MODEL.EVAL()
WITH TORCH.NO_GRAD():
CORRECT = 0
TOTAL = 0
FOR INPUTS, TARGETS IN DATA_LOADER:
INPUTS, TARGETS = INPUTS.TO(DEVICE), TARGETS.TO(DEVICE)
OUTPUTS = MODEL(INPUTS)
_, PREDICTED = TORCH.MAX(OUTPUTS.DATA, 1)
TOTAL += TARGETS.SIZE(0)
CORRECT += (PREDICTED == TARGETS).SUM().ITEM()
PRINT(F"ACCURACY ON TEST SET: {CORRECT}/{TOTAL}")
希望这些建议对你有所帮助!如果你遇到具体问题或者需要进一步的帮助,请随时提问。