【香橙派开发板测试】:在黑科技Orange Pi AIpro部署YOLOv8深度学习纤维分割检测模型

news2024/11/25 14:44:29

在这里插入图片描述


文章目录

  • 🚀🚀🚀前言
  • 一、1️⃣ Orange Pi AIpro开发板相关介绍
    • 1.1 🎓 核心配置
    • 1.2 ✨开发板接口详情图
    • 1.3 ⭐️开箱展示
  • 二、2️⃣配置开发板详细教程
    • 2.1 🎓 烧录镜像系统
    • 2.2 ✨配置网络
    • 2.3 ⭐️使用SSH连接主板
  • 三、3️⃣部署yolov8深度学习纤维分割检测模型
    • 3.1🚀 yolov8模型介绍
      • 3.1.1 概述
      • 3.1.2 核心改进
    • 3.2 🎓 创建虚拟环境并安装相关库
    • 3.3 ✨下载yolov8源码
    • 3.4 ⭐️train与detect代码撰写
      • 3.4.1 train.py代码
      • 3.4.2 detect.py
    • 3.5 🎯纤维分割模型训练
    • 3.6 🔥纤维分割模型检测推理
    • 3.7 🎯调用摄像头检测
  • 四、4️⃣相关模型测试
    • 4.1 🎓 如何使用官方案例
    • 4.2 ✨官方案例运行结果
  • 五、5️⃣开发板使用感受
      • ☀️优点
      • ⚡️缺点


在这里插入图片描述

🚀🚀🚀前言

近期在做纤维定性定量项目的工程化部署,需要运用嵌入式技术,将我们的深度学习模型还有软件进行部署,通过调研发现深圳市迅龙软件有限公司旗下开源产品品牌Orange Pi非常符合需求,经过多项测试之后选择Orange Pi AIpro作为项目开发板,非常喜欢它的一句标语:“为AI而生”
深圳市迅龙软件有限公司成立于2005年,是全球领先的开源硬件、开源软件及智能产品品牌商,致力于让全世界每个极客、创客、电子爱好者享用来自中国的优质、低价的开源产品及智能产品,拓展无限可能,通过大规模的社会化协作去创建一个更加美好的信息化人类文明。目前迅龙业务遍及美国、英国、意大利、俄罗斯、日本、南非、东南亚等100多个国家和地区。更多详细信息可以参考公司链接网址:http://www.xunlong.tv/html/aboutUs/index.html


一、1️⃣ Orange Pi AIpro开发板相关介绍

香橙派的Orange Pi AIpro是一款专为人工智能(AI)应用开发设计的高性能开发板。它集成了先进的处理器、内存、存储以及丰富的接口,旨在满足AI边缘计算、深度学习、机器视觉、自然语言处理等多个领域的需求。

Orange Pi AIpro官方网址:http://www.orangepi.cn/index.html

在这里插入图片描述

1.1 🎓 核心配置

Orange Pi AIpro搭载了高性能的AI处理器,支持高达数十TOPS(每秒万亿次操作)的AI算力,能够高效运行复杂的AI模型和算法,除了AI处理器外,还配备了多核CPU,提供强大的通用计算能力,支持多任务并行处理。配备高容量的LPDDR4X内存和eMMC或SSD存储,确保数据的高速读写和模型的高效加载,提供HDMI、USB、GPIO、SATA/NVMe M.2插槽、TF卡插槽等多种接口,支持多种外设连接和扩展,满足不同场景下的需求,支持双HDMI输出,能够同时驱动两个高清显示屏,适用于需要视觉反馈的应用场景,支持Ubuntu、openEuler等主流操作系统,提供丰富的开发工具和文档,帮助开发者快速上手并进行项目开发,进一步拓宽了应用场景,可以应用到如下场景:

  • AI边缘计算:在物联网设备中实现AI算法的本地化处理,减少数据传输延迟和带宽消耗。
  • 深度学习与机器视觉:支持图像识别、视频分析、物体检测等任务,适用于安防监控、智能制造等领域。
  • 自然语言处理:支持语音识别、语义理解等任务,适用于智能家居、智能客服等领域。
  • 智能机器人:为智能小车、机械臂等机器人提供强大的计算能力和AI支持。
  • 云计算与大数据:作为云计算节点的一部分,处理大规模数据并运行复杂的AI算法。

