Halcon 光度立体 缺陷检测

news2024/11/14 19:42:30

一、概述

halcon——缺陷检测常用方法总结(光度立体) - 唯有自己强大 - 博客园 (cnblogs.com)

        上周去了康耐视的新品发布会,我真的感觉压力山大,因为VM可以实现现在项目中的80% 的功能,感觉自己的不久就要失业了。同时康耐视开始布局工业的每个方面,生成一个完整的生态链,国内很喜欢搞某某一条龙服务。相机方面出了很多尤其是3D的,还有2.5D的相机,精度方面不好说,他们说Z方向的重复性精度可以达到0.15u,我们没有使用过,我对此保持怀疑,因为我用过的精度最高的是基恩士的的0.2u的,我尊重日本企业的严谨性和专业性,今天我看了一下那个halcon 的光度立体法,是2.5D 的。

光度立体法主要是表面检测的,在检测缺口、凹痕,适用于检测金属物料。在采集图片的时候最好是使用灰度图,至少是3张 最好是4张图像

光度立体的局限性:

  • 一方面假定相机是无畸变成像,也就是说必须使用远心镜头或者长焦镜头。
  • 另一方面假定每一个光源发射的光束都是平行且均匀的,也就是说必须使用具有均匀强度的远心照明光源,或者使用远距离的点光源代替。

此外,物体必须具有朗伯反射特性,即它必须以漫反射的方式反射入射光。有镜面反射的物体或者区域(镜子或者光滑的表面)不能使用此方法,会得到一个错误的结果

光照方向说明

安装说明:

    1、远心镜头必须与被测试的物体表面垂直按照,在采集多张图片的时候一定要保证相机和物体不动,对于采集至少三张的灰度图像,其每次取像的照明方向必须改变(相对于相机)。

    2、在采集的多张图像中的每付图像照明方向必定是制定Slants和Tilts两个参数角度

Slants:

表示光束方向与相机中轴线的夹角,一般是30-60度之间

Tilts:

Tilt角度通常都是均匀分布在被测物体周围,比如3个方向打光,Tilt角度应该是[0,120,240]OR[0,120,-120],4个方向打光是[0,90,180,-90]。需要注意的是,打光方向不能相同,否则重构的图像结果达不到预期效果

二、算子解释

  •  photometric_stereo (根据光度立体技术重建曲面)

*参数列表:
*Images(in)//输入灰度图像(4张)
*HeightField(out)//返回重建高度信息图
*Gradient(out)//返回表面的梯度信息图
*Albedo(out)//返回表面的反射率信息图
*Slant//光源光线与摄像机光轴的夹角
*Tilt//光源光线投影与被测物主轴的夹角
*ResultType//请求结果类型(高度场/梯度场/反射率)
*ReconstructionMethod//重建方法类型
*GenParamName//一般参数名称
*GenParamValue// 一般参数设置

                   *   重建高度信息图 表面的梯度信息图 表面的反射率信息图 光源光线与摄像机光轴的夹角  光源光线投影与被测物主轴的夹角  请求结果类型(高度场/梯度场/反射率)  重建方法类型(迫松重建)
