【学习AI-相关路程-工具使用-自我学习-jetson收集数据-图片采集-训练前准备-基础样例 (5)】

【学习AI-相关路程-工具使用-自我学习-jetson&模型训练-图片识别-使用模型检测图片-基础样例 (5)】

  • 1 -前言
  • 2 -环境说明
  • 3 -先行了解
    • (1)整理流程了解
    • (2)了解模型-MobileNet
      • 1、MobileNetV2 的主要特性:
      • 2、MobileNet_V2_Weights.IMAGENET1K_V1 的使用:
        • (1)适用场景:
        • (2)优点与局限性:
    • (3)其他模型了解
  • 4 -实验过程
        • 1、创建目录结构
        • 2、编写训练代码
        • 3、训练过程
        • 4、使用模型检测
        • 5、使用GPU问题
        • 6、历史记录
  • 5-代码过程
      • 1、目录截图
      • 2、代码链接
  • 6 -细节部分
      • (1)获取版本信息
          • 1. 验证CUDA和cuDNN是否正常工作
          • 2. 验证PyTorch和torchvision安装
          • 3. 查看Jetson设备的系统信息
          • 4. 查看python版本信息
      • (2)查看目录结构
      • (3)每个目录下放的什么文件
      • (4)报错:ModuleNotFoundError: No module named 'torchvision'
      • (5)报错:文件路径没找到&路径拼写错误
  • 7 -总结

1 -前言

我们在上一篇,学习了收集图片,以及使用代码对图片进行一定批量出来,那么本章,我们终于可以训练模型了,但对于识别屏幕开关机这样的任务,我自己最后其实没有用那些匹配转换的图片,而是直接用原图片,直接进行训练的。但个人认为 ,实际应用中,处理图片应该是不能省略的。

【学习AI-相关路程-工具使用-自我学习-jetson&收集数据-图片采集-训练前准备-基础样例 (4)】

2 -环境说明

本次环境是在jetson orin NX 上,环境信息如下。
在这里插入图片描述

wjl-linux@ubuntu:~$ jetson_release
Software part of jetson-stats 4.2.9 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Orin NX Developer Kit - Jetpack 5.1.2 [L4T 35.4.1]
NV Power Mode[3]: 25W
Serial Number: [XXX Show with: jetson_release -s XXX]
Hardware:- P-Number: p3767-0000- Module: NVIDIA Jetson Orin NX (16GB ram)
Platform:- Distribution: Ubuntu 20.04 Focal Fossa- Release: 5.10.120-tegra
jtop:- Version: 4.2.9- Service: Active
Libraries:- CUDA: 11.4.315- cuDNN: 8.6.0.166- TensorRT: 8.5.2.2- VPI: 2.3.9- Vulkan: 1.3.204- OpenCV: 4.5.4 - with CUDA: NOwjl-linux@ubuntu:~$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Sun_Oct_23_22:16:07_PDT_2022
Cuda compilation tools, release 11.4, V11.4.315
Build cuda_11.4.r11.4/compiler.31964100_0
wjl-linux@ubuntu:~$ python3 --version
Python 3.8.10
wjl-linux@ubuntu:~$ python3 -c "import torch; print(torch.__version__)"
2.4.0

3 -先行了解

开始学习的时候,或者说,你在选择可能的模型时,并不知道,自己要选择什么样的模型,本次样例,是先用了模型,后来能出来东西的时候,才去了解模型的,我们其实也是先了解过程,模型大概知道就可以了

(1)整理流程了解

(1)我们学习AI训练模型的过程中,要大概知道在什么阶段,我们之前完成数据的准备,本次是模型训练,本章我们在阶段4。

  • 阶段 1: 硬件设置
  • 阶段 2: 软件准备
  • 阶段 3: 数据准备
  • 阶段 4: 模型设计和训练
  • 阶段 5: 优化和部署
  • 阶段 6: 应用集成
  • 阶段 7: 监控和维护

(2)了解模型-MobileNet

本次使用的模型,在代码里可以看到“MobileNet_V2_Weights.IMAGENET1K_V1”字样。或者自己自考的时候,大致上知道要使用一个分类的模型,即识别出是屏幕是关机还是开机。

MobileNetV2 是一种专为移动设备和嵌入式系统设计的高效卷积神经网络(CNN)架构。它在保持计算效率的同时,能够在图像分类等任务中实现较高的准确性。MobileNetV2 通过引入深度可分离卷积和线性瓶颈单元,大幅减少了模型参数和计算量,非常适合资源受限的设备。

