Phi-3 Forest Laboratory 实战基于YOLOv8的目标检测结果分析与报告生成最近在做一个智能安防的项目用YOLOv8做实时监控视频里的目标检测效果确实不错。但每次跑完模型看着满屏的检测框和一堆数字总得花不少时间去手动统计、分析再写报告。比如今天下午3点到4点画面里出现了多少人、多少辆车有没有异常聚集这些信息都得人工整理挺费时间的。我就想能不能让这个过程自动化一点检测是AI做的分析报告能不能也让AI来写正好手头有Phi-3 Forest Laboratory这个模型它在文本理解和生成上表现很灵活。于是我就琢磨着把YOLOv8的检测结果“喂”给Phi-3让它来帮我分析并生成一份结构清晰的报告。试了几次之后效果比预想的还要好整个工作流顺畅多了。这篇文章我就来分享一下这个结合了计算机视觉和自然语言处理的实战小项目。你会看到从一张带有检测结果的图片开始到最终得到一份包含目标统计、问题描述和建议的报告整个过程是如何实现的。即使你对这两个领域都不算特别熟悉跟着步骤走也能轻松复现。1. 场景与价值为什么需要自动报告生成在真正动手之前我们先聊聊为什么要把YOLOv8和Phi-3 Forest Laboratory组合在一起。这不仅仅是技术上的“炫技”而是为了解决实际工作中几个挺烦人的痛点。首先是效率问题。YOLOv8跑得飞快一秒钟能处理几十甚至上百张图片。但人眼去看这些结果再手动记录、分析速度就慢下来了。在需要快速响应的场景比如交通监控发现事故、仓库监控发现异常闯入时间就是关键。自动报告生成能把从“看到结果”到“理解情况”的时间压缩到最短。其次是标准化和一致性。不同的人写报告风格、侧重点可能都不一样。让AI来生成可以确保每次报告的格式、包含的信息维度都是统一的便于后续的归档、查询和对比分析。最后是信息挖掘。人看检测结果可能只关注最显眼的目标比如画面中央的人。但AI可以毫无遗漏地分析每一个检测框统计出总数、各类别的数量分布、平均置信度甚至能根据目标的位置关系推断出一些潜在问题比如“人群在入口处聚集可能存在拥堵风险”。这种深层次的洞察是手动分析容易忽略的。简单来说这个组合的价值在于让擅长“看”的YOLOv8和擅长“说”的Phi-3 Forest Laboratory各司其职形成一个从感知到认知的完整自动化闭环。你只需要提供原始的图片或数据最终得到的就是一份可以直接使用的、带分析的文本报告。2. 环境准备与工作流搭建要把想法落地我们得先把“舞台”搭好。这里的环境搭建分为两部分一是YOLOv8的目标检测环境二是Phi-3 Forest Laboratory的文本生成环境。为了让流程更清晰我画了一个简单的示意图graph TD A[输入原始图像或视频帧] -- B(YOLOv8 目标检测) B -- C{检测结果br边界框、类别、置信度} C -- D[结果解析与格式化] D -- E[构造给Phi-3的提示词] E -- F(Phi-3 Forest Laboratorybr分析与报告生成) F -- G[输出结构化检测报告]整个流程就像一条流水线原始图像经过YOLOv8处理变成结构化的检测数据这些数据被精心包装成一段“描述”送给Phi-3Phi-3理解这段描述后就能生成我们想要的报告。2.1 YOLOv8检测环境YOLOv8的安装和使用现在已经非常方便了。我们直接用pip安装Ultralytics这个包就行。pip install ultralytics安装完成后你可以用下面这段最简单的代码来跑一下检测看看环境是否正常。这里我们用一张包含行人和车辆的示例图片。from ultralytics import YOLO import cv2 # 加载预训练的YOLOv8模型这里用中等尺寸的模型 model YOLO(yolov8m.pt) # 进行目标检测 results model(street_scene.jpg) # 替换成你的图片路径 # 在图片上绘制检测结果 annotated_frame results[0].plot() # 显示结果如果你在Jupyter Notebook或本地有GUI环境 cv2.imshow(YOLOv8 Detection, annotated_frame) cv2.waitKey(0) cv2.destroyAllWindows() # 或者保存结果图片 cv2.imwrite(detected_street_scene.jpg, annotated_frame)运行成功后你会得到一张画满了检测框的图片。但对我们来说更关键的是results对象里包含的原始检测数据这些数据才是我们要传给Phi-3的“原料”。2.2 Phi-3 Forest Laboratory 文本生成环境Phi-3 Forest Laboratory 是一个轻量级但能力强大的语言模型。我们可以通过Hugging Face的Transformers库来调用它。首先安装必要的库pip install transformers torch然后用下面的代码加载模型和分词器。请注意模型名称可能需要根据你实际获取的模型进行调整。from transformers import AutoModelForCausalLM, AutoTokenizer model_name microsoft/Phi-3-mini-4k-instruct # 示例模型请使用Forest Laboratory对应名称 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypeauto, trust_remote_codeTrue) # 将模型移动到GPU如果可用 device cuda if torch.cuda.is_available() else cpu model.to(device)环境准备好之后最关键的一步来了如何把YOLOv8冷冰冰的检测数据变成Phi-3能理解的、富有信息量的“故事”3. 从检测框到分析报告核心实现步骤这一步是整个项目的核心。我们的目标是编写一个函数它接收YOLOv8的检测结果然后生成一份报告。这个过程可以分为三个子步骤。3.1 解析与提取YOLOv8结果YOLOv8的results对象包含了所有检测信息。我们需要把它们提取出来整理成结构化的数据比如每个目标是什么类别、位置在哪、置信度有多高。def parse_yolo_results(results): 解析YOLOv8的检测结果提取关键信息。 Args: results: YOLOv8模型预测返回的结果列表。 Returns: dict: 包含检测统计信息和详细检测列表的字典。 # 获取第一个结果假设单张图片输入 result results[0] # 初始化统计字典 detection_summary { total_objects: 0, objects_by_class: {}, detections: [] # 存储每个检测框的详细信息 } # 检查是否有检测框 if result.boxes is not None: boxes result.boxes detection_summary[total_objects] len(boxes) # 获取类别名称 class_names result.names for box in boxes: # 获取边界框坐标 (x1, y1, x2, y2) xyxy box.xyxy[0].tolist() # 获取置信度 conf box.conf[0].item() # 获取类别ID和名称 cls_id int(box.cls[0].item()) cls_name class_names[cls_id] # 更新按类别统计的数量 detection_summary[objects_by_class][cls_name] detection_summary[objects_by_class].get(cls_name, 0) 1 # 保存详细信息 detection_summary[detections].append({ class: cls_name, confidence: round(conf, 3), # 保留三位小数 bbox: [round(coord, 1) for coord in xyxy] # 坐标取一位小数 }) return detection_summary这个函数会返回一个字典里面清楚地记录了总共发现了多少个目标每个类别如‘person’ ‘car’各有多少个以及每个目标的具体信息。3.2 构造智能提示词有了结构化的数据我们不能直接扔给Phi-3。我们需要把这些数据“翻译”成一段自然语言描述并明确告诉Phi-3我们想要它做什么。这就是提示词工程。我们的提示词可以这样设计def create_analysis_prompt(detection_summary, image_context监控画面): 根据检测结果构造给Phi-3模型的提示词。 Args: detection_summary: parse_yolo_results函数返回的统计字典。 image_context: 图片的上下文描述如“仓库入口监控”、“十字路口交通摄像头”。 Returns: str: 构造好的提示词。 # 基础信息部分告诉模型检测结果 prompt f你是一个专业的图像分析助手。现在分析一段{image_context}的目标检测结果。\n\n prompt 检测结果如下\n prompt f- 总共检测到 {detection_summary[total_objects]} 个目标物体。\n for cls_name, count in detection_summary[objects_by_class].items(): prompt f- 其中 {cls_name} 有 {count} 个。\n # 如果检测到了具体目标可以添加一些详细信息示例避免过长 if detection_summary[detections]: prompt \n部分目标的详细信息类别 置信度\n # 只列举前5个作为示例 for i, det in enumerate(detection_summary[detections][:5]): prompt f 目标{i1}: {det[class]}, 置信度 {det[confidence]}\n # 明确指令部分告诉模型需要生成什么 prompt \n请根据以上检测结果生成一份简洁的分析报告报告需要包含以下部分\n prompt 1. 结果概览用一句话总结画面中主要有什么。\n prompt 2. 数量统计以清晰的方式重述各物体数量。\n prompt 3. 情况分析分析当前场景是否正常。例如如果‘人’特别多提示可能存在聚集如果‘车’在非机动车道提示可能违规。\n prompt 4. 潜在问题与建议基于分析指出潜在风险或给出简单建议。\n prompt \n报告要求语言精炼、专业直接开始报告内容不需要说“好的”或复述问题。 return prompt这个提示词做了几件事先给模型设定角色专业分析助手然后清晰地提供数据检测结果最后给出具体的、结构化的任务指令。这样Phi-3就能很好地理解我们的意图。3.3 调用Phi-3生成报告最后我们把构造好的提示词送给Phi-3让它来生成最终的报告。def generate_report_with_phi3(prompt, model, tokenizer, max_new_tokens300): 使用Phi-3模型生成分析报告。 Args: prompt: 构造好的提示词。 model: 加载好的Phi-3模型。 tokenizer: 对应的分词器。 max_new_tokens: 生成文本的最大长度。 Returns: str: 模型生成的报告文本。 # 编码输入 inputs tokenizer(prompt, return_tensorspt).to(model.device) # 生成文本 with torch.no_grad(): outputs model.generate( **inputs, max_new_tokensmax_new_tokens, do_sampleTrue, # 使用采样使生成结果更多样 temperature0.7, # 控制随机性0.7比较平衡 top_p0.9, ) # 解码输出并只提取新生成的部分跳过输入提示词 generated_ids outputs[0][inputs[input_ids].shape[1]:] report tokenizer.decode(generated_ids, skip_special_tokensTrue) return report把上面三个函数串起来我们就得到了一个完整的从图片到报告的管道# 1. YOLOv8检测图片 image_path your_image.jpg results model(image_path) # 2. 解析检测结果 summary parse_yolo_results(results) # 3. 构造提示词 prompt create_analysis_prompt(summary, image_context仓库仓储区域监控) # 4. 生成报告 analysis_report generate_report_with_phi3(prompt, model, tokenizer) print(*50) print(生成的检测分析报告) print(*50) print(analysis_report)4. 实战效果看看AI如何分析场景理论说再多不如看实际效果。我准备了两张有代表性的图片跑了一遍整个流程我们来看看Phi-3生成的分析报告怎么样。场景一安静的办公室走廊YOLOv8检测结果检测到2个‘person’。Phi-3生成报告结果概览监控画面中检测到少量人员活动。 数量统计共检测到2个目标物体均为人员。 情况分析当前场景人员数量很少分布稀疏属于正常低流量状态无异常聚集或滞留现象。 潜在问题与建议场景正常无需特别关注。建议持续例行监控即可。场景二繁忙的十字路口YOLOv8检测结果检测到12个‘person’ 8辆‘car’ 3辆‘truck’ 1辆‘bus’。Phi-3生成报告结果概览画面显示为一个交通繁忙的十字路口行人与车辆密集。 数量统计总计检测到24个目标物体。其中行人12名小汽车8辆卡车3辆公交车1辆。 情况分析交通流量处于高位行人数量较多需注意人行横道附近的交通秩序。车辆类型混合有大型车辆卡车、公交车通行。 潜在问题与建议存在行人安全风险及交通拥堵潜在可能。建议关注行人过街安全特别是大型车辆转弯盲区在高峰时段可考虑加强交通疏导。可以看到Phi-3不仅仅是将数字罗列出来。在第一个场景中它判断出“正常低流量”在第二个复杂场景中它能从“行人多”、“有大型车辆”这些信息中推导出“安全风险”和“拥堵可能”的潜在问题并给出了具体的关注建议。这种结合场景的推理能力正是我们想要的“分析”效果。5. 更进一步优化与扩展思路基本的流程跑通后我们可以根据实际需求把这个小工具变得更加强大和实用。1. 处理视频流上面的例子是针对单张图片的。在实际监控中我们需要处理视频流。思路很简单定期从视频流中抽帧比如每秒1帧对每一帧执行上述检测与分析流程然后将多份报告按时间顺序汇总就能生成一段时间内的综合活动报告。2. 融入更多上下文我们可以让提示词更“聪明”。比如在create_analysis_prompt函数中除了传入检测结果还可以传入场景的元数据python extra_context 时间下午5:30晚高峰。 地点学校正门路口。 prompt create_analysis_prompt(summary, image_contextf交通监控画面{extra_context})这样Phi-3在分析时就会知道“晚高峰”和“学校门口”这两个关键信息生成的报告可能会是“正值放学晚高峰学校门口行人学生密集需特别注意车辆礼让行人。”3. 定义更专业的分析逻辑对于特定领域我们可以定制更专业的提示词。例如在工业安全场景 “...请根据以下安全规范进行分析1. 检测到‘person’未佩戴‘hard hat’安全帽则视为违规。2. ‘fire’火或‘smoke’烟的出现视为紧急事件...” 这样Phi-3生成的报告就会直接指出“发现3名人员未佩戴安全帽违反安全规程建议立即提醒。”4. 输出结构化数据如果你需要将报告结果输入到其他系统可以要求Phi-3生成JSON格式的输出。在提示词中明确指示“请以JSON格式输出包含‘summary’ ‘count_by_class’ ‘anomalies’ ‘suggestions’四个字段。” 然后对输出文本进行解析即可。6. 写在最后把YOLOv8和Phi-3 Forest Laboratory结合的这个尝试给我的感觉是“112”。它不仅仅节省了我写报告的时间更重要的是让整个监控系统有了一点“思考”和“总结”的能力。从看到画面到理解画面里发生了什么、可能有什么问题这个过程完全自动化了。当然这只是一个起点。模型的分析能力完全取决于我们如何设计提示词以及我们给它的“知识”。你可以把它想象成一个非常得力的、不知疲倦的分析员而你的任务就是清晰地告诉它要看什么数据以及从什么角度去分析。如果你也在做计算机视觉相关的项目正在为海量的检测结果分析发愁不妨试试这个思路。从最简单的单张图片分析开始逐步扩展到视频流再加入你的业务逻辑。你会发现让AI来协助完成这部分工作整个项目的智能化水平会提升一个明显的台阶。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
Phi-3 Forest Laboratory 实战:基于YOLOv8的目标检测结果分析与报告生成
Phi-3 Forest Laboratory 实战基于YOLOv8的目标检测结果分析与报告生成最近在做一个智能安防的项目用YOLOv8做实时监控视频里的目标检测效果确实不错。但每次跑完模型看着满屏的检测框和一堆数字总得花不少时间去手动统计、分析再写报告。比如今天下午3点到4点画面里出现了多少人、多少辆车有没有异常聚集这些信息都得人工整理挺费时间的。我就想能不能让这个过程自动化一点检测是AI做的分析报告能不能也让AI来写正好手头有Phi-3 Forest Laboratory这个模型它在文本理解和生成上表现很灵活。于是我就琢磨着把YOLOv8的检测结果“喂”给Phi-3让它来帮我分析并生成一份结构清晰的报告。试了几次之后效果比预想的还要好整个工作流顺畅多了。这篇文章我就来分享一下这个结合了计算机视觉和自然语言处理的实战小项目。你会看到从一张带有检测结果的图片开始到最终得到一份包含目标统计、问题描述和建议的报告整个过程是如何实现的。即使你对这两个领域都不算特别熟悉跟着步骤走也能轻松复现。1. 场景与价值为什么需要自动报告生成在真正动手之前我们先聊聊为什么要把YOLOv8和Phi-3 Forest Laboratory组合在一起。这不仅仅是技术上的“炫技”而是为了解决实际工作中几个挺烦人的痛点。首先是效率问题。YOLOv8跑得飞快一秒钟能处理几十甚至上百张图片。但人眼去看这些结果再手动记录、分析速度就慢下来了。在需要快速响应的场景比如交通监控发现事故、仓库监控发现异常闯入时间就是关键。自动报告生成能把从“看到结果”到“理解情况”的时间压缩到最短。其次是标准化和一致性。不同的人写报告风格、侧重点可能都不一样。让AI来生成可以确保每次报告的格式、包含的信息维度都是统一的便于后续的归档、查询和对比分析。最后是信息挖掘。人看检测结果可能只关注最显眼的目标比如画面中央的人。但AI可以毫无遗漏地分析每一个检测框统计出总数、各类别的数量分布、平均置信度甚至能根据目标的位置关系推断出一些潜在问题比如“人群在入口处聚集可能存在拥堵风险”。这种深层次的洞察是手动分析容易忽略的。简单来说这个组合的价值在于让擅长“看”的YOLOv8和擅长“说”的Phi-3 Forest Laboratory各司其职形成一个从感知到认知的完整自动化闭环。你只需要提供原始的图片或数据最终得到的就是一份可以直接使用的、带分析的文本报告。2. 环境准备与工作流搭建要把想法落地我们得先把“舞台”搭好。这里的环境搭建分为两部分一是YOLOv8的目标检测环境二是Phi-3 Forest Laboratory的文本生成环境。为了让流程更清晰我画了一个简单的示意图graph TD A[输入原始图像或视频帧] -- B(YOLOv8 目标检测) B -- C{检测结果br边界框、类别、置信度} C -- D[结果解析与格式化] D -- E[构造给Phi-3的提示词] E -- F(Phi-3 Forest Laboratorybr分析与报告生成) F -- G[输出结构化检测报告]整个流程就像一条流水线原始图像经过YOLOv8处理变成结构化的检测数据这些数据被精心包装成一段“描述”送给Phi-3Phi-3理解这段描述后就能生成我们想要的报告。2.1 YOLOv8检测环境YOLOv8的安装和使用现在已经非常方便了。我们直接用pip安装Ultralytics这个包就行。pip install ultralytics安装完成后你可以用下面这段最简单的代码来跑一下检测看看环境是否正常。这里我们用一张包含行人和车辆的示例图片。from ultralytics import YOLO import cv2 # 加载预训练的YOLOv8模型这里用中等尺寸的模型 model YOLO(yolov8m.pt) # 进行目标检测 results model(street_scene.jpg) # 替换成你的图片路径 # 在图片上绘制检测结果 annotated_frame results[0].plot() # 显示结果如果你在Jupyter Notebook或本地有GUI环境 cv2.imshow(YOLOv8 Detection, annotated_frame) cv2.waitKey(0) cv2.destroyAllWindows() # 或者保存结果图片 cv2.imwrite(detected_street_scene.jpg, annotated_frame)运行成功后你会得到一张画满了检测框的图片。但对我们来说更关键的是results对象里包含的原始检测数据这些数据才是我们要传给Phi-3的“原料”。2.2 Phi-3 Forest Laboratory 文本生成环境Phi-3 Forest Laboratory 是一个轻量级但能力强大的语言模型。我们可以通过Hugging Face的Transformers库来调用它。首先安装必要的库pip install transformers torch然后用下面的代码加载模型和分词器。请注意模型名称可能需要根据你实际获取的模型进行调整。from transformers import AutoModelForCausalLM, AutoTokenizer model_name microsoft/Phi-3-mini-4k-instruct # 示例模型请使用Forest Laboratory对应名称 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypeauto, trust_remote_codeTrue) # 将模型移动到GPU如果可用 device cuda if torch.cuda.is_available() else cpu model.to(device)环境准备好之后最关键的一步来了如何把YOLOv8冷冰冰的检测数据变成Phi-3能理解的、富有信息量的“故事”3. 从检测框到分析报告核心实现步骤这一步是整个项目的核心。我们的目标是编写一个函数它接收YOLOv8的检测结果然后生成一份报告。这个过程可以分为三个子步骤。3.1 解析与提取YOLOv8结果YOLOv8的results对象包含了所有检测信息。我们需要把它们提取出来整理成结构化的数据比如每个目标是什么类别、位置在哪、置信度有多高。def parse_yolo_results(results): 解析YOLOv8的检测结果提取关键信息。 Args: results: YOLOv8模型预测返回的结果列表。 Returns: dict: 包含检测统计信息和详细检测列表的字典。 # 获取第一个结果假设单张图片输入 result results[0] # 初始化统计字典 detection_summary { total_objects: 0, objects_by_class: {}, detections: [] # 存储每个检测框的详细信息 } # 检查是否有检测框 if result.boxes is not None: boxes result.boxes detection_summary[total_objects] len(boxes) # 获取类别名称 class_names result.names for box in boxes: # 获取边界框坐标 (x1, y1, x2, y2) xyxy box.xyxy[0].tolist() # 获取置信度 conf box.conf[0].item() # 获取类别ID和名称 cls_id int(box.cls[0].item()) cls_name class_names[cls_id] # 更新按类别统计的数量 detection_summary[objects_by_class][cls_name] detection_summary[objects_by_class].get(cls_name, 0) 1 # 保存详细信息 detection_summary[detections].append({ class: cls_name, confidence: round(conf, 3), # 保留三位小数 bbox: [round(coord, 1) for coord in xyxy] # 坐标取一位小数 }) return detection_summary这个函数会返回一个字典里面清楚地记录了总共发现了多少个目标每个类别如‘person’ ‘car’各有多少个以及每个目标的具体信息。3.2 构造智能提示词有了结构化的数据我们不能直接扔给Phi-3。我们需要把这些数据“翻译”成一段自然语言描述并明确告诉Phi-3我们想要它做什么。这就是提示词工程。我们的提示词可以这样设计def create_analysis_prompt(detection_summary, image_context监控画面): 根据检测结果构造给Phi-3模型的提示词。 Args: detection_summary: parse_yolo_results函数返回的统计字典。 image_context: 图片的上下文描述如“仓库入口监控”、“十字路口交通摄像头”。 Returns: str: 构造好的提示词。 # 基础信息部分告诉模型检测结果 prompt f你是一个专业的图像分析助手。现在分析一段{image_context}的目标检测结果。\n\n prompt 检测结果如下\n prompt f- 总共检测到 {detection_summary[total_objects]} 个目标物体。\n for cls_name, count in detection_summary[objects_by_class].items(): prompt f- 其中 {cls_name} 有 {count} 个。\n # 如果检测到了具体目标可以添加一些详细信息示例避免过长 if detection_summary[detections]: prompt \n部分目标的详细信息类别 置信度\n # 只列举前5个作为示例 for i, det in enumerate(detection_summary[detections][:5]): prompt f 目标{i1}: {det[class]}, 置信度 {det[confidence]}\n # 明确指令部分告诉模型需要生成什么 prompt \n请根据以上检测结果生成一份简洁的分析报告报告需要包含以下部分\n prompt 1. 结果概览用一句话总结画面中主要有什么。\n prompt 2. 数量统计以清晰的方式重述各物体数量。\n prompt 3. 情况分析分析当前场景是否正常。例如如果‘人’特别多提示可能存在聚集如果‘车’在非机动车道提示可能违规。\n prompt 4. 潜在问题与建议基于分析指出潜在风险或给出简单建议。\n prompt \n报告要求语言精炼、专业直接开始报告内容不需要说“好的”或复述问题。 return prompt这个提示词做了几件事先给模型设定角色专业分析助手然后清晰地提供数据检测结果最后给出具体的、结构化的任务指令。这样Phi-3就能很好地理解我们的意图。3.3 调用Phi-3生成报告最后我们把构造好的提示词送给Phi-3让它来生成最终的报告。def generate_report_with_phi3(prompt, model, tokenizer, max_new_tokens300): 使用Phi-3模型生成分析报告。 Args: prompt: 构造好的提示词。 model: 加载好的Phi-3模型。 tokenizer: 对应的分词器。 max_new_tokens: 生成文本的最大长度。 Returns: str: 模型生成的报告文本。 # 编码输入 inputs tokenizer(prompt, return_tensorspt).to(model.device) # 生成文本 with torch.no_grad(): outputs model.generate( **inputs, max_new_tokensmax_new_tokens, do_sampleTrue, # 使用采样使生成结果更多样 temperature0.7, # 控制随机性0.7比较平衡 top_p0.9, ) # 解码输出并只提取新生成的部分跳过输入提示词 generated_ids outputs[0][inputs[input_ids].shape[1]:] report tokenizer.decode(generated_ids, skip_special_tokensTrue) return report把上面三个函数串起来我们就得到了一个完整的从图片到报告的管道# 1. YOLOv8检测图片 image_path your_image.jpg results model(image_path) # 2. 解析检测结果 summary parse_yolo_results(results) # 3. 构造提示词 prompt create_analysis_prompt(summary, image_context仓库仓储区域监控) # 4. 生成报告 analysis_report generate_report_with_phi3(prompt, model, tokenizer) print(*50) print(生成的检测分析报告) print(*50) print(analysis_report)4. 实战效果看看AI如何分析场景理论说再多不如看实际效果。我准备了两张有代表性的图片跑了一遍整个流程我们来看看Phi-3生成的分析报告怎么样。场景一安静的办公室走廊YOLOv8检测结果检测到2个‘person’。Phi-3生成报告结果概览监控画面中检测到少量人员活动。 数量统计共检测到2个目标物体均为人员。 情况分析当前场景人员数量很少分布稀疏属于正常低流量状态无异常聚集或滞留现象。 潜在问题与建议场景正常无需特别关注。建议持续例行监控即可。场景二繁忙的十字路口YOLOv8检测结果检测到12个‘person’ 8辆‘car’ 3辆‘truck’ 1辆‘bus’。Phi-3生成报告结果概览画面显示为一个交通繁忙的十字路口行人与车辆密集。 数量统计总计检测到24个目标物体。其中行人12名小汽车8辆卡车3辆公交车1辆。 情况分析交通流量处于高位行人数量较多需注意人行横道附近的交通秩序。车辆类型混合有大型车辆卡车、公交车通行。 潜在问题与建议存在行人安全风险及交通拥堵潜在可能。建议关注行人过街安全特别是大型车辆转弯盲区在高峰时段可考虑加强交通疏导。可以看到Phi-3不仅仅是将数字罗列出来。在第一个场景中它判断出“正常低流量”在第二个复杂场景中它能从“行人多”、“有大型车辆”这些信息中推导出“安全风险”和“拥堵可能”的潜在问题并给出了具体的关注建议。这种结合场景的推理能力正是我们想要的“分析”效果。5. 更进一步优化与扩展思路基本的流程跑通后我们可以根据实际需求把这个小工具变得更加强大和实用。1. 处理视频流上面的例子是针对单张图片的。在实际监控中我们需要处理视频流。思路很简单定期从视频流中抽帧比如每秒1帧对每一帧执行上述检测与分析流程然后将多份报告按时间顺序汇总就能生成一段时间内的综合活动报告。2. 融入更多上下文我们可以让提示词更“聪明”。比如在create_analysis_prompt函数中除了传入检测结果还可以传入场景的元数据python extra_context 时间下午5:30晚高峰。 地点学校正门路口。 prompt create_analysis_prompt(summary, image_contextf交通监控画面{extra_context})这样Phi-3在分析时就会知道“晚高峰”和“学校门口”这两个关键信息生成的报告可能会是“正值放学晚高峰学校门口行人学生密集需特别注意车辆礼让行人。”3. 定义更专业的分析逻辑对于特定领域我们可以定制更专业的提示词。例如在工业安全场景 “...请根据以下安全规范进行分析1. 检测到‘person’未佩戴‘hard hat’安全帽则视为违规。2. ‘fire’火或‘smoke’烟的出现视为紧急事件...” 这样Phi-3生成的报告就会直接指出“发现3名人员未佩戴安全帽违反安全规程建议立即提醒。”4. 输出结构化数据如果你需要将报告结果输入到其他系统可以要求Phi-3生成JSON格式的输出。在提示词中明确指示“请以JSON格式输出包含‘summary’ ‘count_by_class’ ‘anomalies’ ‘suggestions’四个字段。” 然后对输出文本进行解析即可。6. 写在最后把YOLOv8和Phi-3 Forest Laboratory结合的这个尝试给我的感觉是“112”。它不仅仅节省了我写报告的时间更重要的是让整个监控系统有了一点“思考”和“总结”的能力。从看到画面到理解画面里发生了什么、可能有什么问题这个过程完全自动化了。当然这只是一个起点。模型的分析能力完全取决于我们如何设计提示词以及我们给它的“知识”。你可以把它想象成一个非常得力的、不知疲倦的分析员而你的任务就是清晰地告诉它要看什么数据以及从什么角度去分析。如果你也在做计算机视觉相关的项目正在为海量的检测结果分析发愁不妨试试这个思路。从最简单的单张图片分析开始逐步扩展到视频流再加入你的业务逻辑。你会发现让AI来协助完成这部分工作整个项目的智能化水平会提升一个明显的台阶。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。