我这边收到的板子是8GB内存,8TOPS INT8算力,详细配置表格如下:

CPU4核64位处理器+ AI处理器
GPU集成图形处理器
AI算力8-12TOPS算力
内存LPDDR4X:8GB/16GB(可选),速率:3200Mbps
存储 • SPI FLASH:32MB
• SATA/NVME SSD(M.2接口2280)
• eMMC插槽:32GB/64GB/128GB/256GB(可选),eMMC5.1 HS400
• TF插槽
WIFI+蓝牙Wi-Fi 5双频2.4G和5G
BT4.2/BLE
以太网收发器10/100/1000Mbps以太网
显示• 2xHDMI2.0 Type-A TX 4K@60FPS
• 1x2 lane MIPI DSI via FPC connector
摄像头2x2-lane MIPI CSI camera interface,兼容树莓派摄像头
USB• USB 3.0 HOST x2
• USB Type-C 3.0 HOST x1
• Micro USB x1 串口打印功能
音频3.5mm耳机孔音频输入/输出
按键1x关机键、1xRESET键、2x启动方式拨动键、1x烧录按键
40PIN40PIN 功能扩展接口,支持以下接口类型:
GPIO、UART、I2C、SPI、 I2S、PWM
风扇风扇接口x1
预留接口2PIN电池接口
电源Type-C PD 20V IN ,标准65W
支持的操作系统Ubuntu、openEuler
产品尺寸107*68mm
重量82g

1.2 ✨开发板接口详情图

从使用文档中的开发板正反面照片也能看出该板子的集成度非常高,主板上集成了多种功能和接口,如处理器(标明为“4核64位处理器+AI处理器”)、内存模块(支持8GB/16GB LPDDR4X)、以及电源管理系统(包括“3.3V PWR”、“5V PWR”、“DDR PWR”、“AI PWR”、“CORE PWR”等多种供电模式),显示了它在处理复杂任务、提供强大性能和灵活配置方面的能力,搭载4核64位处理器,并且额外配备了AI处理器,这样的组合不仅保证了基础计算的高效性,还增加了对AI应用的支持,使得开发板在机器学习、图像处理等AI领域的应用成为可能(后面将进行AI模型部署测评)。而且支持WiFi5+蓝牙4.2,这款开发板在无线连接方面具备较高的标准和良好的兼容性,方便与各种外设和传感器进行无线通信,并且该开发板预留多个扩展接口,也能方便用户根据需要进行功能扩展和硬件升级。
在这里插入图片描述
在这里插入图片描述

1.3 ⭐️开箱展示

我第一眼看到包装盒给我的感觉是非常小巧可爱的,大概也就巴掌大一点,配备了一个快充充电器一个开发板,还有一个32g的SD卡,该卡用来烧录镜像使用(注意:没有读卡器,后面烧录需要自己准备TF读卡器);

在这里插入图片描述


打开包装盒之后最吸引我的就是散热器,散热片设计具有精致的金属感,不仅美观,而且有助于设备的散热,保证长时间运行的稳定性,总体来说Orange Pi AIpro的做工精细,整体给人一种高品质的感觉,虽然具体材质信息未详细提及,但从外观的质感和散热片的设计可以推测,开发板采用了适合散热和耐用的材质,从整体的布局来看,该板接口布局集中在一侧,便于开发者在日常使用中插拔外设,这种设计提高了使用的便捷性,减少了线缆杂乱的问题。我这边做测试的并没有外壳包装,通过官网可以看到Orange Pi AIpro的专属定制外壳,非常精致并且便于携带。
在这里插入图片描述
在这里插入图片描述

二、2️⃣配置开发板详细教程

