达摩院开发者手册
开发者参考手册集合说明书

DEVELOPER'S REFERENCE MANUALSTo make our users comfortable we have put all the reference Manuals at one place. So now your Reference Manuals for PERL, PHP, C, UDDI, MySQL and other programming languages is just one click away.RECOMMENDATIONS: Bookmark this page for easy and quick access.TUTORIALS IN PDF FORMAT:ANT Tutorial in PDF - Download quick ANT tutorial in PDF format.Hibernate Tutorial in PDF - Download quick Hibernate tutorial in PDF format.Python Tutorial in PDF - Download quick Python tutorial in PDF format.Ruby Tutorial in PDF - Download quick Ruby tutorial in PDF format.Java Tutorial in PDF - Download quick Java tutorial in PDF format.Javascript Tutorial in PDF - Download quick Javascript tutorial in PDF format.JSP Tutorial in PDF - Download quick JSP tutorial in PDF format.SQL Tutorial in PDF - Download quick SQL tutorial in PDF format.MySQL Tutorial in PDF - Download quick MySQL tutorial in PDF format.C++ Tutorial in PDF - Download quick C++ tutorial in PDF format.JDBC Tutorial in PDF - Download quick JDBC tutorial in PDF format.Servlets Tutorial in PDF - Download quick Servlets tutorial in PDF format.log4j Tutorial in PDF - Download quick log4j tutorial in PDF format.iBATIS Tutorial in PDF - Download quick iBATIS tutorial in PDF format.UML Tutorial in PDF - Download quick UML tutorial in PDF format.Unix Tutorial in PDF - Download quick Unix tutorial in PDF format.QUICK REFERENCES:ASCII Table Lookup - A complete table of 7 Bit ASCII Codes and Extended ASCII Codes.HTML Character Encodings - A Set of all HTML Character Encodings.HTML Color Code Builder - We have given one very light weight JAVA Applet to generatemillions of HTML Color Code. Try it once!C Built-In Library Functions - A list of all important functions which you will use in your day today programming.CSS2 Properties - A complete list of all the CSS2 properties explained with examples.HTML /XHTML Tags Reference - A complete reference manual for HTML/XHTML tags arranged alphabetically.HTML Color Names - A list of thousands of color codes along with examples. Ready to use in your HTML Pages.HTML Entities - A list of all standard HTML Entity Codes.HTML Fonts - A list of HTML Fonts available on Microsoft Windows, Macintosh System and Unix.HTML ASCII Codes - Listing down all the 7-BIT ASCII codes and their equivalent HTML Entity Codes.JavaScript Built-in Function - Listing of all the built-in JavaScript methods.jQuery Quick Guide - Listing of all the jQuery APIs.Language ISO Codes - Language ISO Codes for Windows and Macintosh Systems.MIME Media Types - Complete reference for MIME Media Types.MySQL Useful Functions and Clauses - A comprehensive set of all MySQL functions and Clauses with examples.Rails Quick Reference Guide - A quick reference guide for Rails developers. We have listed out all the important concepts related to Rails.UDDI API References - A complete set of UDDI APIs.Useful UNIX Commands - List of all important UNIX Commands.Perl Functions References - A comprehensive reference manual for Perl Developers. All the Perl functions have been listed out with examples.WML Tags Reference - A complete list of WML tags explained with examples.。
阿里dataworks操作手册

