OrangePi Alpro开箱体验 ubuntu 与 openEuler 实时性对比

news2024/11/15 0:18:48

OrangePi Alpro开箱体验 & ubuntu 与 openEuler 实时性对比

  • 1 介绍
    • 1.1 概述
    • 1.2 OrangePi Kunpeng Pro vs OrangePi AIpro
  • 2 开箱
  • 3 芯片介绍
    • OrangePi AIpro(8T)
    • Atlas 200I DK A2
  • 4 开机
    • 连接鼠标、键盘、显示器
    • 桌面
    • 查看系统信息
    • 配置网络查看IP
    • 远程SSH
    • WinSCP
  • 5 GPIO Tool
    • gpio_operate 命令说明
    • gpio_operate 操作 12 引脚
    • IO 控制 RGB 灯
  • 6 ubuntu 与 openEuler 实时性对比
      • 查看配置 kernel.sched_rt_runtime_us & kernel.sched_rt_period_us
    • cyclictest 介绍
    • 6.1 ubuntu22.04 测试
      • 安装 cyclictest
      • 运行
        • 切root,加实时用户组都失败
        • 设置参数 sched_rt_runtime_us 为 -1 【*】
      • 测试
        • 负载测试(该方法需要在rt-tests目录下面执行)
        • 空载测试(该方法需要在rt-tests目录下面执行)
    • 6.2 openEuler 22.03 测试
      • 测试
        • 满载测试
        • 空载测试
  • 7 openEuler
    • 7.1 烧写 openEuler 镜像到 TF 卡中的方法
    • 7.2 远程SSH
    • 7.3 查看内核版本
    • 7.4 命令
  • 8 补充
    • 8.1 指令
    • 8.2 快捷键
    • 8.3 CPU 性能提升
  • 参考

1 介绍

1.1 概述

OrangePi AIpro(8T) 开发板,是香橙派与华为联合打造的,偏向人工智能应用。

1.2 OrangePi Kunpeng Pro vs OrangePi AIpro

OrangePi Kunpeng Pro 与 OrangePi AIpro 都是和华为合作产品。

华为麒麟、昇腾、鲲鹏等几大系列芯片中,昇腾和鲲鹏都致力于成为算力底座,昇腾面向AI计算,鲲鹏面向通用计算。
在这里插入图片描述
在这里插入图片描述

2 开箱

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

3 芯片介绍

昇腾 Ascend 310 系列有 310B1 和 310B4。
310B1:表示芯片算力规格为20T。
310B4:表示芯片算力规格为8T。

目前已知,OrangePi AIpro(8T) 和 Atlas 200I DK A2 都采用 310B4 芯片。算力都是 8 TOPS。

OrangePi AIpro(8T)

OrangePi AIpro(8T) 使用 Hi1910 模块,其中包含一个芯片 Ascend 310B4,对应算力是 8 TOPS。Ascend 310B1 芯片算力是 16 TOPS。
在这里插入图片描述
在这里插入图片描述

(base) root@orangepiaipro:/home/HwHiAiUser/Desktop# npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.0                                   Version: 23.0.0                                       |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 0       310B4                 | Alarm           | 0.0          47                15    / 15            |
| 0       0                     | NA              | 0            1985 / 7545                             |
+===============================+=================+======================================================+
# npu-smi info -t board -i 0 -c 0
NPU ID                         : 0
Chip ID                        : 0
Chip Type                      : Ascend
Chip Name                      : 310B4
Chip Version                   : V1
Board ID                       : 0x280b
Module Board ID                : NA
PCB ID                         : NA
BOM ID                         : 1
Die ID                         : V1, 17450D64 01C20310 519BD217 5A69090A 26B80000

Atlas 200I DK A2

Atlas 200I DK A2 采用 310B4 芯片。

Atlas 200I DK A2 是 Atlas 200DK 之后的一款产品,从2022年一直酝酿至今,终于在2023年5月6日-7日昇腾AI开发者峰会2023正式发布。

该开发者套件,算力 8 TOPS,通常配备有4GB RAM和128GB的microSD存储空间,操作系统为Ubuntu 22.04 LTS。此外,它还支持CANN(Compute Architecture for Neural Networks)7.0.RC1版本,用于神经网络计算的优化和加速。