在开始下面工作之前可以先去Orange Pi 官网下载相关文件,找到下载与服务选项,选择对应的开发板,我用的是Orange Pi AIpro,下面也都是用该板子做测试与部署。
在这里插入图片描述

点进去之后一定要下载官方工具,官方镜像,以及用户手册,一定要认真阅读用户手册!!!,在实际操作中用户手册解决了我很多问题。用户手册一共写了165页,基本上把每一个部件的调试都写上了,非常的详细,而且很有逻辑,即使是新手小白也能照着文档操作。
在这里插入图片描述
在这里插入图片描述

2.1 🎓 烧录镜像系统

这一步只需要准备Orange Pi AIpro送的32g的SD卡带有TF卡槽的读卡器烧录软件balenEther(在官方工具中),这里我在使用balenEther烧录软件的时候一直有问题,最后一步一直提示烧录失败,建议以管理员权限打开,如果还不行可以更换昇腾的Ascend烧录软件,我在使用Ascend烧录软件是一次成功的;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 ✨配置网络

烧录成功后,其实就已经基本上差不多了,但是为了后续能够方便文件上传等操作,我们需要配置网络,进行SSH连接,连接到我们的主机/笔记本电脑上去。

将烧录好的SD卡重新插回开发板中,将开发板用充电器连接电源,再准备一条网线连接到你的主机或者笔记本电脑上面,最后再准备一个显示器或者屏幕,用HDMI线将开发板与显示器连接(为了方便后续操作我这里在USB3.0接口插了一个无线键盘鼠标接收器),稍等一会就能看见系统显示界面了。
在这里插入图片描述

在这里插入图片描述

然后输入密码进入系统,默认的就是rootHwHiAiUser用户,这两个用户的密码都是Mind@123
在这里插入图片描述
进入系统之后就可以连接无线网了,这里有一点需要注意,你的主机和你的开发板连接的网络必须是同一个局域网,不然后面互联的时候会显示连接超时,一直连接不上

在这里插入图片描述
连接无线网之后就可以鼠标右键在电脑桌面打开终端,输入ifconfig查看ip地址,我这里IP地址是:192.168.11.93,子网掩码是255.255.255.0
在这里插入图片描述

查看开发板的IP地址之后,我们需要修改主机的ip,在以太网连接中找到Internet协议版本4,修改属性,默认的是自动获取ip,我们需要手动修改,将ip地址的前三位与开发板的ip保持一致,最后一位设置为100(或者其他),子网掩码与开发板保持一致,然后保存。
在这里插入图片描述

调出windows的命令行窗口,输入ipconfig查看IP地址是否修改成功,为了保证主机/笔记本与开发板能连通,可以使用ping命令ping开发板,查看能否发送字节。
在这里插入图片描述
在这里插入图片描述

2.3 ⭐️使用SSH连接主板

这里我们使用官方提供的工具进行远程连接开发板,在官方工具中我们找到MobaXterm软件,打开之后选择Session,然后在 Session Setting 中选择 SSH,在 Remote host 中输入开发板的 IP 地址,在 Specify username 中输入 Linux 系统的用户名 root 或 HwHiAiUser。连接之后需要输入登录密码,也就是默认的Mind@123,当出现如下界面时,就表示连接成功了,就可以对开发板进行命令操作了。
在这里插入图片描述
在这里插入图片描述

三、3️⃣部署yolov8深度学习纤维分割检测模型

3.1🚀 yolov8模型介绍

3.1.1 概述

📌官方代码地址:https://github.com/ultralytics/ultralytics

YOLOv8是Ultralytics公司最新推出的YOLO系列目标检测算法,它在继承YOLO系列算法优点的基础上,引入了新的功能和改进点,以进一步提升性能和灵活性,YOLO(You Only Look Once)系列模型自2015年推出以来,因其高效的目标检测能力在计算机视觉领域广受欢迎。YOLOv8作为该系列的最新版本,于2023年1月10日由Ultralytics公司开源,进一步优化了检测精度和速度,使其在多个应用场景中表现出色。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。yolov8最大的优点就是将当前最先进的SOTA模型融合在一起,变成最先进的 (SOTA) 模型。在相同的参数量会发现yolov8的模型要优于之前的yolo版本
在这里插入图片描述

