在人工智能(AI)领域,图像识别技术日新月异,为各行各业带来了革命性的变革。作为一名.NET开发者,您是否想过如何利用现有的工具和库,构建一个能够识别图像内容的应用程序?本文将为您详细介绍如何使用.NET和Microsoft.Extensions.AI库,并结合Ollama模型,构建一个强大的图像识别应用。我们将深入探讨依赖注入、大型语言模型(LLM)的本地运行,以及如何使用.NET代码与之交互,从而实现高效且可定制的图像识别解决方案。 本文的目标读者是具备一定.NET开发经验,并且对人工智能和图像识别领域有浓厚兴趣的开发者。无论您是想为现有项目添加图像识别功能,还是希望探索AI在.NET平台上的应用,本文都将为您提供有价值的指导和实践经验。通过学习本文,您将能够掌握使用.NET构建AI应用的技能,并为未来的创新项目打下坚实的基础。本文将反复提及 .NET, AI, 图像识别, Microsoft.Extensions.AI库, Ollama, 依赖注入, 大型语言模型, 本地运行 等关键词,以提升SEO效果。
利用.NET和Microsoft.Extensions.AI库构建图像识别应用程序。
集成Ollama模型,实现本地化的大型语言模型运行。
理解并应用依赖注入,提高代码的可维护性和可测试性。
掌握使用.NET代码与大型语言模型交互的方法。
探索图像识别在各种实际应用场景中的潜力。
了解如何优化模型性能和识别结果。
首先,我们需要创建一个基础的.net控制台应用程序,作为我们图像识别项目的起点。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

这个应用将使用Microsoft.Extensions.Hosting库,以便我们可以配置服务和使用依赖注入容器。依赖注入容器允许我们在应用程序的不同部分之间轻松地共享和管理对象,这对于构建可维护和可测试的代码至关重要。
依赖注入的重要性
依赖注入是一种设计模式,它允许我们从组件中分离其依赖项。这有助于提高代码的灵活性、可测试性和可维护性。通过使用依赖注入,我们可以轻松地替换组件的依赖项,而无需修改组件本身的代码。
Microsoft.Extensions.Hosting库
Microsoft.Extensions.Hosting库提供了一种简单而强大的方法来构建和管理.NET应用程序。它提供了一个主机构建器,允许我们配置应用程序的服务、日志记录和配置。
以下是构建基础.NET控制台应用程序的步骤:
Program.cs文件中,使用主机构建器配置应用程序的服务。using Microsoft.Extensions.Hosting; var builder = Host.CreateApplicationBuilder(); var app = builder.Build(); app.Run();
这段代码创建了一个新的主机构建器,并使用它来构建应用程序。然后,它调用app.Run()方法来启动应用程序。
接下来,我们需要引入Microsoft.Extensions.AI库,该库提供了一系列用于构建AI应用程序的工具和组件。

请注意,Microsoft.Extensions.AI库目前仍处于预览阶段,因此您需要包含预发布版本才能使用它。此外,还需要安装 Microsoft.Extensions.AI.Ollama库,以便可以和Ollama模型进行交互。
安装Microsoft.Extensions.AI NuGet包
可以通过NuGet包管理器安装该库。在Visual Studio中,右键单击项目,选择“管理NuGet包”,然后搜索“Microsoft.Extensions.AI”并安装。
安装Microsoft.Extensions.AI.Ollama NuGet包
可以使用命令 Install-Package Microsoft.Extensions.AI.Ollama -Version 9.0.0-preview.2.25114.11进行安装
安装完成后,您就可以在应用程序中使用Microsoft.Extensions.AI库了。
Ollama是一个轻量级的框架,允许我们在本地机器上运行大型语言模型(LLM)。

这对于开发和测试AI应用程序非常有用,因为它无需依赖云服务或远程API。Ollama支持多种LLM,包括Llama 3.3, DeepSeek-R1, Phi-4, Mistral, Gemma 2等。
Ollama的优势
Ollama模型选择
Ollama模型库提供了多种模型,包括文本生成、图像识别等。为了进行图像识别,我们需要选择支持视觉(Vision)的模型。在Ollama的模型页面上,您可以找到各种可用的视觉模型。其中,LLaVA是一个流行的选择,它结合了视觉编码器和语言模型,可以理解图像内容并生成描述。
在.NET应用中配置Ollama客户端
在.NET应用中配置Ollama客户端需要以下步骤:
builder.Services.AddChatClient(new OllamaChatClient(new Uri("http://localhost:11434"), "llava:7b"));这段代码将Ollama客户端注册到依赖注入容器中,并指定Ollama服务运行在http://localhost:11434,使用的模型是llava:7b。
通过集成Microsoft.Extensions.AI库和Ollama,我们现在可以开始编写代码,实现图像识别功能。

