tag 标签: 分割

相关帖子
相关博文
  • 热度 21
    2015-3-14 19:48
    1048 次阅读|
    0 个评论
      设计I/O电路时,有两个地方很重要,那就是:功能子系统和「安静区域(quiet area)」。底下将分别说明。         功能子系统   每一个I/O应该被视为PCB的不同区块,因为它们各自具有独特的功能与应用。为了避免在子系统之间产生射频耦合,所以必须做分割。一个功能子系统包含了一堆组件,以及相关的支持电路。组件与组件相互紧邻,可以缩短走线绕线的长度,并提高各功能区块的效能。每一位硬件和PCB工程师通常会试着将组件集合在一起,但是由于各种原因,有时这是行不通的。在布线(layout)时,I/O子系统的处理方式和其它PCB区块不一样,这通常是经由布线切割达到的。   布线切割加强了讯号的质量和功能的完整性,因为这样可以防止产生具有高频宽的发射器,例如:背板互连、视讯装置、数据接口、以太控制器、SCSI装置、CPU、毁损的串行或平行、视讯、音频、异步/同步通讯端口、软盘控制器、前端显示器、区域和广域网络控制器…等。每一个I/O子系统必须被当成不同的PCB一样。          安静区域   「安静区域」是和数字电路、模拟电路、供电和接地平面隔离的区域。这种隔离可以避免其它PCB区块内的噪声源,破坏了敏感电路。例如:来自数字区块的供电平面噪声,渗入至模拟装置(模拟区块)、音频装置(音频区块)、I/O滤波器、互连电路…..等的供电接脚,如附图一。              图一:安静区域   每一个I/O埠(或区块)必须有一个切割的(安静)接地或功率平面。低频I/O埠可以使用靠近于连接器的高频电容(通常是470 pF至1,000 pF)来回避(bypass)。   PCB上的走线绕线必须控制好,以免再次耦合的射频电流流入缆线的屏蔽(shield)内。一个干净的(安静)接地必须位于全部缆线离开系统的点上。供电和接地平面必须同等对待,因为这两种平面都是射频返回电流的可能路径。从交换装置到I/O控制电路的射频返回电流,会将高频宽的交换式射频噪声带至I/O缆线和互联机路中。   为了建立一个安静的区域,所以必须做分割。这个安静区域可能是:   1. 100%与I/O讯号隔离,讯号不管是进入或离开都必须透过一个隔离的变压器。   2. 数据线路(data line)必须过滤。   3. 透过一个高阻抗共模电感来过滤,或者使用一个铁粉芯导线(ferrite bead-on-lead)来保护。   分割的主要目的是要把不干净的供电、接地平面和其它功能区域,与干净或安静的区域分开。          隔离和分割   隔离和分割是指组件、电路、供电平面从其它功能装置、区域和子系统中分开。若允许射频电流以辐射或电导方式,被传送至电路板的其它部位,这不仅会造成EMI问题,也会破坏应有的正常功能。   隔离是使电路板上的某区域之所有平面没有铜线存在,此没有铜线存在的区域被称为「壕沟(moat)」。没有铜线存在的区域宽度通常是0.05英吋。换句话说,一个隔离的区域是电路板上的一个「孤岛」,类似一个具有城池的城堡。只有那些需要与它作业或互连的走线,才能与这个隔离区域相连接。对讯号和走线而言,「壕沟」就是一个隔离地带,这些讯号和走线与隔离区域、或隔离区域的接口无关。   有两种方法可以将走线、供电、接地平面连接至这个「孤岛」上。第一种方法是使用隔离的变压器、光学隔离器、或共模数据线过滤器,来跨越「壕沟」。第二种方法是使用「壕沟」上的一个「桥梁」。隔离也被应用在将高频宽组件与低频电路分开的场合;此外,它也被应用于使I/O界面维持在低的EMI频宽----亦即从I/O互连电路传播出来的射频频谱大小。    方法一:隔离   这是使用隔离的变压器或光学隔离器来达成的。一个I/O区域必须与PCB的其它部位100%隔绝。只有在金属的I/O连接器上,射频讯号会和底盘的接地平面结合,而且只有透过一个低阻抗、高质量的保护路径来接地。此外,必须将底盘的接地平面和这个隔离区域分开。有时由于设计的需要,必须在I/O缆线的屏蔽接地(或编织隔离)至底盘接地之间使用旁路电容,以取代直接连接。屏蔽接地或泄漏线路(drain wire)是指在接口连接器上的一根独立接脚或线路,和外部I/O缆线的内部泄漏线路与它的聚酯薄膜(mylar foil)屏蔽相连接,聚酯薄膜屏蔽也位于该缆线内部。   在任何情况下,都不能使用尾导线(pigtail wire)将BNC连接器的外层与底盘的接地面或任何接地系统 连接在一起。测量结果显示,同样在15至200MHz范围内工作的两个射频讯号,一个在尾导线内传输,另一个在对BNC连接器外层做360度连接的缆线屏蔽内传输,它们之间会有40至50dB的误差。这除了可以降低射频辐射以外,同时也可以提高ESD的免疫能力,因为当发生ESD时,它的导线电感值比较小。对大多数应用而言,最好能将缆线屏蔽连接至BNC连接器外层,并且做360度的连接。这个连接器后盖(backshell)最后和一个隔离壁(bulkhead)面板结合,此隔离壁包含了一个金属面,可以和底盘的接地面连接。   共模数据线过滤器可以和隔离的变压器结合,以延伸共模抑制(common-mode rejection)的效果。共模数据线过滤器(通常是螺旋管形)可以在模拟和数字讯号应用中使用。这些过滤器可以将在讯号线至I/O区块或缆线中传输的共模射频电流降至最小。如果在隔离区域内需要电源和接地,例如:一个键盘或鼠标需要+5 VDC,此时可以使用一个铁粉芯导线来穿越「壕沟」,藉此形成电源走线和一条回传走线,此回传走线的宽度是电源走线的三倍。使用一个共模的螺旋管体(toroid)来连接电源和接地,也是一种 合适的方法。必要时,二次侧的短路保险丝(为了保护产品的使用安全)可以位于铁粉芯的任何一边。有时,必须使用去耦合电容,来移除已经过滤过的I/O电源中的数字噪声。这个额外的去耦合电容之一端可以位于铁粉芯的过滤侧(输出端),另一端位于隔离的接地平面上。电源过滤组件可以跨越过「壕沟」,在电路板的最外侧边缘上。电源与接地走线必须彼此相邻,以减少射频接地回路的大小;如果它们分别位于「壕沟」的两侧,彼此相对的话,在它们之间就会产生射频接地回路。范例详如附图二所示。               图二:使用隔离法来跨越「壕沟」    方法二:桥接   这个方法是使用一个「桥接电路」,它位于一个控制区块与一个隔离区域之间。桥接的位置是位于「壕沟」无法流通的地方。透过它,讯号走线、电源与接地线都可以通过「壕沟」。如附图三所示。任何与I/O线路无关的走线如果通过了「壕沟」,就可能会造成射频辐射和ESD的问题。其所产生的射频回路电流,如附图四所示。射频电流必须沿着它们的走线路径「映像(image)」回来。在两个不同区域之间,会产生共模噪声。和方法一不同的是:电源和接地平面是直接连接至这两个不同区域之间。因此,这个方法形成了一个分割。   使用桥接法的好处是和城堡被「城池」包围的好处类似。只有那些拥有「护照」的讯号,可以通过这个「桥梁」。由于射频返回电流必须沿着它们的走线路径「映像」回来,所以可以使磁通量最小化。这个映像返回路径是唯一的,而且只有一条返回路径存在----那就是「这座桥」。   有时,只有电源平面是隔离的,而接地平面则可以透过「这座桥」被完整连接。这种技术常被使用于需要共同接地、或个别过滤的电路上,它们都需要稳定的电源。在这种情况下,通常会使用铁粉芯导线来跨越「壕沟」,但只有已经过滤过的电源可以这么做。这个铁粉芯必须位于桥梁区域,而且不能跨过「壕沟」。如果在隔离区域内不需要模拟或数字电源,则这个未使用到的电源平面可以再次被定义为第二个0V(接地)平面,且参考到主要的接地平面。当使用一个「分割平面(split plane)」时,必须保证穿越过「桥梁」的走线,确实沿着一个0V的参考(接地)平面而行,而且不是沿着分割的电源平面。   当使用桥接法时,如果底盘和系统级设计有提供多点接地(multipoint ground),那最好能将「桥梁」的两端与底盘或框架(frame)一起接地。将进入口与「桥梁」接地,可以执行下列两项功能:   1. 它可以移除在供电网络中的高频的共模射频成份(接地噪声电压),避免它被耦合至分割的区域内。   2. 它可以移除涡流(eddy current),这种电流可能存在于底盘或适配卡插件箱(card cage)内。藉此,能够改善接地回路的控制。   一个阻抗更小的路径可以当成射频电流的接地面,如果没有它,射频电流会经由其它路径到达底盘的接地面,譬如:在I/O缆线内的射频电流。              图三:跨越「壕沟」的「桥梁」              图四:不正确使用「壕沟」的例子   将「桥梁」的两端接地也可以增加ESD的免疫能力。如果有一个高能量脉冲被注入至I/O连接器中,这个能量可能会跑到主控区域,并造成永久性的伤害。因此,这个能量脉冲必须经由一个阻抗非常小的路径,流向底盘的接地面。   将「桥梁」的两端接地的另一个理由是,可以去 除射频接地噪声电压,这个噪声电压是由于分割区域和主控区域之间所存在的电压差造成的。如果射频共模噪声包含了高频的射频能量,则必须在每一个底盘接地点上,使用去耦合电容来移除此射频能量(交流波形)。附图四是当使用数字和模拟分割时,走线要如何绕线的情形。由于数字供电平面的切换噪声(switching noise)可能会注入至模拟区块内,所以必须采用隔离或过滤方法。从数字绕至模拟区块的所有走线必须经过「桥梁」。对模拟电源而言,必须使用一个铁粉芯导线来跨越「壕沟」。也可能需要一个稳压器(voltage regulator)。通常,「壕沟」是100%地围绕着被分割的模拟电源区域。   某些模拟组件需要将模拟接地与数字接地连接起来,不过这必须经由一个「桥梁」才行。如附图五所示。有许多模拟-数字和数字-模拟装置,在同一个封装构造内,将它们的模拟接地(AGND)和数字接地(DGND)连接在一起。当一个组件内部是采用这种分割方法来设计时,则在PCB布线时,模拟和数字接地只需要一个接地连接线(亦即,共享一个接地线)。只有当组件内部有将AGND和DGND分开时,AGND和DGND才需要彼此以「壕沟」隔开。在 进行PCB布线时,工程师必须事先询问组件供货商,要如何正确地隔离或连接AGND和DGND。              图五:数字和模拟分割的概念    不正确地使用映射平面   映射平面虽然很好用,但是如果错误地使用它,将会造成严重的电磁干扰问题。一个映像平面要能够有效,所有的讯号走线必须与一个固定平面相邻,而且不能跨越铜线的隔离区域。不过,使用某些特殊的走线绕线技术却是例外。如果一条讯号走线,或甚至一条电源走线(例如:在+5 V电源平面上的一条+12 V走线)在一个固定平面内绕线,则这个固定平面将被切割成许多个小部份。一个接地或射频讯号返回回路的设计规则,目前已经被建立起来,这是在相邻的电路板层之间测量射频返回电流的大小。这种电流的存在代表了映射平面并没有被正确地使用。这种射频回路的产生,是因为射频电流无法在讯号走线内找到一条直接的、低阻抗的返回路径。   附图六说明了映射平面被不正确地使用的情形。这些平面现在已经无法成为一个固定的0 V参考点,以去除共模的射频电流。由于平面的切割所造成的损失,最后可能会产生射频电场。在一个映射平面上的通孔(via)并不会减弱该平面的映射能力,但接地插槽(ground slot)除外。              图六:走线不正确地使用映射平面   另一个与接地平面的不连续性有关之议题是:使用穿洞(through-hole)组件。在一个电源或接地平面上使用过多的穿洞组件,将会产生所谓的「瑞士奶酪病症(Swiss Cheese Syndrome)」。由于穿洞太多,许多洞都彼此重迭,致使平面上的铜区块减少,不连续的区域就变大了。这个效应如附图七所示。在映射平面上的返回电流是沿着洞孔边缘流动,而讯号走线则是以直线路径跨越不连续的区块。如附图七所示,在接地平面上的返回电流必须绕过插槽或洞孔。其结果是,必须增加走线的长度,才能传送返回电流。增长的走线长度会使返回走线的电感值增加。因为E = L(dI/dt),当返回路径的电感值增加时,讯号走线与射频电流返回路径之间的差模耦合效果就会降低,磁通相抵(flux cancellation)的效果也会减少。对洞孔不是很大的穿洞组件而言----其接脚之间仍然具有空间,降低讯号和返回电流的最佳方法是:降低返回路径和固定平面上的电感值。   如果一条讯号走线是沿着穿洞区域(不连续区域)行走,则一个固定的映射平面(射频返回路径)将会沿着所有的讯号路径存在着。在附图七右侧,因为接地平面没有不连续,所以走线长度可以缩短。相反的,在附图七左侧,如果走线长度增加,就会增加电感值。当走线长度增加后,会造成能量反射,破坏讯号的完整性和应有的功能,也会产生射频电流回路,如同天线一样。   为了缩短走线的长度,而必须使讯号走线穿过PCB的插槽或洞孔时,在走线和洞孔附近空间之间必须遵守「3-W法则」:走线之间的间距必须是单一走线宽度的三倍;或者说:两走线之间的间距 〉单一走线宽度的两倍。   附图八是使用电容使射频返回电流能够穿越插槽或「壕沟」。此电容为射频电流提供了交流并联电路,藉此,射频电流可以穿越「壕沟」。它大约可以提高20dB的效能。不过,这种方法可能会在走线电流和它们的映射电流之间,产生电抗(reactance)位移的现象,最后将使磁通相抵(flux cancellation)的效果减弱。所以,最好使用上述的隔离法或桥接法来解决。           图七:使用穿洞组件时的接地回路              图八:利用电容使射频返回电流可以穿越「壕沟」
  • 热度 16
    2014-4-3 18:35
    943 次阅读|
    4 个评论
    前一篇《美女打靶》一文,因工作忙,久未更新,看了广大的网友的回复和留言,甚是感激,其中 ufo2003 的留言印象最为深刻,实践是检验真理的唯一标准,恭喜,他的答案是非常正确的。 本想写续篇,但研究透了就提不起笔来,就像一首歌,在唱得要熟不熟的时候最感兴趣。 今天想说的主题是分割!我们研究一条曲线,或者两个变量的关系。往往这条曲线会把一个平面或者空间进行了分割,对,就是考虑这种分割。 比如x^2+y^2=1的一个圆,把平面分成了3部分,在圆里面的,在圆外边的,在圆上的。凡在圆曲线之上,均符合这个等式;在圆里面的,要小于1;在圆外边的,结果要大于1。 这又好似个围城,这样简简单单一围,就有了城内和城外之分。而JH证书就是这条曲线。 原本一个空空荡荡的平面,因为一个分割,所以有了许多研究的内容。这就是界限的妙用。这又有点像《道德经》里所说:“三十辐共一毂,当其无,有车之用。埏埴以为器,当其无,有器之用。凿户牖以为室,当其无,有室之用。故有之以为利,无之以为用”。无之以为用,是因为有界限,所以能用。 又想到了李小龙的”截拳道“和如今的拳击。“空有空之用”,在拳击和实际格斗中,距离的把握是一个相当重要的关键。梅韦瑟所以能纵横天下,是公认的防守大师,多次评为P4P第1,他在拳击中,对距离的把握和相关的技能及艺术是相当的精湛。 一个有界的分割容易理解,接着我们来考虑一下一个开放的分割,同样把平面分为三部分,但却是开放,无限的分割。 y=x^2. 同样把平面分成三部分:y x^2. 然而,不同的是,它的分解是无限的,平面有多大,分解就有多大。 ^2, 它的尽头可思量否?比如x,y均为无穷大或者趋向于无穷大,那么,这个应该是属于平面分割的哪一部分呢?答案是都不是,不可思量。 从这儿也可以看出“无穷”的一些特性,不可思量! ^2, 正如佛教经典《金刚经》云:“若菩萨不住相布施。其福德不可思量。须菩提。于意云何。东方虚空可思量不。不也。世尊。须菩提。南西北方。四维上下。虚空可思不。不也。世尊。须菩提。菩萨无住相布施。福德亦复如是。不可思量。” ^2, 在设计中,一个大师说:曲线都有峭壁,只有找到峭壁,你才能找到最优 ^2, 的性能而又不至于掉下去!这个峭壁就是所谓的分割把。 ^2,
  • 热度 21
    2012-6-13 20:13
    1838 次阅读|
    1 个评论
    EMC,包括EMI/ESD的问题,通常80-90%与接地设计有关。而最容易出现EMI/ESD问题的就是所谓模拟、数字及电源等接地分区以及接地方式。 其实分割地的问题对EMC设计来讲本来不应该是个问题,分割地其实并不应该是EMC设计的要求。但是,相信大家一定读了不少的有关EMC设计的书籍。可以这么说,有些EMC书籍中,大讲什么分割模拟地、数字地以及电源部分等在EMC设计中的重要性,以及如何进行模拟、数字及电源等部分的分区及分区的EMC设计。从某种意义上说,其实是本末倒置,没有真正理解接地及EMC设计的精髓。根据笔者的经验,在与输出端口相连的情况下,在初次设计时,分割地-比如模拟音响地与系统地单点接地-出现EMI/ESD问题的几率几乎是100%。 从理论上讲,地线分区违背了EMC设计的最基本准则。但是在某些情况下,不同电路及地线的分区又是必须的,这是为什么呢?  
  • 热度 15
    2012-3-29 12:56
    15592 次阅读|
    6 个评论
    一、约定 软件:PADSLAYOUT9.3(PADS2007也可以参考通用步骤) 二、一般步骤 多层板的分割一般步骤为:定义叠层→设置层的属性(正、负片)→分配网络→分割→铺铜。 首次定义多层板的叠层结构。 四层板堆叠一般为:SIG1/GND/POWER/SIG2; 六层板堆叠为:①SIG1/GND/SIG2/SIG3/POWER/SIG4; ②SIG1/GND1/POWER/SIG2/GND2/SIG3; 在PADS当中板层定义如下图所示: 其次,为电源层分配电源网络。 上图中强调一下“PlaneType”的问题。首先从工艺角度讲,内电层实物为薄薄的铜箔。在制造流程上有“正片”和“负片”之分。在PADSLAYOUT中,内电层属性配置当中,CAMPLANE为负片属性,其他两层为正片属性。以下部分是摘自PADShelp文件: ·NoPlane—Preventsplanesfrombeingaddedtothelayer.TheNoPlanelayerisavailableforrouting.IfyouselectNoPlane,youcanonlycreateCopperandCopperPourareasonthelayer. ·CAMPlane—Setstheentirelayertobesolidcopperandconnectedtoonlyonenet.TheCAMPlanelayerisanegativeimage,andthecopperdoesnotappearinthedesignasitnormallydoesforallothercopperobjects.Youcannotmanipulatetheshape/outlineofthecopperonthislayersinceitisgeneratedautomaticallyandcoverstheentirelayer.Thisisanoutmodedlayertype.YoucannotroutetracesonaCAMPlanelayer.CopperPoursandPlaneareascannotbecreatedonCAMPlanelayers. ·Split/MixedPlane—Enablesoneormoreplanesonthelayer,andenablesroutingonthelayer.Routescanbeplacedwithinorwithoutplaneareas.Planeareasavoidtraceswithintheiroutlinebyaclearanceareadefinedinthedesignrules.CopperPourscannotbeplacedonSplit/Mixedlayers.PlaneareasarecreatedonSplit/Mixedplanelayersandaresimilartobutmorefeature-packedthanCopperPours. 简单的讲,NOPLANE自由度更大一些,除了“PlaneArea”以及相关的操作命令不能用以外,我们可以在NOPLANE层进行布线、铺铜、铺铜切割、2D图形边框的绘制等常用操作。 CAMPlane层只能赋予“单一网络”,可以是整片的电源也可以是地网络。在本层中,铜箔是以负片方式显示的。直观的讲,暗的区域实际为整片的铜箔,本层不能进行布线、铺铜和planearea操作。 Split/MixedPlane是PADS专门针对多电源系统内电层分割给出的内电层属性。赋予该属性的内电层,只能通过“Planearea ”命令以及“autoplaneseparate”命令进行电源层分割。 注意:电源层层属性的选择也可以选择为其他性质(如NOPLANE)。唯一需要注意的是,前期层属性的不同将导致后期铺铜方式的改变。否则就会发生无法铺铜或者铺铜错误的情况。 第三、分割操作。下文主要说明电源层为Split/MixedPlane属性的情况。该属性下,分割操作使用Autoplaneseparate命令。这里首先绘制铺铜的keepout层,这样可以防止每层的敷铜边界不一致的问题。利用Planearea命令依据PCB外框画出整体敷铜边框,完成后。右键选择“selectshape”,双击选择该边框或者右键调用属性菜单。弹出以下菜单: 在Netassignment选项中分配一个最大的电源网络给当前内电层。然后点击进入“Options”菜单: 在这个菜单当中,这里我们可以设置过孔与铜皮的链接方式(热风焊盘或者是实焊盘)、选择铺铜的优先级。并且可以利用hatchgrid与designgrid的最小单位差值,进行网格铺铜。这里先不选择OK,退出当前菜单到PCB编辑界面。 接下来使用Autoplaneseparate命令进行分割。分割的原则:将目标网络的链接到本层的VIA全部圈起来。这里需要注意,不要形成闭合环状的电源分割区域(闭合的环形电场会产生电磁干扰,可以参考安培定则)。分割完成之后在另外一条边界上双击,弹出网络分配菜单。 根据高亮色区域选择对应的电源网络。依此类推,将所有需要分割的电源全部分割完毕之后,进入到铺铜阶段。 第四、内电层敷铜。这里内电层敷铜可以选择性敷铜,即可以给制定电源网络敷铜。也可以一次性全部敷铜。这里涉及到tools菜单下pourmanager的操作。如下图所示: 点击Setup进入配置菜单: 铺铜管理器当中有三个选项卡:第一个Flood为全局铺铜命令。但是对planearea区域不适用。因为FloodMode命令只对copperpour区域有效! 下面是flood和hatch的区别: Floodingrecalculatesthepourareaandrecreatesallclearancesforthecurrentobstacleswithinthepouroutline,observingclearancerules.Hatchingrefills(withhatchlines)existingpourpolygonsforthecurrentsession;itdoesnotrecalculatethepourarea.Eachtimeyouopenadesignfile,youmustfloodorhatchthedesign;thisinformationisnotsaved.Inmostcases,youcansimplyHatch.UseFloodifyoumakechangestothecopperpourpolygonthatcouldcreateclearanceviolationsorifyouchangeclearancerules. Flooding会重新计算灌注区域并重新计算当前填灌区域的外形线内障碍的所有间距,和一些注意的间距规则。Hatching则用来(用填充线)重新填充当前会话内已经存在的填灌多边形,而并不会重新计算填充填灌区域。每次打开一个设计文件时,你应当对这个设计进行flood或hatch;这些信息是不保存的。大部份情况下,你只要简单的Hatch一下就够了。当你对灌铜多边形的修改会引起规则冲突时,或当你修改了间距规则时,请使用flood。 总结。当进行到这一步的时候,分割和铺铜的工作就全部完成了。这里应该指出术语的准确性,floodcopper为灌铜,copper铺铜。这样可以准确的了解命令的意思,不会用错。此外,PADS默认是不保存flood和hatch敷铜效果的。每次打开之后需要用flood或者hatch命令进行敷铜或者填充操作。需要注意的是,针对内电层使用了Split/MixedPlane属性,flood和hatch命令不起作用,依然是在每次打开的时候使用pourmanager中的“Planeconnect”操作,可以一次性全部给内电层敷铜。 PS:内电敷铜也可以通过选择边框的方式,使用flood命令来敷铜。前提是关闭pouroutline显示模式并点选pouroutline进行删除操作,然后再flood。否则提示无法灌铜。由于容易出错,还是选择planeconnect操作安全。
  • 热度 13
    2012-2-2 15:06
    2031 次阅读|
    0 个评论
    PCB分割及铺铜方法及技巧大全 一 POWER PCB的图层与PROTEL的异同    PROTEL上手容易的特点,很多朋友都是先学的PROTEL后学的POWER,当然也有很多是直接学习的POWER,还有的是两个软件一起用。由于这两个软件在图层设置方面有些差异,初学者很容易发生混淆,所以先把它们放在一起比较一下。直接学习POWER的也可以看看,以便有一个参照。 首先看看内层的分类结构图 =================================== 软件名   属性   层名         用途 ----------------------------------- PROTEL:  正片   MIDLAYER     纯线路层                 MIDLAYER     混合电气层(包含线路,大铜皮)          负片   INTERNAL     纯负片    (无分割,如GND)                 INTERNAL     带内层分割(最常见的多电源情况) ----------------------------------- POWER :  正片   NO PLANE     纯线路层                 NO PLANE     混合电气层(用铺铜的方法 COPPER POUR)                 SPLIT/MIXED  混合电气层(内层分割层法 PLACE AREA)          负片   CAM PLANE    纯负片    (无分割,如GND) ===================================     从上图可以看出,POWER与PROTEL的电气图层都可分为正负片两种属性,但是这两种图层属性中包含的图层类型却不相同。 1.PROTEL只有两种图层类型,分别对应正负片属性。而POWER则不同,POWER中的正片分为两种类型,NO PLANE和SPLIT/MIXED 2.PROTEL中的负片可以使用内电层分割,而POWER的负片只能是纯负片(不能应用内电层分割,这一点不如PROTEL)。内层分割必须使用正片来做。用SPLIT/MIXED层,也可用普通的正片(NO PLANE)+铺铜。     也就是说,在POWER PCB 中,不管用于电源的内层分割还是混合电气层,都要用正片来做,而普通的正片(NO PLANE)与专用混合电气层(SPLIT/MIXED)的唯一区别就是铺铜的方式不一样!负片只能是单一的负片。(用2D LINE分割负片的方法,由于没有网络连接和设计规则的约束,容易出错,不推荐使用)     这两点是它们在图层设置与内层分割方面的主要区别。 二 SPLIT/MIXED层的内层分割与NO PLANE层的铺铜之间的区别 1.SPLIT/MIXED:必须使用内层分割命令(PLACE AREA),可自动移除内层独立焊盘,可走线,可以方便的在大片铜皮上进行其他网络的分割,内层分割的智能化较高。 2.NO PLANEC层:必须使用铺铜的命令(COPPER POUR),用法同外层线路,不会自动移除独立焊盘,可走线,不可以在大块铜皮上进行其他网络的分割。也就是说不能出现大块铜皮包围小块铜皮的现象。 三 POWER PCB的图层设置及内层分割方法     看过上面的结构图以后应该对POWER的图层结构已经很清楚了,确定了要使用什么样的图层来完成设计,下一步就是添加电气图层的操作了。 下面以一块四层板为例:     首先新建一个设计,导入网表,完成基本的布局,然后新增图层SETUP-LAYER DEFINITION,在ELECTRICAL LAYER区,点击MODIFY,在弹出的窗口中输入4,OK,OK。此时在TOP与BOT中间已经有了两个新电气图层,分别给这两个图层命名,并设置图层类型。     把INNER LAYER2命名为GND,并设定为CAM PLANE,然后点击右边的ASSIGN分配网络,因为这层是负片的整张铜皮,所以分配一个GND就可以,千万不要分多了网络!     把INNER LAYER3命名为POWER,并设定为SPLIT/MIXED(因为有多组电源,所以要用到内层分割),点击ASSIGN,把需要走在内层的电源网络分配到右边的ASSOCIATED窗口下(假设分配三个电源网络)。     下一步进行布线,把外层除了电源地以外的线路全部走完。电源地的网络则直接打孔即可自动连接到内层(小技巧,先暂时把POWER层的类型定义为CAM PLANE,这样凡是分配到内层的电源网络且打了过孔的线路系统都会认为已经连接,而自动取消鼠线)。待所有布线都完成以后即可进行内层分割。     第一步是给网络上色,以利于区分各个接点位置,按快捷键CTRL+SHIFT+N,指定网络颜色(过程略)。     然后把POWER层的图层属性改回SPLIT/MIXED,再点击DRAFTING-PLACE AREA,下一步即可绘制第一个电源网络的铺铜。     1号网络(黄色):第一个网络要铺满整个板面,然后指定为连接面积最大,数量最多的那个网络名称。     2号网络(绿色):下面进行第二个网络,注意因为这一网络位于整个板子的中部,所以我们要在已经铺好的大铜面上切出一块来作为新的网络。还是点击PLACE AREA,然后按照颜色指示绘制切割区域,当双击鼠标完成切割的时候,系统会自动出现当前所切割网络(1)与当前网络(2)的的区域隔离线(由于是用正片铺铜的方式做切割,所以不能象负片做切割那样用一条正性线来完成大铜面的分割)。同时分配该网络名称。     3号网络(红色):下面第三个网络,由于此网络较靠近板边,所以我们还可以用另外一个命令来做。点击DRAFTING-AUTO PLANE SEPARATE,然后从板边开始画起,把需要的接点包围以后再回到板边,双击鼠标即可完成。同时也会自动出现隔离带,并弹出一个网络分配窗口,注意此窗口需要连续分配两个网络,一个是你刚刚切割出来的网络,一个是剩余区域的网络(会有高亮显示)。     至此已基本完成整个布线工作,最后用POUR MANAGER-PLANE CONNECT进行灌铜,即可出现效果。