1、MobileNetV2 的主要特性:

  1. 深度可分离卷积(Depthwise Separable Convolution):

    • 这是 MobileNetV2 的核心组件,分为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。
    • 深度卷积:在每个输入通道上独立执行卷积操作,从而减少计算量。
    • 逐点卷积:通过 1x1 卷积将深度卷积的输出合并在一起,以整合信息。

    这种操作与传统卷积相比,大幅降低了计算复杂度和模型参数量,提升了运行速度。

  2. 线性瓶颈(Linear Bottleneck):

    • MobileNetV2 中的每个卷积块都包含一个线性瓶颈层。这个瓶颈层起到压缩特征图的作用,将特征维度从高维(输入)压缩到低维(输出)。
    • 通过这个压缩过程,MobileNetV2 能够在保持模型表达能力的同时,进一步减少计算需求。
  3. 倒残差结构(Inverted Residuals):

    • MobileNetV2 引入了倒残差结构,与 ResNet 中的标准残差块不同。倒残差块将输入的低维特征映射到高维,然后再通过瓶颈压缩回低维。这种结构能更有效地捕捉模型中的特征信息,提升模型的表达能力。

2、MobileNet_V2_Weights.IMAGENET1K_V1 的使用:

这个预训练模型权重是在 ImageNet 数据集上训练的。ImageNet 是一个包含超过 100 万张图像和 1000 个类别的广泛使用的数据集。预训练模型学习了各种物体和场景的特征,用户可以利用这些预训练的权重来进行迁移学习,即在自己的数据集上微调模型,以适应特定任务。这可以显著缩短训练时间,同时在较小的数据集上仍然能获得较好的性能。

(1)适用场景:
  • 移动应用:由于其高效性,MobileNetV2 常用于需要在移动设备上进行实时图像处理的应用,如实时对象检测、增强现实(AR)等。
  • 嵌入式设备:适用于边缘计算设备,如无人机、智能摄像头等,这些设备通常计算能力有限,但需要进行复杂的图像处理任务。
  • 迁移学习:通过使用 ImageNet 预训练权重,用户可以快速将模型应用到新任务上,如图像分类、对象检测或语义分割等。
(2)优点与局限性:
  • 优点

    • 极低的计算成本,非常适合低功耗设备。
    • 优异的性能与计算效率平衡,适合资源受限的环境。
    • 可通过迁移学习快速适应新任务。
  • 局限性

    • 在超大规模数据集或极高精度要求的任务上,可能不如更复杂的模型如 ResNet 或 EfficientNet 表现优秀。
    • 模型精度可能会因为过度追求轻量化而略有下降。

总体来说,MobileNetV2 及其预训练模型权重在需要高效计算和实时处理的任务中表现出色,尤其适合移动和嵌入式场景。

(3)其他模型了解

选择一个基本模型开始。对于图像分类,可以使用如ResNet, VGG或MobileNet等预训练模型,如果进行对象检测(例如标注开机画面的特定部分),可以考虑使用YOLO或SSD,以下是在网上找到的其他模型,大概了解下。

  1. ResNet (Residual Network)
  • 简介: ResNet是由微软研究院提出的一种深度卷积神经网络架构,它通过引入“残差块”来解决深层网络中的梯度消失问题。这些残差块允许网络直接学习输入和输出之间的残差,而不是直接学习函数映射。
  • 特点: ResNet以其深度和稳定性著称,有不同的版本(如ResNet-18, ResNet-50, ResNet-101),数字代表层数。它在ImageNet比赛中表现优异,常用于图像分类、检测等任务。
  • 优点: 能够训练非常深的网络,同时保持较好的性能;在图像分类任务中广泛使用。
  1. VGG (Visual Geometry Group)
  • 简介: VGG是由牛津大学的Visual Geometry Group提出的一种深度卷积神经网络。VGG网络以其简单且统一的卷积层设计(例如所有卷积核都为3x3)而闻名,特别是VGG16和VGG19这两种变体。
  • 特点: 该模型非常深(16或19层),但其卷积核大小固定为3x3,池化层大小固定为2x2。它通常用于图像分类任务。
  • 优点: 结构简单易于理解,性能良好;尽管深度较大,但由于设计的统一性,使得模型具有较高的稳定性。
  1. MobileNet
  • 简介: MobileNet是为移动设备和嵌入式应用设计的轻量级卷积神经网络。它通过引入深度可分离卷积(Depthwise Separable Convolution)来减少模型参数量和计算量。
  • 特点: 该模型特别适合在资源受限的环境中使用(如移动设备),可以在保证一定精度的同时显著降低计算开销。
  • 优点: 高效、快速,适合嵌入式设备;在图像分类、对象检测等任务中表现良好。
  1. YOLO (You Only Look Once)
  • 简介: YOLO是一个实时目标检测系统,它将目标检测视为一个单一的回归问题,将图像分割为SxS的网格,并预测每个网格的边界框和类概率。
  • 特点: YOLO模型处理速度非常快,适合实时应用。它在检测速度和准确性之间进行了很好的权衡。
  • 优点: 能够在单个前向传递中完成对象检测,非常适合需要实时处理的任务。
  1. SSD (Single Shot Multibox Detector)
  • 简介: SSD是一种目标检测模型,它在一张图片的多个位置上预测多个对象类别,并且每个对象使用多个边界框。SSD将检测任务分为分类和回归两个部分,且不需要提取候选区域,直接预测检测结果。
  • 特点: SSD模型在检测精度和速度之间做出了很好的平衡,尤其是在小目标检测中表现良好。
  • 优点: 处理速度快,适合嵌入式系统中的实时检测;具有不同尺度的特征图,使其在多尺度目标检测上表现出色。

