2025年2月

机器视觉——视觉方案设计总结

引言

机器视觉工程师不仅仅是编写图像程序和界面的,最重点的是要提供一整套视觉解决方案,来保证你这套算法能够正常运行,需要考虑的事情比较多,望大家共勉。


当我们做视觉验证方案的时候,需要先拿到客户给的样品,然后制定方案。需要注意一下几点:

  • 视野大小:首先根据产品的大小,和客户的视觉检测要求,我们要确定镜头的视野大小,一般情况下视野都要比我们需要检测的区域大1/3,拿尺子量出来,记录下初步的视野大小,单位是MM
  • 工作距离:确定一下我们的镜头离产品到底有多少距离,有些是客户提供,有些是工程设计提供一些大体的要求,我们再做决定大体的一个工作距离,单位:mm
  • 镜头焦距:根据视野大小和工作距离,我们可以求一下镜头的焦距,具体公式如下: 焦距f = WD工作距离 × 靶面尺寸( H or V) / FOV 视野大小( H or V)
  • 相机的选择
  1. 黑白相机:这个是大部分案子的选择
  2. 彩色相机:除了一些需要进行颜色检测的案子外,彩色相机的选择可以作为对黑白相机的一个补充,例如:有些产品,黑白相机拍出来的图像对比度比较差,我们进行图像处理的时候非常不方便,这个时候就需要用到彩色相机了,彩色相机拍摄的图像,转化成黑白图像,在转化的过程中,我们可以进行转化参数RGB的调整,调出我们需要的黑白图像。

一,相机选择

面阵相机和线扫相机:

面阵相机是我们大部分应用的相机,一般都是选择全快门的。
所谓的线阵相机,比较适合拍摄移动物体检测,玻璃面板检测瑕疵用的多数是线阵相机,印刷行业也用的比价多。

💙💙💙相机的选型主要选择多少万像素分辨率的相机,选择公式如下:  

首先要确定客户要求的精度,一般情况下都是 精度 = 0.02mm ,除非客户有更高精度的要求。

我们选型要用的精度一般都是在客户的基础是在放大2倍或者3倍,即,精度 = 客户精度/2 。那么我们的相机的分辨率就是:相机分辨率 = FOV 视野大小H/精度再就是至于其他的参数验证的过程中再进一步计算,一般的视觉这些就用了。

智能相机: 

漏下了智能相机了,所谓的智能相机就是带有操作系统的小型计算机,里面配有专门的图像算法库,单独的OS,可以独立运行。智能相机目前和机器人配合用的比较多,有钱的公司可以用,或者特殊环境下。

二,镜头的选择

  1. 一般的广角镜头:一般情况下都是选择500万镜头,如果有特殊要求,可以在选择高精度低畸变的镜头  
  2. 远心镜头: 3C行业用的比较多。检测视野比较小,精度要求较高的时候选择远心镜头,如果有特殊尺寸,可以选择定制圆心镜头。因为远心镜头成像的范围和镜头口径大小有很大关联。
  3. 线扫相机的镜头是专门的线扫相机镜头
  4. 其他的镜头,随着视觉行业的发展,产品的种类也越来越多。

三,光源的选择

对于光源来说,它的作用就是保证相机可以拍摄到我们做图像处理可以用的图像为原则,做打光测试的时候,多多试验。

环形光、条形光、点光源、同轴光、碗状光源(又叫穹顶光源)等等。。光源还是有很多颜色的,白色、蓝色、红色、紫外线等等

以上的这些主要的目的就是要获取我们做图像处理需要的原材料——图像,再就是我们设计的视觉照明系统一定要保证稳定,可以稳定的获取相同规格的图像

四,图像软件的选择

只介绍行业内用的最多的视觉库

  • 一般是Visionpro最简单,容易上手和调试,修改也最方便
  • Halcon功能最强大
  • OpenCV,从这里很多公司自己调试封装算法库
  • LabView配合NI图像处理软件

从事视觉行业一定要知道行业内的老大和老二:

