“本文正在参加『In AidLux,To AIoT』AI应用案例征集活动”
一、写在前面
首先我们思考一个问题:
人这一生,什么最重要?
钱和权?平安和健康?
当然是平安和健康最重要,没有这些,一切都是零!
然而我们身边时刻都有潜在的安全隐患
比如潜在的火灾风险:
厨房燃气的泄漏
吸烟未灭的火苗
小孩偷偷的玩火
老旧电器的漏电
充电设备的爆炸
火灾出现,若能第一时间发现,采取合理的行动,能大大降低各方面的损害
可是如果家里没有人呢?
或者家里有人却没有第一时间发现火灾呢?
那就自己做一个火灾报警器吧!
二、demo展示(为安卓手机检测结果)
三、智能火灾报警器方案介绍
1、主要结构
图像采集方式:安卓手机摄像头
图像存储平台:七牛云(使用对象存储Kodo功能存储后端数据)
图像检测识别:Aidlux中的python程序
图像报警系统:喵提醒(将报警图片数据通过公众号提醒,把外链发送到手机)
2、多种场景展示
情况一:小火苗(能识别)
情况二:大火(能识别)
四、智能火灾报警方案实现流程
1、七牛云注册及使用
1.1在七牛云官网上进行注册,点击左上角折叠栏,选中“对象存储Kodo”
1.2点击“空间管理”,新建空间输入名称,并将其设置为公开
1.3点击进入刚刚创建的空间,点击“文件管理”,点击“上传文件”,上传一张本地的图片文件
上传好后,点击图片右面的“更多”,点“复制链接”,即可在浏览器上打开
1.4上述操作为手动上传现实场景中,需要通过代码上传图片,并获得图片的外部链接,从而接入后面公众号的自动发送告警图片
测试“七牛云”代码如下:qiniu_test.py
from qiniu import Auth, put_file from qiniu import CdnManager # 配置七牛云信息 access_key = "" secret_key = "" bucket_name = "aidlux202208" bucket_url = "rgu20nh7f.hn-bkt.clouddn.com" q = Auth(access_key, secret_key) cdn_manager = CdnManager(q)
将本地图片上传到七牛云中
def upload_img(bucket_name, file_name, file_path):
# generate token
token = q.upload_token(bucket_name, file_name)
put_file(token, file_name, file_path)获得七牛云服务器上file_name的图片外链
def get_img_url(bucket_url, file_name):
img_url = ‘http://%s/%s’ % (bucket_url, file_name)
return img_url需要上传到七牛云上面的图片的路径
image_up_name = "data/images/fire1.jpg"
上传到七牛云后,保存成的图片名称
image_qiniu_name = "fire_2022.jpg"
将图片上传到七牛云,并保存成image_qiniu_name的名称
upload_img(bucket_name, image_qiniu_name, image_up_name)
取出和image_qiniu_name一样名称图片的url
url_receive = get_img_url(bucket_url, image_qiniu_name)
print(url_receive)需要刷新的文件链接,由于不同时间段上传的图片有缓存,因此需要CDN清除缓存,
urls = [url_receive]
URL刷新缓存链接,一天有500次的刷新缓存机会
refresh_url_result = cdn_manager.refresh_urls(urls)
主要有四处传参:access_key、secret_key、bucket_name和bucket_url,根据自己的七牛云空间上的信息进行相应的修改四个参数查找方式如下面的图片指示:
打开任何一款IDE,运行qiniu_test.py文件,可以得到上传的图片url
复制url到浏览器
2、喵提醒注册及使用
七牛云可以用于存储火灾图片,我们还需要将图片外链实时发送到手机,这个功能可以使用喵提醒公众号来帮助我们实现
2.1关注“喵提醒”公众号,并“注册账号”
2.2注册完成后,点击菜单栏的“提醒”,并选择“新建”
2.3填写标题和备注,点击保存,会自动生成专属的“喵码”和“网址”
2.4喵提醒代码测试
miaotixing_test.py
import time import requests
填写对应的喵码
id = ‘’
填写喵提醒中,发送的消息,这里放上前面提到的图片外链
text = "告警图片:" + "http://rgu20nh7f.hn-bkt.clouddn.com/fire_2022.jpg"
ts = str(time.time()) # 时间戳
type = ‘json’ # 返回内容格式
request_url = "http://miaotixing.com/trigger?"headers = {
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47’}
result = requests.post(request_url + "id=" + id + "&text=" + text + "&ts=" + ts + "&type=" + type,headers=headers)
print(result)
需要传参的是id,即刚刚生成的专属于自己的喵码
在IDE中运行代码,在喵提醒中可以看到告警信息,点击后可以看到告警图片
3、PC代码结合
3.1图片检测告警的整体测试
detect_image_qiqiu_miaotixing.py中,当图片检测到火焰时,自动保存检测到的火焰图片,并将图片发送到七牛云,并通过喵提醒发送到手机上
3.2视频检测告警的整体测试
detect_video_qiqiu_miaotixing.py方式同图片检测
4、Aidlux平台软件部署
Aidlux软件使用非常方便,可以安装在手机、PAD、ARM开发板等边缘端设备上。而且使用Aidlux开发的过程中,既支持在边缘设备的本机开发,也支持通过Web浏览器访问边缘端桌面进行开发
4.1 下载Aidlux软件
本人使用的是华为手机
4.2 将手机的wifi网络和电脑的网络连接到一起,打开安装好的手机上的Aidlux软件,点击第一排第二个Cloud_ip
此时,手机界面上会跳出可以在电脑上登录的IP网址。在电脑的浏览器上,输入IP进行输入,即可将手机的系统投影到电脑上,任何操作和代码编写都是完全数据共通的,这样我们就可以将PC端的操作,直接应用到Aidlux的App中
4.3输入IP后,在电脑端的浏览器中,可以跳出Aidlux的登录页面,默认登录密码是“aidlux”
需要注意的是,使用aidlux的PC端的时候,手机的aidlux软件也要相应的打开,保持联通状态
5、Android部署:Aidlux中yolov5优化加速
5.1 上传代码
打开手机版的aidlux,并投影到电脑网页上。第一步先将detect_fire项目的所有代码,上传到aidlux的平台里面
点击电脑端页面菜单栏的第一个,文件浏览器,打开文件管理页面
找到home文件夹,并双击进入此文件夹
点击右上角往上的箭头“upload”,再选择Folder,将前面detect_fire的文件夹上传到home文件夹内
5.2 配置环境,安装依赖库
因为整合进了七牛云,所以需要安装七牛云的依赖库
具体操作:在桌面的空白栏,右击选择打开终端
pip3 install qiniu -i https://pypi.tuna.tsinghua.edu.cn/simple
输入python3,输入import qiniu,没有报错,说明下载完成
6、运行代码查看效果
建议直接采用手机端的aidlux来进行启动
进入aidlux界面,找到文件浏览器,进入home/detect_fire文件夹中,打开yolov5.py文件
点击右上角的图标,选择“Build”
进入代码的运行页面,选择左上角的坐标,点击“RunNow”
手机端效果展示:
五、问题及建议
1、由于本次测试所使用的安卓手机是很多年前的老设备,长时间运行有发热现象
解决方案:要是能够获得一个盒子,后面自己打算再搭配一些摄像头,就可以在家里实际应用啦~
2、最开始喵提醒提示的方式,没有办法直接打开
解决方案:重新建一个喵提醒,并激活48小时功能
3、浏览器缓存导致链接直接打开是旧的图片
解决方案:手机浏览器设置无痕模式或浏览器清除缓存
六、结束语
感谢Aidlux提供的平台,让AI应用落地如此简单
感谢大白的耐心指导
项目github链接:https://github.com/1shinia/detect_fire
丰富多彩的经历,会让这一生变得更加值得,感恩这一路所有的风景