相关资源
  • 所需E币: 0
    时间: 2023-11-27 14:02
    大小: 4.52KB
    众所周知,视觉系统对于理解和推理视觉场景的组成特性至关重要。这个领域的挑战在于对象之间的复杂关系、位置、歧义、以及现实环境中的变化等。作为人类,我们可以很轻松地借助各种模态,包括但不仅限于视觉、语言、声音等来理解和感知这个世界。现如今,随着Transformer等关键技术的提出,以往看似独立的各个方向也逐渐紧密地联结到一起,组成了“多模态”的概念。多功能通过引入灵活的提示引擎,包括点、框、涂鸦(scribbles)、掩模、文本和另一幅图像的相关区域,实现多功能性;可组合通过学习联合视觉-语义空间,为视觉和文本提示组合实时查询,实现组合性,如图1所示;可交互通过结合可学习的记忆提示进行交互,实现通过掩模引导的交叉注意力保留对话历史信息;语义感知通过使用文本编码器对文本查询和掩模标签进行编码,实现面向开放词汇分割的语义感知。超大规模视觉通用感知模型由超大规模图像、文本主干网络以及多任务兼容解码网络组成,它基于海量的图像和文本数据构成的大规模数据集进行预训练,用于处理多个不同的图像、图像-文本任务。此外,借助知识迁移技术能够实现业务侧小模型部署。超大规模视觉通用感知模型面临的挑战:(1)网络参数量庞大,通常超十亿参数,训练稳定性、收敛性、过拟合等问题相较于小网络挑战大很多。(2)原始数据集包含数十亿异质低质量图片与海量文本,多步训练以利用异质的多模态多任务数据,流程复杂,存在灾难性遗忘,难以定位精度等问题。(3)实验成本高,通常需要上千块GPU并行训练数周,需要研究者有敏锐的分析能力和扎实的知识基础。(4)工程挑战多,海量数据的吞吐,大型GPU集群上的并行算法,超大参数量模型的内存管理。提示工程大多数视觉数据集由图像和相应文本标签组成,为了利用视觉语言模型处理视觉数据集,一些工作已经利用了基于模版的提示工程,text_descriptions=[f"Thisisaphotoofa{label}"forlabelincifar100.classes]  text_tokens=clip.tokenize(text_descriptions).cuda()除了此类大型视觉语言基础模型外,一些研究工作也致力于开发可以通过视觉输入提示的大型基础模型。例如,最近META推出的SAM能够执行与类别无关的分割,给定图像和视觉提示(如框、点或蒙版),指定要在图像中分割的内容。这样的模型可以轻松适应特定的下游任务,如医学图像分割、视频对象分割、机器人技术和遥感等从模型训练、模型分发、模型商业化,美图体系化地同创作者和开发者共建模型生态:(1)模型训练:提供二次训练能力,并持续不断地为创作者提供服务,包括培训、社区和模型创作大赛。(2)模型分发:创作者和开发者共建的模型可以在美图的产品内进行分发,在分发过程中持续优化模型。(3)模型商业化:行业客户可通过MiracleVision的API和SDK进行商业使用,创作者和开发者通过商业合作获得经济收益。通用视觉-语言学习的基础模型UNITER:结合了生成(例如掩码语言建模和掩码区域建模)和对比(例如图像文本匹配和单词区域对齐)目标的方法,适用于异构的视觉-语言任务。Pixel2Seqv2:将四个核心视觉任务统一为像素到序列的接口,使用编码器-解码器架构进行训练。Vision-Language:使用像BART或T5等预训练的编码器-解码器语言模型来学习不同的计算机视觉任务。模型整体结构上,抛弃了CNN,将BERT原版的Transformer开箱即用地迁移到分类任务上面,在使用大规模训练集的进行训练时,取得了极好的效果。同时,在大规模数据集上预训练好的模型,在迁移到中等数据集或小数据集的分类任务上以后,也能取得比CNN更优的性能。模型整体结构如下图所示,完全使用原始BERT的Transformer结构,主要是对图片转换成类似token的处理,原文引入了一个patch的概念,首先把图像划分为一个个的patch,然后将patch映射成一个embedding,即图中的linearprojection层,将输入转换为类似BERT的输入结构,然后加上positionembedding,这里的position是1D的,最后加上一个learnableclassificationtoken放在序列的前面,classification由MLP完成。这里我们用RAM提取了图像的语义标签,再通过将标签输入到Grounding-DINO中进行开放世界检测,最后再通过将检测作为SAM的提示分割一切。目前视觉基础大模型可以粗略的归为三类:textuallypromptedmodels,e.g.,contrastive,generative,hybrid,andconversational;visuallypromptedmodels,e.g.,SAM,SegGPT;heterogeneousmodalities-basedmodels,e.g.,ImageBind,Valley.CoCa通过将所有标签简单地视为文本,对web-scalealt-text和annotatedimages进行了从头开始端到端的预训练,无缝地统一了表示学习的自然语言监督。因此,CoCa在广泛的下游任务上实现了最先进的性能,零样本传输或最小的任务特定适应,跨越视觉识别(ImageNet,Kinetics-400/600/700,Moments-in-Time)、跨模式检索(MSCOCO、Flickr30K、MSR-VTT)、多模式理解(VQA、SNLI-VE、NLVR2)和图像字幕(MSCOCO、NoCaps)。在ImageNet分类中,CoCa获得了86.3%的zero-shottop-1准确率,frozenencoderandfinetuneclassifier是90.6%,finetuneencoder可以到91.0%。截止目前国内外已经发布了许多包括NLP,CV和多模态在内的大规模模型,但是这些模型在应用落地上还是有待进一步探究的,目前应用落地较好的有华为的盘古,在电网和金融圈都有应用;智源的悟道系列在诗词图文上都有广泛应用,可以帮助学生看图写作,根据文字生成插图等;百度的文心也发布了在金融方面的应用。但截止目前为止大模型在实际中的应用还不是很理想,大模型发展的初衷是使用一个预训练好的大模型代替一堆小作坊似的根据不同任务训练的小模型,通过模型蒸馏知识迁移等技术在小模型上使用少量数据集达到超过原来小模型性能的目标。CV大模型在应用上的一个难点是与实际应用相结合,目前社会中用的较多的视觉相关的深度学习模型主要包括物体检测,人脸识别以及缺陷检测(部分)相比NLP模型在实际中的使用少很多,因此将CV模型与实际生产相结合发现更多的应用场景很关键。另外一个CV大模型应用的难点就是如何快速高效的使用蒸馏和知识迁移技术提升下游任务的性能,这两点难题的解决在CV大模型的实际应用中都刻不容缓。总结起来,将大模型应用于更高分辨率的下游视觉任务具有以下好处:提高感知能力、改善定位精度、提升语义理解、改善细节保留和边缘清晰度、增加鲁棒性和泛化能力,以及推动研究进展。这些好处使得大模型在处理高分辨率图像时能够获得更准确、更细致和更真实的结果。随着深度学习和计算资源的不断发展,我们可以期待更先进的大模型和相关技术的出现,进一步推动计算机视觉在高分辨率图像任务中的应用和突破
  • 所需E币: 0
    时间: 2023-11-27 11:13
    大小: 5.15KB
    上传者: 开心就很好了
    自动驾驶是高安全型应用,需要高性能和高可靠的深度学习模型,VisionTransformer是理想的选摔。现在主流的自动驾驶感知算法基本都使用了VisionTransformer相关技术,比如分割、2D/3D检测,以及最近大火的大模型(如SAM),VisionTransformer在自动驾驶领域的落地方面遍地开花。5一方面,在自动驾驶或图像处理相关算法岗位的面试题中,VisionTransformer是必考题,需要对其理论知识有深入理解,并且在项目中真实的使用过相关技术。Transformer出自于Google于2017年发表的论文《Attentionisallyouneed》,最开始是用于机器翻译,并且取得了非常好的效果。但是自提出以来,Transformer不仅仅在NLP领域大放异彩,并且在CV、RS等领域也取得了非常不错的表现。尤其是2020年,绝对称得上是Transformer的元年,比如在CV领域,基于Transformer的模型横扫各大榜单,完爆基于CNN的模型。为什么Transformer模型表现如此优异?它的原理是什么?它成功的关键又包含哪些?本文将简要地回答一下这些问题。我们知道Transformer模型最初是用于机器翻译的,机器翻译应用的输入是某种语言的一个句子,输出是另外一种语言的句子。vari*int=nilfmt.Println("i.size:",unsafe.Sizeof(i))//8vari8*int8=nilfmt.Println("i8.size:",unsafe.Sizeof(i8))//8vars*string=nilfmt.Println("s.size:",unsafe.Sizeof(s))//8varps*struct{}=nilfmt.Println("ps.size:",unsafe.Sizeof(ps))//8varsi[]int=nilvarsi1[]int=nilfmt.Println("si.size:",unsafe.Sizeof(si))//24variiinterface{}=nilfmt.Println("ii.size:",unsafe.Sizeof(ii))//16我们以生成我,爱,机器,学习,翻译成<bos>,i,love,machine,learning,<eos>这个例子做生成过程来解释。训练:把“我/爱/机器/学习”embedding后输入到encoder里去,最后一层的encoder最终输出的outputs[10,512](假设我们采用的embedding长度为512,而且batchsize=1),此outputs乘以新的参数矩阵,可以作为decoder里每一层用到的K和V;将<bos>作为decoder的初始输入,将decoder的最大概率输出词向量A1和‘i’做crossentropy(交叉熵)计算error。将<bos>,“i”作为decoder的输入,将decoder的最大概率输出词A2和‘love’做crossentropy计算error。将<bos>,“i”,“love”作为decoder的输入,将decoder的最大概率输出词A3和’machine’做crossentropy计算error。将<bos>,“i”,"love",“machine”作为decoder的输入,将decoder最大概率输出词A4和‘learning’做crossentropy计算error。将<bos>,“i”,"love",“machine”,“learning”作为decoder的输入,将decoder最大概率输出词A5和终止符做crossentropy计算error。那么并行的时候是怎么做的呢,我们会有一个mask矩阵在这叫seqmask,因为他起到的作用是在decoder编码我们的targetseq的时候对每一个词的生成遮盖它之后的词的信息。funcmain(){s:=[]string{"a","b","c"}fmt.Println("s:origin",s)changes1(s)fmt.Println("s:f1",s)changes2(s)fmt.Println("s:f2",s)changes3(s)fmt.Println("s:f3",s)}funcchanges1(s[]string){vartmp=[]string{"x","y","z"}s=tmp}funcchanges2(s[]string){//item只是一个副本,不能改变s中元素的值fori,item:=ranges{item="d"fmt.Printf("item=%s;s[%d]=%s",item,i,s[i])}}funcchanges3(s[]string){fori:=ranges{s[i]="d"}}首先我们需要为每个输入向量(也就是词向量)创建3个向量,分别叫做Query、Key、Value。那么如何创建呢?我们可以对输入词向量分别乘上3个矩阵来得到Q、K、V向量,这3个矩阵的参数在训练的过程是可以训练的。注意Q、K、V向量的维度是一样的,但是它们的维度可以比输入词向量小一点,比如设置成64,其实这步也不是必要的,这样设置主要是为了与后面的Mulit-head注意力机制保持一致(当使用8头注意力时,单头所处理的词向量维度为512/8=64,此时Q、K、V向量与输入词向量就一致了)。我们假设输入序列为英文的"ThinkingMachines"想要深度理解Attention机制,就需要了解一下它产生的背景、在哪类问题下产生,以及最初是为了解决什么问题而产生。首先回顾一下机器翻译领域的模型演进历史:机器翻译是从RNN开始跨入神经网络机器翻译时代的,几个比较重要的阶段分别是:SimpleRNN,ContextualizeRNN,ContextualizedRNNwithattention,Transformer(2017),下面来一一介绍。「SimpleRNN」:这个encoder-decoder模型结构中,encoder将整个源端序列(不论长度)压缩成一个向量(encoderoutput),源端信息和decoder之间唯一的联系只是:encoderoutput会作为decoder的initialstates的输入。这样带来一个显而易见的问题就是,随着decoder长度的增加,encoderoutput的信息会衰减。funcmain(){varc=make(chanint)fmt.Printf("c.pointer=%p\n",c)//c.pointer=0xc000022180gofunc(){c<-1addChannel(c)close(c)}()foritem:=rangec{//item:1//item:2fmt.Println("item:",item)}}funcaddChannel(donechanint){done<-2fmt.Printf("done.pointer=%p\n",done)//done.pointer=0xc000022180}在测试模型的时候,Test:decoder没有label,采用自回归一个词一个词的输出,要翻译的中文正常从encoder并行输入(和训练的时候一样)得到每个单词的embedding,然后decoder第一次先输入bos再此表中的id,得到翻译的第一个单词,然后自回归,如此循环直到预测达到eos停止标记typevisitstruct{a1 unsafe.Pointera2 unsafe.PointertypType}funcdeepValueEqual(v1,v2Value,visitedmap[visit]bool)bool{if!v1.IsValid()||!v2.IsValid(){returnv1.IsValid()==v2.IsValid()}ifv1.Type()!=v2.Type(){returnfalse}//Wewanttoavoidputtingmoreinthevisitedmapthanweneedto.//Foranypossiblereferencecyclethatmightbeencountered,//hard(v1,v2)needstoreturntrueforatleastoneofthetypesinthecycle,//andit'ssafeandvalidtogetValue'sinternalpointer.hard:=func(v1,v2Value)bool{switchv1.Kind(){casePointer:ifv1.typ.ptrdata==0{//not-in-heappointerscan'tbecyclic.//Atleast,allofourcurrentusesofruntime/internal/sys.NotInHeap//havethatproperty.Theruntimeonesaren'tcyclic(andwedon'tuse//DeepEqualonthemanyway),andthecgo-generatedonesare//allemptystructs.returnfalse}fallthroughcaseMap,Slice,Interface://Nilpointerscannotbecyclic.Avoidputtingtheminthevisitedmap.return!v1.IsNil()&&!v2.IsNil()}returnfalse}ifhard(v1,v2){//ForaPointerorMapvalue,weneedtocheckflagIndir,//whichwedobycallingthepointermethod.//ForSliceorInterface,flagIndirisalwaysset,//andusingv.ptrsuffices.ptrval:=func(vValue)unsafe.Pointer{switchv.Kind(){casePointer,Map:returnv.pointer()default:returnv.ptr}}addr1:=ptrval(v1)addr2:=ptrval(v2)ifuintptr(addr1)>uintptr(addr2){//Canonicalizeordertoreducenumberofentriesinvisited.//Assumesnon-movinggarbagecollector.addr1,addr2=addr2,addr1}//Shortcircuitifreferencesarealreadyseen.typ:=v1.Type()v:=visit{addr1,addr2,typ}ifvisited[v]{returntrue}//Rememberforlater.visited[v]=true}switchv1.Kind(){caseArray:fori:=0;i<v1.Len();i++{if!deepValueEqual(v1.Index(i),v2.Index(i),visited){returnfalse}}returntruecaseSlice:ifv1.IsNil()!=v2.IsNil(){returnfalse}ifv1.Len()!=v2.Len(){returnfalse}ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}//Specialcasefor[]byte,whichiscommon.ifv1.Type().Elem().Kind()==Uint8{returnbytealg.Equal(v1.Bytes(),v2.Bytes())}fori:=0;i<v1.Len();i++{if!deepValueEqual(v1.Index(i),v2.Index(i),visited){returnfalse}}returntruecaseInterface:ifv1.IsNil()||v2.IsNil(){returnv1.IsNil()==v2.IsNil()}returndeepValueEqual(v1.Elem(),v2.Elem(),visited)casePointer:ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}returndeepValueEqual(v1.Elem(),v2.Elem(),visited)caseStruct:fori,n:=0,v1.NumField();i<n;i++{if!deepValueEqual(v1.Field(i),v2.Field(i),visited){returnfalse}}returntruecaseMap:ifv1.IsNil()!=v2.IsNil(){returnfalse}ifv1.Len()!=v2.Len(){returnfalse}ifv1.UnsafePointer()==v2.UnsafePointer(){returntrue}for_,k:=rangev1.MapKeys(){val1:=v1.MapIndex(k)val2:=v2.MapIndex(k)if!val1.IsValid()||!val2.IsValid()||!deepValueEqual(val1,val2,visited){returnfalse}}returntruecaseFunc:ifv1.IsNil()&&v2.IsNil(){returntrue}//Can'tdobetterthanthis:returnfalsecaseInt,Int8,Int16,Int32,Int64:returnv1.Int()==v2.Int()caseUint,Uint8,Uint16,Uint32,Uint64,Uintptr:returnv1.Uint()==v2.Uint()caseString:returnv1.String()==v2.String()caseBool:returnv1.Bool()==v2.Bool()caseFloat32,Float64:returnv1.Float()==v2.Float()caseComplex64,Complex128:returnv1.Complex()==v2.Complex()default://NormalequalitysufficesreturnvalueInterface(v1,false)==valueInterface(v2,false)}}这便是encoder的整体计算流程图了,Transformer模型中堆叠了多个这样的encoder,无非就是输出连接输入罢了,常规操作。最后再附上一个Transformer的代码实现,读者有兴趣可以跟着自己复现一下Transformer模型的代码。  packagemain  import(    "log"    "sync"  )  funcinit(){    log.SetFlags(log.Lshortfile)  }  funcmain(){    lock:=sync.Mutex{}    //Go1.18新增,是一种非阻塞模式的取锁操作。当调用TryLock()时,    //该函数仅简单地返回true或者false,代表是否加锁成功    //在某些情况下,如果我们希望在获取锁失败时,并不想停止执行,    //而是可以进入其他的逻辑就可以使用TryLock()    log.Println("TryLock:",lock.TryLock())    //已经通过TryLock()加锁,不能再次加锁    lock.Lock()  }
  • 所需E币: 0
    时间: 2023-6-17 10:28
    大小: 1.63KB
    上传者: 开心就很好了
    今天给大家分享一套YOLO8的视频教程,《YOLOv8自定义对象检测、实例分割、目标跟踪从训练到部署》,2023年新课,视频+源码+课件+数据下载。《YOLOv8自定义对象检测、实例分割、目标跟踪从训练到部署》课程详解YOLOv8模型结构从backbone、neck、header、loss层面详解YOLOv8相比YOLOX、YOLOv5、YOLOv6的全面改进与创新。《《YOLOv8自定义对象检测、实例分割、目标跟踪从训练到部署》》课程完成YOLOv8自定义数据的对象检测,实例分割、自定义对象跟踪,YOLOv8在主流推理平台上部署包括OpenVINO、ONNXRUNTIME、TensorRT推理代码详解与演示。打通从模型结构理论到工程实践训练部署整个流程。彻底玩转YOLOv8。章节1:YOLOv8介绍与安装环境测试章节2:YOLOv8模型结构与源码详解章节3:YOLOv8自定义对象检测章节4:YOLOv8自定义实例分割-工业缺陷检测章节5:YOLOv8自定义对象跟踪章节6:YOLOv8模型推理部署章节7:YOLOv8课程总结源码+课件+数据安装YOLOv8有两种安装方式,一种是直接用pip命令安装:pipinstallultralytics另外一种是通过源码安装:gitclonehttps://github.com/ultralytics/ultralyticscdultralyticspipinstall-e'.[dev]'安装完成后就可以通过yolo命令在命令行进行使用了。目标检测使用YOLOv8进行目标检测,可以使用下面的命令:yolotask=detectmode=predictmodel=yolov8n.ptsource=ultralytics/assets/bus.jpgimgsz=640show=Truesave=True如果模型权重不存在,程序会自动从GitHub中下载。如果对命令行的参数不了解,可以参考官方文档的说明,也可以直接看ultralytics代码仓库中的ultralytics/yolo/cfg/default.yaml文件,里面有所有参数的说明和默认值。fromopenvino.runtimeimportCoreimportnumpyasnpimportcv2,timefromultralytics.yolo.utilsimportROOT,yaml_loadfromultralytics.yolo.utils.checksimportcheck_yamlMODEL_NAME="yolov8n-int8"CLASSES=yaml_load(check_yaml('coco128.yaml'))['names']colors=np.random.uniform(0,255,size=(len(CLASSES),3))
  • 所需E币: 0
    时间: 2023-6-2 16:16
    大小: 726B
    上传者: 蝴蝶结欧恩
    分享课程——YOLOv8自定义对象检测、实例分割、目标跟踪从训练到部署,2023新课,提供源码+课件+数据。详解YOLOv8模型结构从backbone、neck、header、loss层面详解YOLOv8相比YOLOX、YOLOv5、YOLOv6的全面改进与创新。完成YOLOv8自定义数据的对象检测,实例分割、自定义对象跟踪,YOLOv8在主流推理平台上部署包括OpenVINO、ONNXRUNTIME、TensorRT推理代码详解与演示。打通从模型结构理论到工程实践训练部署整个流程。彻底玩转YOLOv8。
  • 所需E币: 5
    时间: 2023-2-13 22:03
    大小: 744.58KB
    上传者: czd886
    多移动机器人区域分割优化覆盖算法研究
  • 所需E币: 5
    时间: 2023-2-13 13:37
    大小: 1.36MB
    上传者: czd886
    基于分割树的移动机器人立体匹配研究
  • 所需E币: 5
    时间: 2023-2-13 10:57
    大小: 2.02MB
    上传者: czd886
    基于点云分割的移动机器人运动目标跟踪方法
  • 所需E币: 5
    时间: 2023-2-14 21:23
    大小: 242.89KB
    上传者: czd886
    移动机器人同时定位与构图中的自适应区域分割方法
  • 所需E币: 5
    时间: 2023-2-11 21:37
    大小: 1.83MB
    上传者: ZHUANG
    基于语义分割和卷积神经网络的数显表识别算法研究
  • 所需E币: 0
    时间: 2023-2-11 21:36
    大小: 1.48MB
    上传者: ZHUANG
    基于活跃度的脉冲耦合神经网络的苹果腐烂分割方法.
  • 所需E币: 4
    时间: 2023-2-11 14:36
    大小: 1.16MB
    上传者: ZHUANG
    一种基于深度学习的二阶段舌象分割网络模型
  • 所需E币: 4
    时间: 2023-2-11 14:32
    大小: 3.37MB
    上传者: ZHUANG
    基于语义传播与前_背景感知的图像语义分割网络
  • 所需E币: 5
    时间: 2023-2-11 11:57
    大小: 931.07KB
    上传者: ZHUANG
    基于奇偶交叉卷积的轻量级图像语义分割网络
  • 所需E币: 5
    时间: 2023-2-9 14:03
    大小: 1.31MB
    上传者: ZHUANG
    一种基于神经网络的倾斜摄影三维语义分割方法
  • 所需E币: 5
    时间: 2023-2-9 09:33
    大小: 1.1MB
    上传者: ZHUANG
    基于卷积神经网络的多模态视频场景分割优化算法
  • 所需E币: 4
    时间: 2023-2-9 09:17
    大小: 1.22MB
    上传者: ZHUANG
    基于VitisAI的语义分割网络加速器研究与实现
  • 所需E币: 5
    时间: 2023-2-8 22:06
    大小: 23.45MB
    上传者: ZHUANG
    一种改进的视频分割网络及其全局信息优化方法
  • 所需E币: 5
    时间: 2023-2-8 21:45
    大小: 938.34KB
    上传者: ZHUANG
    基于改进的SegNet分割网络的遥感图像分割
  • 所需E币: 5
    时间: 2023-2-8 14:16
    大小: 3.9MB
    上传者: ZHUANG
    基于深度学习的息肉分割网络GLIA-Net
  • 所需E币: 4
    时间: 2022-10-11 11:18
    大小: 203.76KB
    上传者: czd886
    视频监控系统中运动目标的分割定位