基恩士绝对的老大,东西贵的一逼,精度高,速度快.再就是老二,康耐视,Cognex,Visionpro就是他家的。

最后补充下:

还有2D镭射激光测量仪,3D激光成像仪,这是作为高精度测量要求的(基恩士的是最好的吧,15万以上吧。)

还有双目相机组成的3D成像系统,还有结构光3D相机,等等吧。种类比较多

最后,保存图像,写图像程序,查看图像处理的结果是否达到客户的哟求,最后写方案文档。客户最终确定之后,写视觉系统界面,场内初步调试,出厂,客户现场调试。到客户现场后,我们的程序经常要修改,包括图像程序,客户可能要添加各种功能和要求什么时候,设备正常运转了,我们的视觉系统稳定了,什么时候你就可以回公司了

LLM的7种推理框架

1、Hugging Face的transformers

这是一个Python库,可以简化本地运行LLM的过程。

Transformers的优点:

  • 自动模型下载
  • 提供代码片段
  • 非常适合实验和学习

Transformers的缺点:

  • 需要对ML和NLP有深入了解
  • 需要编码和配置技能


2.Llama.cpp

Llama.cpp,C++推理引擎翘楚,专为Apple Silicon量身打造,高效运行Llama2模型。GPU与CPU双优化,为您的推理任务提供卓越性能,引领业界潮流。

优势显著:超越Python性能,支持在普通硬件上运行如Llama 7B等大型模型,提供多语言绑定构建AI应用,并凭借Llama.cpp高效执行推理,为您的AI项目提供强大支持。

缺点:模型支持有限,需要构建工具。

Llama.cpp是您的理想选择,无论是本地硬件运行大型模型,还是跨语言构建AI应用,其高效性与兼容性均能满足您的需求。


3.Llamafile:

Llamafile,Mozilla匠心之作,基于C++与llama.cpp库,专为自托管大型语言模型(LLMs)打造。它简化了LLM模型的创建、加载与运行,无需担忧底层环境的繁琐。其简洁的API接口,让开发人员与LLM的交互更为便捷,轻松实现各类复杂应用场景,引领智能编程新纪元。

Llamafile助力您轻松创建嵌入模型的单一可执行文件,打造便携工具的不二之选,满足您的多样化需求。



4.Ollama:

Ollama,作为Llama.cpp和Llamafile的升级之选,以其用户友好的特性脱颖而出。简易下载可执行文件后,即可在您的机器上安装服务,轻松打开终端并运行,轻松高效。

优点:易于安装和使用,可以运行llama和vicuña模型,运行速度非常快。

缺点:模型库有限,需自行管理模型,不支持模型重用,无法定制LLM运行选项,且暂不支持Windows系统。

轻松应对llama与vicuña模型运行,追求简易安装与高效使用的您,Ollama工具将是您的首选之选。

目前微软Phi-3以上四种本地运行模式都支持。详见:

Phi-3量化模型:SLM系列2


5:vLLM

vLLM,一款高效推理与服务引擎,专为大型语言模型打造,提供高吞吐量、内存优化服务,轻松实现便捷、快速、经济的LLM体验。

优点

  • 高效的服务吞吐量:vLLM可以快速处理大量的并发请求。
  • 支持模型种类多。
  • vLLM通过创新的PagedAttention技术,显著提升了内存效率,高效管理注意力键和值,助力强大性能。

缺点

  • 你需要确保你的设备有GPU,CUDA或者RoCm.

vLLM会提供对Phi-3的支持,目前代码在集成中。

对Phi-2的支持的验证详见:

语言模型小型化尝试-PyTorch学习系列36


6.TGI(Text Generation Inference)

TGI,由HuggingFace倾力打造的文本生成推理部署框架,兼容主流大模型及其量化方案。结合Rust与Python,TGI巧妙平衡服务效率与业务灵活性,并实现了丰富特性,助力您轻松部署和优化大模型推理任务。

  • 简单的启动LLM
  • 优化后的transformers代码,利用Flash Attention与Paged Attention技术,显著提升推理性能,打造高效、精准的智能应用。
  • 运用bitsandbytes的GPT-Q、EETQ、AWQ与Safetensors技术,实现高效量化,提升性能与效率。