售价 1999。
在这里插入图片描述

4 开机

连接鼠标、键盘、显示器

在这里插入图片描述

桌面

账户:HwHiAiUser
密码:Mind@123
在这里插入图片描述

查看系统信息

可以看到预装系统是Ubuntu,版本是22.04
在这里插入图片描述

配置网络查看IP

先连接 wifi,然后使用 ifconfig 查看 IP 地址 192.168.0.115
在这里插入图片描述

远程SSH

  • 账户:root
  • 密码:Mind@123

电脑中在 cmd 窗口中输入

ssh root@192.168.0.115
然后输入密码进入

在这里插入图片描述

WinSCP

  • 账户:root
  • 密码:Mind@123

WinSCP 连接后,方便传输文件。
在这里插入图片描述

5 GPIO Tool

如下图,本开发板有40pin引脚。
在这里插入图片描述

开发板 40 pin 接口引脚的功能如下表所示,其中标红部分的引脚默认配置为GPIO 功能,可以直接使用,其他具有 GPIO 复用功能的引脚需要修改DTS 配置才能正常使用 GPIO 的功能。
在这里插入图片描述
在这里插入图片描述

Linux 镜像中预装了 gpio_operate 工具用于设置 GPIO 管脚的输入与输出方向,也可将每个 GPIO 管脚独立的设为 0 或 1。

gpio_operate 命令说明

类型描述
gpio_groupGPIO组号,取值为[0,8]
gpio_pinGPIO管脚号,取值为[0,31]
directionGPIO 管脚方向,取值为[0,1]
0:输入方向
1:输出方向
valueGPIO 管脚值,取值为[0,1]
当 GPIO 管脚方向为输入方向时,不允许设置 GPIO 管脚值
# gpio_operate help
(base) root@orangepiaipro:~# gpio_operate -h
Usage: gpio_operate <Command|-h> [Options...]
gpio_operate Command:
        -h                              : This command's help information.
        set_value                       : Set gpio pin value.
        get_value                       : Get gpio pin value.
        set_direction                   : Set gpio pin direction value.
        get_direction                   : Get gpio pin direction value.

# 查询GPIO管脚方向
gpio_operate get_direction gpio_group gpio_pin
eg: gpio_operate get_direction 7 3

# 设置GPIO管脚方向
gpio_operate set_direction gpio_group gpio_pin direction
eg: gpio_operate set_direction 7 3 1

# 查询GPIO管脚值
gpio_operate get_value gpio_group gpio_pin
eg: gpio_operate get_value 7 3

# 用于设置GPIO管脚值为高电平或者低电平
# 注意设置管脚值前,请确保已将 GPIO 管脚的方向设置为输出
gpio_operate set_value gpio_group gpio_pin value
eg: gpio_operate set_value 7 3 1

gpio_operate 操作 12 引脚

(base) root@orangepiaipro:~# gpio_operate get_direction 7 3
Get gpio pin direction value successed, value is 0.
(base) root@orangepiaipro:~# gpio_operate set_direction 7 3 1
Set gpio pin direction value successed.
(base) root@orangepiaipro:~# gpio_operate get_value 7 3
Get gpio pin value successed, value is 0.
(base) root@orangepiaipro:~# gpio_operate set_value 7 3 1
Set gpio pin value successed.
(base) root@orangepiaipro:~# gpio_operate get_value 7 3
Get gpio pin value successed, value is 1.
(base) root@orangepiaipro:~#

IO 控制 RGB 灯

  • 选择引脚
12:IO [7,3]
13:IO [1,6]
14:GND
15:IO [2,15]
  • 设置GPIO管脚方向为输出方向
gpio_operate set_direction 7 3 1
gpio_operate set_direction 1 6 1
gpio_operate set_direction 2 15 1
  • 设置电平
gpio_operate set_value 7 3 1
gpio_operate set_value 1 6 1
gpio_operate set_value 2 15 1

在这里插入图片描述

6 ubuntu 与 openEuler 实时性对比

都不做实时优化的情况下进行对比:

