【香橙派AiPro】基于VGG16的火灾检测模型预测

在这里插入图片描述

目录

  • 引言
  • 开发板介绍
  • 开发板使用
    • 准备工作
      • 工具文档
    • 拨码开关
    • 镜像烧录
    • 连接开发板
      • 下载MobaXterm
      • 网线-SSH连接开发板
      • 设置WIFI连接
      • WIFI-SSH连接开发板
        • 确定开发板IP方法
    • Vnc可视化
      • Windows
      • iPad
    • 开发工具安装
  • 散热风扇
  • 基于VGG16的火灾检测模型预测
    • 数据集准备
    • 目录结构
    • 代码
    • 操作
  • 安装宝塔
  • 最后

引言

终于收到一款心仪已久的板子了,收到货后来不及吃灰就赶紧测试了,不得不说性价比很高,真不愧是Orange Pi AI Pro,对比其他板子性价比绝对第一!

在这里插入图片描述

开发板介绍

Orange Pi AI Pro开发板是一款香橙派和华为联合精心打造的高性能AI开发板,搭载了昇腾AI处理器,可实现图像、视频等多种数据分析处理

OrangePi AIpro(8-12T)采用昇腾AI技术路线,具体为4核64位处理器+AI处理器,集成图形处理器,支持8-12TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。

Orange Pi AIpro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口,可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi AIpro支持Ubuntu、openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求。

接口详情图
在这里插入图片描述

开发板使用

准备工作

工具文档

官方工具:点我下载

用户手册:点我下载

ubuntu镜像:点我下载

本次用到:读卡器、网线

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

在这里插入图片描述

拨码开关

开发板支持从TF卡、eMMC和SSD(支持NVMeSSD和 SATASSD)启动。具体从哪个设备启动是由开发板背面的两个拨码(BOOT1和BOOT2)开关来控制的。

在这里插入图片描述

在这里插入图片描述
默认是通过TF卡启动的

香橙派 AI Pro开发板通过其丰富的内置 API 和完善的文档支持,确实简化了开发流程并提高了易用性。这些特点使开发者能够更快速地进行应用程序的开发和调试,同时保证了开发过程的高效性和可靠性

镜像烧录

开发板出厂时,Sd卡已经有一个系统了,博主通电后发现SD卡上的小灯已亮了起来,官方原话给的是:

此绿灯由GPIO4_19控制其亮灭,可以作为SATA硬盘的指示灯或者其他需要的用途。目前发布的Linux系统默认在DTS中将其点亮。当看到此灯点亮后,至少可以说明Linux内核已经启动了。

在这里插入图片描述

由于没有读卡器,博主还未烧录过系统,不过很简单,可以参考这里
基于WindowsPC将Linux镜像烧写到TF卡的方法-11页

连接开发板

官方文档写明可通过多种方式连接开发板,这里使用了网线进行连接,连接后如下图所示:

在这里插入图片描述

下载MobaXterm

可以去官方提供的工具包里面下载,也可以 快速下载

在这里插入图片描述

网线-SSH连接开发板

网线连接这种方式,适合还未连接WIFI的板子 以及 没有显示屏的同学,将网线和开发板网口以及电脑连接后,可以通过共享网络使电脑为板子分配IP地址

在这里插入图片描述

查找到ip地址后,打开MobaXterm进行SSH连接
在这里插入图片描述

账号密码
rootMind@123
HwHiAiUserMind@123

输入账号和密码登录,注意:Linux密码是不显示的,输入完成回车即可

在这里插入图片描述

 使用USB串口调试注意:
一定要确保USB数据线是否是能传输数据的,一般都是只能充电不能传输数据,可能插入后没有反应

设置WIFI连接

开发板带有WIFI模块,我们可以将开发板连接到家用路由器网络,这样就可以不需要网线连接了

在这里插入图片描述

WIFI-SSH连接开发板

通过nmcli命令连接WIFI
我们用的是网线连接开发板,使用SSH登录到了开发板,在终端界面输入

nmcli dev wifi

在这里插入图片描述

