20浏览
查看: 20|回复: 0

[AI人工智能教程] 基于LattePanda Sigma(x86 SBC/单板机)的AI边缘计算:用ollama...

[复制链接]
本帖最后由 呆呆呆呆 于 2025-9-10 12:02 编辑

如何利用x86单板机LattePanda Sigma(x86 SBC/单板机)+Intel 结合mini-cpm-vqwen2.5vl视觉模型,将18000产品图片中实现alt文本自动生成与SEO优化。从而提升网站SEO表现的真实应用案例。分享了技术原理、实施步骤、AB测试方法、性能数据和常见问题,帮助企业理解基于单板机的AI边缘计算在SEO中的价值。平均点击率从0.5%提高的0.7%、平均排名从30.8 提高到18.4。这里面我们有对图片添加了结构化数据



通过AI生成的alt属性,GSC 平均点击率从0.5%提高的0.7%、平均排名从30.8 提高到18.4



背景
我在分析网站时发现了一个巨大的问题:我们大约有3000个产品页面,每个产品大约有6张图片,总计接近18000张图像,其中95%以上没有设置alt属性。人工补齐 18 k 条 Alt 按 60 s/张需 300 人时,成本 2.4 w 元。于是我把目光投向“边缘 AI”——让单板机自己“看”自己“写”。

什么是图片alt属性,为什么对SEO如此重要?
图片alt文本(alternative text)是HTML标签 的描述性文字,它的作用不仅仅是辅助视觉障碍用户理解图像内容,更是搜索引擎优化(SEO)中的关键因素。

搜索引擎本身无法像人类一样“看懂”图像,因此它会依赖alt属性来理解图片的内容、场景与相关性。如果缺少alt属性:

  • 图片无法出现在Google图片、Bing图片等搜索结果中。
  • 页面相关性降低,长尾关键词覆盖度不足。
  • 无障碍体验下降,用户体验不佳。
在电商网站中,这个问题尤其严重。每个产品都有多张图片,如果alt文本缺失,就等于丢掉了巨大的长尾流量机会。




为什么选择LattePanda Sigma?

LattePanda Sigma是一款基于x86架构的高性能单板机(x86 SBC),相比ARM架构的树莓派、RISC-V开发板,它最大的优势在于:

完整的x86生态:能原生运行Windows和Linux,兼容主流AI框架与开发工具。

性能更强:适合运行ollama这样的本地大语言模型(LLM)与视觉模型。

边缘计算友好:直接在本地处理,不依赖云端,降低延迟和带宽消耗。

我正是利用LattePanda Sigma,把AI模型部署在边缘侧,实现了大规模图片alt属性的自动生成。



技术架构与原理
模型选择:ollama + 双视觉模型+文生文 AB测试
在实践中,我选择了ollama来运行两个不同的模型:

  • mini-cpm-v(视觉模型):擅长从图像中提取文字与语义信息。
  • qwen2.5vl(视觉模型):擅长从图像中提取文字与语义信息。比较能理解提示词,生成内容比较短。
ollama + 2种视觉模型对比 mini-cpm-v VS  qwen2.5vl


通过对比不同生成方式的alt文本质量,我们能持续优化模型提示词和生成逻辑。