查看配置 kernel.sched_rt_runtime_us & kernel.sched_rt_period_us

(base) root@orangepiaipro:# sysctl kernel.sched_rt_runtime_us
kernel.sched_rt_runtime_us = 950000
(base) root@orangepiaipro:# sudo sysctl kernel.sched_rt_period_us
kernel.sched_rt_period_us = 1000000
(base) root@orangepiaipro:#

/proc/sys/kernel/sched_rt_period_us //默认是1000000us
/proc/sys/kernel/sched_rt_runtime_us //默认是950000us

表示1s内,实时进程最多占用cpu 0.95s的时间,其余0.05s需要留给TASK_RUNNING的普通进程,以免普通进程被饿死。

设置参数

sudo sysctl -w kernel.sched_rt_runtime_us=950000  
sudo sysctl -w kernel.sched_rt_period_us=1000000

cyclictest 介绍

cyclictest 所测得的延时是中断延时加调度延时。
在这里插入图片描述

6.1 ubuntu22.04 测试

安装 cyclictest

(1)Debian / Ubuntu 系统可直接安装

apt-get install rt-tests

(2)git 仓库源码下载编译安装【最新版本】

  • 拷贝 cyclictest 的 Git 仓库
git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git

  • 进入本地 git 仓库
cd rt-tests 
  • make编译
make
  • 生成执行文件

在这里插入图片描述

(3)git 仓库源码下载编译安装【推荐稳定版】

# 需要安装libnuma-devel包后make编译
apt install numactl-devel
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
cd rt-tests
git checkout stable/v1.0
make all
make install
make cyclictest

运行

直接运行会报错

(base) root@orangepiaipro:/opt/worthsen/rt-tests# ./cyclictest
Unable to change scheduling policy!
either run as root or join realtime group
(base) root@orangepiaipro:/opt/worthsen/rt-tests#
切root,加实时用户组都失败

进程调度策略(特别是与实时(realtime)调度相关的)需要特殊权限,并需要加入实时用户组。

  • 切root用户
  • 加入实时用户组
# 检查是否存在一个名为 rt 或其他名称的实时用户组
grep rt /etc/group

# 创建一个新的实时用户组(如果尚不存在)
sudo groupadd rt

# 将你的用户添加到实时用户组
sudo usermod -aG rt your_username

# 退出并重新登录,或者重启你的会话,以使组更改生效。

# 验证你是否已加入实时用户组:
groups
设置参数 sched_rt_runtime_us 为 -1 【*】
(base) root@orangepiaipro:# sudo sysctl -w kernel.sched_rt_runtime_us=-1
kernel.sched_rt_runtime_us = -1

测试

负载测试(该方法需要在rt-tests目录下面执行)
./cyclictest -t 4  -p 99 -n -m -d 0 & ./hackbench -l -1 -g 15 -f 25 -P

hackbench -l -1 -g 15 -f 25 -P 是用来制作负载的

  • -l -1: 表示hackbench将以无限循环方式运行,不会自动退出。
  • -g 15: 设置每个进程组(group)的进程数量为15。每个进程组将会生成一组进程进行通信。
  • -f 25: 设置每个进程组之间的父子关系的数量为25。这决定了进程组之间的通信方式。
  • -P: 使用多个CPU核心来运行测试,以模拟多核系统的情况。

cyclictest -t 4 -p 99 -n -m -d 0

  • -t 4: 指定使用4个线程进行测试。每个线程将创建一个周期性负载。
  • -p 99: 设置线程的优先级为99,这是最高的实时优先级。使用最高优先级可以更好地测试系统的实时性能。
  • -n: 在测试期间禁止休眠。这将防止系统进入休眠状态,以保持系统处于活跃状态。
  • -m: 运行测试前锁定内存。这将防止测试期间的内存分页错误,并提供更一致的测试结果。
  • -d 0: 禁用延迟输出。这将阻止输出每个线程的详细延迟数据,只显示测试的总体统计信息

(1)满载测试会卡,为了顺利控制测试时间,一个 cmd Terminal 先关闭cyclictest,让统计数据先停止

(base) root@orangepiaipro:# killall cyclictest

