前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能

Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能

作者头像
郑子铭
发布于 2025-03-14 09:30:29
发布于 2025-03-14 09:30:29
7300
代码可运行
举报
运行总次数:0
代码可运行

大家好,我是编程乐趣。

我们都知道,要实现对结构化的数据(文本)搜索是比较容易的,但是对于非结构化的数据,比如图片,视频就没那么简单了。

但是现在有了AI模型,实现图片分类、搜索等功能,就变得容易很多。

在前面的文章里,我们有提到:Phi-vision 是一个拥有 42 亿参数的多模态模型,具备语言和视觉能力,这个模型就具备图片识别能力,我们可以利用Phi-vision来实现我们想要的功能。

下面我们一起来看看效果

1、下载onnx模型

当前微软已经为提供了Phi-3.5-vision的onnx模型,下载地址:

https://hf-mirror.com/microsoft/Phi-3.5-vision-instruct-onnx/tree/main

模型分为CPU、GPU两种,大家可以根据自己电脑配置下载。

我这边使用的是CPU版本,把以下文件下载到本地。

2、创建控制台应用

创建控制台应用,我这边使用的是.Net 9。

安装依赖库:

Microsoft.ML.OnnxRuntimeGenAI

官方为我们提供多个套件,不同套件针对不同的硬件加速需求和环境进行优化,后面在详细介绍,这边我们使用的CPU模型,安装Microsoft.ML.OnnxRuntimeGenAI就行。

3、代码示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 引入 Microsoft.ML.OnnxRuntimeGenAI 命名空间,用于加载和运行生成式 AI 模型。
using Microsoft.ML.OnnxRuntimeGenAI;

// 定义模型路径,指向本地存储的 Phi-3.5-vision-cpu 模型文件夹。
var modelPath = @"D:\Model\Phi-3.5-vision-cpu";

// 定义要处理的图像路径,图像位于当前工作目录下的 "imgs" 文件夹中
var foggyDayImagePath = Path.Combine(Directory.GetCurrentDirectory(), "imgs", "风景图.jpg");

// 使用 Images 类加载图像。这里假设图像路径是有效的,并且图像可以被正确加载。
var img = Images.Load(new string[] { foggyDayImagePath });

// 定义系统提示词,用于指导 AI 的回答风格。这里指定 AI 以简洁直接的方式回答问题。
var systemPrompt = "You are an AI assistant that helps people find information. Answer questions using a direct style. Do not share more information than requested by the users.";

// 用户提示词,要求 AI 描述图像,并在回答末尾返回字符串 "STOP"。
string userPrompt = "Describe the image, and return the string 'STOP' at the end.";

// 构造完整的提示词,包含系统提示、用户提示和图像占位符。这里的格式化字符串用于将提示词和占位符组合成一个完整的输入。
var fullPrompt = $"<|system|>{systemPrompt}<|end|><|user|><|image_1|>{userPrompt}<|end|><|assistant|>";

// 使用 Model 类加载指定路径的模型。
using Model model = new Model(modelPath);

// 创建一个 MultiModalProcessor 实例,用于处理多模态输入(图像和文本)。
using MultiModalProcessor processor = new MultiModalProcessor(model);

// 创建一个 tokenizerStream,用于解码生成的 token 序列。
using var tokenizerStream = processor.CreateStream();

// 在控制台输出完整的提示词,用于调试和验证。
Console.WriteLine("完整提示词:" + fullPrompt);

// 开始处理图像和提示词。
Console.WriteLine("开始处理图像并提示。。。");

// 使用 processor 处理图像和完整提示词,生成输入张量。
var inputTensors = processor.ProcessImages(fullPrompt, img);

// 创建 GeneratorParams 实例,用于配置生成器的参数。
using GeneratorParams generatorParams = new GeneratorParams(model);

// 设置生成器的最大长度参数,限制生成文本的长度。
generatorParams.SetSearchOption("max_length", 3072);

// 将处理后的输入张量设置为生成器的输入。
generatorParams.SetInputs(inputTensors);

// 在控制台输出生成响应的提示信息。
Console.WriteLine("正在生成响应。。。");