TGI与Transformer推理方式有所不同,差异体现在多个关键方面,包括但不限于处理文本生成与推断的独特方法。

  • TGI与Transformer均支持并行计算,但TGI更胜一筹。它巧妙结合Rust与Python,实现服务效率与业务灵活性的完美平衡。在处理庞大语言模型时,TGI能高效利用计算资源,显著提升推理速度,为您带来前所未有的高效体验。
  • TGI引入革新优化技巧,包括continuous batching、Flash Attention和Paged Attention,显著提升推理效率和性能,较传统Transformer模型更具优势。这些技巧让您在数据处理上更胜一筹,轻松实现高效能计算。
  • TGI支持GPTQ模型服务部署,实现单卡上连续批处理的大模型运行,优于传统Transformer模型,确保高效能与广泛适用性,为大型模型应用提供强大支持。

TGI在某些方面超越传统Transformer推理,但并非万能。面对与TGI优化策略不匹配的任务或数据时,传统Transformer推理或更为适用。经测试,TGI在推理速度上尚不及vLLM。因此,在选择推理方法时,需根据实际需求灵活权衡,确保最优解的选择。

TGI推理支持容器方式运行:


7.Deepspeed

DeepSpeed,微软开源的深度学习优化库,支持本地推理。它通过系统优化和压缩技术,深度优化硬件、操作系统和框架,运用模型与数据压缩,显著提升大规模模型的推理与训练效率。

DeepSpeed-Inference,作为DeepSpeed框架的推理扩展,专为大型语言模型打造。凭借模型、张量及流水线并行技术,显著提升推理性能,大幅缩短延迟,让语言处理更迅速高效。

详细内容参见:

DeepSpeed-Chat微调模型:deepspeed训练系列-1

推理框架的选择(选择之前先确认要使用的模型是否支持这种推理框架):

DeepSpeed:卓越选择,专为高性能推理任务定制。其独特的ZeRO优化器、3D并行(数据、模型与流水线并行)以及1比特Adam等技术,大幅增强大模型训练与推理效率。若您追求极致性能,DeepSpeed不容错过。

ollama,简便易用的工具之选。其显著优势在于易用性,用户仅需通过简易命令行界面,即可轻松运行模型,让操作更加流畅高效。

Llamafile,卓越之选,打造嵌入模型的独立可执行文件。它以卓越的便携性和单文件生成能力闻名,轻松满足您一体化部署需求。

TGI(文本生成推理)是多种硬件环境下高效推理的优选。它集成模型并行、张量并行和流水线并行等优化技术,为大型模型推理带来显著效率提升。无论您的任务需求如何,TGI都能助您一臂之力。

Transformer模型,处理自然语言处理任务的理想之选。对于机器翻译、文本生成等复杂任务,其强大的表示能力可精准捕获文本长距离依赖关系。选择Transformer,解锁自然语言处理的无限可能。

vLLM,专为处理海量自然语言任务而生,如文本分类与情感分析。作为大规模预训练模型,vLLM在各种NLP任务中均展现卓越性能,是您处理大规模数据的不二之选

1、github

    https://github.com/ollama/ollama


2、下载(Linux版本)

     curl -fsSL https://ollama.ai/install.sh | sh



3、验证安装

     ollama  --version 

 


4、ollama基本命令介紹

  • ollama  run   <model>: 運行指定的模型
  • ollama  list:   列出已下載的模型
  • ollama  pull  <model>: 下載新模型


     例如:下载 deepseek大模型的各种版本

           ollama  pull  deepseek-r1:1.5b     #15亿参数(蒸馏后的模型)

      ollama  pull  deepseek-r1:7b       #70亿参数(蒸馏后的模型)

           ollama  pull  deepseek-r1:671b     #6710亿参数(原始模型)


5、ollama执行模型推理

        ollama  run  deepseek-r1:1.5b