(2)运行命令的 cmd Terminal 中后关闭 hackbench

# kill hackbench
ctrl + c
  • 300s
CPU 序号线程优先级时间间隔(ms)计数器最小值平均值最大值
0991000307071413140
1991000307074414242
2991000312029411232
39910003120254142249
(base) root@orangepiaipro:# cyclictest -t 4  -p 99 -n -m -d 0 & hackbench -l -1 -g 15 -f 25 -P
[1] 5885
Running in process mode with 15 groups using 50 file descriptors each (== 750 tasks)
Each sender will pass -1 messages of 100 bytes
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 152.37 122.29 85.64 96/1423 6738

T: 0 ( 5935) P:99 I:1000 C: 307071 Min:      4 Act:   13 Avg:   13 Max:     140
T: 1 ( 5992) P:99 I:1000 C: 307074 Min:      4 Act:   14 Avg:   14 Max:     242
T: 2 ( 6041) P:99 I:1000 C: 312029 Min:      4 Act:   10 Avg:   11 Max:     232
T: 3 ( 6082) P:99 I:1000 C: 312025 Min:      4 Act:   13 Avg:   14 Max:    2249
^CSignal 2 caught, longjmp'ing out!
longjmp'ed out, reaping children
sending SIGTERM to all child processes
signaling 750 worker threads to terminate
Time: 325.087
[1]+  Done                    cyclictest -t 4 -p 99 -n -m -d 0
(base) root@orangepiaipro:#
空载测试(该方法需要在rt-tests目录下面执行)
./cyclictest -t 4  -p 99 -n -m -d 0
  • 300s
CPU 序号线程优先级时间间隔(ms)计数器最小值平均值最大值
0991000300325361826
199100030032036609
299100030031435500
399100030030835234
(base) root@orangepiaipro:# cyclictest -t 4  -p 99 -n -m -d 0
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 17.53 17.41 17.18 2/669 5453

T: 0 ( 5367) P:99 I:1000 C: 300325 Min:      3 Act:    9 Avg:    6 Max:    1826
T: 1 ( 5368) P:99 I:1000 C: 300320 Min:      3 Act:    7 Avg:    6 Max:     609
T: 2 ( 5369) P:99 I:1000 C: 300314 Min:      3 Act:    9 Avg:    5 Max:     500
T: 3 ( 5370) P:99 I:1000 C: 300308 Min:      3 Act:    7 Avg:    5 Max:     234
(base) root@orangepiaipro:#
(base) root@orangepiaipro:/home/HwHiAiUser/Desktop#

6.2 openEuler 22.03 测试

步骤同上

测试

满载测试
  • 300s
CPU 序号线程优先级时间间隔(ms)计数器最小值平均值最大值
09910003057473131209
1991000305763312394
2991000305747312921
39910003057383112106
sh-5.1# cyclictest -t 4  -p 99 -n -m -d 0 & hackbench -l -1 -g 15 -f 25 -P
[1] 4141
Running in process mode with 15 groups using 50 file descriptors each (== 750 tasks)
Each sender will pass -1 messages of 100 bytes
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 134.12 97.08 52.06 120/1240 4990

T: 0 ( 4191) P:99 I:1000 C: 305747 Min:      3 Act:   80 Avg:   13 Max:    1209
T: 1 ( 4255) P:99 I:1000 C: 305763 Min:      3 Act:   14 Avg:   12 Max:     394
T: 2 ( 4297) P:99 I:1000 C: 305747 Min:      3 Act:   20 Avg:   12 Max:     921
T: 3 ( 4413) P:99 I:1000 C: 305738 Min:      3 Act:   12 Avg:   11 Max:    2106
^CSignal 2 caught, longjmp'ing out!
longjmp'ed out, reaping children
sending SIGTERM to all child processes
signaling 750 worker threads to terminate
Time: 312.209
[1]+  Done                    cyclictest -t 4 -p 99 -n -m -d 0
sh-5.1#
空载测试
  • 300s
CPU 序号线程优先级时间间隔(ms)计数器最小值平均值最大值
099100030070034100
1991000300693341842
299100030068834175
399100030068133135
sh-5.1# cyclictest -t 4  -p 99 -n -m -d 0
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 17.21 17.35 15.56 1/486 3961

T: 0 ( 3859) P:99 I:1000 C: 300700 Min:      3 Act:    4 Avg:    4 Max:     100
T: 1 ( 3860) P:99 I:1000 C: 300693 Min:      3 Act:    3 Avg:    4 Max:    1842
T: 2 ( 3861) P:99 I:1000 C: 300688 Min:      3 Act:    3 Avg:    4 Max:     175
T: 3 ( 3862) P:99 I:1000 C: 300681 Min:      3 Act:    3 Avg:    3 Max:     135
sh-5.1#

7 openEuler

7.1 烧写 openEuler 镜像到 TF 卡中的方法

详细步骤请看用户手册。https://orangepi.net/wp-content/uploads/2024/05/OrangePi_AI_Pro_v0.3.1.pdf
(1)32GB 或更大容量的 TF卡
(2)TF 卡插入读卡器,然后插入电脑
如果 TF 卡已经有系统,需要格式化。工具软件 SDCardFormatter。
在这里插入图片描述
在这里插入图片描述
(3)下载镜像 openEuler
(4)下载烧录工具软件 balenaEtcher

  • Portable 版本无需安装,双击打开就可以使用

  • 以管理员身份运行

  • 选择镜像,选择盘符,开始烧录
    在这里插入图片描述

  • 烧录中
    在这里插入图片描述

  • 校验
    在这里插入图片描述

  • 成功
    显示校验失败,不过 TF 卡插入板子,可以运行。

(5)打开 balenaEtcher,以管理员身份运行

7.2 远程SSH

  • 账户:root
  • 密码:Mind@123

电脑中在 cmd 窗口中输入

ssh root@192.168.0.100
然后输入密码进入

在这里插入图片描述

7.3 查看内核版本

-sh-5.1# cat /proc/version
Linux version 5.10.0+ (root@orangepi-M600) (aarch64-target-linux-gnu-gcc (Do-Compiler V100R001C13B001) 7.3.0, GNU ld (Do-Compiler V100R001C13B001) 2.38) #1 SMP Tue Jan 30 11:14:55 CST 2024

-sh-5.1# cat /etc/os-release
NAME="openEuler"
ID="openEuler"
VERSION_ID="22.03"
ANSI_COLOR="0;31"

VERSION="22.03 LTS dracut-055-4.oe2203"
PRETTY_NAME="openEuler 22.03 LTS dracut-055-4.oe2203 (Initramfs)"
DRACUT_VERSION="055-4.oe2203"

-sh-5.1# npu-smi info
+--------------------------------------------------------------------------------------------------------+
| npu-smi 23.0.0                                   Version: 23.0.0                                       |
+-------------------------------+-----------------+------------------------------------------------------+
| NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
| Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
+===============================+=================+======================================================+
| 0       310B4                 | Alarm           | 0.0          47                15    / 15            |
| 0       0                     | NA              | 0            1580 / 7545                             |
+===============================+=================+======================================================+
-sh-5.1#

7.4 命令

# 安装
sudo dnf install package_name

8 补充

8.1 指令

# 查看Ubuntu发行版版本号
lsb_release -a

# 查看当前系统的内核名称、主机名、内核发型版本、节点名
uname -a

# 查询设备信息
npu-smi info

# 查询设备0中编号为0(NPU)的芯片的详细信息
npu-smi info -t board -i 0 -c 0

# 查看昇腾芯片的详细信息
ascend-dmi -i -dt

8.2 快捷键

# ubuntu 锁屏快捷键
Ctrl+Alt+L

# 截屏
Ctrl + Shift + Print Screen键

8.3 CPU 性能提升

官方使用 Unixbench 进行跑分测试,结果数据如下:

在主频 1.0GHz 的情况下,OrangePi AIPro 的单核分数平均为 590.6,四核分数平均为 1932.9;

CPU 的频率提升至 1.6GHz 的情况下,OrangePi AIPro 的单核分数平均为 911.9,四核分数平均为 2909.5。

主频提升之后,OrangePi AIPro 开发板的 CPU 性能得到提升,单核测试得分提高了 54.4%,四核测试得分提高了 50.5%。