YOLOv8 旨在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿势估计任务的绝佳选择;
在这里插入图片描述

3.1.2 核心改进

关于yolov8的核心改进如下

  • 提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率 的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
  • 骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。
  • Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
  • Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss
  • 训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度。

在这里插入图片描述
官方给的yolov8图比较详细,整体架构由三部分组成,分别是backbone主干特征提取网络(CSPDarknet)、Neck特征融合网络(PANet)、head解耦检测头;

  • 骨干部分:YOLOv8引入了一个新的骨干网络,可能参考了YOLOv7 ELAN设计思想,将YOLOv5的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数。这种改进提高了模型的特征提取能力,增强了模型对复杂场景的处理能力。采用了CSPNet(Cross Stage Partial Network)技术,有效减少了计算成本,同时提升了模型的特征表达能力。
    在这里插入图片描述

  • 检测头:YOLOv8的Head部分相比YOLOv5发生了较大变化,从原先的耦合头变成了解耦头,并且从Anchor-Based转变为Anchor-Free。这种变化简化了检测流程,提高了检测精度。
    在这里插入图片描述

  • 损失函数:YOLOv8在Loss计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss。这些改进有助于更准确地评估模型性能,促进模型收敛。

3.2 🎓 创建虚拟环境并安装相关库

我们烧录的系统是自带的有anaconda环境的,首先,我们可以查看python版本,默认的是3.9.2,我比较习惯用3.11的版本做项目,为了不影响基础配置环境,我重新创建了一个python=3.11的yolov8虚拟环境,创建命令如下:

conda create -n yolov8 python=3.11

在这里插入图片描述
创建好虚拟环境之后,使用conda activate yolov8命令激活虚拟环境,这里可以看到虚拟环境当中的python版本是3.11.9的;
在这里插入图片描述

接下来就需要安装yolov8运行所需要的相关库了,官方给的安装库只需要安装ultralytics,使用命令pip install ultralytics;这个是官方给的命令,但是我在实际使用过程中发现只按照这个库代码是无法运行的,会继续提示你按照其他库,所以还需要使用如下命令:pip install timm==0.9.8 thop efficientnet_pytorch==0.7.1 einops grad-cam==1.4.8 dill==0.3.6 albumentations==1.3.1 pytorch_wavelets==1.3.0,一次性将所有依赖库都安装完毕;
在这里插入图片描述
在这里插入图片描述

3.3 ✨下载yolov8源码

从https://github.com/ultralytics/ultralytics下载官方源码之后,通过MobaXterm软件ssh连接,将源码拷贝到主板系统当中,可以拖拽直接拷贝到主板系统的downloads文件夹下面,建议将yolov8n.pt也给下载下来,后面半精度训练的时候需要用到yolov8n.pt权重。
在这里插入图片描述

3.4 ⭐️train与detect代码撰写

yolov8的yolov5在使用的时候不太一样,yolov8主要靠命令行去执行训练与检测命令,为了方便设置参数和操作,我参考v5的模式将yolov8的train与detect的代码写出来了。

3.4.1 train.py代码

import warnings

warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('ultralytics/cfg/models/v8/yolov8-seg.yaml')
    model.load('weights/yolov8n-seg.pt')  # loading pretrain weights
    model.train(data='ultralytics/cfg/dataset/fiber-seg.yaml',
                # cache=False,  # 设置为True会占用很多内存 如何设置为True无法进行重复性实验
                imgsz=640,
                epochs=300,
                batch=4,
                close_mosaic=10,
                workers=2,
                device='0',
                optimizer='SGD',  # using SGD
                # lr0=0.001,
                # resume='runs/train/exp7/weights/last.pt', # last.pt path
                # amp=False, # close amp
                # fraction=0.2,
                project='runs/train',
                name='exp',
                patience=0,
                )

