精华内容
下载资源
问答
  • 基于模糊语义模型的陶瓷感官数据标准化
  • web语义化 在广义方面 在代码编译方面 页面布局和架构 布局 架构 开发人员会有一些困惑: 开发经理也会有一些困惑: 用户会对这些事情感到烦恼: 架构的本质是什么?其实也是一种管理。 常见的前端产品形态包括: ...

    目录

    web标准

    Web标准是由一系列标准组合而成。
    一个网页主要由三部分组成:结构层表现层行为层。对应的标准也分三方面:结构化标准语言主要包括XHTML和HTML以及XML,表现层标准语言主要包括CSS,行为标准主要包括对象模型,DOM、ECMAScript等。

    结构层标准,就是W3C规定的那样:

    1.标签的书写,需要开始和结束。单便签除外;
    2.块级元素不能放在p标签里面。li内可以包含div标签;
    3.块元素里面可以放在块和内联,特殊的 p和 h1—h6里面不要放块元素,li和div可以放很多。因为这两个标签,本身就有容器的属性;
    4.内联里面要放内联,不要放块;
    5.结构与表现分离;
    6.命名一定要规范;

    表现层标准:

    css的书写,首先要尽可能使用外部引入的方式,因为结构层尽可能的减少表现层的代码过多出现。达到分离的目的。css的选择器有哪些,那些属性可以继承,那些不可以继承。他们之间的优先级是怎么样的。怎么用最简洁的css代码表达设计者的想法,而不只是实现设计者的想法就没事了。我们要的是代码简洁,代码过多,反而让浏览器解析很多,浪费时间。

    行为层标准:

    主要是javascript中的知识。比如DOM、ECMAScript。使用javascript中的标准,即可。一般对于用户的行为,或者说页面上的动态效果的一些特殊实现,我们可以会考虑到使用javascript来进行书写,但是代码的可复用性,模块化。变量,作用域。

    表现与数据分离:

    表现:顾名思义,就是表达出来的现象,在前端来看,就是html+css,就是平常所看到的的网页的架子;
    数据:一般是从后端数据库或从哪爬过来的数据,然后在前台显示出来,即是网页中各个结构上的内容;


    说到这,你会有疑问了,其实就是MVC。0.0


    实现表现与数据分离的好处与代价是什么?
    好处:模块化 –> 容易测试 –> 降低bug频率;
    坏处:程序结构复杂,比较耗时,上手有学习曲线;


    什么样的情况下需要用到这种思想?
    需要:项目具有明显的数据需求,比如要与很多Service交互,业务流程复杂,表单很多;
    不需要:项目是典型的静态信息展示型页面,或是微型的内部app,或是产品idea验证时期的MVP;


    如何有效的实践这种思想?
    学习开发 –> 学习测试 –> 学习“测试驱动开发” –> 学习真正的开发;
    不会测试而夸夸其谈表现与数据分离的人,你离他们要远一点,哪天项目搞砸了,别连累到你;

    web语义化

    什么是语义化?其实简单说来就是让机器可以读懂内容。

    在广义方面

    对于当前的 Web 而言,HTML 是联系大多数 Web 资源的纽带,也是内容的载体。在 Web 被刚刚设计出来的时候,Tim Berners-Lee 可能不会想到它现在会达到的规模以及深入到我们生活的那么多方面。也许起初的想法很简单:用来发布 Web 内容和资源的索引,方便人们查看。


    但是随着 Web 规模的不断扩大,信息量之大已经不在人肉处理的范围之内了。这个时候人们开始用机器来处理 Web 上发布的各种内容,搜索引擎就诞生了。再后来,人们又设计了各种智能程序来对索引好的内容作各种处理和挖掘。所以让机器能够更好地读懂 Web 上发布的各种内容就变得越来越重要。


    其实 HTML 在刚开始设计出来的时候就是带有一定的「语义」的,包括段落、表格、图片、标题等等,但这些更多地只是方便浏览器等 UA 对它们作合适的处理。但逐渐地,机器也要借助 HTML 提供的语义以及自然语言处理的手段来「读懂」它们从网上获取的 HTML 文档,但它们无法读懂例如「红色的文字」或者是深度嵌套的表格布局中内容的含义,因为太多已有的内容都是专门为了可视化的浏览器设计的。面对这种情况,出现了两种观点:


    1.我们可以让机器的理解能力越来越接近人类,人能看懂、听懂的东西,机器也能理解;
    2.我们应该在发布内容的时候,就用机器可读的、被广泛认可的语义信息来描述内容,来降低机器处理 Web 内容的难度(HTML 本身就已经是朝这个方向迈出的一小步了)。

    在代码编译方面

    最初的HTML中如h1~h6、thead、ul、ol等标签,通过标签的语义,最初设计的想法,来达到语义化的要求。如标题、表头、无序、有序列表,搜索引擎很好的利用了这些语义化标签抓取内容


    后来,最初定义的HTML语义化标签,不足以实现对Web页面各个部分的功能或位置描述,所以Web前端人员利用HTML标签的id和class属性,进一步对HTML标签进行描述,如对页脚HTML标签添加如id=”footer”或者class=”footer”的属性(值),以“无声”的方式在不同的前端程序员或者前后端程序员间实现交流。


    制定HTML5的W3C组织采用了诸如header、footer、section等语义化标签,来进行页面布局的设计想法,弥补了采用id=”header”或者class=”section”等。


    更深层次的语义化,是自己在团队合作的过程中,对于需要声明的变量和class,id。尽可能使用彼此能理解的英文。这样减少合作的成本,加快合作的效率。

    页面布局和架构

    布局

    分为两种:


    代码上的:代码就是最典型的DIV+CSS布局,表格布局(table),iframe框架(特殊地方使用)布局,具体的使用。可以对应的看一下。目前最流行的是,div+css布局的方式。当然布局的概念比较广泛,因为在css中也存在很多布局的方法,比如float和position。具体理解的程度,需要自己去详细的阐述。
    视觉上的:比如单页面的,九宫格的,瀑布流布局,tab切换布局,手风琴布局等。

    架构

    在谈前端架构之前,需要先探讨一下不同人群对前端产生的困惑。前端这个职业最近几年才逐渐被认可,之前一直是低端的代名词,所以多数高手很不屑搞这个。之前的很多项目,人们对前端这块的要求也只是能用就行,所以很少会在上面去细致、深入地建立一套完善体系。而多数产品的技术经理也会是后端出身的,往往对前端的认识还停留在Java Struts那个原始的MVC模型上,或者首先想到的就是GWT和JSF,这是从后端角度出发的一种视角。用这类思维方式做出来的产品,一般用户体验都不会很好。


    另一方面,从界面层上手的人群,他对用户体验这方面会把控得比较好,但通常缺架构意识,或者说是软件工程的意识。在界面层比较复杂的情况下,很可能会有失控的趋势。对整个系统结构的认知程度通常不够深入,也缺乏设计模式等方面的知识。

    开发人员会有一些困惑:
    • 创建项目的时候,一般没有人作前端的技术选型
    • 拿到项目之后,没有直接可复制的基础版本
    • 习惯于引用第三方组件
    • 赶功能,需要某个组件或者特效
    • 上网搜到一个合适的,加进来
    • 它还依赖一些别的库
    • 文件大还是次要的
    • 可能会产生冲突,样式也不一致
    开发经理也会有一些困惑:
    • 协作过程感觉有问题
    • 前端人员写原始界面,包含静态界面和特效
    • 开发人员接着改,加逻辑
    • 发现有问题要返工了
    • 在谁的代码基础上继续改?如何合并?
    • 能自动单元测试吗?
    • 能自动发布打包吗?
    用户会对这些事情感到烦恼:
    • 长得丑
    • 界面老土
    • 风格不一致
    • 速度慢
    • 加载慢
    • 渲染慢
    • 执行慢
    • 出错
    架构的本质是什么?其实也是一种管理。

    通常我们所说的管理,都是指对于任务和人员的管理,而架构管的是机器和代码。比如说,机器的部署属于运维的物理架构,SOA属于服务架构,那么,前端的架构指什么呢?


    长期以来,前端所处的位置是比较偏应用层,而且是很薄的一层,而架构又要求深度和广度,所以之前在前端里面做架构,好比在小水塘里游泳,稍微扑腾两下就到处碰壁。但最近这几年来,前端的范围被大大拓展了,所以这一层逐渐变得大有可为。


    怎样去理解架构呢?在早期的文字MUD游戏里,有这么一句话:“你感觉哪里不对,但是又说不上来。”在我们开发和使用软件系统的过程中,或多或少会遇到这样的感觉,有这种感觉就说明架构方面可能有些问题。


    在狭义的前端领域,架构要处理的很重要的事情是组件的集成。由于JavaScript本身缺乏命名空间这样的机制,多数框架都倾向于自己搞一套,所以这方面的碎片化是很严重的。如果一个公司的实力不足以自研所有用到的组件,就会一直面临这方面的问题。


    比如说,在做某个功能的过程中,发现需要一个组件,时间来不及做,就到网上搜了个,加到代码里面,先运行起来再说。一不小心,等功能做完的时候,已经引入了无数种组件了,有很多代码是重叠的,可能有的还有冲突,外观也不一致。


    环顾四周的大型互联网公司,基本上都有自己的前端框架,比如阿里的Kissy和Arale,腾讯的JX,百度的Tangram,360的QWrap等,为什么?因为要整合别的框架,并且在此基础上发展适合自己的组件库,代价非常大,初期没办法的时候只能凑合,长期来说,所有代码都可控的意义非常重要。


    那么,是不是一套框架可以包打天下呢,这个真的很难。对于不同的产品形态,如果想要用一套框架去适应,有的会偏轻,有的又偏重,有的要兼容低端浏览器,有的又不要,很难取舍。

    常见的前端产品形态包括:
    • 内容型Web站点 侧重渲染方面的优化,前端逻辑比重小
    • 操作型B/S系统 以数据和逻辑为中心,界面较规整
    • 内嵌Web的本地应用 要处理缓存和一些本地接口,包括PC客户端和移动端

    这三种产品的前端框架要处理的事情显然是不太一样的,所以可以细分成2-3种项目模板,整理出对应的种子项目,供同类产品初始化用。


    最近我们经常在前端领域听说两个词:全端、全栈。


    全端的意思是,原来的只做在浏览器中运行的Web程序不够,还要做各种终端,包括iOS,Android等本地应用,甚至PC桌面应用。


    为什么广义的前端应当包含本地应用呢?因为现在的本地应用,基于很多考虑,都变成了混合应用,也就是说,开发这个应用的技术,既包含原生的代码,也包含了嵌入的HTML5代码。这么一来,就造成了开发本地应用的人技能要求较广,能够根据产品的场景,合理选择每个功能应当使用的技术。


    现在有一些PC端的混合应用开发技术,比如node-webkit和hex,前者的典型应用是Intel® XDK,后者的典型应用是有道词典,此外,豌豆荚的PC客户端也是采用类似技术的,也有一些产品是用的qt-webkit。这类技术可以方便做跨平台,极大减少开发工作量。


    所以,我们可以看到,在很多公司,开发安卓、iOS应用的人员跟Web前端的处于同一个团队中,这很大程度上就是考虑到这种情况。


    全栈的意思是,除了只做在浏览器中运行的代码,还写一些服务端的代码,这个需求又是从哪里来的呢?


    这个需求其实来自优化。我们要优化一个系统的前端部分,有这么一些事情可以做:


    • HTML结构的优化,减少DOM树的层次等等
    • CSS渲染性能的优化,批量写入DOM变更之类
    • 资源文件的优化,比如小图片的合并,图像格式的处理,图标字体的使用等
    • JavaScript逻辑的优化,模块化,异步加载,性能优化
    • 加载字节量的优化,主要是分摊的策略
    • HTTP请求的优化

    这里面,除了前三条,其他都可能跟后端有些关系,尤其是最后一条。但是前端的人没法去优化后端的东西,这是不同的协作环节,所以就很麻烦。


    那么,如果有了全栈,这个问题可以怎么解决呢?


    比如说,我们要做最原始的小文件合并,可以在服务器做一些配置,把多个合并成一个请求,比如某个url:.cn/kissy/k/1.4.1/??dom/base-min.js,event-min.js,event/dom/base-min.js,event/base-min.js,event/dom/touch-min.js,event/dom/shake-min.js,event/dom/focusin-min.js,event/custom-min.js,cookie-min.js?t=1.js
    这个就很明显是多个文件合并而成的,9个小文件的请求,合并成了一个64k的文件请求。


    这种简单的事情可以在静态代理服务器上配置出来,更复杂的就比较难了,需要一定的服务端逻辑。比如说,我们有多个ajax请求,请求不同的服务,每个请求的数据量都非常少,但因为请求数很多,可能会影响加载性能,如果能把它们在服务端就合并成一个就好了。但这个优化是前端发起的,传统模式下,他的职责范围有限,优化不到服务端去,而这多个服务很可能是跨产品模块的,想要合并,放在哪个后端团队都很怪异。


    这可真难办,就像老虎追猴子,猴子上了树,老虎只能在下面干瞪眼。但是如果我们能让老虎上树,这就不是个问题了。如果有这么一层NodeJS,这一层完全由前端程序员控制,他就可以在这个地方做这种合并,非常的合理。


    除此之外,我们常常会用到HTML模板,但使用它的最佳位置是随着产品的场景而不同的,可能某个地方在前端更好,可能某个地方在后端好些。到底放在哪合适,只有前端开发人员才会知道,如果前端开发人员不能参与一部分后端代码的开发,优化工作也还是做不彻底。有NodeJS之后会怎样呢,因为不管前端模板还是后端模板,都是JavaScript的,可以使用同一套库,这样在做调整的时候不会有代码迁移的烦恼,直接把模板换地方即可。


    现在,也有很多业务场景有实时通信的需求,目前来说最合适的方案是Socket.io,它默认使用NodeJS来当服务端,这也是NodeJS的一个重要使用场景。


    这样,前端开发人员也部分参与了运行在服务端的代码,他的工作范围从原先客户端浏览器,向后拓展了一个薄层,所以就有了全栈的称呼。至于说这个称呼还继续扩展,一个前端开发人员从视觉到交互到静态HTML到JavaScript包办的情况,这个就有些过头了。


    以上这些,主要解决的都是代码层面的事情。另外有一个方面,也是需要关注,但却常常不能引起重视的,那就是前端的工程化问题。


    早期为什么没有这些问题?因为那时候前端很简单,复杂度不高,现在整个很复杂了,就带来了很多管理问题。比如说整个系统的前端都组件化了之后,HTML会拆分成各种模板,JavaScript会拆分成各种模块,而CSS也通过LESS或者SASS这种方式,变成了一种编译式的语言。


    这时候,我们考虑一个所谓的组件,它就比较麻烦了。它可能是一个或者多个HTML模板,加上一个或者多个JavaScript模块,再包含CSS中的一部分构成的,而前两者都可能有依赖项,三个部分也都要避免与其他组件的冲突。


    这些东西都需要管理,并且提供一种比较好的方案去维护。在JavaScript被模块化之后,也可以通过单元测试来控制它们的质量,并且把这个过程自动化,每次版本有变更之前,保证它们最基本的正确性。最终,需要有一种自动化的发布机制,把这几类代码提取,打包合并,压缩,发布。


    目前这方面研究最深入的是之前百度FIS团队的张云龙,他的几篇文章在https://github.com/fouber/blog强烈推荐阅读。

    END

    本文引自:http://blog.csdn.net/zhanghuiqi205/article/details/56011688
    https://kb.cnblogs.com/page/210101/

    展开全文
  • 提出了一种基于完全化语义的关键词检索方法,对检索关键词进行语义标准化处理,识别处理后采用不同的检索评分器评分,基于检索核给出了针对不同类型的检索算法,生成连接元组集,取得相邻拓展连接元组集,转换得到...
  • 怎样存储海量的生物数据以及如何使得它们更为方便地被生物学家利用已成为当前生物...描述一个基于这些异构数据库的整合的数据仓库系统,并在此基础上开发了一个语义相似性查询工具,实现智能的多重、复合和交叉检索。
  • HTML5语义化标签

    千次阅读 2016-08-05 12:53:47
    “什么是语义化?”、“说说你对语义化的理解?” 掌握语义化含义、作用以及应当注意的细节,HTML5中常用的语义化新标签!知识点不在于多,而研究透彻应学以致用!

    引言:最近刚从“度假郊区”出来,各种刷面试题,基本都是理论基础,以及运用基础理论进行实践运用的内容,其中“什么是语义化?”、“说说你对语义化的理解?”积累了很久的笔记看来要整理一下了…
    博文借鉴:

    web前端教程:21个新的语义化标签,你撸过几个?
    HTML 5的革新——语义化标签(一):http://www.html5jscss.com/html5-semantics-section.html

    HTML语义化:

    每个HTML标签都有自己特定含义(语义),语义化是指使用语义恰当的标签,使页面有良好的结构,页面元素有含义,能够让人和搜索引擎都容易理解

    看过一个比较形象的例子:

    盖一栋房子的时候,有的地方该用砖头,有的部分该用瓷片,还有的地方得用水泥糊上,这样盖出来房子才会结实,整洁和美观。

    如果硬是要瓷片替代砖头,房子勉强也能盖起来,但是这样的房子不牢固,容易倒塌,外观也不好看。

    同样,生活很多事物都有相似相同之处!该用什么标签表示就用什么标签表示,结构良好,更易人和搜索引擎理解。还有一点,就是便于开发和维护啊,看过好多网页结构,各种想吐槽好吗?各种混乱不堪,外观表现的任务交由css去实现就行啦,不要为了外观表现而布局!

    语义化的意义与作用

    • 去掉或者丢失样式的时候能够让页面呈现出清晰的结构
    • 用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;
    • 有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
    • 方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
    • 便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化

    简记:“裸奔”时结构清晰;SEO搜索;广泛设备解析;团队开发维护标准化!

    这里写图片描述

    语义化都注意什么?

    1. 尽可能少用无语义的div、span标签等;使用HTML5中新增的较多强语义化标签,;
    2. 不要使用样式化标签,如font、b、….等等等,完全可以用css实现样式(再说HTML5中基本将此类“样式化标签”废除了!)
    3. 强调文本,尽量使用strong标签加强强调,em标签设置斜体
    4. 表格书写规范:标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;
    5. 表单域要用fieldset标签包起来,并用legend标签说明表单的用途;(说实话,这个倒真没怎么注意到!)
    6. 每个input标签对应的说明文本都需要使用label标签,并且通过id属性和相对应的input关联起来。

    HTML5语义化标签:

    之前整理过的一个知识点:html5简记(新增元素与属性)

    1.header:标签定义“网页”或“section”的页眉。

    通常包含h1-h6元素或hgroup,作为整个页面或者一个内容块的标题。也可以包裹一节的目录部分,一个搜索框,一个nav,或者任何相关logo

    <header>
         <h1>毕业生实习</h1>
         <span>2016/08/05</span>
    </header>
    <!--之前使用的是无语义的div+class-->
    <div class='header'>...</div>

    <header>
        <hgroup>
            <h1>网站标题</h1>
            <h2>网站副标题</h2>
        </hgroup>
    </header>

    用法:

    • 可以是“网页”或任意“section”的头部部分;
    • 没有个数限制。
    • 如果hgroup或h1-h6自己就能工作的很好,那就不要用header。

    2.nav:定义导航链接的部分。

    <nav>
        <ul>
            <li><a href="#">首页</a></li>
            <li><a href="#">xxx</a></li>
            <li><a href="#">xxx</a></li>
            <li><a href="#">xxx</a></li>
        </ul>
    </nav>
    <!--之前使用的是无语义的div+class-->
    <div class='nav'>...</div>

    用法:

    • 用在整个页面主要导航部分上,不合适就不要用nav元素;
    • 可用作页面导航的链接组并不是所有的链接组都要放进nav元素中只需将主要、基本的链接组放进其中

    注意:例如,在页脚中通过会有一组链接,包括服务条款,首页,版权声明等,使用footer元素是最恰当的。

    具体用途:传统导航条、侧边栏导航、业内导航、翻页操作等


    3.footer标签:代表“网页”或“section”的页脚。

    通常含有该节的一些基本信息,譬如:作者,相关文档链接,版权资料。

    如果footer元素包含了整个节,那么它们就代表附录,索引,提拔,许可协议,标签,类别等一些其他类似信息。

    <footer>
      作者:xxxx <br />
     Copyright © xxx.All rights reserved.
    </footer>
    <!--之前使用的是无语义的div+class-->
    <div class='footer'>...</div>

    用法:

    • 可以是“网页”或任意“section”的底部部分;
    • 没有个数限制,除了包裹的内容不一样,其他跟header类似。
    • 多用于包含服务条款,友情链接、作者信息、版权信息等

    4. hgroup元素:“网页”或“section”的标题

    当元素有多个层级时,该元素可以将h1到h6元素放在其内,譬如文章的主标题和副标题的组合

    <hgroup>
        <h1>主标题</h1>
        <h2>HTML 5</h2>
    </hgroup>

    用法:

    • 如果只需要一个h1-h6标签就不用hgroup
    • 如果有连续多个h1-h6标签就用hgroup
    • 如果有连续多个标题和其他文章数据,h1-h6标签就用hgroup包住,和其他文章元数据一起放入header标签

    5.section标签:定义文档中含有标题和段落的区域。(强调分段或分块)

    <section>
      <h1>section要包含标题</h1>
      <p>section要包含内容...</p>
    </section>

    用法:

    • article、nav、aside可以理解为特殊的section,所以如果可以用article、nav、aside就不要用section,没实际意义的就用div
    • 当容器需要标题和内容时建议使用section标签,若只是普通的容器,应该用div元素较好!section标签非div!

    6.article:代表独立、完整、可独自被外部引用的内容(博客或报刊中的文章、一遍论坛帖子、一段用户评论或独立的插件、或任何独立的内容);(强调的是独立性!可含有完整的标题、内容、脚注)

    <article>
       <header>
         <h1>标题处</h1>
       </header>
       <p>内容描述</p>
       <footer>脚部声明标注</footer>
    </article>

    用法:定义一个独立完整的内容部分(可包含标题,内容,脚注)时使用!

    article、section间的相互嵌套关系:
    拜读博文:http://www.html5jscss.com/html5-semantics-section.html


    7. aside标签:表示当前页面或文章的附属信息部分,可包含于当前页面或主要内容相关的引用、侧边栏、广告、导航条、以及其他类似的有别于主要内容的部分。

    书籍中的定义很长很绕,在收集之后,发现主要有两种用法:(啃下概念)

    1.用于article标签之内,此时表示的是该独立内容的附属信息部分

    <article>
            <p>article内容区</p>
            <aside>
                <span>附属信息1</span>
                <span>附属信息2</span>
                <span>附属信息3</span>
            </aside>
        </article>

    2.用于article标签之外,此时作为页面或站点全局的附属信息部分

        <aside>
            <h1>附属信息标题</h1>
            <a href="#">附属信息...</a>
            <a href="#">附属信息...</a>
            <a href="#">附属信息...</a>
        </aside>

    用法:

    • aside在article内表示主要内容的附属信息
    • article之外则可做侧边栏,页面或站点全局的附属信息部分
    • 如果是广告,其他日志链接或者其他分类导航也可以用

    (一句话概括:不同的位置表示为对应区域的附属信息!


    8. figure标签:规定独立的流内容(图像、图表、照片、代码等等)。

    figcaption标签:用于元素定义figure的标题。

    1.一个figure元素内最多只允许放置一个figcaption元素,其他元素可无限放置。

    2.figcaption 元素应该被置于 figure元素的第一个或最后一个子元素的位置。

        <figure>
            <figcaption>figure的标题</figcaption>
            <img src="pic.jpg" alt="...">
        </figure>

    9. time标签:定义时间或日期

    
    <p>定义时间...<time>9:00</time></p>
    
    <p>结合datetime属性定义日期...<time datetime="2016-08-08">时间</time></p>

    以上为实践操作中可能会用到的标签,HTML5还新增了很多标签,但因为用途与浏览器兼容性问题,还是为人所慎用的!待拓展!


    10. address标签:代表区块容器,必须是作为联系信息出现,邮编地址、邮件地址等等,一般出现在footer。

    表示文档文章作者/拥有者的联系信息,在body标签中表示文档的作者的联系信息;在article标签中表示文章作者的联系信息;

    W3School示例文档:http://www.w3school.com.cn/tags/tag_address.asp

    用法:

    • 标签不应该用于描述通讯地址,除非它是联系信息的一部分。
    • 元素通常连同其他信息被包含在 footer 元素中。

    总结:掌握语义化含义、作用以及应当注意的细节,HTML5中常用的语义化新标签!知识点不在于多,而研究透彻应学以致用!

    你如今的不如意,可能是你还不够努力!
    加油吧!致各位摸爬滚打一路坚持下来的前端汪~

    展开全文
  • HTML5 语义化-详细分析

    千次阅读 2021-06-25 16:30:20
    1. “语义化”: 指的是机器在需要更少的人类干预的情况下, 能够研究和收集信息; 让网页能够被机器理解, 最终让我们受益 。 2. HTML 标签语义化: 是让大家直观的认识标签(markup)和 属性(attribute)的用途和作用 。 ...

    本文讲解 HTML 语义化相关内容, 语义化这一块作为前端开发者几乎是必须要了解的一块内容; 主要分享的内容有:

    1. 什么是 HTML 语义化;

    2. HTML 语义化网页的好处;

    3. 如何进行 HTML 语义化;

    4. 语义化标签有哪些 。



    废话不多说, 直接上代码以及图例 (为了让大家方便阅读, 都有自己验证过程的一些图片作为分享) 。

    一. 什么是 HTML 语义化

    1. “语义化”: 指的是机器在需要更少的人类干预的情况下, 能够研究和收集信息; 让网页能够被机器理解, 最终让我们受益 。
    
    2. HTML 标签语义化: 是让大家直观的认识标签(markup)属性(attribute)的用途和作用 。
       1. 很明显 Hx 系列看起来很像标题, 因为拥有粗体和较大的字号 。
       2. <strong>,<em> 用来加强语气 。
       3. 根据内容的结构化 (内容语义化), 选择合适的标签(代码语义化)便于开发者阅读, 和写出更优雅的代码的同时, 让爬虫和浏览器很好地解析 。
    
    

    二. HTML 语义化网页的好处

    1. 最主要的就是对 '搜索引擎' 友好, 有了良好的 结构和语义 的网页内容, 自然容易被搜索引擎抓取 。
    
    2. 有利于 'SEO': 和搜索引擎建立良好沟通, 有助于爬虫抓取更多的有效信息 。
       1. 爬虫依赖于 标签 来确定, 上下文 和各个 关键字 的权重 。
    
    3. 方便其他设备解析 (如屏幕阅读器, 盲人阅读器, 移动设备) 以语义化的方式来渲染网页 。
    
    4. 便于团队开发和维护, 语义化更具可读性, 遵循 W3C 标准的团队都遵循这个标准, 可以减少差异化 。
    
    5. 为了在没有 CSS 的情况下, 页面也能呈现出很好地内容结构; 代码结构:为了裸奔时好看 。
    
    6. 用户体验: 例如 title, alt 用于解释名词或解释图片信息的标签, 尽量填写有含义的词语, label 标签的活用 。
    
    

    三. 如何进行 HTML 语义化

    1. 尽可能少的使用无语义的标签 div / span 。
    
    2. 在语义不明显时, 既可以使用 div 或者 p 时, 尽量用 p, 因为 p 在默认情况下有上下间距, 对兼容特殊终端有利 。
    
    3. 不要使用纯样式标签,: b / font / u 等, 改用 css 设置 。
    
    4. 需要强调的文本, 可以包含在 strong 或者 em 标签中(浏览器预设样式, 能用 CSS 指定就不用他们), strong 默认样式是加粗 (不要用 b), em 是斜体(不用 i)5. 使用表格时, 标题 要用 caption, 表头用 thead, 主体部分用 tbody 包围, 尾部用 tfoot 包围 。 表头 和一般 单元格 要区分开, 表头用 th, 单元格用 td 。
    
    6. 表单域要用 fieldset 标签包起来, 并用 legend 标签说明表单的用途 。
    
    7. 每个 input 标签对应的说明文本都需要使用 label 标签, 并且通过为 input 设置 id 属性, 在 lable 标签中设置 for=someld 来让说明文本和相对应的 input 关联起来 。
    
    

    四. 语义化标签的收集

    1. header
       1. header 元素代表 "网页""section" 的页眉 。
       2. 如果 hgroup 或 h1-h6 自己就能工作的很好, 那就不要用 header。
    
    2. footer
       1. footer 元素代表 "网页""section" 的页脚 。
       2. 通常含有该页面的一些基本信息, 例如: 文档 '创作者的姓名' / '文档的版权信息'/ '使用条款的链接' / '联系信息' 等等 。
    
    3. hgroup
       1. hgroup 元素代表 "网页""section" 的标题 。
       2. 当元素有多个层级时, 该元素可以将 h1-h6 元素放在其内, 譬如文章的主标题和副标题的组合 。
       3. 如果只需要一个 h1-h6 标签就不用 hgroup 。
       4. 如果有连续多个 h1-h6 标签就用 hgroup 。
       5. 如果有连续多个标题和其他文章数据, h1-h6 标签就用 hgroup 包住, 和其他文章元数据一起放入 header 标签 。
    
    4. nav
       1. nav 元素代表页面的 "导航链接区域"2. 用于定义页面的主要导航部分 。
       3. 事实上规范上说 nav 只能用在页面主要导航部分上 。
       4. 用在整个页面主要导航部分上, 不合适就不要用 nav 元素 。
    
    5. aside
       1. aside 元素被包含在 article 元素中作为主要内容的 "附属信息" 部分 。
       2. 内容可以是与当前文章有关的 '相关资料' / '标签' / '名词解释等'3. aside 在 article 内表示主要内容的附属信息 。
       4. 在 article 之外则可做 '侧边栏', 没有 article 与之对应, 最好不用 。
       5. 如果是广告,其他日志链接或者其他分类导航也可以用 。
    
    6. article
       1. article 元素最容易跟 section 和 div 容易混淆, 其实 article 代表一个 '文档', 页面或者网站中自成一体的内容, 其目的是为了让开发者独立开发或重用 。
       2. 譬如论坛的帖子, 博客上的文章, 一篇用户的评论, 一个互动的 widget 小工具 。
       3. 自身独立的情况下: 用 article 。
       4. 是相关内容: 用 section 。
       5. 没有语义的: 用 div 。
    
    7. section
       1. 标签定义文档中的 '节' (section、区段)。比如 章节、页眉、页脚或文档中的其他部分 。
       2. section 不是一个专用来做容器的标签, 如果仅仅是用于设置样式或脚本处理, 专用的是 div 。
       3. section 里应该有 标题 (h1~6), 但文章中推荐用 article 来代替 。
       4. 一条简单的准则是, 只有元素内容会被列在文档大纲中时, 才适合用 section 元素 。
       5. section 的作用是对页面上的内容进行分块, 如各个有标题的版块, 功能区或对文章进行分段, 不要与有自己完整、独立内容的 article 混淆 。
    
    8. address
       1. 代表 '区块容器', 必须是作为 '联系信息' 出现, 邮编地址、邮件地址等等,一般出现在 footer 。
    
    

    之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题 就是 “前端HTML” 的相关专栏; 不积跬步,无以至千里, 戒焦戒躁 。

    如果对你有所帮助,喜欢的可以点个关注, 必然回访; 文章还一直持续打磨 。

    有什么想要了解的前端知识吗? 可以评论留言, 会及时跟进分享所提内容 。

    整理知识点不易, 每次都是在工作繁忙之余夜深人静之时整理, 无论知识点是大是小, 都会验证后再分享, 以防自己发表的文章给大家造成误导 。如有问题还望不吝赐教,本人会及时更改 (本文原创, 如需转载,请注明出处) 。

    展开全文
  • 它们有可能成为文化历史和生物多样性研究的丰富数据来源。 然而,它们仅作为部分编目标本库和非结构、非标准化、手写文本和图纸的图像存在。 尽管许多档案馆藏已被数字,但公开其内容具有挑战性。 它们指的是...
  • 图像语义分割方法研究

    千次阅读 2018-04-06 13:12:05
    转自:https://yhlleo.github.io/2016/10/19/CNN-SemanticSeg/把前段时间自己整理的一个关于卷积神经网络应用于图像语义分割的PPT...PPT的目录包括,语义分割的简单介绍,然后介绍一些我的研究和具体的应用,最后简...

    转自:https://yhlleo.github.io/2016/10/19/CNN-SemanticSeg/

    把前段时间自己整理的一个关于卷积神经网络应用于图像语义分割的PPT整理发布在本篇博客内,由于部分内容还在研究或发表过程中,就只上传PPT前两部分的内容。

    今天给大家介绍卷积神经网络在图像语义分割上的一些方法和应用。

    PPT的目录包括,语义分割的简单介绍,然后介绍一些我的研究和具体的应用,最后简单说一下我最近的一些研究工作。

    图像语义,也就是图像理解,图像作为一种信息记录方式,每张图像都会传达出一些信息,就像一个故事。比如左边的图像,我们可以简单地分析出,有一只黑白斑纹的小猫,趴在一个木质的小木桌上,一只爪子按着一个有线鼠标,另一只放在一个打开的黑色的笔记本电脑上,旁边好像还站着个人。但是怎么能让计算机理解这些呢?这是个很难的问题,即便现在我们通过深度学习进行目标检测,可以得到图像场景中可能有哪些目标,但是要实现这样更深层次的理解,还是非常困难。

    目标检测和语义分割,是两种理解图像语义的基础方法,主要是为了解决,图像中有什么,在哪里的问题。虽然看起来解决的问题很相似,但是却差异很大。

    从输出结果来看,目标检测网络更加宽松,只要给定一个包含目标的最小窗口区域就可以,可以说它是window级别的方法,得到粗检测结果;而分割网络更加细致,强调像素级的精细化检测结果,需要输出每个像素所属的类别。

    从粗糙到精细,还有一种折中方法,就是基于图像分割方法,比如超像素,把相近的像素分在一个不规则的小patch里,这种方法在语义分割中也有应用,后面会简单介绍一下。

    由于表达方式的特殊,目标检测窗口定位的方法,限制了它的使用范围,对于那些单个中心分布式物体,按照部件模型的理解,目标可以分为几个子部件,子部件之间相互紧密连接的目标,目标检测可以做得还不错,但是此外还有很多其他类型的目标物,比如道路,建筑群,裂缝很多情况下,如果使用目标检测的方法,对于一张输入图像,得到的反馈窗口很有可能是整图像,还有倾斜的文本,使用bbox表示,这些与预期有很大差异。

    同样由于窗口表达的特殊性,目标检测的网络架构从R-CNN开始,虽然在网络结构,提取proposal上进行很多探索,基本思想上还是沿用R-CNN,一般都包括卷积网络学习特征,根据候选区分类,然后回归定位窗口。其中,为了解决深度网络中小目标,弱目标的梯度消失问题,后面列举的三种网络,都尝试了融合不同尺度的卷积feature map,不过SSD网络的"多尺度"跟另外两个还有些区别,这里就不提了。前一段时间,ImageNet挑战赛的结果公布,大家评论说,Facebook, Google等这些实力雄厚的公司都没参加,我觉得可能是有两方面的原因,第一点,从2012年到现在,虽然只有四年左右的时间,基于目前框架下的这种目标检测似乎已经快要触碰到极限,当然还是有很多人在尝试,试图在这个框架下不断优化,但是是能够提升的空间还是不大,这些有实力的研究机构应该是不屑于去做这些事的,大家都在期待一种新的黑科技,这才是那些机构的方向;第二点,图像语义本身是个涉及范围比较广的概念,目标检测仍然属于比较浅层的图像理解,本身应用范围非常有限,而更高级的像素级图像语义,比如语义分割(Semantic Segmentation)、深度预测(Depth Prediction)、生成对抗网络(GAN)等,都取得了突破,也逐渐成为研究热点。理论上来说,如果语义分割做得很好了,这种粗略的目标检测也就不需要做了。

    因为目标检测直接基于分类网络来做,所以相对发展走在前面,图像语义分割也受到目标检测的影响,早期思路与目标检测相似,就是先利用传统视觉的分割方法处理,得到patch级的分割结果,然后用CNN网络训练一个特征学习和分类器,把分割的patch进行分类,从而得到语义分割结果;目前的做法逐渐抛弃了这一思路,朝着直接使用卷积网络训练得到分割预测结果方向发展。总体而言,语义分割是比目标检测更加深层次的图像理解,我曾在一篇论文中看到,作者分析认为,语义分割是图像理解最为重要的方式,如此强调可以看出语义分割的重要价值。两者的对比先讲这么多,后面我展开讲几个语义分割网络。

    我们可以把目前的语义分割网络,分为六大类,第一类是传统的图像分割方法,2000左右就开始被很多人关注和研究,第二种是一种过渡方法,提出的时间刚好是深度学习浪潮刚刚出现的时候,把传统方法分割方法+CNN结合,后面四类,都是直接基于卷积网络预测分割结果,只是网络结构上有差异,其实也可以分为一类,它们的出现已经是深度学习热潮近乎白热化的时期,从2013年到2016年三年左右的时间,发展非常迅猛,可以说是翻天覆地的变化,当然不止是语义分割还有很多其他计算机视觉领域都在经历着这样类似的变化。

    传统方法的巅峰之作,应该就算是MCG算法,集成了经典的contour detection方法gPb-UCM,加速了normalized cuts方法,改进了生成目标候选区的方法,而且还考虑了多尺度问题,性能上也没得说,但计算量有些大,在CPU下一张普通大小的图像要计算30~40秒,简化加速版本也要10s+。代码是开源的,可以下载测试,这里不再多做介绍。

    这是2013年LeCun他们进行的语义分割尝试,使用图像和深度图对室内场景进行语义分割,结构很简单,利用深度图和RGB图像先用不同尺度的拉普拉斯算子滤波,在不同尺度上进行卷积特征提取,然后将不同尺度上的特征图融合在一起,于此同时RGB图像上利用超像素分割,分类器利用学到的特征和预分割结果,对超像素的每个patch进行分类。

    一方面,超像素分割并不稳定,小块物体或者单个物体中存在杂色时,分类存在很多错误;另一方面,弱边界区域,本身对超像素分割也是很难处理的,所以这种方法的效果一般,而且前面说了,毕竟这只是一种折中的过渡方法。

    真正开启像素级语义分割网络的就是FCN,然后以它为基础,衍生出几个方法,这里列举几个方法:FCN本身,DeepLab, CRF-RNN,以及一个基于FCN网络的应用。

    首先来看FCN,沿用了AlexNet卷积网络的结构,但是在全连接层的地方,为了能够生成图像的像素级预测,就扩大了卷积阶段和全连接层的plane size,最后全链接层的特征向量变成了特征图,由于最终的feature map比原图小,所以还需要进行上采样。

    这张图更加清晰地说明的网络结构的变化,上面的就是AlexNet网络,下面是改变后的,首先为了使学习到的feature map更大,作者把训练输入的图像从224x224 扩大为500x500,全连接层输出的feature map的大小为10x10。

    作者比较了AlexNet, VGG16, GoogLeNet的性能,在精度上来讲,VGG16最好,但是由于参数规模比较大,所以也比较耗时。

    在卷积网络学习过程中,大家都知道,不同深度level的卷积学习到的特征抽象程度是不同的,浅层的学习到的都是局部特征,而随着卷积层深度增加,感受野也随之增大,学习到的特征更加抽象,作者测试了使用不同卷积阶段的feature map 生成分割结果,并进行对比,发现Pool3后得到的分割结果最佳,这很容易理解,太过浅层学习的feature 对局部变化比较敏感,也就是抗噪性能不佳,而更高层的学到的feature map对于局部变化不敏感,但很严重的缺点就是,梯度消失或者说边界模糊,也就是只能得到一个笼统的预测,但是很难获得准确的分割边界。

    我简单画出FCN-8s的网络结构,作者也考虑了不同卷积阶段学习到特征的差异性,所以也进行了multi-stage的融合,方法就是图中画的那样,全连接输出的预测feature map上采样2倍后,跟pool4后的预测feature map叠加在一起,再上采样2倍,跟pool3后的预测feature map叠加在一起,最后整体上采样8倍,得到最终的预测结果。

    这是结果对比,验证刚刚我们的分析。

    我按照自己的理解,画了一个简单的示意图,真实情况可能不是这样,但是差不多应该就是这样,横轴表示抗噪性能,竖轴表示表达结果的所能达到的细化程度,以VGG的五个卷积阶段为例,从左向右有5条实曲线,依次表示由浅到深各个卷积阶段学习的feature 对应的曲线,现在FCN依靠某一阶段或几个阶段的feature 学习得到的最佳结果是FCN-8s,也就是蓝色曲线,有所改善,但并没有达到理想结果,我们想要得到红色虚线那样的效果,可以做到吗?当然是可以的。

    DeepLab的思路跟FCN基本一致,它是通过卷积,全连接后输出一个粗糙的,比原始图像小得多的预测图,然后把预测图上采样,然后使用条件随机场迭代优化,所以可以把DeepLab 理解成FCN+CRF。

    第一张图示DeepLab不使用CRF优化与使用后的对比,第二张图是DeepLab使用CRF与FCN的对比,其实性能稍微提升了一些。

    接下来讲CRF-RNN,这是他的原理图,同样是基于FCN的粗预测结果,进行优化,作者把DeepLab的CRF模块改成了CRF-RNN。

    至于CRF-RNN的架构,我没看论文里讲的一大堆是什么,反正简单来讲就是一个优化过程,代码是开源的,我记得在某一篇论文里层讲过,所有的语义分割网络都可以进行CRF优化,这里就不多讲。

    这是结果对比,确实效果好,更加精细化一些,作者在论文里说,训练的时候为了避免梯度消失问题,CRF-RNN迭代次数是5,而测试的时候是10,虽然论文里没有说inference time 但是肯定是只高不低。

    这篇PortriaitFCN+的论文是前段时间去上海参加RACV会议后,听到港中大贾佳亚教授他们组的研究,我就去他们团队网站上,瞄了一些他们的论文,感觉他们组的很多研究其实说不上很高深,更像是一个个tricks,很多方法都是基于现有的方法,稍加改造,然后加上一些不错的idea,就搞出成果,所以可能成果发表上比较快。他们的这篇主要是从图像上扣取人体的半身照,前面讲过FCN做这样的分割,结果是比较粗糙的,他们组没在网络上进行优化,而是在输入上,加上一些辅助信息,通过标准半身姿势模型,生成Mean Mask,也就是一个概率图,表示人体分布的概率,然后对每张图像计算与标准姿势的x和y方向的偏差,除此以为所有东西都是现成的,为了简单,实现起来更加容易,他们只做上半身,而且上半身区域的确定还是使用现成的人脸检测算子定位,如果mean mask和Graph-Cut 结合在一起,效果肯定也不会差。不过我觉得他们的想法还是很有趣,说以单独拿出来简单讲一下。

    这里简单总结一下,基于FCN架构的方法,基本特点都是使用卷积学习网络全连接层的粗糙的feature map,上采样生成与原图一样大小的预测结果,这样的做法,很明显的弊端有两个:第一,因为扩大了卷积层和全连接层的plane size,使得网络参数规模巨大,VGG16框架下,参数规模为134M,这就导致计算量的增大;第二,受限于显卡内存和计算量的限制,在最大化扩大全连接层输出的plane size后,得到的feature map比原图小的太多,FCN里输入图像是500x500的分辨率,而全连接输出的feature map大小只有10x10,用这样粗糙的feature map上采样,很难得到很精细化的分割结果。DeepLab和CRF-RNN都是在围绕着如何把粗糙的预测结果精细化上进行研究,但是提升有限。

    FCN的两大弊端,刚刚已经介绍了,之后,就有一些探索,首先就是Encoder-Decoder系列的,这种方法主要是围绕着,既然直接把全连接或者某一阶段的卷积feature map上采样可能过于简单,能不能换一种上采样方法?这里主要介绍四个网络。

    DeconvNet想到把粗糙的feature map上采样过程更新了策略,卷积阶段是一层一层进行下来,那把整个卷积过程镜像过来,就得到卷积阶段的整个逆过程,作者测试后发现可行,为了减少一些参数规模,作者就把全连接层缩减成一层,而且plane size也缩小,这就很有问题,前面提到FCN为了扩大全连接的feature map的plane size把输入图像的大小扩大,全连接输出也扩大,因此,DeconvNet的做法有些顾此失彼的感觉。而很明显的不足就是去卷积阶段其实利用的feature map仅仅是卷积阶段最后的feature map,没有从本质上解决之前FCN的问题。

    但是从结果上看,还是精度还是有所提升的,也就暗示着,这种上采样过程是可取的。

    DecoupledNet有意模仿DeconvNet,在去卷积逆过程的时候,把卷积阶段和全连接都镜像过来,这样比DeconvNet存在的问题更大,原本FCN的结构网络参数就很大,这样double之后参数规模相当于扩大了2倍,DeconvNet应该是意识到了这样的问题,所以缩减了全连接层,而DecoupledNet却忽视这个问题,抱着试试看的心态去做,跟DeconvNet一样,去卷积阶段其实利用的feature map仅仅是卷积阶段最后的feature map,没有从本质上解决之前FCN的问题。不用想试验结果应该不是不如DeconvNet的。

    虽然作者没有列出跟其他方法的对比,但是相互参照其他论文,就可以看出,试验结果果然一般。

    CEDN也是基于Encoder-Decoder的架构,但是有别于前面的语义分割,他想要做更加低级的contour detection,但使用的其实是语义分割网络。但是相比前面的两个网络,做了很多简化,首先全连接层去除掉,卷积之后直接就开始去卷积,而去卷积过程也并非是卷积阶段的完全镜像,也做了缩减。

    这是作者论文里的效果图,第四列是CEDN的结果,最后一列是由contour 概率图+MCG方法的分割结果,效果还不错,但是前面已经介绍过,MCG最大的问题就是速度慢。

    作者主要跟HED 边缘检测的方法进行了对比,从在VOC2012和BSDS500上分别进行了测试,HED的方法我后面也会简单介绍一下,这里的实验其实是有问题的,首先说一下HED-pretrain是指HED在BSDS500数据集上训练的结果,CEDN-pretrain是CEDN在VOC上训练的结果,从CEDN在两个数据集上的测试效果,可以看出,两个数据集之间的差异性还是很大。从BSDS500的实验结果来看,其实HED是要比CEDN好的,而且后面讲了HED的网络框架后,大家也会明白,在理论上HED肯定也是比CEDN要好一些的,作者在VOC上训练的时候,输入图像随机裁剪出几张224x224大小的图像,而HED原文中是resize成400x400,作者虽然没说在实验的时候HED采用的是crop还是resize,但是从结果来看,很有可能是resize,而且是resize成224x224,如果大家以后做图像像素级语义,千万要注意这个细节,如果能不对原始数据进行变换,那就尽量不要,不得已要转换,也要尽量采取影响最小的方法,如果CEDN的作者在使用HED在VOC上训练时,采用同样crop的方法或者保持HED原本resize的400x400的做法,HED的精度肯定是要比它高的,因此作者在VOC2012上比较的结果其实没什么意义,有故意拉低HED方法的嫌疑。

    从前面的方法来看,Encoder-Decoder的演变趋势是,Encoder后的全连接或者卷积层逐渐简化到消失,SegNet就是这样一个简化版的网络,所有Encoder后紧跟着就开始Decoder。

    在上采样上,进行了新的尝试,之前的FCN网络上采样也提到过,使用深层的卷积feature map上采样后,跟卷积阶段对应大小的feature map叠加在一起,上采样操作是学习得到的,segNet使用一种叫Max-Pooling索引的方法,在encoder阶段,每个pooling层都输出两个pooling的feature map,一个输出到后面的卷积层,一个在用在decoder阶段的上采样,上采样的过程不是学习得到的。

    从结果上看,有精度有一点提升,不过文章里没说清楚,FCN方法前面已经讲过其实不是一个,大家引用的时候,一般都会指明使用的是FCN-8s,但是SegNet作者对比使用的FCN-Basic不清楚是FCN-8s还是FCN-32s,上面的测试结果是作者基于街景的小数据集,只有500多张样本11类,结果显示SegNet-Basic精度略高于FCN-Basic,下面的测试是基于VOC 2012数据集1000多张样本20类,FCN-8s略高于SegNet,我猜测,FCN-Basic指得应该是FCN-32s,总体来说,SegNet算是Encoder-Decoder方法种的最精简版,全连接层没有,上采样层参数也不通过学习得到,主要是为了减小网络参数规模,减小计算量,希望能够做到实时,效果还过得去。

    这是SegNet的街景数据的分割结果。

    尺度问题在传统视觉中一直都备受关注,在深度卷积网络中,梯度消失问题很棘手,小物体,微弱的目标,在深层卷积中一般很难保留下有效的特征,通过融合多尺度下的卷积特征是目前比较有效的解决办法,多尺度的方法总体来讲也有两个方向,第一种是,通过resize输入的训练数据,通过调整分辨率在多尺度上学习特征,然后再融合;第二种是,直接利用卷积不同阶段的feature,因为pooling过程的存在,使得不同阶段同样大小卷积窗口映射到原始图像上的感受野大小按照一定的比例指数型增长,因此卷积过程本身就有多尺度的feature,但是需要寻求一种策略强化某些有效的特征。MSCNN和HED就分别是这两种方法中的代表。

    MSCNN的做法是,把卷积过程分成3路,控制每一路的输入图像大小,卷积核大小和pooling,使得3路在不同尺度上学习特征,最后把3路的feature 上采样到同样大小,然后融合得到最终结果。

    从统计精度上看,其实跟FCN-8s没多少区别,但是作者更多的贡献在于,提出了一种同时可以有效用于深度预测/表面法相估计和语义分割的通用网络,前面的网络,当然也能实现这些功能,但是毕竟没人做。

    在讲CEDN的时候,就提到了HED网络。HED网络,也是用语义分割进行边缘检测,跟CEDN不同,它融合了各个卷积阶段的feature,并且通过统计各个卷积阶段的预测结果,进行整体监督,取得了边缘检测领域的最好成绩,这张图很形象,很容易理解,后面讲我们把这个网络应用在语义分割上时,会讲更多细节。

    这是HED分别在BSDS500和NYUD上的跑分,发挥比较稳定,都是最好成绩。前面也分析了,CEDN在VOC2012上测的结果应该是拉低了HED的精度。

    这两个篇论文都是FaceBook 的同一个研究员发表的,他的思路跟前面的方法最大的差异在于,前面我们讲的语义分割,是直接给图上的所有像素给出对应类别的label,而这个作者提出这种方法其实是出于提取目标proposal的目的,也就是说,重点在于生成Object的mask,并不是为了语义分割。

    首先看DeepMask,应该算是该系列的第一个版本,卷积最后网络分成两个分支,一个用于生成分割mask,另一个用于预测这个patch中含有目标的可能性,从结构上看,就可以知道效果肯定是不如FCN-8s的,原因也就不讲了。另外,按照这个架构,输入整张图像,如果含有多个目标,要提取哪个目标?作者绕开这个问题,从输入的patch中生成分割mask,然后预测这个patch中含有目标的可能性。我感觉这种做法,没有太大的意义,使用语义分割生成整张图像的像素级label更有价值。

    SharpMask,是在DeepMask的基础上完善,在逐级上采样过程中,融合各个卷积阶段的feature map,这种思路还不错,可以考虑用在语义分割中。

    SharpMask 的测试结果。

    展开全文
  • 数据整合与BI应用的元数据标准化

    千次阅读 2008-11-19 17:00:00
    因此,在数据整合与BI应用项目中,应科学地、规范地建立一套规范的元数据标准。正是有了元数据,才使得数据整合与BI应用的最终用户可以随心所欲地使用数据仓库(数据整合与BI应用的载体),利用数
  • 前一篇文章“为什么需要知识图谱?什么是知识图谱?——KG的前世今生”提及了和知识图谱相关的一些早期...一、语义网络(Semantic Network)对于初学者来讲,这个概念很容易和语义网(Semantic Web)相混淆。为了行文
  • IOT语义互操作性之标准与开源

    千次阅读 2018-02-20 00:00:00
    这个系列文章描述了一个单一的语义数据模型来支持物联网和建筑、企业和消费者的数据转换。 这种模型必须简单可扩展, 以便能够在各行业领域之间实现插件和互操作性。 对于一个目前从事智能硬件的老码农,觉得这...
  • 半结构化数据正以其灵活性而成为解决Internet环境下互操作语义层面问题的重要工具和网络数据交换格式的标准。从基础理论层面上对版结构化数据进行研究,在考察了进程代数和空间逻辑的有关结果后,从模型和逻辑系统的...
  • 基于领域本体的语义信息检索研究

    千次阅读 2009-01-03 16:56:00
    基于领域本体的语义信息检索研究(马文虎 南京理工大学信息管理系) 目 录引言... 11信息检索与本体概述... 11.1 信息检索... 11.1.1 信息检索的概念... 11.1.2 信息检索模型... 21.1.3 信息检索技术... 21.1.4 ...
  • 在本文中,我们从上下文的角度解决了各种语义差异,并使用轻量级本体来描述概念及其专业。 上下文之间的原子转换是使用XPath函数和外部服务实现的。 语法服务描述和语义概念之间的对应关系是使用灵活的,符合标准...
  • 数据治理系列3:数据标准管理

    万次阅读 多人点赞 2019-05-30 16:39:48
    导读:提到“标准”二字,我们第一时间能够想到的就是一系列的标准化文档,例如:产品设计标准、生产标准、质量检验标准、库房管理标准、安全环保标准、物流配送标准等,这些标准有国际标准、国家标准、行业标准、...
  • 研究了用语义Web语言DAML+OIL形式描述基于知识的产品信息模型的方法,给出了由EXPRESS模式到DAML+OIL语言的映射的具体实现机制,包括数据类型、实体声明和界面规范的映射方法,以此作为构建中间件层的基础。...
  • 数据可视平台理论与实践

    万次阅读 2017-08-02 09:32:26
    前面说完了大数据开发平台的核心组件,作业调度系统,接下来讨论一下大数据开发平台的脸面之一,数据可视平台。
  • 查阅了一些资料,整理了关于语义SLAM的几篇论文。
  • KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像 (stereo),光流 (optical flow),视...
  • 数据是由特定的环境产生的,这些环境因素包括生产者,时间,系统等, 这就造成了同一个语义数据,会有多种不同的定义方法,这给后期进行数据汇集和整合带来障碍,因此,数据处理的前奏就是数据标准化数据标准...
  • 数据可视是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。  数据可视技术的基本思想是将数据库中每一个数
  • 语义搜索

    千次阅读 2018-09-14 21:53:38
    语义搜索简介 目录 语义搜索简介 文档检索 vs. 数据检索 语义模型 ...语义数据搜索 ...为图结构数据(RDF)建立结构索引 使用结构索引做结构匹配 ​ 在多数据源,多存储库的场景下搜索 联合查询...
  • 数据可视无处不在,而且比以前任何时候都重要。无论是在行政演示中为数据点创建一个可视进程,还是用可视概念来细分客户,数据可视都显得尤为重要。以前的工具的基本不能处理大数据。本文将推荐39个可用于...
  • 它可以在不同标准机器学习场景(例如生命科学)以及语义 Web 特定应用程序(如本体学习和丰富)中的应用程序中用于各种数据和模式分析任务。 自 2007 年创建以来,它已成为用于监督结构机器学习的主要基于 OWL 和...
  • 这些方法对于词典和语言环境的依赖性是一个值得研究的问题。本文汇总了多种基于语义词典的方法,全面地概括分析了这类方法的特点。基于哈尔滨工业大学信息检索实验室提供的《同义词词林》扩展版,本文分别在真人单词...
  • 语义分割】——SUN_RGBD数据集解析

    千次阅读 2020-12-14 17:35:17
    造成这种情况的主要原因之一可能是缺乏一个具有合理大小的基准,其中包括用于培训的3D注释和用于评估的3D度量标准。在本文中,我们提出了一个RGB-D基准套件,目的是为了在所有主要场景理解任务中推进最新的技术水平...
  • 语义

    千次阅读 2019-03-20 15:40:39
    语义网(Semantic Web)是对未来网络的一个设想,现在与Web 3.0这一概念结合在一起,作为3.0... 语义网,它的核心是:通过给万维网上的文档 (如:HTML文档、XML文档)添加能够被计算机所理解的语义“元数据”(外语...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,407
精华内容 17,762
关键字:

数据语义化标准研究