参考

1、香橙派(Orange Pi) 官网
2、香橙派(Orange Pi) 官方–OrangePi AIpro(8T)
3、华为–迈向智能世界白皮书
4、昇腾Ascend之npu-smi工具在Atlas 200I DK A2的简单使用
5、华为Atlas 200I DK A2开箱!
6、HUAWEI Atlas 200I DK A2 昇腾AI开发者套件 “小藤”开发者套件 8TOPS算力
7、昇腾Ascend之npu-smi工具在Atlas 200I DK A2的简单使用
8、香橙派和华为合作的开发板,一个从来没想过的组合-香橙派 Al Pro
9、openEuler 22.03 LTS 版本新增了 Preempt_RT 内核实时补丁
10、Atlas 200I A2 Accelerator Module 23.0.3 Driver Development Guide 03
11、Linux 实时性能测试工具——Cyclictest
12、Linux 实时性能测试工具——Cyclictest 的使用与分析
13、实时性测试:cyclictest详解
14、cyclictest无法执行问题
15、14. RT-Linux

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

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

相关文章

MATLAB分类与判别模型算法:基于LVQ神经网络的乳腺肿瘤诊断分类程序【含Matlab源码 MX_003期】

说明 实现基于LVQ&#xff08;Learning Vector Quantization&#xff0c;学习向量量化&#xff09;神经网络的乳腺肿瘤诊断分类任务。LVQ是一种监督学习算法&#xff0c;通常用于模式识别和分类任务。 算法思路介绍&#xff1a; 导入数据&#xff1a; 加载名为"data.mat&…

C++学习~~对于二进制文件的读写命名空间再认识异常处理

目录 1.将数据以二进制形式放到磁盘 2.将上述的数据读入内存并且显示在显示器上面 3.异常处理机制 4.抛出异常的应用实例 1.将数据以二进制形式放到磁盘 &#xff08;1&#xff09;使用student定义结构体数组stud,并对其进行初始化&#xff0c;创建输出文件流对象outfile,这…

朋友圈定时发送设置

人日常中不可缺少的一件事&#xff0c;同时也是企业用来触达客户的重要渠道&#xff0c;下面一起来了解下微信朋友圈怎么定时发送呢&#xff1f;

音乐传奇告别之作:《杰作》未解之谜❗❗

坂本龙一的《杰作》不仅是一部音乐会纪录电影&#xff0c;更是他赠予世界的一封深情告别信。 这部影片精心收录了这位音乐巨匠生前最后一场钢琴独奏音乐会的珍贵瞬间&#xff0c; 其中涵盖了《圣诞快乐&#xff0c;劳伦斯先生》、《末代皇帝》、《水》等二十首令人陶醉的经典…

设计模式20——职责链模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 职责链模式&#xff08;Chain …

手推车式电缆故障定位系统

武汉凯迪正大一体化电缆故障高压发生器用于测试各种型号的380V,600V,10kV,35kV,110kV,220kV,380kV电压等级的铜铝芯电力电缆、同轴通信电缆和市话电缆的各类故障&#xff0c;如电缆全长、开路、短路、断线、低阻故障、高阻故障、高阻泄露、高低阻抗接地、接地故障、铠装接地故障…

数据集——高分辨率图像分割成大小均匀图像(附Python代码)

将高分辨率图像分割成大小均匀的图像用于训练&#xff0c;可以提高训练效率&#xff0c;提高模型性能&#xff0c;并提供更大的灵活性。 目录 一、大小均匀图像用于训练优势二、代码2.1 代码参数修改2.2 代码2.3 输出2.4 分割结果 三、总结 一、大小均匀图像用于训练优势 内存…

3步操作助您轻松实现苹果手机照片一键传输至电脑

对于很多使用苹果手机的用户来说&#xff0c;随着手机中照片和视频数量的不断积累&#xff0c;如何将这些珍贵的回忆从手机转移到电脑&#xff0c;以便更好地保存、整理和分享&#xff0c;成为了一个值得关注的问题。那么&#xff0c;苹果手机怎么把照片导入电脑呢&#xff1f;…