Ollama 部分Python代码
  1. import base64
  2. import requests
  3. from flask import Flask, request, jsonify, abort
  4. # 初始化Flask应用
  5. app = Flask(__name__)
  6. # 请求模型验证函数
  7. def validate_image_request(data):
  8.     if not data or "prompt" not in data or "image" not in data:
  9.         return False, "请求必须包含prompt和image字段"
  10.     if not isinstance(data["prompt"], str) or not isinstance(data["image"], str):
  11.         return False, "prompt和image必须是字符串类型"
  12.     return True, "验证通过"
  13. class AltTextExtractor:
  14.     #qwen2.5vl:latest
  15.     #minicpm-v:latest
  16.     def __init__(self, model_name="minicpm-v:latest"):
  17.         self.model_name = model_name
  18.         self.ollama_base_url = "http://localhost:11434"
  19.         
  20.     def check_ollama_health(self):
  21.         """Check if Ollama is running and accessible"""
  22.         try:
  23.             response = requests.get(f"{self.ollama_base_url}/api/tags", timeout=5)
  24.             return response.status_code == 200
  25.         except requests.exceptions.RequestException:
  26.             return False
  27.    
  28.     def get_supported_image_extensions(self):
  29.         """Return supported image file extensions"""
  30.         return {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.tiff', '.tif'}
  31.    
  32.     def download_image(self, image_url):
  33.         """从URL下载图片并返回字节数据"""
  34.         try:
  35.             response = requests.get(image_url, timeout=180)
  36.             response.raise_for_status()
  37.             return response.content
  38.         except Exception as e:
  39.             abort(400, description=f"无法下载图片: {str(e)}")
  40.    
  41.     def encode_image(self, image_data):
  42.         """将图片字节数据编码为base64字符串"""
  43.         return base64.b64encode(image_data).decode('utf-8')
  44.    
  45.     def extract_alt_text(self, prompt, image_url,flag):
  46.         """根据标题和图片URL提取alt文本"""
  47.         try:
  48.             print(f"正在处理图片:{image_url}")
  49.             # 下载并编码图片
  50.             image_data = self.download_image(image_url)
  51.             base64_image = self.encode_image(image_data)
  52.             
  53.             prompt_ = """
  54.                 你是一名XXX资深的on-page seo,请描述图片内容(图片包括角度如:Angled shot of、
  55.                 Overhead shot of、Front of、Angled shot of back of、Side shot showing、Back shot showing),
  56.                 总结符合google对image alt属性的要求,
  57.                 用英文输出一句话,小于125个字符。不要包含双引号。
  58.                   
  59.                 """
  60.             
  61.             self.model_name = self.model_name
  62.             if flag==0:
  63.                 self.model_name = "qwen2.5vl:latest"
  64.             print("====",self.model_name,flag)
  65.             payload = {
  66.                 "model": self.model_name,
  67.                 "prompt": prompt,
  68.                 "images": [base64_image],
  69.                 "stream": False,
  70.                 "options": {
  71.                     "temperature": 0.3,
  72.                     "top_p": 0.8
  73.                 }
  74.             }
  75.             print("====",self.model_name,prompt)
  76.             # Send request to Ollama
  77.             response = requests.post(
  78.                 f"{self.ollama_base_url}/api/generate",
  79.                 json=payload,
  80.                 timeout=90
  81.             )
  82.             print(response)
  83.             if response.status_code == 200:
  84.                 result = response.json()
  85.                 #print("Generated Text-1:", result)
  86.                 alt_text = result.get("response", "").strip()
  87.                 print("*** Generated Text-2 ***: ", alt_text)
  88.                 return {"alt": f"{alt_text}"}
  89.             else:
  90.                 print(f"Error: Ollama returned status code {response.status_code}")
  91.                 print("Generated none_1:")
  92.                 return {"alt": "none_1"}
  93.                
  94.         except Exception as e:
  95.             print(f"Error processing {prompt}: {str(e)}")
  96.             print("Generated none_2:")
  97.             return {"alt": "none_2"}
复制代码



数据处理与任务调度
整个流程由两个部分组成:
  • 图生文(Vision-to-Text):Python 脚本调用ollama接口,运行在sigma和Intel机器上,负责批量解析产品图片。
  • 文生文(Text-to-Text):在实践测试过程中发现视觉模型思考能力较弱,将图像结果与标题、产品关键词结合,再通过LLM qwen3(思考模型)优化alt描述。实现ollama + 视觉模型 + 文生文三级流水线
  • 定时任务:我用Golang写了一个定时任务,编译成.exe,直接运行在LattePanda Sigma上,每天自动批量生成和更新alt属性。
  1. Golang 定时任务.exe ─┬─ 每5分钟调用一次,查询没有alt属性的图片地址
  2.                     ├─ Python pipeline.py
  3.                     │     ├─ A 组:调用 ollama mini-cpm-v ┈┐
  4.                     │     └─ B 组:调用 ollama qwen2.5-vl ┈┘  
  5.                     │     └─ 合并候选文案
  6.                     ├─ Prompt Engineer 二次生成
  7.                     │     └─ 结合标题+关键词+类目等,走 qwen3 文生文  AB 测试
  8.                     └─ 回写 MySQL,标记“已生成”
复制代码

通过对产品经理、运营等用户问卷调查,2个模型得分2:2,线上决定采用了AB测试的方式。

基于X86 单板机针对2种视觉模型的问卷调查


这样,整个网站每天都能有数百张图片获得新的SEO友好描述。


经验总结
  • 视觉模型并非万能:视觉模型只给“眼睛”,文案质量靠“文生文”二次把关,EEAT 得分更高。
  • 提示词工程至关重要:在文生文优化时,我设计了结构化提示词,例如 {产品名} + {核心关键词} + {图片角度},极大提升了生成文本的SEO质量。
  • 边缘计算让一切更高效:直接在LattePanda Sigma上运行,避免了云端费用与延迟问题,部署与运维更灵活。


常见疑问 FAQ
Q1: 为什么不用云端 API?

A:  试过,买的腾讯混元大模型。费用还是比较高,申请费用和测试都不太适合。放弃。在单板机或电脑本地跑零流量费,随便尝试 视频转文字也可以。

Q2: alt文本会不会生成重复? A2: 我在Python脚本中加入了去重逻辑,并结合标题、关键词,保证每张图的alt描述尽可能唯一。

Q3: mini-cpm-v与qwen2.5vl谁更好? A3: mini-cpm-v在OCR和图像描述上更稳,但qwen2.5vl结合文生文优化后,能生成更符合SEO需求的长尾描述。AB测试可以帮助持续改进。

Q4: LattePanda Sigma跑这些模型会不会过热? A4: 实测中目前一切正常,通过风扇散热即可稳定运行,不会影响定时任务。

Lattepanda Sigma + Intel 的设备图,和这骚气自制的散热设备



我是一名自我探索的技术型A/G/SEO。关注我,后续会陆续更新我的AEO探索之旅。希望我的记录能够给你带来启发。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail