C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客
视觉多模态大模型 通义千问2.5-VL-72B
AI大模型能看懂图 看懂了后能干啥呢
如看懂图 让Agent 写代码 ,改作业,识别屏幕 标注等等。。。
据说是目前最好的免费图片识别框架 通义千文 免费开源大模型
GitHub - QwenLM/Qwen2.5-VL: Qwen2.5-VL is the multimodal large language model series developed by Qwen team, Alibaba Cloud.
食谱
食谱 | 描述 | 打开 |
---|---|---|
普遍认可 | 不仅可以识别动物、植物、人和景点,还可以识别汽车和商品等各种物体。 | |
强大的文档解析能力 | 文档的解析已经达到了更高的水平,不仅包括文本,还包括布局位置信息和我们的 Qwen HTML 格式。 | |
跨格式的精确对象接地 | 它使用绝对位置坐标,同时支持方框和点,允许定位和标记任务的多样化组合。 | |
通用 OCR 和关键信息提取 | 在自然场景和多种语言下提供更强的文本识别能力,支持多样化的关键信息提取需求。 | |
视频理解 | 更好的视频 OCR、长视频理解和视频接地。 | |
移动代理 | 定位并思考手机控制。 | |
计算机使用代理 | 定位和思考控制计算机和 Web。 |
文本+视图 理解
public async Task<IEnumerable<FaceItem>?> GetAnnotationAsync(string imagePath)
{var bytes = await File.ReadAllBytesAsync(imagePath);var chatHistory = new ChatHistory();chatHistory.AddSystemMessage("作为一名图像检测专家,你擅长精确的图像对象检测,以纯文本格式'x1,y1,x2,y2'提供坐标。");chatHistory.AddUserMessage([new TextContent("框出每一个人脸的位置(不包括身体),以json格式输出所有的坐标,只输出纯json字符,不要夹杂其它字符,并且标注性别(男/女)。"),new ImageContent(bytes, "image/jpeg")]);var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);if (reply.Content is null) return [];var jsonStr = Regex.Replace(reply.Content, @"^\s*```json|```\s*$", "", RegexOptions.Multiline).Trim();Console.WriteLine(jsonStr);return reply.Content is null ? [] : JsonSerializer.Deserialize<IEnumerable<FaceItem>>(jsonStr);
}
结果
[{"bbox_2d": [608, 79, 654, 130], "label": "女"},{"bbox_2d": [700, 74, 748, 130], "label": "女"},{"bbox_2d": [837, 74, 876, 128], "label": "女"},{"bbox_2d": [916, 68, 956, 128], "label": "男"},{"bbox_2d": [1110, 162, 1174, 224], "label": "女"},{"bbox_2d": [707, 338, 813, 438], "label": "女"},{"bbox_2d": [918, 424, 988, 512], "label": "男"},{"bbox_2d": [1002, 398, 1072, 512], "label": "女"},{"bbox_2d": [1080, 382, 1140, 464], "label": "女"},{"bbox_2d": [1116, 362, 1205, 512], "label": "女"},{"bbox_2d": [590, 578, 678, 672], "label": "女"},{"bbox_2d": [721, 584, 774, 646], "label": "女"},{"bbox_2d": [797, 622, 874, 672], "label": "女"}
]
代码
public class FaceCheckAgentWorker(FaceCheckAgent faceCheckAgent) : BackgroundService
{protected override async Task ExecuteAsync(CancellationToken stoppingToken){var imagePath = "Images/human1.jpg";var faceItems = await faceCheckAgent.GetAnnotationAsync(imagePath);if (faceItems == null) return;using var image = Image.FromFile(imagePath);using var bitmap = new Bitmap(image);foreach (var faceItem in faceItems){var color = faceItem.Label == "女" ? Color.Red : Color.Blue;MyDraw.DrawAnnotationBox(bitmap, faceItem.Box, faceItem.Label, color, 3);}var sampleDir = Path.Combine(Directory.GetCurrentDirectory(), "Output");var outputPath = Path.Combine(sampleDir, Path.GetFileName(imagePath));bitmap.Save(outputPath, ImageFormat.Jpeg);Console.WriteLine($"标注完成,已保存到: {outputPath}");}
}
效果
AI 改作业 并标注
public async Task<IEnumerable<HomeworkItem>?> GetAnnotationAsync(string imagePath){var bytes = await File.ReadAllBytesAsync(imagePath);var chatHistory = new ChatHistory();chatHistory.AddSystemMessage("""你是一个作业批改助手,请你标注出图片中的所有题(包括回答),并通过JSON返回批改结果。JSON格式的批改结果需要包含以下内容:- "q_box": 题目的bbox_2d边界框- "qc": 题目内容- "a_box": 回答的bbox_2d边界框- "ac": 回答内容- "is": 回答是否正确(布尔值,true或false)- 如果回答错误 在 "er"中详细说明错误情况示例如下:[{"q_box": [0, 0, 0, 0],"qc": "题目内容","a_box": [0, 0, 0, 0],"ac": "回答内容","is": false,"er": "如果回答错误,这里详细说明错误情况,没有错误可以不要该字段"}]""");chatHistory.AddUserMessage([new TextContent("批改作业"),new ImageContent(bytes, "image/png")]);var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);if (reply.Content is null) return [];var jsonStr = Regex.Replace(reply.Content, @"^\s*```json|```\s*$", "", RegexOptions.Multiline).Trim();Console.WriteLine(jsonStr);return reply.Content is null ? [] : JsonSerializer.Deserialize<IEnumerable<HomeworkItem>>(jsonStr);}
小老板们都表示 功能很牛逼。。。
C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客