3.4.2 detect.py

import warnings

warnings.filterwarnings('ignore')
from ultralytics import YOLO

if __name__ == '__main__':
    model = YOLO('weights/best.pt')  # select your model.pt path
    model.predict(source='images/fiber/1.jpg', #source设置为0表示调用摄像头
                  imgsz=640,
                  project='runs/detect',
                  name='exp',
                  save=True,
                  line_width=5,
                  show_conf=False,
                  # conf=0.2,
                  # visualize=True # 生成模型特征图
                  )

3.5 🎯纤维分割模型训练

将train.py代码写好之后,直接在终端运行python train.py就能进行模型训练,参数设置的batch_size=4线程worker=2,一共训练300epoch,我这边准备的是项目需要的纤维分割数据集,训练速度虽然比不上我自己主机的4090显卡,但是要比一般的笔记本电脑快很多。而且训练之后的结果效果和我在4090上的结果基本上保持一致,分割与检测的map和精确度都在99%左右。
在这里插入图片描述
在这里插入图片描述

3.6 🔥纤维分割模型检测推理

关于图片还有视频的推理用的都是python detect.py命令,图片推理成功后去到对应的文件夹,可以看到基本上没有识别误差,并且分割效果很好。
在这里插入图片描述
在这里插入图片描述

关于视频检测:只需要将要检查的文件换成视频文件就能进行推理,这里发现推理的速度挺快的,基本上几秒钟就能给出视频推理结果。

在这里插入图片描述
在这里插入图片描述

3.7 🎯调用摄像头检测

我这边是接了一个USB3.0的1080p的工业相机摄像头,大概200万像素。只需要将detect.py中的source设置为0就能调用摄像头。
在这里插入图片描述
在这里插入图片描述

需要注意的是yolov8和yolov5检测不太一样,我这边摄像头可以显示检测的结果数据(如下图),但是没有检测界面,期初我以为是摄像头问题,调试了一下摄像头发现可以正常拍摄,后来看了一下yolov8的源代码发现并没有可以显示界面的工具,所以我用OpenCV写了一个视频实时检测界面。
在这里插入图片描述
OpenCV实时监测代码:timedetect.py

import cv2
from ultralytics import YOLO

# 加载 YOLOv8 模型
model = YOLO("weights/yolov8n.pt")

# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(0)

while cap.isOpened():
    success, frame = cap.read()  # 读取摄像头的一帧图像

    if success:
        model.predict(source=frame, show=True)  # 对当前帧进行目标检测并显示结果

    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口

调用训练好的模型,执行python timedetect.py就能显示实时检测的结果了。
在这里插入图片描述

四、4️⃣相关模型测试

其实安装好开发板系统之后,系统当中是给了一些AI算法测试案例的,例如检测模型SSD、文本识别CNNCTC、图像分类ResNet50、图像曝光算法-HDR、图像分割算法FCN等,这些模型我都测试了一下,除了SSD目标检测算法报了一个错误,其他的都没有任何问题;
在这里插入图片描述

4.1 🎓 如何使用官方案例

首先登录 Linux 系统桌面,然后打开终端,使用cd ~返回上一级目录,然后进入cd samples文件夹当中。在当前目录下有 8 个文件夹和 1 个 shell 文件,分别对应 8 个 AI 应用样例和Jupyter Lab 启动脚本 start_notebook.sh。
在这里插入图片描述

然后执行start_notebook.sh 脚本启动 Jupyter Lab,在执行该脚本后,终端会出现如下打印信息,在打印信息中会有登录 Jupyter Lab 的网址链接,将链接复制到浏览器打开即可。
在这里插入图片描述

4.2 ✨官方案例运行结果

我这里就放一部分运行结果,感兴趣的话可以全部跑一遍。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、5️⃣开发板使用感受

个人也是使用Orange Pi AIpro开发部署了自己的深度学习项目,下面也将给出客观的评价。

☀️优点

