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

CSDN 2024-08-16 16:01:03 阅读 52

在这里插入图片描述

目录

引言开发板介绍开发板使用准备工作工具文档

拨码开关镜像烧录连接开发板下载MobaXterm网线-SSH连接开发板设置WIFI连接WIFI-SSH连接开发板确定开发板IP方法

Vnc可视化WindowsiPad

开发工具安装

散热风扇基于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镜像:点我下载

本次用到:读卡器、网线

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

拨码开关

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

在这里插入图片描述

在这里插入图片描述

默认是通过TF卡启动的

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

镜像烧录

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

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

在这里插入图片描述

由于没有读卡器,博主还未烧录过系统,不过很简单,可以参考这里

基于WindowsPC将Linux镜像烧写到TF卡的方法-11页

连接开发板

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

在这里插入图片描述

下载MobaXterm

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

在这里插入图片描述

网线-SSH连接开发板

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

在这里插入图片描述

查找到ip地址后,打开MobaXterm进行SSH连接

在这里插入图片描述

账号 密码
root Mind@123
HwHiAiUser Mind@123

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

在这里插入图片描述

<code> 使用USB串口调试注意:

一定要确保USB数据线是否是能传输数据的,一般都是只能充电不能传输数据,可能插入后没有反应

设置WIFI连接

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

在这里插入图片描述

WIFI-SSH连接开发板

通过nmcli命令连接WIFI

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

<code>nmcli dev wifi

在这里插入图片描述

连接WIFI

<code>sudo nmcli dev wifi connect 'Cloud' password '13988266448'

在这里插入图片描述

通过图形化方式连接WIFI

<code>sudo nmtui

在这里插入图片描述

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

在这里插入图片描述

确定开发板IP方法

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

在这里插入图片描述

Vnc可视化

Windows

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

在这里插入图片描述

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

在这里插入图片描述

iPad

和开发板保持相同局域网内,下载软件RVNC Viewer

在这里插入图片描述

IP 端口
192.168.x.x 5901

开发工具安装

下载pycharm社区版

在这里插入图片描述

在这里插入图片描述

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

<code>tar -xzvf pycharm-community-2024.1.4-aarch64.tar.gz

在这里插入图片描述

运行pycharm

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

散热风扇

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

查询风扇当前模式命令

sudo npu-smi info -t pwm-mode

查询当前风扇转速

<code>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,点我下载

在这里插入图片描述

目录结构

<code>dataset/

validation/

fire/

image1.jpg

image2.jpg

...

train/

no_fire/

image1.jpg

image2.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'code>

)

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'code>

)

validation_generator = test_datagen.flow_from_directory(

validation_dir,

target_size=(150, 150),

batch_size=32,

class_mode='binary'code>

)

# 使用预训练的VGG16模型

base_model = VGG16(weights='imagenet', include_top=False, input_shape=(150, 150, 3))code>

# 添加自定义顶层

x = base_model.output

x = Flatten()(x)

x = Dense(128, activation='relu')(x)code>

predictions = Dense(1, activation='sigmoid')(x)code>

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'])code>

# 训练模型

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上安装所需的库

<code>sudo apt-get update

sudo apt-get install python3-pip

pip3 install numpy pandas tensorflow keras opencv-python

安装模块中

在这里插入图片描述

错误的话,更新下pip

<code> pip install --upgrade pip

在这里插入图片描述

继续报错:

<code>(venv) (.venv) pip3 install tensorflow

running build_ext

Loading library to get build settings and version: libhdf5.so

error: Unable to load dependency HDF5, make sure HDF5 is installed properly

Library 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 tensorflow2.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 tf

File "/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

在这里插入图片描述

安装成功后运行即可

<code>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%

在这里插入图片描述

查看模型文件

在这里插入图片描述

使用模型文件进行预测

待检测图片

在这里插入图片描述

<code>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%。

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

<code>体验评价: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

在这里插入图片描述

新建项目

在这里插入图片描述

在这里插入图片描述

安装模块

模块名 版本
tensorflow 2.11.0

运行项目

在这里插入图片描述

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

训练中的开发板表现

负载方面

在测试时,我深刻感受到了开发板在应对复杂计算任务时的表现。首先,从负载管理的角度来看,VGG16作为一个相对深层的卷积神经网络,其对计算资源的需求不言而喻。令人欣慰的是,这款开发板凭借其强大的处理器和多核架构设计,展现出了出色的负载处理能力。即便是在连续进行高清图片流中的火灾特征提取与分类时,CPU的利用率始终保持在合理范围内,没有出现明显的卡顿或延迟现象,确保了火灾检测的实时性与准确性。

散热方面

该开发板定位就是Ai路线,在高速计算中会产生热量很正常,在散热方面,接入风扇后,开发板可自动根据自身温度调整转速,长时间高负载运行下,机身温度虽有上升,但得益于其精良的散热设计与高效的热传导材料,热量得以迅速分散并排出,避免了因过热而导致的性能下降或系统不稳定。

我注意到,即便是在封闭或较为温暖的环境中测试,开发板的温度控制依然保持在安全阈值以下,这一点对于需要持续稳定运行的工业级或安防级应用尤为重要。

最后

经过测试体验,我对这款开发板在火灾检测应用中的表现深感满意。

它不仅在技术上满足了高性能计算的需求,更在用户体验上给了我很多惊喜。特别是在面对高负载和长时间运行考验时,开发板展现出的稳定性与可靠性,让我对其在实际应用场景中的表现充满信心。

此外,其优秀的散热设计也让我感受到了设计者对细节的关注与追求,这种对产品质量的坚持,无疑为用户提供了更加安心和可靠的使用体验。

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。