阿里dataworks操作手册一、概述阿里dataworks是阿里巴巴集团推出的一款数据开发与运维一体化的云端数据集成解决方案,为用户提供了完整的数据开发生命周期解决方案,包括数据准备、数据开发、数据质量管理、数据运维和数据安全等功能。
作为阿里巴巴集团内部使用的数据管理评台,dataworks 已经成熟、稳定,并且在多个业务场景中得到了验证。
二、功能概述1.数据准备1.1 数据源管理:支持多种数据源接入,包括关系型数据库、非关系型数据库、Hadoop、文件等,用户可以自主创建数据源连接。
1.2 数据抽取:支持各类数据的抽取和数据同步,包括全量抽取、增量抽取、实时同步等。
1.3 数据准备:支持数据清洗、数据整理、数据归档等数据准备工作。
2.数据开发2.1 数据建模:支持数据模型的设计和管理,包括逻辑数据模型、物理数据模型等。
2.2 数据开发:提供完善的数据开发工具,支持SQL编辑、数据建模、数据计算等功能。
2.3 数据调度:支持数据调度的配置和管理,用户可以设置数据作业的调度周期、依赖关系等。
3.数据质量管理3.1 数据质量监控:提供数据质量监控功能,用户可以实时监控数据质量的情况。
3.2 数据质量评估:支持对数据质量进行评估和分析,用户可以了解数据质量的整体情况。
4.数据运维4.1 运维监控:提供数据运维监控功能,用户可以实时监控数据作业的运行状态。
4.2 运维报警:支持对数据运维情况进行报警,用户可以设置报警规则和接收报警通知。
5.数据安全5.1 数据权限管理:支持数据权限的管理和控制,包括用户权限、角色权限等。
5.2 数据安全审计:提供数据安全审计功能,记录用户操作日志、数据访问日志等。
三、操作手册1.数据源管理1.1 新建数据源1.1.1 登入dataworks控制台,在左侧导航栏选择“数据源”。
1.1.2 点击“新建数据源”,选择数据源类型,填写相应的连接信息。
1.1.3 测试连接,验证数据源连接是否成功。
开发者开发手册

开发者开发手册介绍本开发手册旨在指导开发人员进行应用程序的开发。
它包含了一系列的准则和最佳实践,帮助开发人员提高开发效率并保证代码质量。
开发环境设置在开始开发之前,请确保以下开发环境设置已完成:- 安装适当版本的开发工具,如IDE或文本编辑器。
- 配置相关的开发环境变量。
- 安装任何必要的依赖项和库。
项目结构为了保持项目的组织和可扩展性,在开始开发之前,请确保项目的结构清晰合理。
以下是一个示例项目结构的建议:├── app.py├── config.py├── requirements.txt├── README.md├──/static│ ├── css│ ├── js│ └── img└──/templates编码规范编码规范可以帮助开发人员统一代码风格,提高代码可读性和维护性。
以下是一些常见的编码规范建议:- 使用有意义的变量和函数命名,避免使用缩写或不清晰的命名。
- 为代码添加适当的注释,解释代码用途和意图。
- 遵循一致的缩进规范,如使用4个空格或制表符。
- 每个函数或方法应尽量保持简短,只关注单一功能。
文档化良好的文档化是开发中不可或缺的一部分。
以下是一些建议:- 为项目添加适当的README文件,提供项目的概述、安装说明、使用示例等。
- 为项目中的重要代码块添加注释,解释其功能和用法。
- 在代码中使用文档化字符串,提供函数和方法的用途、参数和返回值的说明。
- 为API和其他公共接口提供详细的文档。
测试测试是确保代码质量和功能正常的重要一环。
以下是一些建议:- 编写单元测试来验证函数和方法的正确性。
- 编写集成测试来验证各个组件的交互是否正常。
- 使用自动化测试框架并进行持续集成,以确保每次代码提交都通过测试。
版本控制使用版本控制可以方便地管理代码历史记录和团队协作。
以下是一些建议:- 使用一个可靠的版本控制系统,如Git。
- 建立合适的分支策略,如主分支、开发分支和特性分支。
- 定期进行代码提交和合并,保持代码库的整洁和可维护性。
Dorado 5 快速入门