连接WIFI

sudo nmcli dev wifi connect 'Cloud' password '13988266448'

在这里插入图片描述

通过图形化方式连接WIFI

sudo nmtui

在这里插入图片描述

选择Activateaconnect后回车,选中后输入密码即可连接

在这里插入图片描述

确定开发板IP方法

目前可以将IP设置为静态,不让他自动分配,但是我认为,可以通过查看路由器上面的用户确定
在这里插入图片描述

Vnc可视化

Windows

在windows上显示图形化桌面又没有屏幕和连接线,可以通过MobaXterm的vnc连接

在这里插入图片描述

弹出的窗口输入密码即可登录到系统

在这里插入图片描述

iPad

和开发板保持相同局域网内,下载软件RVNC Viewer
在这里插入图片描述

IP端口
192.168.x.x5901

开发工具安装

下载pycharm社区版

在这里插入图片描述

在这里插入图片描述

找到文件所在位置解压,输入解压命令

tar -xzvf pycharm-community-2024.1.4-aarch64.tar.gz

在这里插入图片描述

运行pycharm
在这里插入图片描述

创建快捷方式,之后可以在左上角开发菜单栏中找到

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

散热风扇

使用的过程中发现板子很烫手,于是我设置了自定义转速

查询风扇当前模式命令

sudo npu-smi info -t pwm-mode

查询当前风扇转速

sudo npu-smi info -t pwm-duty-ratio

设置为手动模式并调整转速,0手动1自动

sudo npu-smi set -t pwm-mode -d 0

取值范围0-100

sudo npu-smi set -t pwm-duty-ratio -d 30

在这里插入图片描述

推荐设置30

基于VGG16的火灾检测模型预测

前面的基本配置搞定了,我们使用模型加载本地数据集并对其进行预处理,然后使用预训练的 VGG16 模型,并添加自定义的全连接层进行火灾检测。
最后,代码会在本地训练模型,并保存模型到本地文件系统,通过已训练的模型进行测试识别。

数据集准备

yolov5火灾检测数据集,共2000多张图片,标注fire,点我下载

在这里插入图片描述

目录结构

dataset/validation/fire/image1.jpgimage2.jpg...train/no_fire/image1.jpgimage2.jpg...

代码

创建一个名为main.py的Python脚本,内容如下:

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications import VGG16
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.models import Model
import os# 数据预处理
train_dir = 'dataset/train'
validation_dir = 'dataset/validation'train_datagen = ImageDataGenerator(rescale=1./255,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest'
)test_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory(train_dir,target_size=(150, 150),batch_size=32,class_mode='binary'
)validation_generator = test_datagen.flow_from_directory(validation_dir,target_size=(150, 150),batch_size=32,class_mode='binary'
)# 使用预训练的VGG16模型
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))# 添加自定义顶层
x = base_model.output
x = Flatten()(x)
x = Dense(128, activation='relu')(x)
predictions = Dense(1, activation='sigmoid')(x)model = Model(inputs=base_model.input, outputs=predictions)# 冻结VGG16的卷积层
for layer in base_model.layers:layer.trainable = False# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(train_generator,steps_per_epoch=train_generator.samples // train_generator.batch_size,validation_data=validation_generator,validation_steps=validation_generator.samples // validation_generator.batch_size,epochs=10
)# 保存模型
model.save('fire_detection_model.h5')# 评估模型
loss, accuracy = model.evaluate(validation_generator)
print(f"Validation Accuracy: {accuracy*100:.2f}%")

操作

SSH连接到开发板进行项目上传

在这里插入图片描述

等待上传完成(有点漫长…)

在这里插入图片描述

安装必要库
在Orange Pi AI Pro上安装所需的库

sudo apt-get update
sudo apt-get install python3-pip
pip3 install numpy pandas tensorflow keras opencv-python

安装模块中

在这里插入图片描述

错误的话,更新下pip

 pip install --upgrade pip

在这里插入图片描述

继续报错:

(venv) (.venv) pip3 install tensorflowrunning build_extLoading library to get build settings and version: libhdf5.soerror: Unable to load dependency HDF5, make sure HDF5 is installed properlyLibrary dirs checked: []error: libhdf5.so: cannot open shared object file: No such file or directory[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.ERROR: Failed building wheel for h5py
Failed to build h5py
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (h5py)
(venv) (.venv) 

Orange Pi AI Pro默认Python环境3.9.9 更新pip后直接安装tensorflow当到h5py时候报错,尝试先安装h5py再安装tensorflow,版本号如下:
pip install h5py3.8.0
pip install tensorflow
2.11.0

/root/Desktop/project/.venv/bin/python /root/Desktop/project/main.py 
RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xf
RuntimeError: module compiled against API version 0x10 but this version of numpy is 0xf
ImportError: numpy.core._multiarray_umath failed to import
ImportError: numpy.core.umath failed to import
Traceback (most recent call last):File "/root/Desktop/project/main.py", line 1, in <module>import tensorflow as tfFile "/usr/local/lib64/python3.9/site-packages/tensorflow/__init__.py", line 37, in <module>packages/tensorflow/python/framework/dtypes.py", line 34, in <module>_np_bfloat16 = _pywrap_bfloat16.TF_bfloat16_type()
TypeError: Unable to convert function return value to a Python type! The signature was() -> handle

这个错误表明 TensorFlow 在导入过程中与 NumPy 版本之间存在不兼容的问题。这通常是由于 TensorFlow 和 NumPy 版本之间的API不匹配引起的。

可以尝试tensorflow==2.4.0

在这里插入图片描述

安装成功后运行即可

Found 100 images belonging to 2 classes.
Found 100 images belonging to 2 classes.
2024-07-16 16:57:17.388409: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
3/3 [==============================] - 42s 20s/step - loss: 1.3637 - accuracy: 0.4265 - val_loss: 0.9231 - val_accuracy: 0.4531
4/4 [==============================] - 30s 7s/step - loss: 0.8841 - accuracy: 0.5000
Validation Accuracy: 70%

在这里插入图片描述

查看模型文件

在这里插入图片描述

使用模型文件进行预测

待检测图片

在这里插入图片描述

import tensorflow as tf
from tensorflow.keras.preprocessing import image
import numpy as np# 加载已保存的模型
model = tf.keras.models.load_model('fire_detection_model.h5')# 预处理单张图片的函数
def preprocess_image(img_path, target_size=(150, 150)):img = image.load_img(img_path, target_size=target_size)  # 加载图片并调整大小img_array = image.img_to_array(img)  # 将图片转换为数组img_array = np.expand_dims(img_array, axis=0)  # 增加一个维度img_array /= 255.0  # 归一化return img_array# 图片路径
img_path = 'path_to_your_image.jpg'# 预处理图片
img_array = preprocess_image(img_path)# 进行预测
prediction = model.predict(img_array)# 输出预测结果
if prediction[0] > 0.5:print(f"The image at {img_path} is predicted to be a fire with a probability of {prediction[0][0]*100:.2f}%.")
else:print(f"The image at {img_path} is predicted to be non-fire with a probability of {(1-prediction[0][0])*100:.2f}%.")

在这里插入图片描述

0bb3c0c6-744d-4b31-be3f-d0cdbc844de1.jpg处的图像被预测为非火灾,概率为86.67%。

如果训练数据继续增加会提高识别正确率

Orange Pi AI Pro提供的内置工具以及模块,对于机器学习模型的开发和训练提供了便捷的环境。这些工具支持常见的深度学习框架,并且可以利用板载的NPU进行加速,有效提高了模型训练和推理的效率

安装宝塔

Orange Pi AI Pro 还可以搭建服务器,挂载个人网站或者脚本,我们部署宝塔在开发板里面

Ubuntu/Deepin安装脚本

wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

在这里插入图片描述

在这里插入图片描述

上传项目到文件夹

在这里插入图片描述

安装python3.7

在这里插入图片描述

新建项目

在这里插入图片描述

在这里插入图片描述

安装模块

模块名版本
tensorflow2.11.0

运行项目

在这里插入图片描述

安装宝塔进行测试显示出了Orange Pi AI Pro在部署和管理网络应用时的灵活性和可扩展性。宝塔能够简化服务器的管理和配置,对于需要快速搭建和测试网络应用的场景非常有用。

最后

Orange Pi AI Pro在处理能力、专注AI应用和扩展性方面表现突出,适合于需要更高性能和复杂计算的应用。对比树莓派则以其成本效益、广泛的社区支持和适用于教育等广泛场景的特点而获得广泛认可。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Puppeteer 是什么以及如何在网络抓取中使用它 | 2024 完整指南

网页抓取已经成为任何处理网页数据提取的人都必须掌握的一项重要技能。无论你是开发者、数据科学家还是希望从网站收集信息的爱好者&#xff0c;Puppeteer都是你可以使用的最强大工具之一。本完整指南将深入探讨什么是Puppeteer以及如何有效地在网页抓取中使用它。 Puppeteer简…

【Neural signal processing and analysis zero to hero】- 1

The basics of neural signal processing course from youtube: 传送地址 Possible preprocessing steps Signal artifacts (not) to worry about doing visual based artifact rejection so that means that before you start analyzing, you can identify those data epic…

有关电力电子技术的一些相关仿真和分析:⑤交-直-交全桥逆变+全波整流结构电路(MATLAB/Siumlink仿真)

全桥逆变+全波整流结构 参数:Vin=500V, Vo=200V, T=2:1:1, RL=10Ω, fs=100kHz, L=1mH, C=100uF (1)给定输入电压,输出电压和主电路参数,仿真研究电路工作原理,分析工作时序; (2)调节负载电阻,实现电流连续和断续,并仿真验证; (3)调节占空比,分析占空比与电…

微软Edge浏览器深度解析:性能、安全性与特色功能全面评测

一、引言 自Windows 10操作系统推出以来&#xff0c;微软Edge浏览器作为默认的网页浏览器&#xff0c;凭借其现代化的设计和出色的性能表现&#xff0c;逐渐获得了用户的认可。本文旨在对Edge浏览器进行深入分析&#xff0c;探讨其在多个方面的表现。 二、界面与操作体验 界面…

初识STM32:芯片基本信息

STM32简介 STM32是ST公司基于ARM公司的Cortex-M内核开发的32位微控制器。 ARM公司是全球领先的半导体知识产权&#xff08;IP&#xff09;提供商&#xff0c;全世界超过95%的智能手机和平板电脑都采用ARM架构。 ST公司于1987年由意大利的SGS微电子与法国的Thomson半导体合并…

多样化数据可视化方法的全面示例:基于Python的多样化数据可视化

文章目录 前言代码效果展示 前言 本文演示了使用Python进行温度数据的多样化可视化方法。通过导入、处理和分析气象数据&#xff0c;我们生成了多种图表&#xff0c;包括直方图、核密度估计图、箱型图、小提琴图、条形图、山脊图、经验累积分布函数图和折线图。这些图表帮助我…

Zookeeper之CAP理论及分布式一致性算法

CAP理论 CAP理论告诉我们&#xff0c;一个分布式系统不可能同时满足以下三种 一致性&#xff08;C:consistency&#xff09;可用性&#xff08;A:Available&#xff09;分区容错性&#xff08;P:Partition Tolerance&#xff09; 这三个基本要求&#xff0c;最多只能同时满足…

【Pytorch】数据集的加载和处理(一)

Pytorch torchvision 包提供了很多常用数据集 数据按照用途一般分为三组&#xff1a;训练&#xff08;train&#xff09;、验证&#xff08;validation&#xff09;和测试&#xff08;test&#xff09;。使用训练数据集来训练模型&#xff0c;使用验证数据集跟踪模型在训练期间…

c++包管理器

conan conan search&#xff0c;查看网络库 conan profile detect&#xff0c;生成缓存信息conan new cmake_exe/cmake_lib&#xff0c;创建cmakelists.txtconan install .&#xff0c;执行Conanfile.txt中的配置&#xff0c;生成相关的bat文件 项目中配置Conanfile.txt(或者…

【AIGC】二、mac本地采用GPU启动keras运算

mac本地采用GPU启动keras运算 一、问题背景二、技术背景三、实验验证本机配置安装PlaidML安装plaidml-keras配置默认显卡 运行采用 CPU运算的代码step1 先导入keras包&#xff0c;导入数据cifar10&#xff0c;这里可能涉及外网下载&#xff0c;有问题可以参考[keras使用基础问题…

linux后门教程

linux后门教程 alias 用法 系统默认别名&#xff1a;alias 设置别名&#xff1a;alias lsls -laih 删除别名&#xff1a;unalias ls **加参数&#xff1a;**alias ls‘ls -laih;pwd’ 注意 系统启动默认加载的配置文件 /etc/profile 切换用户就会执行/etc/profile /etc/bash…

正则表达式(Ⅱ)——重复匹配

简介 基本匹配是在其中选择一个进行拼装&#xff0c;而重复匹配则是去指定字符可以出现的次数 基本匹配中的字符要么不出现&#xff0c;匹配上了也只能是出现一次 重复匹配使用一些特殊字符用来指定一个字符在文本中重复的次数。它们分别是加号 、星号 * &#xff0c;问号 ?…

面试经验总结

某生物科技公司 1.代码实现删除一个 list 里面的重复元素 方法1&#xff1a;最简单容易的方法 此方法基于遍历整个列表&#xff0c;将第一个元素添加到新列表中。 # Python 3 code to demonstrate # removing duplicated from list # using naive methods # initializing …

数据结构—链式二叉树-C语言

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 在现实中搜索二叉树为常用的二叉树之一&#xff0c;今天我们就要通过链表来实现搜索二叉树。实现的操作有&#xff1a;建二叉树、前序遍历、中序遍历、后序遍历、求树的节点个数、求…

免费开源的工业物联网(IoT)解决方案

什么是 IoT&#xff1f; 物联网 (IoT) 是指由实体设备、车辆、电器和其他实体对象组成的网络&#xff0c;这些实体对象内嵌传感器、软件和网络连接&#xff0c;可以收集和共享数据。 IoT 设备&#xff08;也称为“智能对象”&#xff09;范围广泛&#xff0c;包括智能恒温器等…

FastAPI 学习之路(四十四)WebSockets

我们之前的分析都是基于http的请求&#xff0c;那么如果是websockets可以支持吗&#xff0c;答案是可以的&#xff0c;我们来看下是如何实现的。 from fastapi import WebSocket, FastAPI from fastapi.responses import HTMLResponseapp FastAPI()html """&…

架构师机器学习操作 (MLOps) 指南

MLOps 是机器学习操作的缩写&#xff0c;是一组实践和工具&#xff0c;旨在满足工程师构建模型并将其投入生产的特定需求。一些组织从一些自主开发的工具开始&#xff0c;这些工具在每次实验后对数据集进行版本控制&#xff0c;并在每个训练周期后对检查点模型进行版本控制。另…

新手-前端生态

文章目录 新手的前端生态一、概念的理解1、脚手架2、组件 二、基础知识1、HTML2、css3、JavaScript一、基础语法1、javaScript的引入2、认识输出语句3、学会处理报错 二、变量1、如何使用变量 2、变量的命名规范3、推荐的变量命名法4、变量默认值5、变量常见的错误6、变量声明提…

Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用

目录 开始 Prometheus 介绍 基本原理 组件介绍 下文部署组件的工作方式 Prometheus 生态安装&#xff08;Mac&#xff09; 安装 prometheus 安装 grafana 安装 node_exporter Prometheus 生态安装&#xff08;Docker&#xff09; 安装 prometheus 安装 Grafana 安装…

人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解。在机器学习和深度学习领域&#xff0c;模型的训练目标是找到一组参数&#xff0c;使得模型能够从训练数据中学习到有用的模式&am…