4 -实验过程

上边整个是对图片采集和裁剪过程,对于一个真正的项目,我理解是必要的,需要整理收到的图片,但是人为实在太麻烦了,所以要写代码,进行批量处理。

其实上章进行缩小和处理的图片自己没有用上。 我是直接用图片训练的,而在模型训练过程中,代码已经加入自动缩小。

1、创建目录结构

如下目录结果,我们需要创建两个目录“train”和“val”目录,并且在这两个目录下,再分别创建“off”和“on”分解夹。

因为我们用于训练数据不够多,开和关的图片一起一共才40张,我们需要分别放在两个目录“train”和“val”目录下,其中

dataset/train/on/off/val/on/off/
wjl-linux@ubuntu:~/Desktop/get_AI_data_jpg_photo/dataset$ tree
.
├── python_AI_built_models1.py
├── python_display_cuda_is_availbel.py
├── python_load_model_prediction.py
├── screen_status_model.pth
├── test_image
│   ├── image1.jpg
│   ├── image2.jpg
│   ├── image3.jpg
│   ├── image4.jpg
│   ├── image5.jpg
│   ├── image6.jpg
│   ├── image7.jpg
│   ├── image8.jpg
│   ├── image.jpg
│   ├── off-012.jpg
│   ├── off-013.jpg
│   ├── off-014.jpg
│   ├── test012.jpg
│   ├── test013.jpg
│   ├── test014.jpg
│   └── test015.jpg
├── train
│   ├── off
│   │   ├── off-001.jpg
│   │   ├── off-002.jpg
│   │   ├── off-003.jpg
│   │   ├── off-004.jpg
│   │   ├── off-005.jpg
│   │   ├── off-006.jpg
│   │   ├── off-007.jpg
│   │   ├── off-008.jpg
│   │   ├── off-009.jpg
│   │   ├── off-010.jpg
│   │   ├── off-011.jpg
│   │   ├── off-012.jpg
│   │   ├── off-013.jpg
│   │   ├── off-014.jpg
│   │   ├── off-015.jpg
│   │   ├── off-016.jpg
│   │   ├── off-017.jpg
│   │   ├── off-018.jpg
│   │   └── off-019.jpg
│   └── on
│       ├── on-001.jpg
│       ├── on-002.jpg
│       ├── on-003.jpg
│       ├── on-004.jpg
│       ├── on-005.jpg
│       ├── on-006.jpg
│       ├── on-007.jpg
│       ├── on-008.jpg
│       ├── on-009.jpg
│       ├── on-010.jpg
│       ├── on-011.jpg
│       ├── on-012.jpg
│       ├── on-013.jpg
│       ├── on-014.jpg
│       ├── on-015.jpg
│       ├── on-016.jpg
│       ├── on-017.jpg
│       ├── on-018.jpg
│       ├── on-019.jpg
│       ├── on-020.jpg
│       ├── on-021.jpg
│       └── on-022.jpg
└── val├── off│   ├── off-001.jpg│   ├── off-002.jpg│   ├── off-003.jpg│   ├── off-004.jpg│   ├── off-005.jpg│   ├── off-006.jpg│   ├── off-007.jpg│   ├── off-008.jpg│   ├── off-009.jpg│   ├── off-010.jpg│   ├── off-011.jpg│   ├── off-012.jpg│   ├── off-013.jpg│   ├── off-014.jpg│   ├── off-015.jpg│   ├── off-016.jpg│   ├── off-017.jpg│   ├── off-018.jpg│   └── off-019.jpg└── on├── on-001.jpg├── on-002.jpg├── on-003.jpg├── on-004.jpg├── on-005.jpg├── on-006.jpg├── on-007.jpg├── on-008.jpg├── on-009.jpg├── on-010.jpg├── on-011.jpg├── on-012.jpg├── on-013.jpg├── on-014.jpg├── on-015.jpg├── on-016.jpg├── on-017.jpg├── on-018.jpg├── on-019.jpg├── on-020.jpg├── on-021.jpg└── on-022.jpg7 directories, 102 files
2、编写训练代码

前面准备了那么多,终于到了训练模型的阶段了,如下代码,就是整个训练模型的过程了,从引入个文件包头,到数据变换,再到创建数据集,等等。

