问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

多模态大模型通过外接数据方案实现电力智能巡检(附代码)

创作时间:
作者:
@小白创作中心

多模态大模型通过外接数据方案实现电力智能巡检(附代码)

引用
CSDN
1.
https://blog.csdn.net/qq_43128256/article/details/138617229

随着人工智能技术的不断发展,多模态大模型在电力智能巡检领域的应用越来越广泛。本文将介绍如何通过多模态大模型结合外接数据实现更精准、更智能的电力设备巡检方案。

需求介绍

传统电网智能巡检通常采用固定摄像机点位,通过YOLO等目标检测算法对上传的图像进行异常检测。这种模式存在以下局限性:

  1. 巡检颗粒度较粗,只能检测预设的异常标签,无法提供更详细的异常处理方案或相关信息
  2. 异常评估标准单一,识别模式较弱,例如在工装检查中,简单地将长袖归为正常,将短袖、卷袖一律视为不正常

解决方案

多模态大模型具有强大的图像理解能力和语义推理能力,可以通过以下方式实现更智能的电力巡检:

  1. 利用文本对齐能力,对图像进行描述
  2. 通过prompt规范,对图片重点部分进行检测
  3. 结合外部信息(如设备信息、维护记录等),与检测结果综合分析
  4. 最终给出隐患描述、隐患级别、整改措施等结论

这种方案本质上是结合多源信息的多模态大模型应用开发。设计思路是在巡检过程中,不仅应用图像数据,还结合其他相关信息,以实现更高颗粒度的异常巡检。

实例代码

下面是一个具体的实现示例,使用零一万物的多模态大模型进行电力设备巡检:

import pandas as pd
import numpy as np
from datetime import datetime
import sqlite3
import openai
from openai import OpenAI

API_BASE = "https://api.lingyiwanwu.com/v1"
API_KEY = ""
client = OpenAI(
    api_key=API_KEY,
    base_url=API_BASE
)

def get_dcandlc(input_data: str):
    camera_node = input_data
    conn = sqlite3.connect('db.sqlite3')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM camera_node_table WHERE camera_code = {input_data_1}".format(input_data_1='"' + camera_node + '"'))
    rows = cursor.fetchall()
    conn.close()
    if len(rows) == 1:
        return rows[0][1], rows[0][2]
    else:
        print('Error : Data Select Error!')
        return None, None

def get_device_info(input_data: str):
    device_node = input_data
    conn = sqlite3.connect('db.sqlite3')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM device_info_table WHERE device_code = {input_data_1}".format(input_data_1='"' + device_node + '"'))
    rows = cursor.fetchall()
    conn.close()
    if len(rows) == 1:
        if rows[0][5] == 1:
            return rows[0][0], rows[0][1], rows[0][3], rows[0][4]
        else:
            print('Error : Device Can Not Use!')
            return None, None, None, None
    else:
        print('Error : Data Select Error!')
        return None, None, None, None

def get_worker_info(input_data: str):
    worker_name = input_data
    conn = sqlite3.connect('db.sqlite3')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM worker_info_table WHERE name = {input_data_1}".format(input_data_1='"' + worker_name + '"'))
    rows = cursor.fetchall()
    conn.close()
    if len(rows) == 1:
        return rows[0][1]
    else:
        print('Error : Data Select Error!')
        return None

def get_time_distance(date_time_str1, date_time_str2):
    dt1 = datetime.strptime(date_time_str1, '%Y-%m-%d %H:%M:%S')
    dt2 = datetime.strptime(date_time_str2, '%Y-%m-%d %H:%M:%S')
    time_difference = dt1 - dt2
    return f"时间差为:{time_difference.days} 天, {time_difference.seconds // 3600} 小时, {time_difference.seconds // 60 % 60} 分钟, {time_difference.seconds % 60} 秒"

sbbz = {
    '变压器': '检测变电器设备是否存在渗油、漏油情况',
    '呼吸器': '检查呼吸器是否存在缺失、损坏情况;检查硅胶是否存在变色情况;检查油封是否存在油标无显示、油位超过上/下限、污浊情况'
}

sbms = {
    '变压器': '图像中的白色主题设备为变电器,需检查机器本身及其周边的渗漏油情况',
    '呼吸器': '图像中圆柱状物体为呼吸器,共分为上下两部分上部分。上部分为玻璃柱形容器,内含蓝色颗粒状硅胶,硅胶不为蓝色即视为变色;下部分为油封,标有刻度,装有油类物质。'
}

camera_node_ls = {
    '57a0f5b9': "https://01-platform-public.oss-cn-beijing.aliyuncs.com/playground/image/25059aba-83f2-4005-b919-7a65e7ecb99e-57a0f5b9.jpg",
    '83c6b7c1': "https://01-platform-public.oss-cn-beijing.aliyuncs.com/playground/image/a471104a-4f78-4654-9877-2928e9c7eca2-83c6b7c1.jpg"
}