photometric_stereo (Images, HeightField,    Gradient,      Albedo,          Slants,                  Tilts,                          ResultType,                     'poisson',          [],        [])
  • derivate_vector_field(处理photometric_stereo 函数输出的重建后的梯度、反射率、以及高度场信息图)
    
    *derivate_vector_field    处理photometric_stereo 函数输出的重建后的梯度、反射率、以及高度场信息图  
    *将向量场的分量与高斯函数的导数进行卷积,并计算由此得到的各种特征。
    *在光度立体项目中,专门用于处理photometric_stereo 函数输出的重建后的梯度、反射率、以及高度场图像。
    *参数列表:
    *VectorField(in)// 梯度场图像
    *Result(out)    // 返回平均曲率场图像
    *Sigma(in)      // 高斯系数
                                     *如果在Sigma中传递一个值,那么在列和行方向上的平滑量是相同的。
                                     *如果在Sigma中传递两个值,第一个值指定列方向的平滑量,第二个值指定行方向的平滑量。
    *Component(in)  //组件计算   
                                     *curl,向量场的旋度。旋度的一个应用是分析光流场。旋度是如果向量场是流体,小船会旋转多少。
                                     *divergence,向量场的散度。“divergence”的一个应用是分析光流场。打个比方,如果向量场是流体,散度就是源和汇的位置。
                                     *mean_curvature,当输入向量场 VectorField为梯度场时,下垫面的平均曲率H。用于处理photometric_stereo返回的向量场。
                                     *gauss_curvature,当输入向量场 VectorField 为梯度场时,下垫面的高斯曲率K。用于处理photometric_stereo返回的向量场。
                                     
                                     
                                        
    derivate_vector_field (Gradient, Curl, 1, 'curl')
    
    

 三、缺陷检测

反射率信息图

思路

1、不同角度采集4张灰度图,设置不同的角度参数 Slants   Tilts
2、photometric_stereo  ,返回不同的图 重建高度信息图 表面的梯度信息图 表面的反射率信息图
3、得到反射率信息图 然后利用blob 分析进行缺陷检测


*思路:
* 1、不同角度采集4张灰度图,设置不同的角度参数 Slants   Tilts
* 2、photometric_stereo  ,返回不同的图 重建高度信息图 表面的梯度信息图 表面的反射率信息图
* 3、得到反射率信息图 然后利用blob 分析进行缺陷检测


dev_close_window ()
dev_open_window (0, 0, 640, 480, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')


* Part 1利用反射率图像检测皮革表面缺陷
read_image (Images, 'photometric_stereo/leather_1_0' + [1:4])
write_image (Images, 'tiff', 0, 'D:/1.tiff')
** 展示不同方向光源成像图像
for I := 1 to 4 by 1
    Message := 'Sample 1: Acquire image ' + I + ' of 4'
    select_obj (Images, ObjectSelected, I)
    dev_display (ObjectSelected)
    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
   * wait_seconds (0.5)
endfor
stop ()
* 应用光度立体法生成的反射率图进行缺陷检测
Tilts := [6.1,95.0,-176.1,-86.8]
Slants := [41.4,42.6,41.7,40.9]
              * 梯度场     反射率
ResultType := ['gradient','albedo']

*参数列表:
*Images(in)//输入灰度图像(4张)
*HeightField(out)//返回重建高度信息图
*Gradient(out)//返回表面的梯度信息图
*Albedo(out)//返回表面的反射率信息图
*Slant//光源光线与摄像机光轴的夹角
*Tilt//光源光线投影与被测物主轴的夹角
*ResultType//请求结果类型(高度场/梯度场/反射率)
*ReconstructionMethod//重建方法类型
*GenParamName//一般参数名称
*GenParamValue// 一般参数设置

                   *   重建高度信息图 表面的梯度信息图 表面的反射率信息图 光源光线与摄像机光轴的夹角  光源光线投影与被测物主轴的夹角  请求结果类型(高度场/梯度场/反射率)  重建方法类型(迫松重建)
photometric_stereo (Images, HeightField,    Gradient,      Albedo,          Slants,                  Tilts,                          ResultType,                     'poisson',          [],        [])

* 显示反射率图
dev_display (Albedo)

*检测缺陷   反射率的基础上进行缺陷检测
var_threshold (Albedo, Region, 15, 15, 0.4, 0.4, 'light')
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10, 99999)
union1 (SelectedRegions, RegionUnion)
closing_circle (RegionUnion, RegionClosing, 3.5)
connection (RegionClosing, Defects)
area_center (Defects, Area, Row, Column)
gen_circle (Circle, Row, Column, gen_tuple_const(|Row|,sqrt(Area) + 30))
*显示缺陷
dev_display (Albedo)
dev_set_color ('red')
dev_set_draw ('margin')
dev_set_line_width (4)
dev_display (Circle)