先说优点,Orange Pi AI Pro 搭载的处理器和AI加速器能够高效运行复杂的YOLO模型,同时保持相对较低的功耗,这对于需要长时间运行的边缘设备尤为重要,它也支持多种编程语言(如Python、C++)和深度学习框架(如TensorFlow, PyTorch, Darknet等),便于开发者快速上手,并且官方提供的操作系统非常好用,我在安装各种依赖包的时候速度非常快,而且相较于windows操作系统,没有那么多的报错,基本上配置环境都是一步过!!!并且提供了多个USB接口、HDMI接口等,方便连接各种外设和传感器,满足多样化的应用场景需求,此外,还支持通过TF卡扩展存储空间,满足大数据量存储的需求。同时开发文档和官方工具给的非常全面,虽然在烧录过程中出了一点小插曲;在实际项目使用的过程中,检测的速度很快,并且系统很刘畅,而且相关配置也没有那么复杂,给我的整体感受是非常好的!!!

⚡️缺点

官方文档和针对特定模型(如YOLO、transformers)的详细部署教程可能不够详尽,初学者可能会遇到一些障碍,在一些极端使用场景下(如高温、高湿环境),硬件的稳定性可能会受到影响,需要额外的散热措施和防护措施,我在训练模型的时候明显感觉到温度上升的比较快,

总体来说,Orange Pi AI Pro 是一款性价比较高的边缘计算开发板,适合用于部署YOLO等实时目标检测模型,尽管存在一些缺点和挑战,但通过不断的学习和实践,我相信可以充分发挥其优势,为各种应用场景提供强大的支持。


在这里插入图片描述

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

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

相关文章

KAFKA搭建教程

KAFKA搭建教程 期待您的关注 KAFKA学习笔记 帮助更多人 目录 KAFKA搭建教程 1.下载Kafka并解压 2.添加环境变量 3.修改 server.properties 文件 4.将kafka复制到其它节点 5.修改node1、node2节点的broker.id 6.将master的环境变量同步到node1、 node2 7.启动zookeeper…

网络需求实验报告

拓扑图 需求 1、通过DHCP服务,给PC4和PC5分配IP地址、网关、掩码、DNS服务器IP地址 2、Client-1要求手工配置IP地址,为192.168.1.1, c 3、telnet客户端可以远程登录telnet服务器进行设备管理,并成功修改telnet服务器的名字为123 &#xff0c…

Dev—c++小熊猫6.7.5免费下载攻略

点击蓝字 关注我们 今天我来给大家分享一个Dev—c小熊猫6.7.5免费下载攻略,内容如下 1. https://gitee.com/royqh1979/Dev-CPP/releases/tag/v6.7.5 点进这一个官网,一直往下滑,找到第三个选项,把它下载下来。 2. 安装时一些选择…

phpstorm无法实现代码反向追踪 字体变黄(Ctrl+鼠标左键向上一级追踪)问题解决

方法一、.将项目里面的.idea文件删除掉,重新进入phpstorm,这个时候会重新对项目进行编制索引等操作,就会神奇的发现,可以正常追踪了。 当方法一不行时,可以使用方法二 方法二、File->invalidate Caches 去除缓存

Android中Activity生命周期详解

目录 一 典型情况二 异常情况2.1 系统配置改变2.2 系统资源不足kill掉低优先级activity Activity是四大组件之一,也是接触的最多的,一般来说Activity经常是与用户交互的界面。 一 典型情况 先看下google官网,其实已经很清楚了 再来个总结 …

分享一个好用的AI 动漫图片工具 - AI Anime Generator,输入文字,1分钟生成动漫图片_AI绘画工具

使用AI绘画工具,1分钟生成动漫图片-AI Anime Generator 分享一个AI生成动漫图片的网站。输入prompt,即可一键自动生成AI动漫图片。 网站名称:AI Anime Generator 工具地址:https://aianimegenerator.top 网站界面比较简洁&…

AQS和ReentrantLock源码剖析

AbstratQuenedSynchronizer抽象队列同步器 一. 简单理解 源码讲解视频 博客 核心参数 变量state :没加锁state0,加锁state1加锁线程:CAS 设置state1 加锁过程 尝试state的值由0变为1,如果发现state的值已经不为0了而是1&am…