import os
import torch
import torch.nn as nn
from torchvision import datasets, transforms, models
from torch.utils.data import DataLoaderdata_dir = '/home/wjl-linux/Desktop/get_AI_data_jpg_photo/dataset'  # 请根据实际路径调整# 数据变换
data_transforms = {'train': transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]),'val': transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]),
}# 创建数据集
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])for x in ['train', 'val']}# 创建数据加载器
dataloaders = {x: DataLoader(image_datasets[x], batch_size=32, shuffle=True, num_workers=4)for x in ['train', 'val']}dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
class_names = image_datasets['train'].classes# 设置设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")# 加载预训练的 MobileNetV2 模型
model = models.mobilenet_v2(weights='MobileNet_V2_Weights.IMAGENET1K_V1')
# 修改最后一层
model.classifier[1] = nn.Linear(model.last_channel, 1)
model = model.to(device)# 定义损失函数和优化器
criterion = nn.BCEWithLogitsLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)# 训练模型
num_epochs = 10for epoch in range(num_epochs):print(f'Epoch {epoch}/{num_epochs - 1}')print('-' * 10)# 每个 epoch 有训练和验证阶段for phase in ['train', 'val']:if phase == 'train':model.train()  # 设置模型为训练模式else:model.eval()   # 设置模型为评估模式running_loss = 0.0running_corrects = 0# 迭代数据for inputs, labels in dataloaders[phase]:inputs = inputs.to(device)labels = labels.to(device).float()# 零参数梯度optimizer.zero_grad()# 前向传播with torch.set_grad_enabled(phase == 'train'):outputs = model(inputs)preds = torch.sigmoid(outputs) > 0.5loss = criterion(outputs, labels.unsqueeze(1))# 只有在训练阶段进行反向传播和优化if phase == 'train':loss.backward()optimizer.step()# 统计损失和准确性running_loss += loss.item() * inputs.size(0)running_corrects += torch.sum(preds == labels.data.unsqueeze(1))epoch_loss = running_loss / dataset_sizes[phase]epoch_acc = running_corrects.double() / dataset_sizes[phase]print(f'{phase} Loss: {epoch_loss:.4f} Acc: {epoch_acc:.4f}')print('Training complete')# 保存模型
torch.save(model.state_dict(), '/home/wjl-linux/Desktop/get_AI_data_jpg_photo/dataset/screen_status_model.pth')

如下图,就是目录和代码的截图。
在这里插入图片描述

3、训练过程

如下当使用指令,运行python文件后,训练就开始了。

python3 python_AI_built_models1.py

在这里插入图片描述
如下是截图特写
在这里插入图片描述

4、使用模型检测

当训练好后,会出现一个名为“screen_status_model.pth”文件,然后我们就可以使用这个模型,编写代码,进行测试了。

import torch
from torchvision import models, transforms
from PIL import Image# 设置设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")# 打印设备信息
if device.type == 'cuda':print(f"Using CUDA device: {torch.cuda.get_device_name(0)}")
else:print("Using CPU")# 加载模型
model = models.mobilenet_v2(weights='MobileNet_V2_Weights.IMAGENET1K_V1')
model.classifier[1] = torch.nn.Linear(model.last_channel, 1)
model.load_state_dict(torch.load('/home/wjl-linux/Desktop/get_AI_data_jpg_photo/dataset/screen_status_model.pth'))
model = model.t  673  mkdir off674  cd ../675  ls676  cd validation/677  mkdir off678  mkdir on
o(device)
model.eval()# 预处理单张图片
img_path = '/home/wjl-linux/Desktop/get_AI_data_jpg_photo/dataset/test_image/image8.jpg'  # 请将此路径替换为实际图片路径
img = Image.open(img_path)
preprocess = transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
img_tensor = preprocess(img)
img_tensor = img_tensor.unsqueeze(0).to(device)# 进行预测
with torch.no_grad():output = model(img_tensor)prediction = torch.sigmoid(output) > 0.5if prediction.item():print('Screen is ON')
else:print('Screen is OFF')

如下图,是使用模型预测的代码截图。
在这里插入图片描述

然后我们需要创建一个新目录,名为“test_image”目录,存放我们要检测的图片。

结果截图如下,我们新拍摄一张屏幕开机或者关机的图片(自己定),然后运行脚本进行测试。

可以看到屏幕虽然反光,但是还是识别为屏幕为关。

在这里插入图片描述

5、使用GPU问题

简单说下问题,就是我发现在使用训练和检测过程中,都是用的cpu,对于计算,CPU会慢些,应该是安装工具不匹配问题,这块还在查,在写本篇是,还没有,后续需要单出一篇了。

如下是检测使没使用cuda,检测代码。

import torch
print("CUDA is available:", torch.cuda.is_available())

在这里插入图片描述

6、历史记录

对于自己操作过程记录,其中也有很多错误尝试吧 。