camera_node_list = list(camera_node_ls.keys())
print('本次巡检任务点位', camera_node_list)

for camera_node in camera_node_list:
    print('当前点位:', camera_node)
    
    result = {
        '巡检目标': '',
        '巡检地点': '',
        '巡检时间': '',
        '设备负责人': '',
        '负责人联系方式': '',
        '据设备上次维护时间': '',
        '检测结果': ''
    }
    
    mid_dc, mid_lc = get_dcandlc(camera_node)
    mid_dn, mid_dt, mid_person, mid_time = get_device_info(mid_dc)
    print(mid_dc, mid_lc, mid_dn, mid_dt, mid_person, mid_time)
    
    now_formatted_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    time_distance = get_time_distance(now_formatted_time, mid_time)
    mid_tele = get_worker_info(mid_person)
    
    biaozhun = sbbz[mid_dt]
    miaoshu = sbms[mid_dt]
    prompt = '''请对图像进行设备情况检查,描述该设备存在隐患。
    该设备类型为:【{input_0}】。注意,{input_1}
    具体检测依据:【{input_2}】
    '''.format(input_0=mid_dt, input_1=miaoshu, input_2=biaozhun)
    
    completion = client.chat.completions.create(
        model="yi-vl-plus",
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": camera_node_ls[camera_node]
                        }
                    },
                    {
                        "type": "text",
                        "text": prompt
                    }
                ]
            }
        ]
    )
    
    conclusion = str(completion.choices[0].message.content)
    
    try:
        result['巡检目标'] = mid_dn
        result['巡检地点'] = mid_lc
        result['巡检时间'] = now_formatted_time
        result['设备负责人'] = mid_person
        result['负责人联系方式'] = mid_tele
        result['据设备上次维护时间'] = time_distance
        result['检测结果'] = conclusion
        
        print(result)
    except:
        print('Error:Device Detect Error!')

输出结果

本次巡检任务点位 ['57a0f5b9', '83c6b7c1']
当前点位: 57a0f5b9
yt_fs_bd_1 山东省烟台市福山区国网福山供电公司变电站二区 变压器SFPZ9-120000/110 变压器 张测 2024-04-11 14:47:12
{'巡检目标': '变压器SFPZ9-120000/110', '巡检地点': '山东省烟台市福山区国网福山供电公司变电站二区', '巡检时间': '2024-05-13 17:16:08', '设备负责人': '张测', '负责人联系方式': 15075461234, '据设备上次维护时间': '时间差为:32 天, 2 小时, 28 分钟, 56 秒', '检测结果': '经观察,图片中的变压器外壳上存在明显的油渍和渗透迹象,这表明变压器存在渗漏油的问题。油渍主要集中在变压器的下部区域,特别是靠近底部接线盒的位置。此外,变压器周围的油迹也表明油液可能已经渗入到变压器内部,这可能会导致绝缘性能下降,甚至引起火灾等安全隐患。根据变压器运行维护规程,变压器渗漏油是必须引起高度重视和立即处理的问题。'}
当前点位: 83c6b7c1
yt_fs_bd_2 山东省烟台市福山区国网福山供电公司变电站二区 呼吸器0.2KG 呼吸器 张测 2024-04-11 14:47:12
{'巡检目标': '呼吸器0.2KG', '巡检地点': '山东省烟台市福山区国网福山供电公司变电站二区', '巡检时间': '2024-05-13 17:16:15', '设备负责人': '张测', '负责人联系方式': 15075461234, '据设备上次维护时间': '时间差为:32 天, 2 小时, 29 分钟, 3 秒', '检测结果': '根据描述和图片,该呼吸器存在以下几个隐患:\n\n1. 硅胶变色情况:硅胶在正常工作状态应保持蓝色,如图中显示硅胶颜色已经变为棕色,这表明硅胶可能已经失效或污染。这可能导致呼吸器过滤性能下降,影响呼吸器正常的使用。\n\n2. 油封油位情况:油封上标有油位刻度,但图像中无法清晰看到油位是否符合要求。检查油位时,需要确认油位是否位于刻度的上限和下限之间。\n\n3. 油封的清洁程度:油封是否清洁也是影响呼吸器性能的重要因素。油封如果过于污浊,可能会影响过滤效果。\n\n4. 呼吸器整体是否完整:在检查中,还需要确认呼吸器主体结构是否完整,是否有破损或丢失部件。\n\n综上所述,根据检查标准,该呼吸器存在硅胶变色和油封可能存在的油位不合适、油封污浊等问题,需要进行维护或更换部件以保证其正常使用。'}

本文原文来自CSDN。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号