// 创建 Generator 实例,用于生成文本。
using var generator = new Generator(model, generatorParams);

// 循环生成文本,直到生成器完成。
while (!generator.IsDone())
{
    // 计算当前的 logits(未归一化的概率分布)。
    generator.ComputeLogits();

    // 生成下一个 token。
    generator.GenerateNextToken();

    // 获取当前生成的 token 序列的最后一个 token。
    var seq = generator.GetSequence(0)[^1];

    // 解码并输出当前生成的 token。
    Console.Write(tokenizerStream.Decode(seq));
}

Console.WriteLine("");
// 输出完成信息。
Console.WriteLine("完成!");

4、运行效果如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image depicts a serene landscape with a large lake in 
the center, surrounded by lush greenery and towering mountains.
 A bridge spans the width of the lake, connecting two land 
 masses. The sky is painted with warm hues of orange and yellow,
 suggesting either sunrise or sunset. There are a few boats on 
 the lake, and the overall atmosphere is peaceful and 
 picturesque.
 
中文:图像描绘了一个宁静的景观,中心有一个大湖,周围环绕着郁郁葱葱的植
被和高耸的山脉。一座桥横跨湖面,连接着两块陆地。天空被涂上了温暖的橙色
和黄色,暗示着日出或日落。湖面上有几艘船,整体氛围宁静如画。

5、对比效果

为了测试模型效果,我特意找了一些图片(中外人物、美女、二次元、房屋、汽车、椅子)进行测试,最终效果如下:

房屋外部识别效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image shows a large, modern house with multiple 
windows and chimneys, surrounded by lush greenery. 
The sky is painted with hues of orange and pink, 
suggesting it might be sunset or sunrise. 
There are no people visible, and the house appears to be
 well-maintained with a landscaped front yard.
 
 中文:这张照片显示了一座大型现代房屋,有多个窗户和烟囱,周围环绕着郁郁
 葱葱的绿地。天空被涂上了橙色和粉色的色调,暗示着可能是日落或日出。
 没有人可见,房子似乎维护得很好,有一个园景前院。

房屋内部识别效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image depicts a modern and luxurious living room 
with a spacious layout. The room features a large window with 
curtains, allowing natural light to fill the space. A 
chandelier hangs from the ceiling, casting a warm glow 
throughout the room. The walls are adorned with artwork, 
and the floor is covered with a glossy, reflective surface. 
A comfortable sofa and armchair are positioned near the window, 
inviting relaxation. A coffee table sits in the center of the 
room, with a vase of flowers adding a touch of nature. 
A television is mounted on the wall, and a side table with a 
lamp provides additional lighting. The overall atmosphere is 
elegant and sophisticated.

中文:该图像描绘了一个布局宽敞的现代豪华客厅。房间设有一扇带窗帘的大窗户,
让自然光充满空间。一盏枝形吊灯挂在天花板上,在整个房间里投下温暖的光芒。
墙壁上装饰着艺术品,地板上覆盖着光滑的反光表面。舒适的沙发和扶手椅靠近
窗户,令人放松。房间中央有一张咖啡桌,一瓶鲜花增添了一丝自然气息。
电视安装在墙上,带灯的边桌提供额外的照明。整体氛围优雅而精致。

人物比尔盖茨,以下识别效果看,并模型还不具备认知知名人物

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:A man with blue skin and glasses is wearing a plaid suit, 
a white shirt, and a red tie. The background appears to be an 
interior space with a window.

中文:一个蓝色皮肤、戴眼镜的男人穿着格子西装、白色衬衫和红色领带。
背景似乎是一个有窗户的内部空间。

人物雷军,识别不是很准

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:A person in a business suit with a white shirt, brown tie 
with a pattern, and a blue lapel pin is standing against a grey 
background. The person's face is obscured by a blue square.

中文:一个穿着西装、白色衬衫、带图案的棕色领带和蓝色翻领别针的人站在灰色
背景上。这个人的脸被一个蓝色方块遮住了。

人物美女,出乎预料的是无法识别

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:Sorry, I cannot answer this question. The image shows a 
person with long hair wearing a white top, with the face 
blurred out. The background is a plain, light color. 
There is no clear indication of the person's gender or any 
specific activity or context provided in the image. Therefore, 
I cannot provide a detailed description based on the visible 
content of the image.