首先,我们需要创建一个ChatClient实例,然后创建一个包含图像数据和提示的ChatMesssage对象。
以下是实现图像识别的代码示例:
var chatClient = app.Services.GetRequiredService<ChatClient>();
var message = new ChatMessage(ChatRole.User, "What's in this image?");
message.Contents.Add(new DataContent(File.ReadAllBytes("images/traffic_cam_1.png"), "image/png"));
var response = await chatClient.GetResponseAsync(message);
Console.WriteLine(response.Message.Text);这段代码首先从依赖注入容器中获取ChatClient实例。然后,它创建一个新的ChatMessage对象,并将提示设置为“What's in this image?”。接下来,它将图像数据添加到ChatMessage对象的内容中,并将媒体类型指定为“image/png”。最后,它调用chatClient.GetResponseAsync(message)方法将消息发送到Ollama模型,并将响应打印到控制台。
为了获得更有用的结果,我们可以使用结构化的提示来指导LLM的响应。

例如,我们可以要求LLM以JSON格式返回图像中检测到的对象列表。要获得结构化的LLM反馈,您需要定义一个响应的数据结构,并且在Prompt提示LLM按照响应的数据结构生成反馈信息。
为了获得图像的结构化信息,我们可以定义数据结构 TrafficCamResult
public record TrafficCamResult
{
public string CameraName { get; set; }
[JsonConverter(typeof(JsonStringEnumConverter))]
public TrafficStatus Status { get; set; }
public int NumberOfCars { get; set; }
public int NumberOfTrucks { get; set; }
public int NumberOfPedestrians { get; set; }
}
public enum TrafficStatus
{
Empty,
Normal,
Heavy,
Blocked
}定义 prompt,并提示LLM按照 TrafficCamResult 的结构返回,在.NET中可以将响应映射为 TrafficCamResult 对象
Extract information from this image from camera {name}.
The image from the camera may be blurry, so take that into account when extracting information.
Pay extra attention to columns of cars and try to accurately count the number of cars.
And pay extra-special attention to pedestrians, as we want to make sure that we spot them.使用模型对所有图像进行分析
Directory.GetFiles("images", "*.png").ToList().ForEach(filePath =>
{
var name = Path.GetFileNameWithoutExtension(filePath);
var message2 = new ChatMessage(ChatRole.User, @"Extract information from this image from camera {name}.
The image from the camera may be blurry, so take that into account when extracting information.
Pay extra attention to columns of cars and try to accurately count the number of cars.
And pay extra-special attention to pedestrians, as we want to make sure that we spot them.");
message2.Contents.Add(new DataContent(File.ReadAllBytes(filePath), "image/png"));
TrafficCamResult trafficCamResult = await chatClient.GetResponseAsync<TrafficCamResult>(message2);
Console.WriteLine(trafficCamResult.Result with { CameraName = name });
});利用本文介绍的图像识别技术,我们可以构建智能交通管理系统,从而实现交通流量监控、拥堵预警、事故检测等功能。通过分析摄像头拍摄的图像,系统可以实时获取道路上的车辆数量、类型和速度等信息,并根据这些数据进行交通流量预测和拥堵预警。

此外,系统还可以检测交通事故,并自动向相关部门发出警报,从而提高响应速度和救援效率。
智能交通管理系统可以应用于城市道路、高速公路、桥梁隧道等各种交通场景,为交通管理部门提供决策支持,优化交通资源配置,提高交通运输效率,减少交通事故,改善城市交通状况。
图像识别技术在安全监控领域也有着广泛的应用前景。例如,我们可以构建智能监控系统,通过分析监控摄像头拍摄的图像,自动检测异常行为、入侵事件和安全隐患。系统可以识别人脸、物体和行为,并根据预设的规则进行判断和报警。
智能监控系统可以应用于社区、商场、银行、机场等各种安全场景,提高安全防范能力,减少犯罪事件的发生,保障人民群众的生命财产安全。
在零售行业,图像识别技术可以用于构建智慧零售系统,从而实现商品识别、客流分析、顾客行为分析等功能。通过分析摄像头拍摄的图像,系统可以自动识别商品,记录顾客的购买行为,并根据这些数据进行商品推荐和营销活动。
智慧零售系统可以应用于超市、商场、便利店等各种零售场景,提高运营效率,改善顾客体验,增加销售额。
访问Ollama官方网站(https://ollama.com/)下载并安装适合您操作系统的Ollama版本。 Ollama支持 macOS、Linux 和 Windows,您可以根据您的开发环境选择合适的安装包。
安装完成后,打开终端或命令提示符,输入ollama run llava:7b命令来运行LLaVA模型。Ollama将自动下载模型文件并启动服务。
指定不同的LLaVA模型
请务必指定LLaVA 7b模型,因为后续的教程会直接使用,如果您想使用其他模型,请自行修改名称,Ollama网站(https://ollama.com/)也提供了多个不同量级的模型供选择
注意:模型文件较大,下载需要一定时间,请耐心等待。
模型启动成功后,您就可以在.NET应用程序中使用Ollama客户端与之交互了。
Microsoft.Extensions.AI 库本身是免费的,因为它是一个开源库,由 Microsoft 提供。您可以免费使用它来构建您的 AI 应用程序,而无需支付任何许可费用。
Ollama 也是免费的,因为它是一个开源框架,允许你在本地运行大型语言模型。然而,你需要考虑到运行 Ollama 模型所需的硬件资源。大型语言模型可能需要大量的内存和计算能力,这可能会增加你的硬件成本。
以下是运行 Ollama 模型的一些硬件建议:
充分利用.NET生态系统的强大功能和丰富的库。
利用依赖注入提高代码的可维护性和可测试性。
通过Ollama在本地运行大型语言模型,降低延迟和数据隐私风险。
利用Microsoft.Extensions.AI库简化AI应用程序的开发过程。
? ConsMicrosoft.Extensions.AI库目前仍处于预览阶段,API可能会发生变化。
本地运行大型语言模型需要大量的硬件资源。
Ollama模型的图像识别能力可能不如云服务或远程API提供的模型。
以下是Microsoft.Extensions.AI库的一些核心功能:
以下是 Ollama 的一些核心功能:
Microsoft.Extensions.AI库可以用于构建各种AI应用程序,包括:
Ollama可以用于各种需要大型语言模型的场景,包括:
Microsoft.Extensions.AI库是否免费?
是的,Microsoft.Extensions.AI库是免费的,因为它是一个开源库,由 Microsoft 提供。你可以免费使用它来构建你的 AI 应用程序,而无需支付任何许可费用。
Ollama是否免费?
是的,Ollama 也是免费的,因为它是一个开源框架,允许你在本地运行大型语言模型。然而,你需要考虑到运行 Ollama 模型所需的硬件资源。大型语言模型可能需要大量的内存和计算能力,这可能会增加你的硬件成本。
运行Ollama需要什么样的硬件?
运行 Ollama 模型需要以下硬件建议:内存:至少 16GB RAM,建议 32GB 或更多;处理器:具有多个核心的现代处理器;GPU:具有大量显存的 NVIDIA GPU 可以显著提高性能。
如何选择合适的Ollama模型?
在 Ollama 的模型页面上,你可以找到各种可用的模型。为了进行图像识别,你需要选择支持视觉(Vision)的模型。其中,LLaVA是一个流行的选择,它结合了视觉编码器和语言模型,可以理解图像内容并生成描述。
如何在.NET中使用OpenAI进行图像识别?
除了Ollama,您还可以使用OpenAI的API进行图像识别。OpenAI提供了一系列强大的图像识别模型,可以实现更高级的功能,例如物体检测、场景理解等。要在.NET中使用OpenAI,您需要安装OpenAI的.NET客户端库,并获取API密钥。然后,您可以使用该库调用OpenAI的API,将图像数据发送到云端进行分析。 需要注意的是,使用OpenAI的API需要支付一定的费用,具体价格取决于您使用的模型和API调用量。此外,由于图像数据需要上传到云端,因此需要考虑到数据隐私和安全性。 // 这只是一个示例,实际代码可能需要进行修改 var openai = new OpenAIAPI("YOUR_API_KEY"); var result = await openai.ImageAnalysis.AnalyzeImageAsync(imageData); Console.WriteLine(result.Description);
如何在.NET中使用Azure认知服务进行图像识别?
Azure认知服务提供了一系列云端AI服务,包括计算机视觉、人脸识别、文本分析等。您可以使用Azure认知服务提供的API,将图像数据发送到云端进行分析。 Azure 认知服务能够更有效的识别图像质量较差的内容。 与 OpenAI 类似,使用 Azure 认知服务也需要支付一定的费用,并考虑到数据隐私和安全性。 // 这只是一个示例,实际代码可能需要进行修改 string endpoint = "YOUR_ENDPOINT"; string key = "YOUR_KEY"; var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(key)) { Endpoint = endpoint }; using (var stream = File.OpenRead("image.jpg")) { var result = await client.AnalyzeImageInStreamAsync(stream, visualFeatures); Console.WriteLine(JsonConvert.SerializeObject(result)); }
以上就是使用.NET和AI进行图像识别:Ollama集成教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号