职校老师的工资待遇怎么样

工资水平一直是教师们关注的焦点&#xff0c;毕竟&#xff0c;工资不仅关系到个人的生活品质&#xff0c;还影响着教师的职业满意度和工作动力。职校教师的工资待遇究竟是怎样的呢&#xff1f; 职校教师的工资水平受多种因素影响&#xff0c;包括地区、学校类型、个人资历和教学…

Qt 配置Eigen矩阵库 - 并简单测试

Qt 配置Eigen矩阵库 - 并简单测试 引言一、在Qt中配置Eigen二、低通Demo源码三、参考链接以及其他 引言 Eigen是一个开源的C模板库&#xff0c;提供了线性代数和矩阵运算的功能。它被设计为一个高性能、可扩展和易用的库&#xff0c;可以用于科学计算、机器学习和计算机图形学等…

Django 里如何使用 sqlite (操作步骤)

在 settings.py 里&#xff0c;已经设定好 sqlite 了 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: BASE_DIR / db.sqlite3,} }必须得设置好app # 在 settings.py 里INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contentt…

安卓开发板_开发评估套件_4G/5G联发科MTK安卓主板定制开发

安卓开发板采用了联发科八核A53 CPU&#xff0c;主频2.0GHz&#xff0c;采用12nm制程工艺&#xff0c;拥有强大的通用计算性能。配备GE8300 GPU&#xff0c;支持1080P视频编码和H.264硬解码&#xff0c;能够解析目前流行的视频和图片格式&#xff0c;非常适合各种功能APP的测试…

16:00面试,16:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

封装--5.29

封装主要是封装属性&#xff0c;将改显示的显示&#xff0c;将改掩藏的掩藏&#xff08;例如&#xff1a;一个女孩20岁了&#xff0c;但是她想告诉你她18岁怎么办&#xff0c;通过封装来解决&#xff09; 编写规则&#xff1a; 定义时&#xff0c;在需要封装的属性前面加上pr…

《Navi韩语社》App:您的韩语学习与翻译的智能伴侣,支持韩文OCR文字识别提取,高精度韩语翻译!

《Navi韩语社》App&#xff0c;一款专为学习韩语和有韩语翻译需求的用户设计的多功能应用&#xff0c;它以翻译准确、功能丰富和操作简单的特点&#xff0c;成为了众多学习韩语的学生、计划去韩国旅游的背包客必备的韩语翻译工具。 &#x1f31f; 精准翻译&#xff0c;一触即达…

linux的磁盘分区与管理

磁盘分区与管理 识别磁盘 一块硬盘的“艺术”之旅&#xff08;硬盘空间使用&#xff0c;经历的步骤&#xff09; •识别硬盘 > 分区规划 > 格式化 > 挂载使用 Unix/Linux的基本哲学理念&#xff1a;一切皆文件 /dev:存放设备&#xff08;键盘、鼠标、光驱、硬盘……

springboot学生就业信息管理系统-计算机毕业设计源码95340

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对学生就业信息管理系统等问题&#xff0c;对…

Java 实现二叉搜索树 代码

新建文件 创建TreeNode类&#xff0c;实例化 直接在BinarySearchTree类里面写就可以 static class TreeNode {public int key;public TreeNode left;public TreeNode right;TreeNode(int key) {this.key key;}}public TreeNode root; 插入节点 insert public boolean inser…

LabVIEW机器设备的振动监测

振动监测是工业和机械维护中重要的一部分&#xff0c;通过检测和分析机械振动&#xff0c;提前发现潜在故障&#xff0c;确保设备的可靠运行。LabVIEW是一种强大的图形化编程环境&#xff0c;非常适合用于振动监测系统的开发和实施。以下从多个角度详细介绍LabVIEW在振动监测中…

leetCode.87. 扰乱字符串

leetCode.87. 扰乱字符串 题目思路&#xff08;该方法以前可以过&#xff0c;现在对时间复杂度的要求严格了许多&#xff0c;不能过去&#xff09;&#xff1a; 这里显示&#xff0c;能够让我自己后期复习的时候&#xff0c;可以掌握最基本的做法&#xff08;尽管不能通过全部样…