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博客