C语言图书馆管理系统

以下是系统部分页面 以下是部分源码&#xff0c;需要源码的私信 #include<stdio.h> #include<stdlib.h> #include <string.h> #include<malloc.h>typedef struct {char student_name[100];char student_number[100];char password[100];int total_bor…

【一刷《剑指Offer》】面试题 46:求 1+2+...+n

力扣对应题目链接&#xff1a;LCR 189. 设计机械累加器 - 力扣&#xff08;LeetCode&#xff09; 牛客对应题目链接&#xff1a;求123...n_牛客题霸_牛客网 (nowcoder.com) 一、《剑指Offer》对应内容 二、分析题目 通常实现递归的时候我们都会利用条件判断语句来决定递归的出…

计算机体系结构||Cache性能分析(4)

实验4 Cache性能分析 4.1实验目的 &#xff08;1&#xff09;加深对Cache基本概念、基本组织结构以及工作原理的理解。 &#xff08;2&#xff09;掌握Cache容量、相关度、块大小对Cache性能的影响 &#xff08;3&#xff09;掌握降低Cache不命中率的各种方法以及它们对提高…

初识网络基础知识

关于网络的一些核心概念 局域网 局域网&#xff08;Local Area Network&#xff0c;简称LAN&#xff09;是一种计算机网络&#xff0c;覆盖的范围通常是相对较小的地理区域&#xff0c;比如一个办公室、一栋大楼或一个校园。 局域网的组成通常包括以下部分&#xff1a; 网络…

Docker Desktop Windows 目录介绍

D:\docker\DockerDesktopWSL\main\ext4.vhdx 和 D:\docker\DockerDesktopWSL\data\ext4.vhdx 是 Docker Desktop 在 Windows Subsystem for Linux&#xff08;WSL&#xff09;中使用的虚拟硬盘文件&#xff0c;它们有不同的用途和作用。 虚拟硬盘文件&#xff08;VHDX&#xf…

生成式多模态之AE DAE/MAE VAE VQ-VAE/VQ-VAE2

目录 1. AE2. DAE/MAE3. VAE4. VQ-VAE/VQ-VAE2生成式多模态发展主要历程 年份1月2月3月4月5月6月7月8月9月10月11月2020DETRDDPMDDIM、VisionTransformer2021CLIP、DALLESwin Transformer2022BLIPDALLE 2StableDiffusion、BEiT-3、Midjourney V32023BLIP2VisualChatGPT、Midjou…

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

AES算法概述

文章目录 一、AES 概述二、AES 加密算法的特点三、秘钥类型四、填充方式五、加密方式 一、AES 概述 二、AES 加密算法的特点 AES加密的数据块长度为128&#xff08;16字节&#xff09;&#xff0c;长度不足需要填充。密码长度可以为16,24,32字节。 三、秘钥类型 AES加密按秘…

【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(算法岗)-三语言题解(Cpp/Java/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边最…

基于java+springboot+vue实现的企业OA管理系统(文末源码+Lw)131

基于SpringBootVue的实现的企业OA管理系统&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 系统功能&#xff1a; 企业OA管理系统有管理员和用户。 管理员功能有个人中心&#xff0c;用户管理&#xff0c;公告信息管理&#xff0c;客户关系管理&…

【nnUNet V2系列】nnUNet V2在Ubuntu下安装调试篇

安装之前网上很多教程&#xff0c;很多是nnUNet V1的安装过程&#xff0c;有的V1和V2混在一起讲解&#xff0c;导致V1的转化指令用到V2中&#xff0c;产生不少误解。这篇是针对V2整理出来的安装过程&#xff0c;有什么不妥之处请指出会及时修改。 1. 创建虚拟环境 conda crea…

某4G区域终端有时驻留弱信号小区分析

这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置&#xff08;其阈值为-106&#xff09;。而这个条件很容易满足&#xff0c;一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…