587  python3 python_AI_load_data.py 588  cat python_AI_load_data.py 589  python3 python_AI_load_data.py 590  claer591  clear592  pip install torchvision593  pip install torch594  pip show torch torch vision595  pip show torch vision596  ls597  python3 python_AI_load_data.py 598  cat python_AI_load_data.py 599  vim python_AI_load_data.py 600  python3 python_AI_load_data.py 601  ls602  python3 python_AI_load_data.py 603  vim python_AI_load_data.py 604  python3 python_AI_load_data.py 605  ls606  terr607  tree608  ls609  vim python_AI_load_data.py 610  ls611  vim python_AI_load_data.py 612  python3 python_AI_load_data.py 613  cat python_AI_load_data.py 614  vim python_AI_load_data.py 615  vim python_AI_load_data1.py616  python3 python_AI_load_data1.py 617  vim python_AI_built_mmodels.py618  python3 python_AI_built_mmodels.py 619  vim python_AI_built_models1.py620  python3 python_AI_built_models1.py 621  ls622  cat python_AI_built_m623  cat python_AI_built_models1.py 624  vim python_AI_built_models1.py625  ls626  cd CSI-Camera/627  ls628  pwd629  cd ../630  ls631  python3 python_load_model_prediction.py 632  cat python_load_model_prediction.py 633  python3 python_load_model_prediction.py 634  cat python_load_model_prediction.py 635  python3 python_load_model_prediction.py 636  ls637  vim python_main_camera_for_test.py638  python3 python_main_camera_for_test.py 639  ls /dev/*640  pip install  opencv-python PyQt5641  pip install  opencv-python642  ls643  python3 python_main_camera_for_test1.py 644  vim python_main_camera_for_test1.py645  python3  python_main_camera_for_test1.py646  python3 python_main_camera_for_test1.py 647  python3 python_load_model_prediction.py 648  vim python_display_cuda_is_availbel.py649  python3 python_display_cuda_is_availbel.py 650  nvidia-smi651  nvcc -v652  cat ~/.bashrc653  source ~/.bashrc 654  jtop655  pwd656  ls657  cd ../658  ls659  cd off_status660  ls661  cd ../../662  ls663  mkdir dataset664  ls665  cd dataset/666  mkdir train/667  mkdir validation668  cd train/669  ls670  mkdir on671  mkdir off\672  ls673  mkdir off674  cd ../675  ls676  cd validation/677  mkdir off678  mkdir on679  ls680  tree681  sudo apt-get install tree682  tree 683  ls684  cd ..685  ls686  tree687  pwd688  ls689  python3 python_AI_built_models1.py 690  cat python_AI_built_models1.py 691  vim  python_AI_built_models1.py 692  python3 python_AI_built_models1.py 693  ls694  vim python_load_model_prediction695  nvcc --version696  nvcc --version  # 检查 CUDA 版本697  cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2698  # 先卸载可能不匹配的PyTorch版本699  sudo pip3 uninstall torch torchvision700  sudo apt-get install python3-pip libopenblas-base libopenmpi-dev701  pip3 install --upgrade pip702  sudo pip3 install torch-1.14.0+nv23.03-cp38-cp38-linux_aarch64.whl torchvision-0.15.0+nv23.03-cp38-cp38-linux_aarch64.whl703  sudo pip3 uninstall torch torchvision704  sudo pip3 install torch==1.10.0+nv21.05.1 torchvision==0.11.1+nv21.05.1 -f https://developer.download.nvidia.com/compute/redist/jp/v45/pytorch/torch_stable.html705  ls706  python3 python_display_cuda_is_availbel.py 707  sudo pip3 install --upgrade pip708  python3 python_display_cuda_is_availbel.py 709  # 先卸载现有版本710  sudo pip3 uninstall torch torchvision711  # 通过 pip 安装 PyTorch 和 torchvision712  sudo pip3 install torch==1.10.0+nv21.05.1 torchvision==0.11.1+nv21.05.1 -f https://developer.download.nvidia.com/compute/redist/jp/v45/pytorch/torch_stable.html713  dpkg-query --show nvidia-14t-core714  dpkg-query --show nvidia-l4t-core715  sudo apt-get update716  sudo apt-get install python3-pip libopenblas-base libopenmpi-dev717  sudo pip3 install torch-2.0.0+nv23.03-cp38-cp38-linux_aarch64.whl718  ls719  python3 python_display_cuda_is_availbel.py 720  cat python_AI_built_models1.py 721  ls722  python3 python_display_cuda_is_availbel.py 723  nvidia-smi724  reboot725  python3 python_load_model_prediction.py 726  ls727  history728  nvidia-smi729  sudo tegrastats730  nvcc --version731  sudo -H pip3 install -U jetson-stats732  sudo jtop733  sudo systemctl restart jtop.service734  sudo jtop735  ls736  cat python_display_cuda_is_availbel.py 737  python3 python_display_cuda_is_availbel.py 738  nvcc --version739  cat ~/.bashrc740  vim ~/.bashrc741  source ~/.bashrc742  vim ~/.bashrc743  python3 python_display_cuda_is_availbel.py 744  cuda -v745  nvcc --version746  cat python_display_cuda_is_availbel.py 747  pip3 uninstall torch torchvision torchaudio748  sudo apt-get install python3-pip libopenblas-base libopenmpi-dev749  https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/750  python3  python_display_cuda_is_availbel.py 751  ls752  python3 python_load_model_prediction.py 753  cat python_load_model_prediction.py 754  python3 python_load_model_prediction.py 755  python3 python_display_cuda_is_availbel.py 756  python3 python_load_model_prediction.py 757  cat python_load_model_prediction.py 758  python3 python_load_model_prediction.py 759  python3 python_display_cuda_is_availbel.py 760  python3 python_load_model_prediction.py 761  python3 python_load_model_prediction.py \762  python3 python_display_cuda_is_availbel.py 763  pip3 uninstall torch torchvision torchaudio764  pip3 install --pre torch torchvision torchaudio --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v51/pytorch/765  python3 python_display_cuda_is_availbel.py 766  python3 python_load_model_prediction.py \pip3 uninstall torch torchvision torchaudio767  python3 python_load_model_prediction.py 768  python3 python_display_cuda_is_availbel.py 769  export TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl770  python3 python_display_cuda_is_availbel.py 771  python3 python_load_model_prediction.py 772  history773  python3 python_display_cuda_is_availbel.py 774  python3 python_load_model_prediction.py 775  python3 python_display_cuda_is_availbel.py 776  git clonehttps://github.com/pytorch/visioncd vision777  git clone https://github.com/pytorch/visioncd vision778  git clone https://github.com/pytorch/vision779  python3 python_display_cuda_is_availbel.py 780  python3 python_load_model_prediction.py 781  python3 python_display_cuda_is_availbel.py 782  python3 python_load_model_prediction.py 783  python3 python_display_cuda_is_availbel.py 784  pip install torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl 785  pip3 install torchvision786  ls787  history 788  pip3 uninstall torchvision789  pip install torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl 790  pip3 install --pre torch torchvision torchaudio --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/791  pip install torch-1.13.0a0+340c4120.nv22.06-cp38-cp38-linux_aarch64.whl 792  python3 -c "import torch; print(torch.__version__)"793  python3 -c "import torchvision; print(torchvision.__version__)"794  ls795  pip3 install tensorflow-2.9.1+nv22.06-cp38-cp38-linux_aarch64.whl 796  python -m pip install --upgrade pip797  ls798  pip3 install torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl 799  history 800  pip3 install --pre  torchvision  --extra-index-urlhttps://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/801  pip3 install   torchvision  --extra-index-urlhttps://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/802  pip3 install torchvision --extra-index-url https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/803  sudo apt-get -y update; 804  export TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v60dp/pytorch/torch-2.2.0a0+6a974be.nv23.11-cp310-cp310-linux_aarch64.whl805  head -n 1 /etc/nv_tegra_release806  pip3 install --pre torch torchvision torchaudio --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/807  pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl 808  sudo apt-get -y install python3-pip libopenblas-dev;809  export TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl810  python3 -m pip install --upgrade pip; python3 -m pip install numpy==’1.26.1’; python3 -m pip install --no-cache $TORCH_INSTALL811  pip3 install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v51/pytorch/812  pip3 install torch  https://developer.download.nvidia.com/compute/redist/jp/v51/pytorch/813  ls814  pip3 install torch-2.0.0a0+8aa34602.nv23.03-cp38-cp38-linux_aarch64.whl 815  pip3 uninstall torchvision 816  pip3 install torchvision==0.16.0817  pip3 uninstall torch torchvision torchaudio818  git clone https://github.com/pytorch/vision819  pip3 install --pre torch torchvision torchaudio --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/820  ls821  pwd822  cat ~/.bashrc823  pwd824  vim ~/.bashrc825  source ~/.bash\826  source ~/.bash827  source ~/.bashrc828  python3 python_display_cuda_is_availbel.py 829  robot830  reboot831  pwd832  history

5-代码过程

1、目录截图

如下图,为目录截图。

在这里插入图片描述

2、代码链接

有需要的可以拿走,如下为代码链接

https://download.csdn.net/download/qq_22146161/89696036

6 -细节部分

(1)获取版本信息

在遇到GPU无法使用的时候,各个软件版本的匹配还是挺重要的,以下是获取各个版本的方式,做个总结。

1. 验证CUDA和cuDNN是否正常工作

确保CUDA和cuDNN都已经正确安装,并且可以正常使用。可以使用以下命令进行验证:

(1)运行以下命令查看CUDA版本:

nvcc --version

(2)执行以下命令来检查cuDNN的版本:

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
2. 验证PyTorch和torchvision安装

确保PyTorch和torchvision已经正确安装并与CUDA兼容。运行以下命令来检查:

(1)在Python环境中,输入以下命令:

import torch
print("PyTorch version:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())

CUDA available: 应该返回 True,这表示PyTorch可以识别并使用CUDA。

(2)验证torchvision是否安装正确,在Python环境中,输入以下命令:

import torchvision
print("torchvision version:", torchvision.__version__)
3. 查看Jetson设备的系统信息

使用jetson_release命令来查看设备的详细信息:

jetson_release

这将显示包括JetPack版本、CUDA版本、cuDNN版本等详细信息。

4. 查看python版本信息

使用如下命令,来查看python相关版本信息

python3 --version

(2)查看目录结构

在本章中,为了展示目录结构使用了tree这个工具,以下为具体安装方式
1、tree工具安装

sudo apt-get install tree

2、查看目标目录结构

tree /mnt/data/dataset

3、其他代替方式

ls -R /mnt/data/dataset

或者

find /mnt/data/dataset -type d

4、如果使用tree,目录结构大概是如下样子的

/mnt/data/dataset/
├── train
│   ├── on
│   │   ├── on-001.jpg
│   │   ├── on-002.jpg
│   │   └── ...
│   └── off
│       ├── off-001.jpg
│       ├── off-002.jpg
│       └── ...
└── val├── on│   ├── on-011.jpg│   ├── on-012.jpg│   └── ...└── off├── off-011.jpg├── off-012.jpg└── ...

(3)每个目录下放的什么文件

/mnt/data/dataset/
├── train
│   ├── on
│   │   ├── on-001.jpg
│   │   ├── on-002.jpg
│   │   └── ...
│   └── off
│       ├── off-001.jpg
│       ├── off-002.jpg
│       └── ...
└── val├── on│   ├── on-011.jpg│   ├── on-012.jpg│   └── ...└── off├── off-011.jpg├── off-012.jpg└── ...

如上,如果目录结构一直的话,那么每个目录放置文件代表含有如下,因为我们本次实验,直接用训练集合当做、验证集了,正常应该不一样的。

  • 在 train/on 目录中放置所有训练集中屏幕处于打开状态的图片。
  • 在 train/off 目录中放置所有训练集中屏幕处于关闭状态的图片。
  • 在 val/on 目录中放置所有验证集中屏幕处于打开状态的图片。
  • 在 val/off 目录中放置所有验证集中屏幕处于关闭状态的图片

(4)报错:ModuleNotFoundError: No module named ‘torchvision’

如上,自己在运行代码的时候报错,提示没有这个module,安装后可以,但是实际上没有使用gpu 不过这都是后话了,先解决我们眼前问题。
这个错误是因为没有安装 torchvision 模块。可以通过以下命令安装 torchvision:

pip install torchvision

如果没有安装torch,可以一同安装。

pip install torch torchvision

安装后好后,再次尝试之前python脚本。

(5)报错:文件路径没找到&路径拼写错误

在实践中操作过程中,发现提示路径没存在,这块可以使用ls或者tree来查看下,路径到底存不在,来更正到底有没有这个路径。

ls /home/xxx/Desktop/xxx/dataset
tree /home/xxx/Desktop/xxx/dataset

网址:
https://pytorch.org/get-started/previous-versions/

7 -总结

如此一来就做了一个简单demo,学习了一下AI,体验了过程,为后续学习打下基础

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

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

相关文章

idea一键自动化部署项目

文章目录 前言一、 IDEA插件安装1. 首先下载 Alibaba Cloud Toolkit 插件2. 插件下载完成后重启IDEA 二、SpringBoot项目准备1. pom.xml 文件2. controller3. 启动类 三、SpringBoot项目jar包部署1. Alibaba Cloud Toolkit 插件服务器配置2. 主机 IP、用户名、密码 点击测试链接…

51单片机.之i2c读写eproom

1、i2c读写eeproom 通过uart发送数据,单片机接收数据后,显示到lcd,并写到eeprom保存。每次开机时,读取eeprom保存的数据,显示到 lcd。 程序框架 1、i2c驱动时序 2、uart中断收发数据 3、eeprom读写驱动 4、lcd驱动 5…

动手学深度学习(pytorch)学习记录19-参数管理[学习记录]

文章目录 参数访问目标参数一次性访问所有参数从嵌套块收集参数 参数初始化内置初始化自定义初始化 参数绑定延后初始化 本节内容: 访问参数,用于调试、诊断和可视化; 参数初始化; 在不同模型组件间共享参数; 延后初始…

第二证券:大牛股突发,停牌不超3天,此前22个涨停!

*ST富润晚间公告称,公司股票8月2日至9月3日已累计18个交易日涨停,股价涨幅为100.89%,股价不坚定较大,投资者较为重视。为保护投资者利益,公司姑息股票交易状况进行核对。经申请,公司股票自2024年9月4日开市…

给大模型加上“记忆”,深入探索 Mem0 项目

背景介绍 在之前的软件应用中,我们总会在应用中保留大量的用户历史操作记录,方便用户下次使用时可以快速查看和复用,甚至基于这些用户记录可以为用户提供个性化的服务。而这些记录往往都保存在传统的结构化或非结构化数据库中。 在大模型的…

JAVA毕业设计168—基于Java+Springboot+vue3的高校就业管理系统(源代码+数据库+14000字论文+开题+PPT)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3的高校就业管理系统(源代码数据库14000字论文开题PPT)169 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、企业、管理员三种角色 …

shopify独立站分别有哪几类?难点在哪?

对于刚开独立站的业内人士来说,今天的文章将向您介绍Shopify店铺的类型以及运营店铺的难点。这使您可以更好地计划销售哪些产品以及如何运营。 ✅Shopify 类型 综合商店:又称全能商店 这种类型通常采用直销模式。卖家不需要提供自己的产品。您可以选择…

git 配置、下载、提交、更新、冲突解决学习

目录 一. 安装教程 二. git配置 1. 查看git配置参数 2. 设置邮箱和用户名 3. SSH配置 4. 配置git远程库公钥 5. 编码设置 三. git 提交流程 1. 整体操作流程图 2. Git仓库包含5个区域 3. 下载、提交、更新命令 3.1. 下载 3.2. 提交 3.3. 更新(两种方式…

前端框架有哪些?

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

游戏应用|空地模型实景融合,还原《黑神话:悟空》游戏场景

古色斑驳,巍峨险峻,是历史的低语,诉说着千百年的沧桑与辉煌;飞檐翘角,雕梁画栋,凝聚着时代的文明与智慧。在数字化浪潮下,我们利用实景三维技术,翻开了中华古建筑这本伟大的史诗。 P…

基于物联网的低成本便携式传感器节点用于火灾和空气污染的检测与报警

目录 摘要 引言 材料和方法 传感器节点 IoT 微控制器 颗粒物传感器 环境和气体传感器 MQTT代理 Node-Red监控平台 系统结构 数据存储 工作描述 实验结果 讨论 结论 致谢 参考文献 这篇论文的标题是《Low-cost IoT-based Portable Sensor Node for Fire and Air…

【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度

【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度 一、题目:计算以空格隔开的字符串的最后一个单词的长度 二、举例: 输入:hello nowcoder 输出:8 说明:最后一个单词为nowcoder,长…

【超详细】Linux开发环境搭建指南 | Ubuntu

文章目录 虚拟机安装对比Virtual Box 下载ubuntu 操作系统下载Virtual Box 安装安装ubuntu设置中文语言共享文件夹设置添加输入法安装步骤,参考官方教程 安装 vscode解决主机不能通过ssh连接宿主机网络连接几种网络连接区别主机和宿主机相互 ping通 网络代理 虚拟机…

AI 网关基于 IP 地理位置,增强 Prompt 修饰能力

作者:沈鑫糠,来自昆仑数智瑞道云团队,专注于云原生领域产品研发和相关技术。 前言 什么是 Prompt Engineering 提示词工程(Prompt Engineering),也被称为上下文提示(In-Context Prompting&am…

云服务器+docker:还在为项目上线苦恼?一文包你解决(保姆级教程,图文并茂,万字起步!!!)

目录 Blue留言机: 学习视频以及参考资料 : 1、学习之前的必备操作: 第一步:购买服务器 选择一台免费的云服务器(包白嫖的) 配置服务器的一点说明: 查看自己是否购买成功: 第…

Codeforces Round 920 (Div. 3)(A,B,C,D)

A 在二维坐标轴上有一个正方形&#xff0c;给你一个正方形的四个顶点坐标&#xff0c;求面积 知道一个边长&#xff0c;平方即可 for(int i0;i<4;i)x[i]x1; Arrays.sort(x); //1122 kMath.abs(x[2]-x[1]); System.out.println(k*k); B 操作1、2是添加和修改&#xff0c;操…

Django+Vue二手交易平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

ubuntu14.04.5出现配环境后重启进不了图形化界面解决记录

前言 这段时间给公司接了一个需要使用到linux环境进行交叉编译的工程&#xff0c;就采用了简单易操作的图形化ubuntu系统。 镜像采用的是&#xff1a;ubuntu14.04.5-desktop-amd64.iso(官网下载的&#xff09; 配置环境的过程下载了众多依赖包&#xff0c;总之就是缺啥下载啥…

vue通过html2canvas+jspdf生成PDF问题全解(水印,分页,截断,多页,黑屏,空白,附源码)

前端导出PDF的方法不多&#xff0c;常见的就是利用canvas画布渲染&#xff0c;再结合jspdf导出PDF文件&#xff0c;代码也不复杂&#xff0c;网上的代码基本都可以拿来即用。 如果不是特别追求完美的情况下&#xff0c;或者导出PDF内容单页的话&#xff0c;那么基本上也就满足业…

HOW DO VISION TRANSFORMERS WORK

HOW DO VISION TRANSFORMERS WORK Namuk Park1,2, Songkuk Kim1 1Yonsei University, 2NAVER AI Lab{namuk.park,songkuk}yonsei.ac.kr 总结 MSA 改善模型泛化能力&#xff1a; MSA 不仅提高了模型的准确性&#xff0c;还通过平滑损失景观来提高泛化能力。损失景观的平坦化使…