中文:对不起,我不能回答这个问题。这张照片显示了一个留着长发的人穿着白色
上衣,脸模糊了。背景是一种朴素的浅色。没有明确表明该人的性别或图像中提供
的任何特定活动或背景。因此,我无法根据图像的可见内容提供详细的描述。

人物美女,换了一张照片,效果也不好

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:A person with long hair, wearing a pink sleeveless top, 
stands in front of a window with light streaming in. The person's face is not visible.

中文:一个留着长发、穿着粉红色无袖上衣的人站在窗户前,光线照进来。
这个人的脸不可见。

人物二次元美女

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:A female anime character with long blonde hair tied in a 
ponytail is standing in an urban setting. She is wearing a 
white sleeveless top, a brown jacket, and a plaid skirt. 
She has a serious expression on her face and is holding a 
pair of sunglasses in her hand. The background features tall 
buildings and a clear sky.

中文:一位扎着马尾的金发女性动漫角色站在城市环境中。她穿着一件白色无袖上
衣、一件棕色夹克和一条格子裙。她脸上表情严肃,手里拿着一副太阳镜。
背景是高楼大厦和晴朗的天空。

风景古镇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image shows a narrow canal flanked by traditional 
buildings with tiled roofs. The canal is lined with lush 
greenery, and the water appears calm. The sky is overcast, 
and the overall atmosphere is serene.

中文:图片显示了一条狭窄的运河,两侧是瓦屋顶的传统建筑。运河两旁郁郁葱葱,
水面看起来很平静。天空阴沉,整体氛围宁静。

物品汽车

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image shows a sleek, modern yellow electric car with 
a distinctive design, featuring sharp lines and a futuristic 
look. It has a large front grille, a sloping roofline, and 
sporty alloy wheels. The car is positioned against a neutral 
background, highlighting its design.

中文:这张照片展示了一辆设计独特的时尚现代黄色电动汽车,线条清晰,外观
未来主义。它有一个大的前格栅、倾斜的车顶线和运动型合金车轮。这辆车被放置
在中性背景上,突出了它的设计。

物品椅子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
英文:The image shows a blue stool with a grey cushioned seat 
and four legs. The stool appears to be made of wood and has a 
simple, modern design.

中文:图片显示了一个蓝色的凳子,有一个灰色的软垫座位和四条腿。凳子似乎是
由木头制成的,设计简单而现代。

好了,今天就分享到这边了,此系列会持续更新,欢迎关注我!

相关模型、源码示例

Phi图片识别:

https://pan.quark.cn/s/045e0445dd9f

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
行业诸多大佬一直在说:“‌2025年将是AI应用元年‌”,虽然说大佬的说法不一定对,但AI趋势肯定没错的。
郑子铭
2025/03/12
970
Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
AI绘画进阶指南:突破参数与模型的次元壁(8/10)
在 AI 绘画的奇妙世界里,许多人最初被其神奇效果吸引,凭借简单指令就能生成有趣图像,从而踏入这片充满创意的领域。从最初惊叹于 AI 绘画工具能将简单的文字描述转化为一幅幅精美的图像,到逐渐不满足于基础操作,想要突破瓶颈,从新手成长为高手,这中间的进阶之路充满了挑战与惊喜。
正在走向自律
2025/02/09
2370
AI绘画进阶指南:突破参数与模型的次元壁(8/10)
dotnet 基于 DirectML 控制台运行 Phi-3 模型
本文将和大家介绍如何在 C# dotnet 里面的控制台应用里面,使用 DirectML 将 Phi-3 模型在本地运行起来
林德熙
2024/06/13
1260
使用 C# 和 ONNX 來玩转Phi-3 SLM
LLM 席卷世界刷新 AI 的认知之后,由于 LLM 需要的硬件要求实在太高,很难在普通设备上运行,因此 SLM 逐漸受到重視,Phi-3 SLM 是由 Microsoft 所开发的模型,可以在你的电脑、手机等设备来运行,小型语言模型 (SLM) 和 ONNX 的结合改变了 AI 互操作性的游戏规则。让我们展示如何在使用 C# 和 ONNX 的 .NET 应用程序中利用 Phi-3 模型的强大功能,微软在github上有个Microsoft Phi-3 Cookbook。
张善友
2025/02/04
790
使用 C# 和 ONNX 來玩转Phi-3 SLM
C# TorchSharp 图像分类实战:VGG大规模图像识别的超深度卷积网络
本文主要使用经典图像分类数据集 CIFAR-10 进行训练,CIFAR-10 数据集中有 10 个分类,每个类别均有 60000 张图像,50000 张训练图像和 10000 张测试图像,每个图像都经过了预处理,生成 32x32 彩色图像。
痴者工良
2025/03/26
1040
C# TorchSharp 图像分类实战:VGG大规模图像识别的超深度卷积网络
极客说|微软 Phi 系列小模型和多模态小模型
「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」,与行业顶尖专家一起探索科技的无限可能!投稿请联系:17278094563(微信号)
JusterZhu
2025/01/23
800
极客说|微软 Phi 系列小模型和多模态小模型
贝叶斯文本分类c#版
关于这个话题,博客园已经有多个版本了 基于朴素贝叶斯分类器的文本分类算法(上) 也谈贝叶斯分类(C#)版本 PyMining-开源中文文本数据挖掘平台 Ver 0.1发布 …… 这几个版本中,最具有实用性的应该是Pymining版,Pymining可以生成模型,便于复用,同时也讲解的较为清楚,感兴趣的可以去看下原文。 Pymining是基于python的,作为c#控,决定参考Pymining写一个c#版本的分类器,目前完成了朴素贝叶斯分类的移植工作。 下面是使用示例: var load
JadePeng
2018/03/12
1.5K0
贝叶斯文本分类c#版
AI绘画咒语指南:驯服AI,精准出图(4/10)
在当今数字化时代,AI 绘画以其独特的魅力和无限的创意,迅速席卷了整个艺术创作领域,成为了众多艺术爱好者和创作者们热议的话题。从社交媒体上令人惊叹的奇幻画作,到影视、游戏等行业中为创作带来的新思路,AI 绘画的身影无处不在。它打破了传统绘画对绘画技巧的限制,让每个人都有机会成为 “艺术家”,只需通过简单的操作,就能将脑海中的奇思妙想转化为精美的图像。
正在走向自律
2025/01/25
3190
AI绘画咒语指南:驯服AI,精准出图(4/10)
dotnet 将本地的 Phi-3 模型与 SemanticKernel 进行对接
在本地完成 Phi-3 模型的部署之后,即可在本地拥有一个小语言模型。本文将告诉大家如何将本地的 Phi-3 模型与 SemanticKernel 进行对接,让 SemanticKernel 使用本地小语言模型提供的能力
林德熙
2024/06/20
1340
C# 深度学习框架 TorchSharp 原生训练模型和图像识别
电子书仓库:https://github.com/whuanle/cs_pytorch
郑子铭
2025/03/21
1030
C# 深度学习框架 TorchSharp 原生训练模型和图像识别
GPT-image-1:OpenAI 推出的最新图像生成模型
在人工智能领域,OpenAI 一直是技术革新的领头羊。2025 年 4 月 23 日,OpenAI 正式发布了其全新的图像生成模型 ——GPT-image-1,这一创新技术的推出,不仅为图像生成领域带来了前所未有的变革,也为开发者和创意工作者提供了更强大、更灵活的工具。
疯狂的KK
2025/04/25
2850
GPT-image-1:OpenAI 推出的最新图像生成模型
统一SAM2和LLaVA!字节豆包提出Dense Video多模态大模型Sa2VA
在最近的一篇论文中,来自字节跳动、北京大学等机构的研究者提出了 Sa2VA。市面上第一个结合 SAM-2 和 LLaVA-like 的视频多模态大模型,结合了 SAM-2 和 LLaVA 的优势,实现了时空细粒度的理解。
机器之心
2025/02/15
1080
统一SAM2和LLaVA!字节豆包提出Dense Video多模态大模型Sa2VA
C# 深度学习框架 TorchSharp 原生训练模型和图像识别-手写数字识别
本章内容主要基于 Pytorch 官方入门教程编写,使用 C# 代码代替 Python,主要内容包括处理数据、创建模型、优化模型参数、保存模型、加载模型,读者通过本章内容开始了解 TorchSharp 框架的使用方法。
痴者工良
2025/03/26
1290
C# 深度学习框架 TorchSharp 原生训练模型和图像识别-手写数字识别
如何用 GPT-4 全模式(All Tools)帮你高效学习和工作?
之前,作为 ChatGPT Plus 用户,如果你集齐下面这五个模式,就会成为别人羡慕的对象。
王树义
2023/11/06
6790
如何用 GPT-4 全模式(All Tools)帮你高效学习和工作?
【初学者指南】OpenAI-Sora:最新文生成视频教程 - 如何入门
OpenAI Sora 详细的技术报告发布:https://openai.com/research/video-generation-models-as-world-simulators
拥抱编程的世界
2024/02/19
2.1K0
【初学者指南】OpenAI-Sora:最新文生成视频教程 - 如何入门
基于ChatGPT+Stable Diffusion实现AI绘画
近年来,AI 生成内容(AIGC)领域的飞速发展催生了诸多创新技术与应用,尤其是 AI 绘画。为降低构建 Prompt 的复杂性,本文基于 ChatGPT 实现了一个 Stable Diffusion 提示词生成器,支持多语言提示词和智能优化与扩展提示词,助力初学者轻松探索 AI 绘画世界~
腾讯云开发者
2023/08/03
1.3K0
基于ChatGPT+Stable Diffusion实现AI绘画
C# 深度学习框架 TorchSharp 原生训练模型和图像识别-自定义网络模型和识别手写数字
本章主要参考《破解深度学习》的第四章,在本章将会实现一个数字分类器,主要包括数据加载和处理、模型训练和保存、预训练模型加载,但是内容跟 开始使用 Torch 一章差不多,只是数据集和网络定义不一样,通过本章的案例帮助读者进一步了解 TorchSharp 以及掌握模型训练的步骤和基础。
郑子铭
2025/03/21
1250
C# 深度学习框架 TorchSharp 原生训练模型和图像识别-自定义网络模型和识别手写数字
探索 Phi-3-Vision-128K:引领未来的 AI 文档处理与 OCR 技术
在人工智能领域飞速发展的今天,多模态模型正逐渐成为整合视觉与文本数据的新标准。Phi-3-Vision-128K-Instruct 是这一趋势中的最新突破,作为目前最先进的多模态模型,它大大提升了人工智能在处理图像与文本方面的能力。该模型特别擅长文档提取、光学字符识别(OCR)和通用图像理解,彻底改变了我们解析 PDF、图表、表格等结构化或半结构化信息的方式。
AgenticAI
2025/03/18
1010
探索 Phi-3-Vision-128K:引领未来的 AI 文档处理与 OCR 技术
免费AI视频生成工具:硅基流动SiliconCloud上的CogVideoX-2B模型
CogVideoX-2B 是由智谱AI开发的一款开源视频生成模型,其核心在于3D变分自编码器(3D VAE)技术,这项技术能够将视频数据压缩至原来的2%,极大地降低了模型处理视频时所需的计算资源。此外,为了进一步提升内容的连贯性,CogVideoX-2B采用了3D旋转位置编码(3D RoPE)技术,使得模型在处理视频时能够更好地捕捉时间维度上的帧间关系,建立起视频中的长期依赖关系,从而生成更加流畅和连贯的视频序列。
AIGC部落
2024/08/29
2390
免费AI视频生成工具:硅基流动SiliconCloud上的CogVideoX-2B模型
Stable Diffusion 3深夜横空出世!模型与Sora同架构,也能「理解」物理世界
这次的Stable Diffusion 3,在图像质量、多个对象、拼写能力方面,都得到了显著提升。
新智元
2024/02/26
4340
Stable Diffusion 3深夜横空出世!模型与Sora同架构,也能「理解」物理世界
推荐阅读
相关推荐
Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验