梯度信息图

思路

1、不同角度采集4张灰度图,设置不同的角度参数 Slants   Tilts
2、photometric_stereo  ,返回不同的图 重建高度信息图 表面的梯度信息图 表面的反射率信息图
3、得到梯度信息图然后利用blob 分析进行缺陷检测


*思路:
* 1、不同角度采集4张灰度图,设置不同的角度参数 Slants   Tilts
* 2、photometric_stereo  ,返回不同的图 重建高度信息图 表面的梯度信息图 表面的反射率信息图
* 3、得到梯度信息图然后利用blob 分析进行缺陷检测

* Part 2 利用梯度图像检测皮革表面缺陷
read_image (Images, 'photometric_stereo/leather_2_0' + [1:4])
for I := 1 to 4 by 1
    Message := 'Sample 2: Acquire image ' + I + ' of 4'
    select_obj (Images, ObjectSelected, I)
    dev_display (ObjectSelected)
    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
    *wait_seconds (0.5)
     stop()
endfor

* 应用光度立体法生成的反射率图
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
*对反射率图二值化(发现无法二值化)
threshold (Albedo, Region1, 128, 255)
* 显示反射率图
dev_display (Albedo)






*derivate_vector_field    处理photometric_stereo 函数输出的重建后的梯度、反射率、以及高度场信息图  
*将向量场的分量与高斯函数的导数进行卷积,并计算由此得到的各种特征。
*在光度立体项目中,专门用于处理photometric_stereo 函数输出的重建后的梯度、反射率、以及高度场图像。
*参数列表:
*VectorField(in)// 梯度场图像
*Result(out)    // 返回平均曲率场图像
*Sigma(in)      // 高斯系数
                                 *如果在Sigma中传递一个值,那么在列和行方向上的平滑量是相同的。
                                 *如果在Sigma中传递两个值,第一个值指定列方向的平滑量,第二个值指定行方向的平滑量。
*Component(in)  //组件计算   
                                 *curl,向量场的旋度。旋度的一个应用是分析光流场。旋度是如果向量场是流体,小船会旋转多少。
                                 *divergence,向量场的散度。“divergence”的一个应用是分析光流场。打个比方,如果向量场是流体,散度就是源和汇的位置。
                                 *mean_curvature,当输入向量场 VectorField为梯度场时,下垫面的平均曲率H。用于处理photometric_stereo返回的向量场。
                                 *gauss_curvature,当输入向量场 VectorField 为梯度场时,下垫面的高斯曲率K。用于处理photometric_stereo返回的向量场。
                                 
                                 
                                    
derivate_vector_field (Gradient, Curl, 1, 'curl')



*derivate_gauss.hdev
*derivate_gauss (Image, ImageGauss, 3, 'none')
* 将一个图像与高斯函数的导数进行卷积。  效果与FFT进行高斯滤波差不多。
*主要的区别是边界处理:FFT的定义假设信号是周期性的,因此边界处理是循环的延续。与此相反,derivate_gauss在图像边界使用灰度值的镜像。
*通过FFT进行过滤的速度已经快于在Sigma=3(排除创建过滤器的时间)中使用derivate_gauss。这种优势随着Simag的增大而变得更加明显。    
*'none' 仅使用平滑
*'x' 沿X的一阶导数
derivate_gauss (Curl, CurlGradient, 1, 'gradient')// 将一个图像与高斯函数的导数进行卷积。  效果与FFT进行高斯滤波差不多。
* 显示梯度图
dev_display (CurlGradient)
Message := 'Changes in the gradient curl'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()

* 用梯度图寻找缺陷
threshold (CurlGradient, Region, 0, 0.01)
*
rank_region (Region, RegionCount, 10, 10, 30)//归类区域
connection (RegionCount, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2000, 99999)
union1 (SelectedRegions, RegionUnion)
rank_region (RegionUnion, RegionCount1, 25, 25, 170)
connection (RegionCount1, NoTextured)

