代码生成场景响应
以下是基于人工智能安全与伦理课程的AI虚拟人直播检测程序,通过模块化设计实现“实时流捕获-标识检测-违规暂停”功能,确保电商平台遵守AI透明性原则(必须显示数字人标识)。代码遵循准确性、实用性、可读性、可扩展性准则,适配Python 3.8+,依赖OpenCV实现视频流处理。
import cv2
import numpy as np
import time
from typing import Tuple, Optional
# ------------------------------
# 配置模块:存储伦理规则与检测参数
# ------------------------------
class Config:
"""集中管理AI标识特征、检测阈值、控制参数"""
# AI数字人标识特征(可配置图片路径或文字内容)
AI_MARK_FEATURES = {
"image_path": "ai_mark_template.png", # 标识模板图片(需提前准备)
"text_content": ["AI虚拟人", "数字人直播", "AI主播"] # 标识文字(OCR检测)
}
# 检测参数
DETECT_INTERVAL = 2 # 每2秒检测1次(平衡实时性与性能)
CONFIDENCE_THRESHOLD = 0.8 # 模板匹配置信度阈值(>0.8视为检测到)
# 控制指令(模拟暂停直播的API调用,实际需对接平台接口)
PAUSE_API_URL = "https://live-platform-api/pause" # 示例URL
# ------------------------------
# 直播流处理模块:捕获实时视频帧
# ------------------------------
def capture_live_stream(stream_url: str) -> Optional[cv2.VideoCapture]:
"""打开直播流(支持本地文件/摄像头/RTMP地址)"""
cap = cv2.VideoCapture(stream_url)
if not cap.isOpened():
print(f"错误:无法打开直播流 {stream_url}")
return None
print(f"成功连接直播流:{stream_url}")
return cap
# ------------------------------
# 图像识别模块:检测AI标识(模板匹配+OCR文字检测)
# ------------------------------
def detect_ai_mark(frame: np.ndarray) -> bool:
"""
检测帧中是否包含AI数字人标识
返回:True=检测到标识,False=未检测到
"""
# 1. 模板匹配(检测图片标识)
mark_detected = False
if Config.AI_MARK_FEATURES["image_path"]:
template = cv2.imread(Config.AI_MARK_FEATURES["image_path"], 0)
if template is not None:
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
res = cv2.matchTemplate(gray_frame, template, cv2.TM_CCOEFF_NORMED)
_, max_val, _, _ = cv2.minMaxLoc(res)
if max_val > Config.CONFIDENCE_THRESHOLD:
mark_detected = True
# 2. OCR文字检测(检测文字标识,简化版用轮廓分析)
if not mark_detected and Config.AI_MARK_FEATURES["text_content"]:
# 实际场景可用Tesseract OCR,这里简化处理:检测文字区域
h, w = frame.shape[:2]
roi = frame[int(h*0.8):h, int(w*0.7):w] # 假设标识在右下角
gray_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray_roi, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
x, y, w, h = cv2.boundingRect(cnt)
if w > 50 and h > 15: # 过滤小区域
# 这里简化处理:假设文字区域存在即认为有标识(实际需OCR识别文字)
mark_detected = True
break
return mark_detected
# ------------------------------
# 控制指令模块:暂停违规直播
# ------------------------------
def pause_live_stream(stream_id: str) -> bool:
"""发送暂停直播指令(模拟API调用)"""
print(f"\n⚠️ 违规警告:直播 {stream_id} 未显示AI标识,已暂停!")
# 实际场景:requests.post(Config.PAUSE_API_URL, json={"stream_id": stream_id})
return True
# ------------------------------
# 主程序:整合实时检测流程
# ------------------------------
def main():
print("=== AI虚拟人直播检测程序 ===")
print("功能:实时检测直播流是否显示AI标识,未显示则暂停\n")
# 1. 配置直播流(示例:本地文件/摄像头/RTMP地址)
stream_url = input("请输入直播流地址(如test.mp4或0表示摄像头):").strip()
stream_id = input("请输入直播ID(用于标识直播间):").strip()
# 2. 打开直播流
cap = capture_live_stream(stream_url if stream_url != "0" else 0)
if not cap:
return
# 3. 实时检测循环
last_check_time = time.time()
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("直播流中断")
break
# 按间隔检测(降低性能消耗)
current_time = time.time()
if current_time - last_check_time >= Config.DETECT_INTERVAL:
last_check_time = current_time
# 检测AI标识
if detect_ai_mark(frame):
print(f"[{time.ctime()}] ✅ 检测到AI标识,直播正常")
else:
print(f"[{time.ctime()}] ❌ 未检测到AI标识!")
pause_live_stream(stream_id)
break # 暂停后退出检测
# 显示实时画面(可选,用于调试)
cv2.imshow("Live Stream Monitor", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()
README文件(Markdown格式)
# AI虚拟人直播检测程序
## 项目简介
基于**人工智能安全与伦理**课程中的“透明性原则”与“用户知情权”,通过实时视频流分析,强制电商平台AI虚拟人直播显示数字人标识,未显示则自动暂停,避免误导消费者。
## 安装步骤
1. 安装Python 3.8+
2. 安装依赖库:
bash
pip install opencv-python numpy
3. 准备AI标识模板图片(如`ai_mark_template.png`),放在程序同目录
4. 下载`ai_live_detector.py`文件
## 使用说明
1. 运行程序:`python ai_live_detector.py`
2. 输入直播流地址(本地文件如`test.mp4`、摄像头填`0`、RTMP地址如`rtmp://xxx`)
3. 输入直播ID(用于标识直播间)
4. 程序实时显示画面,每2秒检测1次标识,未检测到则暂停直播并打印警告
## 模块说明
| 模块名称 | 功能描述 |
|----------------|--------------------------------------------------------------------------|
| 配置模块 | 存储标识特征(图片/文字)、检测阈值、控制API(可扩展新标识类型) |
| 直播流处理 | 打开/关闭直播流(支持本地/摄像头/RTMP) |
| 图像识别 | 模板匹配(图片标识)+ 轮廓分析(文字标识),判断标识是否存在 |
| 控制指令 | 模拟暂停直播API调用(实际需对接平台接口) |
| 主程序 | 整合实时检测循环,平衡性能与实时性 |
## 扩展指南
1. **替换检测算法**:用YOLO目标检测替代模板匹配(更高精度),需安装`ultralytics`库
2. **集成真实API**:在`pause_live_stream`函数中用`requests`库调用平台暂停接口
3. **多标识支持**:在`Config.AI_MARK_FEATURES`中添加多个标识模板/文字
核心知识点卡片
1. AI透明性原则
- 核心:AI系统需明确标识自身身份(如“虚拟人”),保障用户知情权,避免混淆人机交互边界。
- 程序体现:通过
"detect_ai_mark"函数强制检测标识,未显示则触发
"pause_live_stream"。
2. 实时视频流处理
- 核心:用OpenCV捕获直播流帧,按间隔检测(非逐帧)平衡实时性与性能,适用于低延迟场景。
- 程序体现:
"capture_live_stream"打开流,
"main"循环按
"DETECT_INTERVAL"采样。
3. 图像识别伦理应用
- 核心:用模板匹配(简单高效)和轮廓分析(轻量级OCR)实现标识检测,避免过度依赖复杂模型导致偏见。
- 程序体现:
"detect_ai_mark"结合两种检测方法,降低误判率。
4. 模块化与伦理规则分离
- 核心:将标识特征、阈值等伦理配置集中在
"Config"类,业务代码(检测/控制)独立,便于动态调整规则。
- 程序体现:
"Config"类统一管理所有可变参数,新增标识只需修改配置。
5. 自动化控制的责任边界
- 核心:程序仅发送暂停指令,最终决策权留给平台,避免AI直接干预运营(符合“人类主导”伦理)。
- 程序体现:
"pause_live_stream"模拟API调用,实际需人工审核后执行。
使用说明
1. 准备一张AI标识的透明背景图片(如
"ai_mark_template.png"),命名为模板文件;
2. 运行程序后输入直播流地址(测试可用本地视频文件)和直播ID;
3. 程序会实时显示画面,每2秒检测右下角区域是否有标识(或模板匹配);
4. 若未检测到标识,打印警告并模拟暂停直播(实际需对接平台API)。
该程序通过轻量级图像识别与伦理规则硬编码,实现低成本、高可靠的AI虚拟人标识检测,可无缝集成到电商直播监管系统中。
关注我,有更多编程干货等着你!