Dorado 5 快速入门富浏览器展现中间件快速创建Rich Internet Application的表现层解决方案1.前言 (4)2.简介 (5)3.STUDIO (6)3.1.使用说明 (6)3.2.工程管理 (17)3.2.1.工程管理 (17)3.2.2.系统菜单 (17)4.一个简单的DORADO应用界面 (17)4.1.视图模型简介 (17)4.2.创建DORADO应用 (20)4.2.1.新建工程 (20)4.2.2.数据连接配置 (22)4.2.3.制作dorado JSP (23)5.常用组件应用技巧 (32)5.1.自由表单(A UTO F ORM) (32)5.2.数据表格(D A TA T ABLE) (36)5.3.菜单(M ENU) (53)5.4.树(T REE) (53)5.5.下拉框(D ROP D OWN) (53)5.6.命令(C OMMAND) (53)6.视图模型 (53)6.1.视图模型的状态 (53)6.2.视图模型实现类 (55)6.3.视图模型的上下文(D ORADO C ONTEXT) (56)6.4.视图模型中的JDBC开发 (58)6.4.1.事务管理 (59)6.4.2.异常处理 (60)7.业务逻辑框架整合范例 (61)7.1.S QL D ATASET (61)7.1.1.预定义Sql编程 (62)7.1.2.实现预定义Sql编程的动态性: (63)7.1.3.运行时Sql编程 (64)7.2.存储过程 (65)7.3.J A V A 实体对象 (66)7.3.1.记录集的监听器内部实现 (66)7.3.2.系统的业务对象实现 (67)7.3.3.通过引入第三方框架管理与组织自己业务对象的基础之上实现(如加入Spring,Hibernate) (69)8.数据坞 (71)8.1.数据模块中的D A TASET (71)9.典型界面开发 (83)10.权限管理和PROFILE (83)10.1.P ROFILE使用说明 (83)10.2.P ROFILE文件的定义 (87)10.3.视图模型(V IEW M ODEL)PROFILE的指定 (87)11.文件或BLOB字段的处理 (88)12.发布 (88)12.1.基本原理 (88)12.2.发布方法 (90)12.2.1.dorado studio打包: (90)12.2.2.其他工具打包: (91)13.升级 (91)14.附录 (93)14.1.参考程序光盘说明 (93)14.2.数据库配置说明 (93)1.前言dorado是由BSTEK公司推出的面向J2EE 的新一代Web应用的开发框架,支持AJAX 机制。
达 摩 院 过 去 一 年 做 了 啥 ( 2 0 2 0 )

NIPS综述:阿里3部门联袂为5千人展示人工智能技术作为世界最顶尖的机器学习和神经网络学术会议,NIPS(神经信息处理系统进展大会)在过去的两年敞开大门,邀请工业界的巨头们搭设展台,展示他们在人工智能上的研究和商业成果。
今年是阿里巴巴第二次参加NIPS。
相比去年,今年的阿里巴巴显得底气十足。
过去一年,阿里巴巴在人工智能商业化道路上硕果累累。
7月,阿里巴巴发布了首款智能语音音箱天猫精灵,在双11当天售出了100万台;10月,阿里巴巴在杭州云栖大会上推出了AliGenie语音开放平台,以及AR开放平台;11月,刚刚从乌镇参加完世界互联网大会的马云,在上海的申通地铁上用语音交互的方式购买了一张地铁票,向其构想的城市大脑近了一步。
在学术研究上,阿里巴巴也交了份不错的答题卷。
ACM MM2020会议主办权落户阿里巴巴,使其成为首个获得主办权的中国企业。
城市大脑成为首批入选国家新一代人工智能开放创新平台的人工智能技术服务。
在此前的IJCAI会议上,阿里巴巴有11篇论文入选,CVPR 会议入选4篇、KDD会议入选5篇,ACM MM会议入选3篇。
此次NIPS 大会上,阿里巴巴有两篇论文入选Workshop并进行Oral和Poster 形式报告。
阿里巴巴在人工智能上的光鲜,归功于其底层技术。
在乌镇、在上海,你看不到的研究人员和科学家们,来到了洛杉矶长滩的NIPS 大会上,展示了这些技术孵化的全过程。
阿里巴巴iDST院长金榕、阿里巴巴人工智能实验室的高级专家张硕、阿里巴巴搜索事业部的研究员李欣博士分别开设了迷你研讨会,介绍阿里巴巴在人工智能领域的创新。
iDST:多媒体信息检索和模型压缩如今的阿里巴巴不再只是定位于一家电子商务公司,在除了包括淘宝、天猫等电子商务业务以外,阿里巴巴更着眼于生态系统的建设,囊括数字营销(阿里妈妈)、视频(优酷)、金融科技(蚂蚁金服)、社交媒体(微博)、地图(高德)、物流(菜鸟)等不同的业务。
阿里开发者手册