* 显示
dev_display (Albedo)
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (3)
dev_display (NoTextured)
disp_message (WindowHandle, 'Non-textured areas on leather', 'window', 12, 12, 'black', 'true')
stop ()

四、洗发水表面检测 

思路:

梯度信息图来检测

 inspect_shampoo_label_photometric_stereo.hdev



*思路 :
* inspect_shampoo_label_photometric_stereo.hdev
dev_close_window ()
dev_update_off ()
dev_open_window (0, 0, 640, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
Message := 'Inspect the label of a shampoo bottle'
Message[1] := 'using photometric stereo. In this case four'
Message[2] := 'different light orientations were used.'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Show input images with different illumination
read_image (Images, 'photometric_stereo/shampoo_label_0' + [1:4])
for I := 1 to 4 by 1
    Message := 'Acquire image ' + I + ' of 4'
    select_obj (Images, ObjectSelected, I)
    dev_display (ObjectSelected)
    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
    wait_seconds (0.5)
endfor
* 
* Apply photometric stereo to determine the albedo
* and the surface gradient.
Tilts := [6.1,95.0,-176.1,-86.8]
Slants := [41.4,42.6,41.7,40.9]
ResultType := ['gradient','albedo']
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
* 
* Display the albedo image
dev_display (Albedo)
disp_message (WindowHandle, 'Albedo image', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Calculate the gaussian curvature of the surface
* using the gradient field as input for the operator
* derivate_vector_field.
* Defects are usually easy to detect in the curvature image.
derivate_vector_field (Gradient, MeanCurvature, 1.0, 'mean_curvature')
* 
* Detect defects
* 
* Segment the tablet areas in the curvature image
threshold (MeanCurvature, Region, -10, -0.07)
opening_circle (Region, RegionOpening, 1)
connection (RegionOpening, ConnectedRegions)
select_shape (ConnectedRegions, Defects, 'area', 'and', 50, 99999)
shape_trans (Defects, Circle, 'outer_circle')
* Display the defects in curvature image
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (MeanCurvature)
dev_display (Circle)
Message := 'The defect can easily be detected'
Message[1] := 'in the surface curvature image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Display the defects in the albedo image
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Albedo)
dev_display (Circle)
disp_message (WindowHandle, 'Defect in albedo image', 'window', 12, 12, 'black', 'true')

我用反射率的图做了,是达不到这个效果的

五、药片缺陷检测

* Initialization
dev_close_window ()
dev_update_off ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
Message := 'Inspect the backside of a blister'
Message[1] := 'using photometric stereo. In this case four'
Message[2] := 'different light orientations were used.'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Show input images with different illumination
read_image (Images, 'photometric_stereo/blister_back_0' + [1:4])
for I := 1 to 4 by 1
    Message := 'Acquire image ' + I + ' of 4'
    select_obj (Images, ObjectSelected, I)
    dev_display (ObjectSelected)
    disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
    wait_seconds (0.5)
endfor
stop ()
* 
* Apply photometric stereo to determine the albedo
* and the surface gradient.
Tilts := [6.1,95.0,-176.1,-86.8]
Slants := [41.4,42.6,41.7,40.9]
ResultType := ['gradient','albedo']
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
* 
* Display the albedo image
dev_display (Albedo)
disp_message (WindowHandle, 'Albedo image', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* Calculate the gaussian curvature of the surface
* using the gradient field as input for the operator
* derivate_vector_field.
* Defects are usually easy to detect in the curvature image.
derivate_vector_field (Gradient, GaussCurvature, 1, 'gauss_curvature')
* 
* Detect defects
* 
* Segment the tablet areas in the curvature image
regiongrowing (GaussCurvature, Regions, 1, 1, 0.001, 250)
select_shape (Regions, TabletRegions, ['width','height'], 'and', [150,150], [200,200])
shape_trans (TabletRegions, TabletRegions, 'convex')
union1 (TabletRegions, TabletRegions)
erosion_circle (TabletRegions, TabletRegions, 3.5)
* Search for defects inside the tablet areas
reduce_domain (GaussCurvature, TabletRegions, ImageReduced)
abs_image (ImageReduced, ImageAbs)
threshold (ImageAbs, Region, 0.03, 255)
closing_circle (Region, RegionClosing, 10.5)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, Defects, 'area', 'and', 10, 99999)
area_center (Defects, Area, Row, Column)
gen_circle (Circle, Row, Column, gen_tuple_const(|Row|,20.5))
* Display the defects in curvature image
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (GaussCurvature)
dev_display (Circle)
Message := 'The defect can easily be detected'
Message[1] := 'in the surface curvature image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Display the defects in the albedo image
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Albedo)
dev_display (Circle)
disp_message (WindowHandle, 'Defect in albedo image', 'window', 12, 12, 'black', 'true')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java通过Html(ftl模板)生成PDF实战, 可支持商用

Java通过Html(freemarker模板)生成PDF实战, 可支持商用 技术架构 springboot freemarker [pdfbox] flying-saucer-pdf 生成流程: freemarker: 根据数据填充ftl模板文件,得到包含有效数据的html文件(包含页眉页脚页码的处理&#xff0c…

Delft3D水动力-富营养化模型(水质模型)教程

原文链接:Delft3D水动力-富营养化模型(水质模型)教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247605459&idx5&sn105e94f09f0589172835ce8204519971&chksmfa821d34cdf59422b4f6c39b243373a23836d79841a1fcd19f9…

超越中心化:Web3的去中心化应用探索

随着区块链技术的迅速发展,Web3作为其最前沿的应用之一,正引领着互联网进入了一个新的时代。Web3不仅仅是技术的进步,更是一种全新的思维方式和社会模式,其核心理念是去中心化、自治和透明,这与传统的中心化互联网模式…

关于栈的简单讲解

哈喽,小伙伴们大家好呀,今天给大家带来栈、队列的那些知识点。 栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 总结 一种线性…

springboot+minio 文件上传

前期准备 需要先安装minio文件服务器&#xff0c;请参考我上一篇文章 pom.xml 版本 本次使用的是springboot2.7.16 版本&#xff0c; minio 版本是8.2.2 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare…

1071.字符串的最大公因子

对于字符串s和t&#xff0c;只有在s t t t ... t t&#xff08;t自身连接1次或多次&#xff09;时&#xff0c;我们才认定 “t能除尽s”。 给定两个字符串str1和str2。返回最长字符串x&#xff0c;要求满足x能除尽str1且x能除尽str2 。 示例 1&#xff1a; 输入&#xf…

上位机图像处理和嵌入式模块部署(f103 mcu原理图)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 从linux卡片电脑转到mcu领域,第一个需要适应的估计就是原理图。之前学习linux的时候,我们大概只需要知道一些接口就好了,比如电源键、usb、网口、hdmi口、音频口、tf卡槽等等,整…

使用Java 读取PDF表格数据并保存到TXT或Excel

目录 导入相关Java库 Java读取PDF表格数据并保存到TXT Java读取PDF表格数据并保存到Excel 在日常工作中&#xff0c;我们经常需要处理来自各种来源的数据。其中&#xff0c;PDF 文件是常见的数据来源之一。这类文件通常包含丰富的信息&#xff0c;其中可能包含重要的表格数据…

冯喜运:5.27黄金暴跌大阴后出现“暂定符”今日黄金原油操作策略

【黄金消息面分析】&#xff1a;金价虽然有大阴线暴跌&#xff0c;但依然属于超买后的调整而非熊市&#xff0c;对中长线投资者来说只是市场洗牌。因此&#xff0c;在出现企稳迹象之后&#xff0c;随时关注反弹时机的启动。未来几日&#xff0c;黄金空头可能在进一步发力之前需…

pdf拆分成多个文件 pdf拆分成一页一页

pdf拆分成多个文件的方法。在现代办公环境中&#xff0c;PDF文件因其跨平台、保持格式一致等特性&#xff0c;成为了广泛使用的文件格式。然而&#xff0c;有时我们需要对PDF文件进行拆分&#xff0c;以便更好地管理和使用其中的内容。本文将详细介绍PDF拆分的方法和步骤&#…

智能改写工具,一键改写文章效率非常高

在当今快节奏的时代&#xff0c;效率成为了人们追求的重要目标之一。在文章创作领域&#xff0c;智能改写工具的出现为我们带来了极大的便利&#xff0c;它的高效率一键改写优势可以帮助创作者在几秒的时间里完成文章改写的工作&#xff0c;从此&#xff0c;也让创作者们实现了…

小明同学的考试分数统计:总分、平均分与方差计算进阶

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、原始方法介绍与问题发现 原始方法存在的问题 二、优化方案&#xff1a;使用列表简化代…

【OpenVINO™】在C#中使用 OpenVINO™ 部署 YOLOv10 模型实现目标

文章目录 1. 前言1.1 OpenVINO™ C# API1.2 YOLOv10 2. 模型获取2.1 源码下载2.2 配置环境2.3 下载模型 3. Yolov10 项目配置3.1 项目创建与环境配置3.2 定义模型预测方法3.2.1 定义目标检测模型方法3.2.2 使用OpenVINO™ 预处理接口编译模型 3.2 模型预测方法调用 4. 项目运行…

Java通过Html(ftl模板)生成PDF实战

Java通过Html(freemarker模板)生成PDF实战, 可支持商用 技术架构 springboot freemarker [pdfbox] flying-saucer-pdf 生成流程&#xff1a; freemarker: 根据数据填充ftl模板文件&#xff0c;得到包含有效数据的html文件&#xff08;包含页眉页脚页码的处理&#xff0c…

深入剖析—【服务器硬件】与【Nginx配置】:从基础到实战

服务器硬件部分&#xff1a; Processor (CPU)&#xff1a;服务器的计算核心&#xff0c;负责处理数据和执行程序。Memory (RAM)&#xff1a;用于暂时存储和快速访问数据&#xff0c;决定了系统的运行速度和并发处理能力。Storage (HDD/SSD)&#xff1a;长期存储数据的设备&…

高性能、超小型的电源模块——TP2L-3W系列,3W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块

TP2L-3W系列是一款高性能、超小型的电源模块&#xff0c;宽范围2:1,4:1输入&#xff0c;输出有稳压和连续短路保护功能&#xff0c;隔离电压为1.5KVDC、3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方&#xff0c;外部遥控功能对您的设计又多一项…

行业分析---造车新势力之小鹏汽车

1 背景 在之前的博客中&#xff0c;笔者分析了苹果《行业分析---我眼中的Apple Inc.》&#xff0c;随后也分析了电动汽车公司特斯拉《行业分析---马斯克的Tesla》和蔚来汽车《行业分析---造车新势力之蔚来汽车》&#xff0c;看到有不少读者朋友对此类文章也有些兴趣。 那么本篇…

基于springboot实现旅游管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现旅游管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…

Docker基础篇之入门使用

文章目录 1. Docker的基本组成2. Docker平台架构3. 阿里云镜像加速4. Docker的Hello World入门案例5. 总结 1. Docker的基本组成 Docker的基本组成主要是有四部分&#xff0c;分别是镜像、容器和仓库。 镜像&#xff1a;Docker镜像就是一个只读的模版&#xff0c;镜像可以用来…

huggingface笔记: accelerate estimate-memory 命令

探索可用于某一机器的潜在模型时&#xff0c;了解模型的大小以及它是否适合当前显卡的内存是一个非常复杂的问题。为了缓解这个问题&#xff0c;Accelerate 提供了一个 命令行命令 accelerate estimate-memory。 accelerate estimate-memory {MODEL_NAME} --library_name {LIBR…