阿里开发者手册1. 介绍阿里开发者手册是针对阿里巴巴公司的开发者群体编写的一份指导手册。
它提供了完整、详细、全面的技术文档和开发规范,帮助开发者在阿里巴巴的各个领域进行开发工作。
2. 规范与标准阿里开发者手册包含了丰富的规范与标准,涵盖了代码编写、项目管理、性能优化、安全防范等方面的要求。
下面是一些重要的规范与标准:2.1 代码规范•代码的命名规范,包括类名、方法名、变量名等的命名规则。
•代码的注释规范,包括注释的格式、注释的内容等要求。
•代码的缩进和空格规范,包括缩进的字符数、空格的使用等要求。
•代码的排版规范,包括括号的使用、换行的位置等要求。
2.2 项目管理规范•项目的目录结构规范,包括源代码目录、资源文件目录等的组织方式。
•项目的版本管理规范,包括分支管理、提交日志的编写等要求。
•项目的文档编写规范,包括需求文档、设计文档等的格式和内容要求。
•项目的测试规范,包括单元测试、集成测试等的执行方式和结果要求。
2.3 性能优化规范•代码的性能优化规范,包括循环优化、算法优化等方面的要求。
•数据库的性能优化规范,包括索引的使用、SQL语句的优化等要求。
•网络的性能优化规范,包括缓存的使用、CDN的配置等方面的要求。
•前端页面的性能优化规范,包括减少HTTP请求、压缩资源等的要求。
2.4 安全防范规范•代码的安全防范规范,包括输入验证、加密处理等方面的要求。
•网络的安全防范规范,包括防火墙的配置、权限管理等要求。
•数据存储的安全防范规范,包括数据库的加密、备份等方面的要求。
•静态资源的安全防范规范,包括防止恶意篡改、热更新等要求。
3. 使用与贡献阿里开发者手册提供了多种使用方式,方便开发者快速查阅和使用:3.1 在线阅读阿里开发者手册通过网站的形式提供在线阅读功能,开发者可以在任何地方、任何时间查阅相关内容。
3.2 下载使用开发者可以将阿里开发者手册下载到本地,方便离线查阅和使用。
下载的手册包含了完整的内容和相关资源。
vantiq 开发者指导手册
vantiq 开发者指导手册第一章简介Vantiq 是一款全面而强大的开发平台,旨在帮助开发者轻松构建实时、智能且联网的应用程序。
本指导手册将带领您深入了解如何使用Vantiq 平台进行开发工作,并提供了一系列详细的步骤和示例来帮助您快速上手。
第二章安装和配置在开始使用 Vantiq 之前,您需要正确地进行安装和配置。
以下是详细的步骤:1. 下载和安装 Vantiq 客户端。
您可以从 Vantiq 官方网站上找到最新的客户端版本,并按照指示进行安装。
2. 配置 Vantiq 客户端。
在第一次运行客户端时,您需要输入您的帐户信息并进行身份验证。
根据系统提示,填写相关信息以完成配置。
第三章 Vantiq 开发基础在本章中,您将学习 Vantiq 开发的基础知识。
以下是一些关键概念和技术:1. Vantiq 模型:Vantiq 使用模型来表示实时应用程序的结构和组件。
了解如何创建和定义模型是开始 Vantiq 开发的第一步。
2. Vantiq 流程:Vantiq 提供了流程引擎来处理和管理应用程序中的业务流程。
通过学习如何创建和配置流程,您可以更好地掌握应用程序的逻辑和流程控制。
3. Vantiq 数据存储:Vantiq 允许您使用不同的数据存储选项,如关系型数据库或 NoSQL 数据库,来存储和管理应用程序的数据。
了解如何配置和使用数据存储是非常重要的。
第四章 Vantiq 集成Vantiq 平台提供了多种集成选项,以便您能够将应用程序与其他系统进行连接。
以下是一些常见的集成方式:1. API 集成:Vantiq 允许您使用 API 来与其他系统进行通信和数据交换。
您可以学习如何创建和配置 API 对接点,以及如何使用 API 来获取和发送数据。
2. 设备集成:Vantiq 提供了各种设备集成选项,包括传感器、物联网设备等。
通过了解如何配置和管理设备集成,您可以实现实时监测和控制。
3. 第三方应用集成:Vantiq 还支持与第三方应用程序(如CRM、ERP等)的集成。
Tassel5UserGuide中文版
Contributors: Ed Buckler, Terry Casstevens, Peter Bradbury, Zhiwu Zhang, Dallas Kroon, Jeff Glaubitz, Kelly Swarts, Jason Wallace, Fei Lu, Alberto Romero, Cinta Romay, Eli Rodgers-Melnick, Alexander Lipka, Sara Miller, James Harriman, Yogesh Ramdoss, Michael Oak, Karin Holmberg, Natalie Stevens, and Yang Zhang.
3
目录
引言 .................................................................................................................................................. 6 1 入门指南....................................................................................................................................... 7 1.1 执行 TASSEL .................................................................................................................... 8 1.2 开源代码............................................................................................................................ 8 1.3 软件开发工具.................................................................................................................... 8 1.4 图形界面............................................................................................................................ 9 1.5 管道(命令行界面) ...................................................................................................... 10 1.6 GBS 管道 .......................................................................................................................... 10 2 File(文件)菜单 ....................................................................................................................... 10 2.1.1 Save Data Tree(保存数据树) ............................................................................ 10 2.1.2 Open Data Tree(打开数据树)............................................................................ 10 2.1.3 Save Data Tree As…(数据树另存为…) ........................................................... 10 2.1.4 Open Data Tree…(打开数据树…).................................................................... 11 2.1.5 Set Preferences(设置首选项) ............................................................................ 11 3 Data(数据)菜单 ................................................................................................................. 11 3.1 Load(加载) .................................................................................................................. 12 3.1.1 Hapmap ........................................................................................................... 14 3.1.2 3.1.3 3.1.4 HDF5(层次数据格式,版本5) ............................................................... 14 VCF(Variant Call Format 变异体召唤格式) ............................................ 15 Plink ................................................................................................................ 15
Rolls Corporation MO2020se 测试生成器说明书
VCO Input: 1/4" jack for connection to a Voltage Control source which may vary from 1.2 volts to 5 volts dc. This voltage allows for external control of the MO2020se's frequency. THE FREQUENCY CONTROL MUST BESET TO MAXIMUM FOR PROPER OPERATION OF THE VCO CONTROL.
• Frequency range from 20Hz to 24kHz • Balanced XLR, RCA and 1/4" unbalanced Outputs • Sine and Square wave outputs • -30 dB pad for referencing
SPECIFICATIONS: Output Level:
Frequency: Varies the frequency generated by the MO2020se from 20Hz to 24kHz.
PLEASE NOTE: THE FREQUENCY MARKINGS ON THE MO2020 ARE APPROXIMATE AND MAY VARY. FOR ACCURATE FREQUENCY SELECTION, USE A RELIABLE FREQUENCY COUNTER.
Sine Out: Balanced XLR, RCA and 1/4" unbalanced jacks containing the sine wave signal.
EN8F629_v1.3
8.1. CMCON-比较器控制寄存器:(19H).............................................................................................................. 19 8.2. VRCON-参考电压控制寄存器:(99H).......................................................................................................... 20
7.1. T1CON—TIMER1 控制寄存器:(10H)............................................................................................................ 18 7.2. PSTA-电源控制寄存器:(8EH)....................................................................................................................19
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下技术手册内容摘自《深度学习与图像识别:原理与实践》,目标检测章节,如果读者需要系统的学习图像识别,可阅读《深度学习与图像识别:原理与实践》全书。
目标检测本文首先会介绍目标检测的概念,然后介绍一种简化了的目标检测问题——定位+分类以及它存在的问题,最后由浅入深逐步进入到目标检测常用的模型及方法,如Faster R-CNN、SSD 等。
这个过程中会涉及很多细节的概念和知识点。
本文针对SSD 算法给出了PyTorch版的代码,大家也会在这里看到一些细节知识点的实现方法。
学习时,建议先根据顺序把所有检测方法浏览一遍,有一个初步的了解;然后再深入研究SSD 部分的代码,理解其中涉及的很多细节将有助于大家深入理解一些问题。
学习完SSD 之后,再看一遍FasterR-CNN 等方法,把第一遍阅读时缺失的细节补充上去,这样能帮助大家循序渐进地深入了解目标检测算法。
当然,擅长实战的读者可以直接跳到SSD 部分看代码,实战之后再补充理论也不迟。
开始本文内容之前,我们先明确两个定义:(1)定位+分类:对于仅有一个目标的图片,检测出该目标所处的位置以及该目标的类别,如图(a,c)所示。
前言(2)目标检测:对于有多个目标的图片,检测出所有目标所处的位置及其类别,如图(b,d)所示。
我们先从相对简单的定位+分类开始,而后重点介绍目标检测。
学完本章之后你会发现很多图像问题就都可以解了。
(a)原图 (b)原图(c)定位+分类 (d)目标检测检测问题定义[9]目录第一章 定位+分类 6第二章 目标检测 8 2.1 R-CNN 10 2.2 Fast R-CNN 14 2.3 Faster R-CNN 17 2.4 YOLO 21 2.5 SSD 23第三章 目标检测的产业应用实践 25附录 29第一章 定位+分类该问题是分类到目标检测的一个过渡问题,从单纯地图片分类到分类后给出目标所处位置,再到多目标的类别和位置。
接下来,我们看一下定位+分类问题的解法。
(a)分类问题 (b)定位问题图1-1 分类问题vs定位问题[9]分类不用多说,上一章我们以分类为例讲了卷积神经网络。
在定位问题中,则需要模型返回目标所在的外接矩形框,即目标的(x,y,w,h)四元组。
接下来介绍一种比较容易想到的思路,把定位当做回归问题,具体步骤如下:(1)训练(或下载)一个分类模型,例如AlexNet、VGGNet或ResNet;(2)在分类网络最后一个卷积层的特征层(feature map)上添加“regression head”,如图1-2所示;补充说明:神经网络中不同的“head”通常用来训练不同的目标,每个“head”的损失函数和优化方向不同。
如果想让一个网络实现多个功能,通常是在神经网络后面接多个不同功能的“head”。
(3)同时训练“classification head”和“regression head”,为了同时训练分类和定位(定位是回归问题)两个问题,最终损失函数是分类和定位两个“head”产生损失的加权和。
(4)在预测时同时使用分类和回归head得到分类+定位结果。
这里强调一下,第一章 定位+分类 < 7分类预测出的结果就是C个类别,回归预测的结果可能有两种:一种是类别无关,输出4个值;一种是类别相关,输出4*C个值,这要看读者想要哪种结果了。
图1-2 分类+定位网络结构设计[9]第二章 目标检测目标检测需要获取图片中所有目标的位置及其类别,对于图2-1中的3张图而言,当图片中只有一个目标时,“regression head”预测4个值,当图片中有3个目标时,“regression head”预测12个值,那么当图片中有多个目标时,“regression head”要预测多少个值呢?图2-1 使用定位+分类解目标检测存在的问题 [9]这时根据读者已经学过的一些知识,可能会尝试用滑窗的方法来解决,如图2-2所示。
但是,这里有一个问题,我们需要设计大量的不同尺度和长宽比的“滑窗”使它们通过CNN,然而这个计算量是非常巨大的。
有没有什么方法能使得我们快速定位到目标的潜在区域,从而减少大量不必要的计算呢?第二章 目标检测 < 9图2-2 使用滑窗方法做目标检测存在的问题:滑窗的尺寸、大小、位置不同将产生非常大的计算量[9]10 > 第二章 目标检测学者们在这个方向做了很多研究,比较有名的是selective search方法,具体方法这里不做详细说明,感兴趣的读者可以看关于selective search的论文。
大家只要知道这是一种从图片中选出潜在物体候选框(Regions of Interest,ROI)的方法即可。
有了获取ROI的方法,接下来就可以通过分类和合并的方法来获取最终的目标检测结果。
基于这个思路有了下面的R-CNN方法。
2.1 R-CNN下面介绍R-CNN[1]的训练过程,整体训练流程如图2-3所示:图2-3 R-CNN训练过程[9](1)选出潜在目标候选框(ROI)objectness[10], selective search[11], category-independent object proposals[12]等很多论文都讲述了候选框提取的方法,R-CNN使用selective search的方法选出2000个潜在物体候选框。
第二章 目标检测 < 11(2)训练一个好的特征提取器R-CNN的提出者使用卷积神经网络AlexNet提取4096维的特征向量,实际上使用VGGNet/GoogLeNet/ResNet等也都可以。
细心的读者会发现,AlexNet 等网络要求输入的图片尺寸是固定的,而步骤(1)中的ROI尺寸大小不定,这就需要将每个ROI调整到指定尺寸,调整的方法有多种,可参见图2-4,其中(a)是原始ROI图片,(b)是包含上下文的尺寸调整,(c)是不包含上下文的尺寸调整,(d)是尺度缩放。
(a)(b)(c)(d)图2-4 不同压缩方法图示接下来,为了获得一个好的特征提取器,一般会在ImageNet预训练好的模型基础上做调整(因为ImageNet预测的种类较多,特征学习相对完善),唯一的改动就是将ImageNet中的1000个类别的输出改为(C+1)个输出,其中C是真实需要预测的类别个数,1是背景类。
新特征的训练方法是使用随机梯度下降(stochastic gradient descent,即SGD),与前几章介绍的普通神经网络的训练方法相同。
提到训练,就一定要有正样本和负样本,这里先抛出一个用于衡量两个矩形交叠情况的指标:IOU(Intersection Over Union)。
IOU其实就是两个矩形面积的交集除以并集,如图2-5所示。
一般情况下,当IOU>=0.5时,可以认为两个矩形基本相交,所以在这个任务中,假定两个矩形框中,1个矩形代表ROI,另一个代表真实的矩形框,那么当ROI和真实矩形框的IOU>=0.5时则认为是正样本,其余为负样本。
至此,R-CNN的第二步特征提取器可以开始训练了,不过在训练过程中要注意,需要对负样本进行采样,因为训练数据中正样本太少会导致正负样本极度不平衡。
最终在该步得到的是一个卷积神经网络的特征提取器,其特征是一个4096维特征向量。
图2-5 IOU图示(3)训练最终的分类器这里为每个类别单独训练一个SVM分类器。
这里面有个小技巧,SVM的训练也需要选择正负样本,R-CNN的提出者做了一个实验来选择最优IOU阈值,最终仅仅选择真实值的矩形框作为正样本。
注意 正负样本的选择比较有讲究,Fast R-CNN和Faster R-CNN是根据IOU的大小选取正负样本,2.2.3节有详细介绍。
(4)为每个类训练一个回归模型,用来微调ROI与真实矩形框位置和大小的偏差,如图2-6所示。
图2-6 R-CNN中的ROI结果微调[9]下面是所有检测问题都会用到的一块代码:IOU的计算。
def bboxIOU (bboxA, bboxB):A_xmin = bboxA[0]A_ymin = bboxA[1]A_xmax = bboxA[2]A_ymax = bboxA[3]A_width = A_xmax - A_xminA_height = A_ymax - A_yminB_xmin = bboxB[0]B_ymin = bboxB[1]B_xmax = bboxB[2]B_ymax = bboxB[3]B_width = B_xmax - B_xminB_height = B_ymax - B_yminxmin = min(A_xmin, B_xmin)ymin = min(A_ymin, B_ymin)xmax = max(A_xmax, B_xmax)ymax = max(A_ymax, B_ymax)A_width_and = (A_width + B_width) - (xmax - xmin) #宽的交集A_height_and = (A_height + B_height) - (ymax - ymin) #高的交集 if ( A_width_and <= 0.0001 or A_height_and <= 0.0001):return 0area_and = (A_width_and * A_height_and)area_or = (A_width * A_height) + (B_width * B_height)IOU = area_and / (area_or - area_and)return IOU预测阶段有如下几个步骤:(1)同样地,使用selective search方法先选出2000个ROI。
(2)所有ROI调整为特征提取网络所需的输入大小并进行特征提取,得到2000个ROI对应的2000个4096维的特征向量。
(3)将2000个特征向量分别输入到SVM中,得到每个ROI预测的类别。
(4)通过回归网络微调ROI的位置。
(5)最终使用非极大值抑制(Non-Maximum Suppression,NMS)方法对同一个类别的ROI进行合并得到最终检测结果。
NMS的原理是得到每个矩形框的分数(置信度),如果两个矩形框的IOU超过指定阈值,则仅仅保留分数大的那个矩形框。
以上就是R-CNN的全部过程,我们可以从中看出,R-CNN存在的一些问题:●不论是训练还是预测,都需要对selective search出来的2000个ROI全部通过CNN的forward过程来获取特征,这个过程非常慢。
●卷积神经网的特征提取器和用来预测分类的SVM是分开的,也就是特征提取的过程不会因SVM和回归的调整而更新。