精华内容
下载资源
问答
  • 家系图包括什么内容
    万次阅读 多人点赞
    2022-02-09 19:58:55

    ML:MLOps系列讲解之系列知识解读之完整总结系列内容(第一章~第九章)

    导读:您将了解如何使用机器学习,了解需要管理的各种变更场景,以及基于ml的软件开发的迭代性质。最后,我们提供了MLOps的定义,并展示了MLOps的发展。

    目录

    ML:MLOps系列讲解之系列知识解读全貌

    MLOps的简介

    MLOps的意义

    MLOps = ML+Dev+Ops

    MLOps三大步骤

    MLOps带给业务和数据科学优势

    MLOps解决的主要挑战

    MLOps全貌官网

    1、MLOps的定义与发展—你为什么可能想使用机器学习

    1.1、Deployment GapML部署的差距

    1.2、Scenarios of Change That Need to be Managed需要管理的变化的场景

    1.3、MLOps Definition定义

    1.4、MLOps Evolution进化

    1.5、The Evolution of MLOps

    2、设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?

    2.1、Work Flow Decomposition工作流程分解

    2.2、AI Canvas

    2.3、机器学习Canvas

    3、端到端 ML工作流生命周期

    3.1、Data Engineering

    3.2、Model Engineering

    3.3、Model Deployment

    4、基于ML的软件的三个层次

    4.1、Data: Data Engineering Pipelines

    4.2、Model: Machine Learning Pipelines

    4.3、Code: Deployment Pipelines

    5、MLOps原则

    5.1、Iterative-Incremental Process in MLOps MLOps中的迭代增量过程

    5.2、Automation自动化

    5.3、Continuous X持续部署

    5.4、Versioning版本控制

    5.5、Experiments Tracking实验跟踪

    5.6、Testing测试

    5.7、Monitoring 监控

    5.8、“ML Test Score” System  “机器学习成绩”系统

    5.9、Reproducibility可再现性

    5.10、Loosely Coupled Architecture (Modularity) 松散耦合架构(模块化)

    5.11、ML-based Software Delivery Metrics (4 metrics from “Accelerate”) 基于ML的软件交付指标(来自“加速”的4个指标)

    5.12、Summary of MLOps Principles and Best Practices

    6、CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型。

    6.1、Business and Data Understanding业务和数据理解

    6.2、Data Engineering (Data Preparation)数据工程(数据准备)

    6.3、Machine Learning Model Engineering机器学习模型工程

    6.4、Evaluating Machine Learning Models评估机器学习模型

    6.5、Deployment部署

    6.6、Monitoring and Maintenance监控和维护

    6.7、Conclusion

    6.8、Acknowledgements

    7、MLOps Stack Canvas堆栈画布

    7.1、MLOps Stack Canvas

    7.2、Documenting MLOps Architecture  记录MLOps架构

    7.3、MLOps Maturity Level  MLOps 成熟度级别

    7.4、Conclusion  结论

    7.5、Acknowledgements  

    8、ML模型治理

    9、MLOps的State(工具和框架)


    ML:MLOps系列讲解之系列知识解读全貌

    MLOps的简介

              在机器学习解决方案的开发、测试、部署支持过程中,多学科专家在互动中会遇到许多组织难题和技术障碍,这不仅延长了产品创建的时间,还降低了产品带给该项业务的实际价值。
            为了消除这些障碍,MLOps这一概念应运而生。MLOps是一门工程学科,旨在统一 ML 系统开发(dev)和 ML 系统部署(ops),以标准化过程生产高性能模型的持续交付。行业内,大多数的ML 系统的生命周期如下所示:

    • 业务开发或产品团队:用 KPI 定义业务目标
    • 数据工程:数据采集和准备。
    • 数据科学:构建 ML 解决方案和开发模型。
    • IT 或 DevOps:完成部署设置,与科学家一起进行监控。

            2018年左右,在谷歌举办的一场演讲之后,业内专业人士首次公开谈及工业运行(生产)中机器学习生命周期集成化管理的必要性
            自2019年起,MLOps连续两年进入Gartner数据科学与机器学习技术成熟度曲线,并被视为AI工程化的重要内容。MLOps将与AI工程化的DevOps、DataOps协调联通、互相赋能。

    推荐文章Paper:《Hidden Technical Debt in Machine Learning Systems》翻译与解读

    MLOps的意义

           举个简单的例子,几年前,我们对于机器学习的印象主要是拿到一堆excel/csv数据,通过python编程,尝试做一些模型实验,最终会产出一个预测结果。但对于这个预测结果如何使用,对业务产生了什么影响,大家可能都不是很有概念。这就很容易导致机器学习项目一直停留在实验室阶段,一个接一个做POC测试(Proof of Concept),但都没法成功“落地”。
           MLOps的主要作用就是连接模型构建团队和业务,运维团队,建立起一个标准化的模型开发,部署与运维流程,使得企业组织能更好的利用机器学习的能力来促进业务增长。

    • 缩短模型开发部署的迭代周期:更快地试验和开发模型、更快地将模型部署到生产环境。
    • 即解决各类efficiency问题。从Algorithmia的2020年的报告中可以看到,很大一部分公司需要31-90天上线一个模型,其中有18%的公司需要90天以上来上线一个模型。且在中小型公司中,算法工程师花在模型部署方面的时间比例也明显偏多。MLOps希望通过更标准化自动化的流程与基础设施支持,来提升模型交付的整体效率。
    • 让专业的人更专注:好的MLOps实践,可以让算法工程师更专注于擅长的模型构建过程,减少对模型部署运维等方面的“感知”。
    • 让模型迭代流程更清晰:好的MLOps实践,可以让模型开发迭代的方向更加清晰明确,切实为业务产生价值。
    • 让各角色人员高效协同:MLOps还希望能提供一个企业内各个角色无缝协作的平台,让业务,数据,算法,运维等角色能更高效率的进行协作,提升业务价值产出,即transparency的需求。

           就像今日的软件工程师很少需要关注运行环境,测试集成,发布流程等细节,但却做到了一天数次发布的敏捷高效,未来算法工程师应该也能更专注于数据insights获取方面,让模型发布成为几乎无感又快速的自动化流程

    MLOps = ML+Dev+Ops

            数字化将DataOps这一概念引入人们生活的同时,大数据正引入一种新的范式——MLOps。鉴于DevOps和DataOps在实践中越来越多的运用,该项业务需要机器学习模型使用过程中的所有参与者一直保持合作与互动,包括业务人员、工程师、大数据开发人员(数据科学家和机器学习专家)。
            与DevOps和DataOps类似,MLOps旨在提高自动化程度和工业机器学习解决方案的质量,同时兼顾监管需求和业务利益。MLOps是机器学习ML与DevOps的结合,旨在将敏捷软件工程的一些成熟功能引入机器学习和人工智能。机器学习生态系统需要一个强大的DevOps一样的框架、工具链和流程,将开发人员、数据科学家和操作员聚集在一起,通过有效的DevOps战略,组织可以加快向最终用户运送新功能和服务的速度。
            MLOps是结合系统开发和运营支持(包括集成、测试、发布、部署、基础设施管理等操作),以实现机器学习系统生命周期复合化和自动化管理的文化理念和应用实例。MLOps是机器学习模型管理实践和标准流程,衔接模型的开发、部署和运维,涉及算法、业务及运维团队,旨在提升模型生命流程的开发、部署、运维效率,促进模型规模化落地应用。
            MLOps借助敏捷的方法和技术工具扩展了CRISP-DM方法论(CRISP-DM跨行业数据挖掘标准流程),从而可以自动执行包括数据、机器学习模型、代码和环境在内的操作。这些工具中包括了Cloudera公司的数据科学工作台——ClouderaData Science Workbench,将MLOps付诸实践有助于数据科学家在CRISP-DM经典阶段规避常见陷阱和问题。

    MLOps三大步骤

    • 项目设计:包括需求收集,场景设计,数据可用性检查等。
    • 模型开发:包括数据工程,模型工程,以及评估验证等。
    • 模型运维:包括模型部署,CI/CD/CT工作流,监控与调度触发等。

            DevOps通过缩短开发部署的时间来更快地迭代软件产品,使得公司业务不断进化。MLOps的逻辑也是通过相似的自动化和迭代形式,加快企业从数据到insights的价值获取速度。

    MLOps带给业务和数据科学优势

    • 在机器学习项目中践行敏捷原则:加快企业从数据到insights的价值获取速度。实施MLOps带来的所有好处中,最为突出的是机器学习工业部署细节中的敏捷方法;
    • 统一机器学习模型和关联软件产品的发布周期:通过可靠且有效的机器学习生命周期管理,减少时间,从而得到高质量结果;
    • 在CI、CD、CT系统中支持机器学习模型和数据集:持续开发(CD)、持续集成(CI)、持续训练(CT)方法和工具保障了工作流程和模型的可重复性;随时随地轻松部署高精度机器学习模型;
    • 集成管理系统可连续监测机器学习资源
    • 使用机器学习模型减轻技术债:消除组织障碍,汇聚多学科机器学习专家的经验。

    MLOps解决的主要挑战

    • 缺乏擅长开发和部署可扩展 Web 应用程序的数据科学家:如今,市场上出现了一种新的 ML 工程师简介,旨在满足这一需求。它是数据科学和 DevOps 交叉点的最佳选择。
    • 在模型中反映不断变化的业务目标:数据不断变化,维护模型的性能标准,确保人工智能治理,存在许多依赖关系。很难跟上持续的模型培训和不断发展的业务目标。
    • 技术团队和业务团队的trade off:技术和业务团队之间的沟通鸿沟,难以找到共同的协作语言。大多数情况下,这种差距成为大型项目失败的原因。
    • 风险评估:围绕此类 ML/DL 系统的黑盒性质存在很多争论。模型往往会偏离他们最初打算做的事情。评估此类故障的风险/成本是非常重要和细致的步骤。例如,与标记一个无辜的人进行欺诈、阻止他们的帐户和拒绝他们的贷款申请相比,YouTube 上不准确的视频推荐的成本要低得多。

    参考文章
    机器学习新概念-MLOps简介_java、c++、机器学习方向King-CSDN博客_mlops 开源框架
    什么是 MLOps? - 知乎

    MLOps全貌官网

    原址https://ml-ops.org/

    Machine Learning Operations=Design+Model Development+Operations

           Machine Learning Operations是借助机器学习模型操作化管理(MLOps),我们希望提供端到端的机器学习开发过程,以设计、构建和管理可再生、可测试和可演进的ML驱动软件。
           作为一个新兴的领域,MLOps正在数据科学家、ML工程师和AI爱好者中迅速获得势头。遵循这一趋势,持续交付基金会SIG MLOps将ML模型管理与传统软件工程区分开来,并建议以下MLOps能力:

    • MLOps旨在统一机器学习和软件应用程序发布的发布周期
    • MLOps支持机器学习工件的自动化测试(例如数据验证、ML模型测试和ML模型集成测试)
    • MLOps能够将敏捷原则应用到机器学习项目中。
    • MLOps支持机器学习模型和数据集,将这些模型构建为CI/CD系统中的第一等级
    • MLOps减少了跨机器学习模型的技术债务
    • MLOps必须是一种与语言、框架、平台和基础设施无关的实践


     

    1、MLOps的定义与发展—你为什么可能想使用机器学习

    1.1、Deployment GapML部署的差距

    1.2、Scenarios of Change That Need to be Managed需要管理的变化的场景

    1.3、MLOps Definition定义

    1.4、MLOps Evolution进化

    1.5、The Evolution of MLOps

    相关文章ML:MLOps系列讲解之《MLOps的定义与发展—你为什么可能想使用机器学习》解读

    2、设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?

    2.1、Work Flow Decomposition工作流程分解

    2.2、AI Canvas

    2.3、机器学习Canvas

    2.3.1、机器学习画布(v1.0),THE MACHINE LEARNING CANVAS (V1.0)

     相关文章ML:MLOps系列讲解之《设计机器学习驱动的(ML-powered)软件—我们想要解决的业务问题是什么?》解读

    3、端到端 ML工作流生命周期

    3.1、Data Engineering

    3.2、Model Engineering

    3.3、Model Deployment

     相关文章ML:MLOps系列讲解之《端到端 ML工作流生命周期》解读

    4、基于ML的软件的三个层次

    4.1、Data: Data Engineering Pipelines

    4.1.1、Data Ingestion

    4.1.2、Exploration and Validation

    4.1.3、Data Splitting

    4.2、Model: Machine Learning Pipelines

    4.2.1、Model Training

    4.2.2、Model Evaluation

    4.2.3、Model Testing

    4.2.4、Model Packaging

    4.2.5、Different forms of ML workflows不同形式的机器学习工作流程

    4.2.6、ML Model serialization formats 机器学习模型序列化格式

    4.3、Code: Deployment Pipelines

    4.3.1、Model Serving Patterns模型服务模式

    4.3.2、Deployment Strategies部署策略

     相关文章ML:MLOps系列讲解之《基于ML的软件的三个层次》解读

    5、MLOps原则

    5.1、Iterative-Incremental Process in MLOps MLOps中的迭代增量过程

    5.2、Automation自动化

    5.3、Continuous X持续部署

    5.4、Versioning版本控制

    5.5、Experiments Tracking实验跟踪

    5.6、Testing测试

    5.6.1、Features and Data Tests特征和数据测试

    5.6.2、Tests for Reliable Model Development可靠模型开发的测试

    5.6.3、ML infrastructure test机器学习基础设施测试

    5.7、Monitoring 监控

    5.8、“ML Test Score” System  “机器学习成绩”系统

    5.9、Reproducibility可再现性

    5.10、Loosely Coupled Architecture (Modularity) 松散耦合架构(模块化)

    5.11、ML-based Software Delivery Metrics (4 metrics from “Accelerate”) 基于ML的软件交付指标(来自“加速”的4个指标)

    5.12、Summary of MLOps Principles and Best Practices

     相关文章ML:MLOps系列讲解之《MLOps原则—迭代增量过程/自动化/持续部署/版本控制/实验跟踪/测试/监控/“ML成绩”系统/可再现性/松散耦合架构(模块化)/基于ML的软件交付指标/MLO等》解读

    6、CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型。

    6.1、Business and Data Understanding业务和数据理解

    6.2、Data Engineering (Data Preparation)数据工程(数据准备)

    6.3、Machine Learning Model Engineering机器学习模型工程

    6.4、Evaluating Machine Learning Models评估机器学习模型

    6.5、Deployment部署

    6.6、Monitoring and Maintenance监控和维护

    6.7、Conclusion

    6.8、Acknowledgements

     相关文章ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读

    7、MLOps Stack Canvas堆栈画布

    7.1、MLOps Stack Canvas

    7.2、Documenting MLOps Architecture  记录MLOps架构

    7.3、MLOps Maturity Level  MLOps 成熟度级别

    7.4、Conclusion  结论

    7.5、Acknowledgements  

     相关文章ML:MLOps系列讲解之《MLOps Stack Canvas堆栈画布》解读

    8、ML模型治理

    本部分介绍了治理流程的概述,这些流程是MLOps不可或缺的一部分。

    9、MLOps的State(工具和框架)

     相关文章ML:MLOps系列讲解之《MLOps的State(工具和框架)》解读

    更多相关内容
  • 国内常用地图坐标总结

    千次阅读 2022-05-12 10:38:34
    国内地图坐标

    一、国内的常用坐标系

    1.1 坐标系简介

    • WGS84\GCJ02\CGCS2000\BD09是地心坐标系,坐标表现形式为经度、纬度。
    • Pseudo-Mercator\UTM\BD09MC是投影坐标系,坐标表现形式为x、y。
    • WGS84\CGCS2000是原始坐标系,GCJ02\BD09是加密坐标系。

    1.2 国内各地图厂家坐标系

    厂商国内国外
    天地图CGCS2000和Pseudo-Mercator投影坐标系CGCS2000和Pseudo-Mercator投影坐标系
    谷歌已停用
    街道图是GCJ-02,数据来源于高德,两者互通
    卫星图采用的是全84坐标系,导致在我国区域谷歌地图的街景和卫星图不重合
    WGS84坐标系和Pseudo-Mercator投影坐标系
    OSMWGS84坐标系和Pseudo-Mercator投影坐标系
    百度BD09和BD09MC投影坐标系(包括港澳台)
    1)BD09是在GCJ-02坐标系基础上再次加密
    2)支持WGS-84、GCJ-02转换成BD09,反向不支持,并且批量转换一次有条数限制
    WGS-84
    高德GCJ-02和Pseudo-Mercator投影坐标系
    1)WGS-84->GCJ-02(高德有接口提供,反过来没有)
    2)MapABC 是高德集团底下的图盟公司,主要面向大众型企业或政府机关,并提供付费的有偿服务,
    3)Amap和MapABC,数据和服务都是共享的
    腾讯GCJ-02和Pseudo-Mercator投影坐标系
    Bing街道:GCJ-02
    卫星图:WGS84或CGCS2000
    WGS-84

    1.3位置数据坐标系分析

    • 国内Android系统手机采集的AGPS数据是GCJ02坐标系的,GPS数据应该为WGS84;
    • RTK和一些PDA设备采集的GPS数据是WGS84坐标系的;
    • IOS系统手机采集的AGPS数据是WGS84坐标系的;
    • GPS芯片原生得到的是坐标是84坐标,在我国,必须要得到授权后,才可以得到并使用02坐标系的加密方式,并且可以在我国02坐标系下进行使用。而国内几家大公司的地图的sdk,由于得到了国家的许可,提供了相应的sdk,可以通过调用sdk的方式得到02坐标系下的坐标值;
    • 北斗芯片获取的定位数据是CGCS2000坐标系的。

    二、坐标系介绍

    2.1 WGS-84坐标系:

     全称,World Geodetic System-1984,既1984年的全球坐标系统。
     美国GPS系统使用的是WGS84坐标系,受益于GPS系统的发展,现在全球用的最多的坐标系就是WGS84坐标系,它的EPSG编码是4326。(EPSG是大地基准面、空间参考系统、地球椭球体、坐标转换和相关度量单位的公共注册中心,它为每个坐标系都分配有一个编码)。
     WGS84坐标系的坐标原点为地球质心,地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984.0定义的协议地球极(CTP)方向,X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系。
     WGS84坐标系的EPSG编码为4326,赤道半径为6378137,扁率为1/298.257223565,是目前应用最为广泛的坐标系统,只要跟GPS定位相关,使用的都是WGS84坐标系,谷歌、OSM也用的WGS84坐标系,很多软件(QGIS、ARCGIS)、前端脚本库(leaflet、mapbox、openlayer),在没有特别声明的时候,默认数据使用是WGS84坐标。

    2.2 CGCS2000

     China Geodetic Coordinate System 2000,2000国家大地坐标系,是我国当前最新的国家大地坐标系,它的EPSG编码为,4490。
     2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心;2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X轴由原点指向格林尼治参考子午线与地球赤道面(历元2000.0)的交点,Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。
     相较于WGS84,CGCS2000坐标系的区别主要在于,它采用的是2000年的地球物理和大地测量的结果平差计算而设定的,坐标系Z轴指向历元2000的地球参考极方向,这些差异对高精数据有影响,但对于精度在10m以上的数据来说,这些差异可以忽略不计。
     很多软件和框架都还没有兼容CGCS2000坐标系,我们在使用CGCS2000坐标系的数据的时候,可以设置为WGS84坐标系,这样也便于传输和查阅。
    天地图采用的是CGCS2000坐标系
    既非高精度的大多数情况下,我们可以认为WGS84坐标系=CGCS2000坐标系,2000坐标系与WGS84坐标系偏差不大,因为CGCS2000坐标系与WGS84坐标系的原点、尺度、定向及定向演变的定义都是相同的,参考椭球的参数略有不同而已。相同的坐标点,在CGCS2000与WGS84下,经度是相同的,只在纬度上存有0.11mm上下的区别,可以忽略掉。

    2.3 GCJ02 坐标系

     为了数据安全和保密,通过地形图非线性保密处理算法(俗称火星加密)加密过的WGS84坐标系,俗称国测局坐标系,或火星坐标系

     GCJ02坐标系与WGS84坐标系之间的偏差大概在50-700m左右。

     目前国内大部分地图底图和矢量数据(除了LBS服务的坐标数据,还包括Android手机的定位数据)都使用GCJ02坐标系,为了使GCJ02坐标系的底图与数据和WGS84坐标系的底图与数据适配,通常会使用坐标系纠偏算法,将坐标系统一。

     各种形式的纠偏算法,JavaScript、java、python等,都可以在网上搜索到,数据处理和webgis开发,坐标系纠偏与数据融合统一是很重要的环节。

     通过对原始数据和加偏后的数据进行分析,猜测加偏的算法大概是,使用克拉索夫斯基椭球的参数,将原始坐标对应经线和纬线上的偏差转为弧度后,与原始坐标相加,形成加偏坐标。

     这个算法非常优秀,它既能保证GCJ02坐标系,相对于WGS84坐标系的线性单调性;又能保证GCJ02坐标系在伪距墨卡托投影下,相对于WGS84坐标系在伪距墨卡托投影下的线性单调性;既能保证数据在加偏后,仍能维持实际的空间相对位置,又能保证数据可以无损的纠偏回去。

     GCJ02坐标系是一种加密坐标系,目前国内大部分地图底图(高德、腾讯)和矢量数据(图商的LBS服务和Android手机的定位数据)都使用的是GCJ02坐标系,GCJ02的加密算法非常精妙,地图底图和矢量数据在使用之前,需要将坐标系进行统一。

    2.4 BD09坐标系

     D09坐标系是百度地图使用的地心坐标系,2009年,百度地图在GCJ02的基础上,做了二次加密,形成了BD09坐标系。坐标系的命名规则是首写字母+年份,BD09是2009年提出的,GCJ02是2002年提出的,CGCS2000是2000年提出的,WGS84是1984年提出的。)
     BD09坐标系大概是先将GCJ02坐标转为极坐标后,添加一个常量做偏移值,再将偏移后的极坐标转回到直角坐标。
     这种加偏算法,仅能保证相对于GCJ02坐标系的线性单调性,无法保证投影后的线性单调性,所以百度地图的墨卡托投影需要分区域进行。
    百度地图提供WGS84、GCJ02坐标系向BD09坐标系的转换API;在前端,百度地图也支持声明数据坐标系,以自动适配百度地图底图
     除了百度自己的API外,网上也能搜索到BD09、GCJ02、WGS84坐标系之间的转换方法
     因为在GCJ02坐标系的基础上,又做了一次加密,所以百度地图与其他地图的数据兼容性变得很不好。但作为国内硕果仅存的还在做街景的商业地图平台,加之其与echart开源JavaScript库的良好结合,我们很多时候,还需要使用百度地图,这时候,虽然麻烦,但还是需要对它的底图和数据进行坐标系统一。
     BD09坐标系是在GCJ02坐标系基础上二次加密而成,仅有百度地图在用,但百度地图有街景、有三维、有echart,很多情况下,我们需要使用百度地图的底图和数据,这时候,就需要对坐标系进行统一了,百度地图webAPI和js API都支持坐标系的转换。

    2.5.墨卡托投影法

     在说其他投影坐标系之前,我们先来了解一下墨卡托投影法,因为它是所有网络地图投影的基础。
     墨卡托投影法,又称麦卡托投影法、正轴等角圆柱投影,是一种等角的圆柱形地图投影法。
    本投影法得名于法兰德斯出身的地理学家杰拉杜斯·墨卡托,他于1569年发表长202公分、宽124公分以此方式绘制的世界地图。在以此投影法绘制的地图上,经纬线于任何位置皆垂直相交,使世界地图可以绘制在一个长方形上。由于可显示任两点间的正确方位,航海用途的海图、航路图大都以此方式绘制。在该投影中线型比例尺在图中任意一点周围都保持不变,从而可以保持大陆轮廓投影后的角度和形状不变(即等角);但墨卡托投影会使面积产生变形,极点的比例甚至达到了无穷大。


     在制作小比例尺地图的时候,近似认为地球是正球体,将上述中的x和y乘以地球半径,即可形成对应地点的墨卡托投影相对坐标,在制作大比例尺地图的时候,要考虑到地球扁率。
    墨卡托投影法是一种等角圆柱形地图投影,它的投影公式计算简单,可以将地球投影到一张长方形图上,它是Web-Mercator投影的基础。

    2.6. Pseudo-Mercator投影

     Pseudo-Mercator又称Web-Mercator,是墨卡托投影的一种变体,是WGS84坐标系的伪距墨卡托投影,是网络地图应用的标准投影。自从2005年,谷歌地图使用Web-Mercator投影发布自己的瓦片地图起,后续的图商OSM、高德、腾讯、百度都沿袭了这种投影方法发布自己的地图。它的EPSG编码为3857。
     墨卡托投影在大比例下会考虑地球扁率,但Web-Mercator在所有比例尺下都使用球面公式,会导致局部地区的地图偏离同一比例尺下的椭球面墨卡托地图。离赤道越远,偏差就越明显,在地面上可以达到40 km。
     因为很多人不知道Web-Mercator和墨卡托投影有这样的差别,导致两者经常被乱用,为了避免投影乱用,致使数据混淆,很多官方机构规定正规途径禁用Web-Mercator投影。
     通常情况,Web-Mercator投影仅在网络地图上使用。
    Web-Mercator投影公式与标准球面墨卡托的公式基本相同,但将世界坐标调整为左上角为(0, 0),右下角为(256, 256)的正方形,假设地图投影在一个256像素*256像素的图幅上:
    图片跑丢了
     其中x和y是像素坐标,λ是经度,φ是纬度,pixel是像素,zoom level是地图瓦片比例尺层级。
     Web-Mercator投影的数据覆盖范围在经度[-180°,180°],纬度[-85.051129°, 85.051129°]之间,这有两个好处,其一是避免将极点投影到无穷远处,其二是能将整个投影地图变成正方形;虽然它会把部分南北极地区截掉,但毕竟,除了极为特殊的情况外,企鹅和北极熊不看网络地图。
    Web-Mercator投影的缺点是变形失真比较严重,不适用于大比例尺、高精度数据的显示;但优点也很明显,投影公式计算简单,投影结果是正方形,切图方便,坐标结果是各层级的像素坐标。
    Web-Mercator投影坐标系是网络地图的投影坐标系,几乎所有的网络地图都使用这种投影,它的投影结果是正方形的,计算简单,切图方便。

    2.7BD09MC投影

     BD09MC是BD09坐标系的Web-Mercator投影坐标系。
     前文已经说过,GCJ02坐标系是WGS84坐标系的加密结果,GCJ02坐标系相对于WGS84坐标保证了投影后的线性单调性,所以GCJ02坐标系可以直接使用Web-Mercator投影,但作为GCJ02坐标系的二次加密结果BD09坐标系没有做到投影后的线性单调性,为了保障投影后的线性单调性,百度地图基于Web-Mercator投影进行了修改,加入了常量矩阵,分区域对投影结果进行纠正。
     因为BD09坐标系采用极坐标加常量的方法进行偏移,所以BD09MC投影不是基于正球体的,而是椭球,其椭球赤道半径a=6378206m,极半径b=6356584.314245179m,数据覆盖范围与Web-Mercator投影一致。
     BD09MC投影坐标系与Web-Mercator投影坐标系之间的转换可参见:https://blog.csdn.net/sinat_41310868/article/details/113791826。
     地图底图瓦片栅格的转换,考虑到精度要求不需要太高,通常情况下,仅需进行瓦片中心点坐标的平移即可。
     因为BD09坐标系是极坐标加常量加密,无法保证投影后的线性单调性,所以BD09MC投影坐标系需要在BD09坐标系进行Web-Mercator投影后,进行坐标纠正。因为精度不需要太高,地图瓦片的坐标纠正,仅需进行瓦片中心点坐标的平移即可。

    2.8. UTM投影

     Universal Transverse Mercator,通用横轴墨卡托投影,是一种国际标准化的地图投影法。使用笛卡尔坐标系,标记南纬80°至北纬84°之间的所有位置,它的坐标基础是WGS84坐标系,因为UTM是一种分度带投影,所以不同经度区间的UTM投影坐标系的EPSG编码不同。
     UTM采用网格编码,每个网格的编码经度在前,纬度在后。
     经度区间,每6°被编排为一经度区间。每一个经度区间均以一个数字表示,由西向东数以01至60编排。
     纬度区间,从南纬80°开始,每8°被编排为一个纬度区间,而最北的纬度区间(北纬74°以北)则被延伸至北纬84°,以覆盖世界上大部分陆地。每一个纬度区间均以一个英文字母表示,由南向北数以C至X编排。
    具体情况如下图︰

     在网格编码的基础上,某一点的UTM坐标表示为该点所在的网格编码,加上该点由网格西南角起向北和向东的距离(细分网格数)。
     坐标可由不同位数的数字组成,根据精确度而定。
     如下图,假设在一个大网格(例如17T)中,网格被不断以1010的尺度被细分(第一次细分为100100)。
     A点的UTM细分坐标为17T 11 83,B点的UTM细分坐标为17T 106 827,C点的细分坐标为17T 1085 8255。

     通常,一些自动驾驶项目采集的高精地图数据(点云、街景)是UTM投影坐标系的。某些网站上的卫星影像和自然资源数据,也使用UTM投影编码进行索引。
     UTM是通用横轴墨卡托投影,以细分网格的方式表示地球上的区间,一些高精地图数据使用的是UTM投影坐标系,某些网站上的卫星影像和自然资源数据,也是用UTM投影编码进行索引。
    UTM投影坐标系经常应用在无人驾驶及高精地图上面

    三、各厂家地图偏移说明

    3.1 为什么天地图没有偏移

     天地图是在国测局主导下生产建设的地图,是为了促进地理信息资源共享和高效利用,提高测绘地理信息公共服务能力和水平,改进测绘地理信息成果的服务方式,更好地满足国家信息化建设的需要,为社会公众的工作和生活提供方便。这样一个关乎国家民生的地图,你说能随意偏移吗,有必要偏移吗?
     那么为什么其它百度或高德等公众地图就一定要用GCJ-02加密呢?制作过地图或搞过测绘的朋友一定了解,对于国家一些重要的机构是不能出现在地图中的(有地图测绘相关的法律法规),比如一些军事管理区或国防战备设施等,它就像一柄利剑,且能随意示人?对于这些敏感的重要信息,国家天地图肯定是可以进行了严格管控的,但对于其它商用地图,在监管困难的情况下,于是就制定了GCJ-02标准,这就是商用地图必须要采用GCJ-02加密的根本原因。

    3.2 为什么谷歌地球没有偏移

     谷歌地球(GoogleEarth)是针对全球的,坐标完全没有偏移,由于没有详细的标注信息,服务器不在国内,且也不是主要针对国内用户,因此ZF也没有对其采取强硬措施,但现在谷歌地球(GoogleEarth)越来越难登录,一般需要采取翻墙才能访问,这是不争的事实。

    3.3 为什么谷歌卫星地图(国外服务器)没有偏移?

     Web版谷歌地图分两种,一种是谷歌国外服务器在线地图,通过map.google.com访问,一个是谷歌国内服务器在线地图,通过map.google.cn访问。而谷歌国外服务器在线地图,也分三种,分别是谷歌卫星地图、谷歌电子地图和谷歌地表地形图。
    谷歌卫星地图同谷歌地球(GoogleEarth)一样,谷歌国外服务器在线地图的卫星地图,由于服务器不在国内,且也不是主要针对国内用户,因此卫星地图是没有偏移的,也没有详细的标注信息,而且访问也需要翻墙才可以。它与谷歌地球(GoogleEarth)卫星影像的主要区别是采用的坐标系是WGS84 Web墨卡托投影且有Google水印,而谷歌地球(GoogleEarth)卫星影像采用的是WGS84地球坐标系且没有Google水印,它们的共同点是坐标都没有偏移。
    对于谷歌电子地图和谷歌地表地形图而言,由于有详细的标注信息,也在国家的管控下进行了GCJ-02加密。

    3.4为什么必应卫星地图没有偏移?

     必应卫星地图的情况与谷歌卫星地图(国外服务)基本相同,投影为WGS84 Web 墨卡托且坐标没有偏移,而必应电子地图还是有偏移的。

    3.5为什么OpenStreetMap地图没有偏移?

     OpenStreetMap是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图,相对于其它主流地图来讲,可能影响力还没有这么大,国内用户用得相对较少,信息的详细程序也比较有限,因此ZF还没有对其进行管控。

    展开全文
  • 基于内容的图像检索系统(Content Based Image Retrieval, 以下简称 CBIR),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。本文实现的 CBIR 系统,允许用户输入一张图像,在图像数据库中查找具有相同或...

    代码资源

    图片数据集

    摘 要

    基于内容的图像检索系统(Content Based Image Retrieval, 以下简称 CBIR),是计算机视觉领域中关注大规模数字图像内容检索的研究分支。本文实现的 CBIR 系统,允许用户输入一张图像,在图像数据库中查找具有相同或相似内容的其它图片。本文共实现七种方法基于内容的图像检索,其中基于深度学习的迁移学习法可以得到最好的检索效果,三种特征信息综合的方法次之。本文实现的方法分别是:基于颜色信息的图像检索,包括:HSI中心矩法和HSV中心矩法;基于纹理特征的图像检索,采用灰度共生矩阵实现;基于形状特征的图像检索,采用形状不变矩法;基于综合信息的图像检索,包括将三种特征信息综合的方法,主成分分析法,基于深度学习的迁移学习法。文主要工作如下:
    (1) 研究了基于颜色的HSI中心矩法和HSV中心矩法在图像检索系统中的应用。首先介绍了RGB颜色空间,HSI颜色空间和HSV颜色空间,然后实现了基于颜色HSI中心矩法和HSV中心矩法图像检索的方法。
    (2) 研究了纹理特征在图像检索中的应用。首先介绍了灰度共生矩阵进行纹理特征的原理,然后具体实现了灰度共生矩阵实现图像检索的方法。
    (3) 研究了形状特征在图像检索系统中的应用。分别介绍了形状不变矩法和边缘直方图法实现基于形状的图像检索方法,实现了基于形状不变矩法图像检索的方法。
    (4) 研究了三种特征信息综合的方法。本文实现了将HSI中心矩法,灰度共生矩阵法和形状不变矩法三种方法得到的特征值结合起来,作为一个维数更高的特征向量,对图像内容进行检索。
    (5) 研究了主成分分析法进行图像特征提取的方法。首先介绍了主成分分析法的基本原理,然后具体实现了运用主成分分析法进行图像检索。
    (6) 研究了迁移学习方法在图像检索系统中的应用。首先介绍了DenseNet201的网络结构,然后对图片数据集进行划分,采用了的预训练模型进行图像类别识别得到图片类别,最后结合三种特征信息筛选出相似图片完成图像检索。

    Abstract

    Content-based image retrieval system is a research branch in the field of computer vision that focuses on large-scale digital image content retrieval. The CBIR system implemented in this article allows users to input an image and search for other images with the same or similar content in the image database. This article implements seven methods of content-based image retrieval, of which the transfer learning method based on deep learning can get the best retrieval effect, and the three methods of feature information integration are the second. The methods implemented in this paper are: image retrieval based on color information, including: HSI central moment method and HSV central moment method; image retrieval based on texture features, using gray-level co-occurrence matrix; image retrieval based on shape features, using shape Variable moment method; image retrieval based on comprehensive information, including the method of integrating three kinds of characteristic information, principal component analysis method, and transfer learning method based on deep learning. The main work of this article is as follows:
    (1) Research the application of color-based HSI central moment method and HSV central moment method in image retrieval system. First introduced the RGB color space, HSI color space and HSV color space, and then realized the method of image retrieval based on the color HSI central moment method and HSV central moment method.
    (2) The application of texture features in image retrieval is studied. Firstly, the principle of the gray-level co-occurrence matrix for texture feature is introduced, and then the method of the gray-level co-occurrence matrix to realize image retrieval is realized.
    (3) The application of shape feature in image retrieval system is studied. The shape-invariant moment method and the edge histogram method are respectively introduced to realize the shape-based image retrieval method, and the method based on the shape invariant moment method is realized.
    (4) Three methods of feature information synthesis are studied. In this paper, the eigenvalues obtained by the three methods of HSI central moment method, gray-level co-occurrence matrix method and shape invariant moment method are combined to retrieve the image content as a higher-dimensional eigenvector.
    (5) The method of principal component analysis for image feature extraction is studied. First introduced the basic principle of the principal component analysis method, and then concretely realized the use of principal component analysis method for image retrieval.
    (6) Research the application of transfer learning method in image retrieval system. First, the network structure of DenseNet201 is introduced, and then the image data set is divided, the pre-training model is used to identify the image category to obtain the image category, and finally the three kinds of feature information are combined to screen out similar images to complete the image retrieval.

    第一章 绪论

    1.1 课题研究背景与意义

    近年来,随着通信及多媒体技术、计算机网络、大容量存储器以及数字化图像设备如扫描仪、数字相机等技术的迅速发展,对数字图像的使用包括国防军事、工业制造、医疗卫生、新闻媒体、大众娱乐和家庭生活等各个方面。在如此广泛的应用背景下,产生了大量的各式各样的图像数据库,图像数据出现了按指数级增长的趋势。如何更好地应用视觉数据,实现方便、快速、准确地查询和检索到用户所需的图像信息,使管理者可以从大量的单调的人工管理工作中解放出来,已成为人们迫切需要解决的问题。
    传统的数据库检索方法在进行上述方面的信息检索时,效果往往不够理想。这是因为传统数据库在进行信息检索时,主要依据关键字和文本信息进行检索。不能提供相似性检索。基于文本的检索是指对图像文件建立关键字或文本标题以及一些附加信息对图像进行描述,然后将图像的存储路径和图像的关键词建立联系。这种方法的缺点主要在于:随着大量图像的出现,需要大量的人力物力去管理和注释这些图像;不同的人对同一幅图像的理解不同,文本描述信息相对主观,不准确等等。因而仅仅基于关键词的检索已经不能满足用户的检索要求。并且,传统的数据库检索结果与信息的组织方式及查询结果的显示方式有关,无法按照查询结果的相似程度进行输出。
    为了解决上述问题基于内容的图像检索应运而生。CBIR与传统的文本信息的检索不同,它是直接对图像的内容进行分析,通过计算机程序自动原图像的内容特征并按一定规则进行量化,得到特征向量用来表征整个图像。在此基础上,利用这些已经得到的特征向量建立索引进行检索。基于内容的图像检索系主要是把图像的颜色、纹理、形状等可视化特征作为图像的内容特征进行匹配、查找。特征的提取和匹配过程完全可以由机器自动完成, 可以解决手工注释的低效性和二义性。

    1.2 国内外研究现状

    在20世纪70年,数据库专家便已经着手研究图像数据信息的管理方案,管理图像数据信息在早期,主要方法通常是对图像文件附加描述信息,例如编号,主题,作者,发布时间等文本信息,以及通过人工方式对图像内容进行描述的关键词并将这些记录与图像在磁盘上的存储路径建立关联。由此可见,早期的图像检索技术很大程度上依赖于人工对图像的标注,在数据库中存储图像描述记录,然后基于文本关键词在数据中进行检索,并没有利用原始的图像内容信息,其在本质上依然是文本信息检索。随着数据库技术的长足进步,大型商业数据库已经可以支持以二进制形式存储图像,但是在管理方式上,依旧是通过图像描述信息建立联系。
    基于内容的图像检索技术由Smeulders AWM在20世纪90年代提出,主要研究内容为图像的特征提取,特征匹配,特征索引以及检索评价指标等,该技术的主要思想是利用计算机视觉和数字图像处理的方法实现对图像内容的视觉特征的分析及提取,映射为特征向量,用以对图像的视觉特征的描述,并引进度量函数,以此衡量图像间的相似度,从而达到从图像数据库中检索出相似度较高的图像的目的[1]。
    传统的CBIR技术原理主要利用了低层次的视觉特征,比如颜色信息,结构信息,纹理信息等,它们大多数使用浅层分类器,如SVM 来对图像语义进行分类。传统的CBIR技术均是基于低层次的视觉特征相似性判定,这样使得系统存在-一个瓶颈,它和人类从高级的图像语义特征得到的相似性的往往存在差距,或称之为“语义鸿沟”。
    在高层次上,CBIR技术属于人工智能领域,在解决语义鸿沟问题上,机器学习是现阶段中所开发的技术里最具有前景的技术[2]。随着Hinton等人在深度学习模型优化问题取得了巨大进步[3],深度技术得到了快速发展,是人工智能领域在近几十年来取得长足进步的重要技术。深度学习发展自人工神经网络,是机器学习相关领域中一系列算法的简称,至今其框架种类已十分丰富,如深度神经网络(Deep Neural Network, DNN),卷积神经网络(Convolutional Neural Network, CNN)和循环神经网络( Recurrent Neural Network, RNN),它们在图像及视频分析,语音识别,自然语言处理等多媒体均匀大量应用,并取得前所未有的成功。其中视觉表征领域中,使用最为广泛的模型为卷积神经网络,该模型允许局部感受野,与人类视觉感受相符,权值共享策略使得训练参数较全链接网络大量减少,实现以少量参数从原始图像到抽象语义表征映射[4]。

    第二章 相关内容综述

    2.1 图像检索的系统结构

    基于内容的图像检索技术是对输入的图像进行分析并分类统一建模,提取其颜色、纹理、形状等特征,建立特征索引, 存储于特征数据库中[5]。检索时,用户提交查询的源图像,通过用户接口设置查询条件,可以采用一种或几种的特征组合来表示,然后在图像数据库中提取出查询到的所需关联图像,按照相似度从大到小的顺序,反馈给用户。用户可根据自己的满意程度,选择是否修改查询条件,继续查询,以达到满意的查询结果。
    基于内容的图像检索系统框架如图1所示。系统的核心是图像特征数据库。图像特征可以从图像本身提取得到, 又可以通过用户交互获得, 并用于计算图像之间的相似度计算。系统框架应主要包含以下几个基本功能模块:检索方法设置、检索结果浏览、数据库管理维护等。其逻辑结构如图2所示。

    图1 基于内容的图像检索框架

    图2 基于内容的图像检索系统逻辑模型

    本文的CBIR系统典型界面如图3所示。该界面主要包括:待检索图像实现渲染,检索出的50幅图像滚动显示区域、树形控件、检索菜单参数设置等。

    图3 CBIR系统实现示例界面

    2.2 图像预处理

    图像预处理的方法主要包括:统一图像大小,使得每一幅待检索图像大小一致;图像降噪,避免图像噪声带来的影响。可使用数字图像处理课程中所学各种方法,如高斯模板、中值滤波等来实现;图像增强,主要用来增强对比度等。可使用数字图像处理课程中所学各种方法,如直方图均衡化等方法实现。
    本文主要采用了统一图像大小与中值滤波进行图片预处理。

    2.3 图像的特征提取

    图像的特征提取主要针对图像的颜色,纹理和形状。图像颜色特征采用HSI 中心矩法和HSV中心矩法为每张图片获取九个特征值,以图片路径作为关键字用“–>”分隔,存放在图像特征数据库中。图像纹理特征采用灰度共生矩阵法为每张图片获取八个特征值,以相同的格式存放在图像特征数据库中。图像形状特征采用形状不变矩法为每张图片获取七个特征值,存放在图像特征数据库中。
    对于综合属性检索,本文采用三种 “特征向量”:a) 三种特征综合的方法:将上述得到的图像颜色特征(HSI 中心矩法),图像纹理特征(灰度共生矩阵法)和图像形状特征(形状不变矩法)三个向量化为一个维数更高的特征向量。b) 主成分分析法:对图像进行预处理后,再对其进行主成分分析得到一个由64个主成分值组成的向量作为特征向量。c) 迁移学习法:利用网络DenseNet201训练模型,通过训练好的模型为每张图片打上类别标签,然后在进行图像检索时首先选出同类图像,然后再根据三种特征综合的方法为每张图像计算相似度。

    2.4 相似度匹配

    在基于内容的图像检索中,两幅图像是否相似是指图像的特征向量是否相似。常用的图像相似性测度通常采用几何模型,将图像特征看作是向量空间中的点,通过计算两个点之间的接近程度来衡量图像特征之间的相似度。基于内容的图像检索算法主要有最邻近查询算法和区间查询算法,它们都依赖于距离函数或者相似性度量[6]。算法步骤如下:
    (1) 按照前文方法,计算出待检索图像的特征。
    (2) 利用距离度量函数计算待检索图像特征和图像特征库间的距离。
    (3) 对计算出的距离值按照相似性大小进行高低排序。
    (4) 对计算出的距离值按照相似性大小进行高低排序
    下面分别以图像的直方图和中心矩为例来说明图像特征匹配的相似性度量函数计算方法。
    (1) 一般欧氏距离函数
    在这里插入图片描述

    (2) 加权距离函数
    在这里插入图片描述

    (3) 相交法度量函数
    在这里插入图片描述

    (4) 中心矩法的度量函数
    在这里插入图片描述

    本文为用户提供以上四种距离函数的实现接口,用户可以根据自己的需要选择所需的相似性度量函数计算方法,如图4所示。

    图4 相似性度量函数选择框

    2.5 数据库的构建和实现

    本文采用文本数据库的形式存储所有的特征向量,以“文件绝对路径–>特性向量/类别标签”的形式存储在txt文件中。采用HSI 中心矩法得到的图像颜色特征;采用HSV中心矩法得到的图像颜色特征;采用灰度共生矩阵法得到的图像纹理特征;采用形状不变矩法得到的图像形状特征;主成分分析法得到的图像主成分特征;迁移学习法得到的图像类别标签。
    2.6 系统介绍
    界面最上方菜单栏依次是:“文件”,“基于颜色检索”,“基于纹理检索”,“基于形状检索”,“综合属性检索”,“帮助”六个选项,在下面进行详细阐述。界面左上方是图库目录,展示图库中所有的图片的地址;界面左侧中间提供“中心矩”,“欧氏距离”,“加权距离”,“相交法度量”四种距离度量函数选择框,紧接着右侧提供“复位”按钮,用户可以将系统从不合理状态进行复位,保证系统鲁棒性。界面左下方实时展示当前需要检索的图片。界面右侧实时显示检索的结果,支持多达50张相似图片的滚动显示,如图5所示。当检索完毕后,用户可以点击匹配出的相似图片,系统绘制出目标图片与结果图片最相似的20个相似特征点,如图6所示。

    图5 检索结果渲染

    图6 相似特征点

    对于菜单栏的“基于颜色检索”选项,当用户点击时会出现HIS,HSV两种方法的选择框,用户可以按需选择,如图7所示。

    图7 HSI和HSV选择框

    对于菜单栏的“综合属性检索”选项,当用户点击时会出现三种特征综合法,主成分分析法,迁移学习法三种方法的选择框,用户可以按需选择,如图8所示。

    图8 三种方法选择框

    本系统的一个特色是,当用户点击菜单栏的“帮助”选项时,系统会主动跳转到该系统的帮助网站首页,如图9所示。

    图9 系统帮助网站首页

    系统首页介绍了一些CBIR系统的基本信息,网页右侧是菜单栏包括“介绍,使用用法,下载和其他”,点击“使用用法”选项进入系统使用方法说明网页,如图10所示。点击“下载”选项进入系统下载网页,在该网页用户可以下载系统源代码及数据集,如图11所示。

    图10 系统帮助网站使用方法页

    图11 系统下载网页

    第三章 基于颜色特征的图像检索技术

    颜色特征是在图像检索中应用最为广泛的视觉特征,主要原因在于颜色往往和图像中所包含的物体或场景十分相关。此外,颜色特征对图像本身的尺寸、方向、视角的依赖性较小,从而具有较高的检索性。利用颜色特征进行检索的方法主要基于直方图,如:直方图相交法,比例直方图法,距离法,参考颜色表法和聚类算法,累计直方图法,此外,还有 HSI中心矩法。

    3.1 颜色空间

    3.1.1 RGB颜色空间

    RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉发出不同亮度的光线,并通过相加混合产生各种颜色;扫描仪也是通过吸收原稿经反射或透射而发送来 的光线中的R、G、B成分,并用它来表示原稿的颜色[7]。RGB色彩空间称为与设备相关的色彩空间,因为不同的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同的色彩显示结果。

    3.1.2 HSI颜色空间

    HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩[8]。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HSI色彩空间的圆锥模型相当复杂,但确实能把色调、亮度和饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间,它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着转换关系。

    3.1.3 HSV颜色空间

    HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1。它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮[9]。色彩H由绕V轴的旋转角给定。红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180°。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时加入不同比例的白色,黑色即可获得各种不同的色调。

    3.2 HSI中心矩法

    颜色矩(color moments)是由Stricker 和Orengo所提出的一种非常简单而有效的颜色特征[10]。这种方法的数学基础在于图像中任何的颜色分布均可以用它的矩来表示。此外,由于颜色分布信息主要集中在低阶矩中,因此仅采用颜色的一阶矩(mean)、二阶矩(variance)和三阶矩(skewness)就足以表达图像的颜色分布。与颜色直方图相比,该方法的另一个好处在于无需对特征进行向量化。因此,图像的颜色矩一共只需要9个分量(3个颜色分量,每个分量上3个低阶矩),与其他的颜色特征相比是非常简洁的。在实际应用中,为避免低次矩较弱的分辨能力,颜色矩常和其它特征结合使用,而且一般在使用其它特征前,起到过滤缩小范围(narrow down)的作用。
    HSI中心矩法算法步骤如下所示:
    (1) 图像灰度化 Gray=0.30R+0.59G+0.11*B。
    (2) 将图像从 RGB 颜色空间转至 HSI 颜色空间.
    (3) 以 HSI 空间的 Hue 分量为例,如果记 Hue(pi)为图像 P 的第 i 个像素的 Hue 值,则其前三阶中心矩分别为:
    在这里插入图片描述

    (4) 将特征值存放在图像特征数据库中。

    3.3 HSV中心矩法

    HSV中心矩法与HSI中心矩法及其类似,只是颜色空间不同,因此不在此处赘述。

    3.4 实验结果与分析

    选择三张代表性图片进行实验,分别是:/yin_yang/image_0001.jpg,/accordion/image_0001.jpg,/airplanes/image_0001.jpg,如图12所示。

    图12 三张实验图片

    选择这三张图片的原因:对于第一张图片,它具有良好的颜色特征和形状特征,对于第二张图片,它具有良好的纹理特征,而第三张图片的颜色特征,纹理特征和形状特征均不明显,这样可以更好的测试出几种方法的优劣。
    第一张图片在HSI和HSV上的检索结果如图13所示。第二张图片在HSI和HSV上的检索结果如图14所示. 第三张图片在HSI和HSV上的检索结果如图15所示。

    图13 第一张图片在HSI和HSV上的检索结果

    图14 第二张图片在HSI和HSV上的检索结果

    图15 第三张图片在HSI和HSV上的检索结果

    通过上述实验不难看出,无论在哪一张实验图片上,HSI方法均有更加优良的检索效果,虽然差距不明显。

    第四章 基于纹理特征的图像检索技术

    纹理特征是一种不依赖于颜色或亮度的反映图像中同质现象的视觉特征。纹理特征包含了物体表面结构组织排列的重要信息以及它们与周围环境的联系。用户可通过提交包含有某种纹理的图像来查找含有相似纹理的其他图像[11]。从人类的感知经验出发, 纹理特征主要有粗糙性、方向性和对比度。纹理分析方法,大致可分为两类:(1)统计方法。用于分析像木纹、沙地、草坪等细致而不规则的物体,并根据关于像素间灰度的统计性质对纹理规定特征及特征与参数间的关系。(2)结构方法。适于像布料的印刷图案或砖瓦等一类元素组成的纹理及其排列比较规则的图案, 然后根据纹理基元及其排列规则来描述纹理的结构及特征、特征与参数间的关系。

    4.1 灰度矩阵法

    共生矩阵用两个位置的像素的联合概率密度来定义,它不仅反映亮度的分布特征,也反映具有同样亮度或者接近亮度的像素之间的位置分布特性,是有关图像亮度变化的二阶统计特征。它是定义一组纹理特征的基础[12]。由于纹理是由灰度在空间位置上反复出现而形成的,因而在图像空间中像个某距离的两像素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。灰度直方图是对图像上单个像素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某个距离的两像素分别具有某灰度的状况进行统计得到的。
    一幅图像的灰度共生矩阵能反映出图像灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图像的局部模式和它们排列规则的基础。

    4.2 实验结果与分析

    第一张实验图片采用灰度矩阵法的检索结果如图16所示。第二张实验图片采用灰度矩阵法的检索结果如图17所示. 第三张实验图片采用灰度矩阵法的检索结果如图18所示。

    图16 第一张实验图片采用灰度矩阵法的检索结果

    图17 第二张实验图片采用灰度矩阵法的检索结果

    图18 第三张实验图片采用灰度矩阵法的检索结果

    分析上述实验结果,不难发现采用灰度矩阵法进行图像纹理特征的检索,对于纹理特征较为明显的图像具有更好的匹配效果。

    第五章 基于形状特征的图像检索技术

    形状是描述图像内容的本质特征, 在实际检索中, 很多查询可能并不针对图像的颜色, 因为同一物体可能有各种不同的颜色, 但其形状总是相似的。如检索某辆汽车的图像,汽车可以是红的、绿的等, 但形状决不会像飞机的外形[13]。另外, 对于图形来说, 形状是它唯一重要的特征。目前用于图像检索的形状描述方法主要有两类:基于边缘和基于区域的形状方法。基于边缘的形状特征提取是利用图像的边缘信息,在边缘检测的基础上,用面积、周长、偏心率、角点、链码、兴趣点、傅里叶描述子、矩描述子等特征来描述物体的形状,适用于图像边缘较清晰、容易获取的图像。

    5.1 形状不变矩法

    Hu利用二阶和三阶归一化中心矩构造了7个不变矩,不变矩是一处高度浓缩的图像特征,在连续图像下具有平移、灰度、尺度、旋转不变性。
    7个不变矩构成一组特征量,实际上,在对图片中物体的识别过程中,只有M1和M2不变性保持的比较好,其他的几个不变矩带来的误差比较大,有学者认为只有基于二阶矩的不变矩对二维物体的描述才是真正的具有旋转、缩放和平移不变性(M1和M2刚好都是由二阶矩组成的)。由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低。Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些。

    5.2 实验结果与分析

    第一张实验图片采用形状不变矩法的检索结果如图19所示。第二张实验图片采用形状不变矩法的检索结果如图20所示. 第三张实验图片采用形状不变矩法的检索结果如图21所示。

    图19 第一张实验图片采用形状不变矩法的检索结果

    图20 第二张实验图片采用形状不变矩法的检索结果

    图21 第三张实验图片采用形状不变矩法的检索结果

    通过上述实验可以看出,基于形状不变矩的图像形状检索,仅仅对第一张图片——太极图,给出了较好的结果而对于第二,三张图片检索结果均不理想,分析可以设想其是因为图片形状特征不明显所致。

    第六章 基于三种特征信息综合的图像检索

    6.1 三种特征信息综合方法

    在上述简单提取图像的一种特征进行检索的基础上,不难想到将三种特征结合起来以待得到更优结果。基本思路是:将已经提取到的三种特征向量分别合并为一个特征向量,为每张图像获取一个维数更高,特征值更多的特征向量。

    6.2 实验结果与分析

    第一张实验图片采用三种特征信息综合法的检索结果如图22所示。第二张实验图片采用三种特征信息综合法的检索结果如图23所示。第三张实验图片采用三种特征信息综合法的检索结果如图24所示。

    图22 第一张实验图片采用三种特征信息综合法的检索结果

    图23 第二张实验图片采用三种特征信息综合法的检索结果

    图24 第三张实验图片采用三种特征信息综合法的检索结果

    分析上述实验结果,并且将其与三种特征独立使用时的实验结果进行对比,发现采用三种特征信息综合法这种简单的优化方式就可以得到比单独使用任何一种方法单独使用时更加精确的结果。

    第七章 基于主成分分析法的图像检索

    7.1 主成分分析法

    主成分分析方法的出发点简单来说就是把图像看做无数个连续像素点的载体。例如一个图像是一个由LL像素点组成的方形(MR 图像),那么其向量的大小是L的平方。典型的图像尺寸一般为256256,所以其向量的长度(维)为65, 536。但是在一个非常高的维度内,图像采集的方法就会改变,十万维空间中的图像进行比较的任务是艰巨的。所以说我们需要找到一个更合适的图像矢量表示,在准确表示图像本征维的同时,确保它的维度不会太高。
    将图像的像素点信息看做一个有特征向量组成的特征空间。然后根据欧氏距离算法,把图像间的相似度,也近似看做这个向量间的距离。再对这些距离结果设定一些区间,按照区间的数值来给图像分类。
    本文首先将图像缩放到64*64的矩阵,然后对每一维进行主成分分析得到一个主成分值,共计64个使其构成图像的特征向量。

    7.2 实验结果与分析

    第一张实验图片采用主成分分析法的检索结果如图25所示。第二张实验图片采用主成分分析法的检索结果如图26所示。第三张实验图片采用三主成分分析法的检索结果如图27所示。

    图25 第一张实验图片采用主成分分析法的检索结果

    图26 第二张实验图片采用主成分分析法的检索结果

    图27 第三张实验图片采用主成分分析法的检索结果

    分析上述实验结果可知,本文的主成分分析法的检索结果,虽然有一定的合理性,但是结果却差强人意。究其原因可能是因为,算法对于每张图像保留的主成分不具有很强的代表性,导致结果较差。

    第八章基于迁移学习的图像检索

    8.1 迁移学习

    稀疏结构是非常适合神经网络的结构,尤其是对大而深的神经网络,不仅可以减轻过拟合同时也可以降低计算量。但是随着网络层次的加深,模型抽取出的特征也会更加抽象,使得模型最后忽略了数据中的细节信息。并增加计算机的运行成本,即耗时过长。因此,CVPR2017年的Best Paper中出现了DenseNet来缓解网络层数加深和变宽之后带来的一系列问题。DenseNet网络脱离了原有的加深变宽思想,从特征角度去考虑。通过特征的重复使用和旁路设置(Bypass)设置,该网络既大幅度减少了网络的参数量,又在一定程度上缓解了gradient vanishing问题的产生。结合信息流和特征复用的假设。
    随着越来越多的机器学习应用场景的出现,而现有表现比较好的监督学习需要大量的标注数据,标注数据是一项枯燥无味且花费巨大的任务,所以迁移学习受到越来越多的关注。
    传统机器学习(主要指监督学习):基于同分布假设;需要大量标注数据;然而实际使用过程中不同数据集可能存在一些问题。比如,数据分布差异;标注数据过期;训练数据过期,也就是好不容易标定的数据要被丢弃,有些应用中数据是分布随着时间推移会有变化。如何充分利用之前标注好的数据(废物利用),同时又保证在新的任务上的模型精度?基于这样的问题,所以就有了对于迁移学习的研究。
    迁移学习是:将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。主要思想是:从相关领域中迁移标注数据或者知识结构、完成或改进目标领域或任务的学习效果[14]。
    在本项目中主要是将DenseNet201的网络结构及训练参数在稍作改编的情况下,直接对数据集进行学习。

    8.2 实验结果与分析

    DenseNet201网络训练过程,如图28所示;最终训练网络的loss曲线与accuracy曲线,如图29所示。

    图28 DenseNet201网络训练过程

    图29 loss曲线与accuracy曲线

    第一张实验图片采用迁移学习法的检索结果如图30所示。第二张实验图片采用迁移学习法的检索结果如图31所示。第三张实验图片采用迁移学习法的检索结果如图32所示。

    图30 第一张实验图片采用主成分分析法的检索结果

    图31 第二张实验图片采用迁移学习法的检索结果

    图32 第三张实验图片采用迁移学习法的检索结果

    根据上述实验结果分析可知,迁移学习对于基于内容的图像检索具有最好的效果。

    第九章 总结与展望

    9.1 总结

    本次综合实训,完成了基于内容的图像检索系统,共计实现了七种基于内容的图像检索方法,其中基于深度学习的迁移学习法可以得到最好的检索效果,三种特征信息综合的方法次之。本文实现的方法分别是:基于颜色信息的图像检索,包括:HSI中心矩法和HSV中心矩法;基于纹理特征的图像检索,采用灰度共生矩阵实现;基于形状特征的图像检索,采用形状不变矩法;基于综合信息的图像检索,包括将三种特征信息综合的方法,主成分分析法,基于深度学习的迁移学习法。
    根据实验结果来看,基于深度学习的迁移学习法在基于内容的图像检索方面有独特的优势,它的准确率往往优于传统方法,这是它的明显优势,但是该方法的弊端在于必须提前获取大量数据集对网络进行训练,使用较长的预处理时间,才可以得到效果较好的网络,因此它很难实现实时加载新的数据集对其进行检索。而三种特征信息综合的方法,虽然它的准确率很难与迁移学习方法比肩,但是它对于较小的数据集可以实现动态的图像数据集加载,完成检索工作。综上所述,当检索需求要求较高准确率,检索数据集较大,且无需实现动态的图像数据集加载,那么采用迁移学习的方法是比较好的选择;当检索需求要求准确率不高,检索数据集较小,但是需要实现动态的图像数据集加载,那么采用三种特征信息综合的方法是更优的选择。

    9.2 创新点

    本文在实现基本的颜色、纹理,形状三种特征提取的方法上,还进行了一些拓展:
    (1) 三种特征信息综合。最朴素,最自然的想法是将三种特征向量按照权重相同的方式融合,得到更好的检索效果。实验结果表明,这种简单的结合便可以得到更好的效果。
    (2) 基于主成分分析。图像检索中的特征提取,在更高的抽象意义来说就是在低维找到可以准确表征高维空间事物的本征维。而主成分分析法正好可以完成这个任务。因此,本文还采用了主成分分析对图像进行特征提取与检索。
    (3) 基于深度学习的迁移学习法。深度学习方法对处理图像数据的抽象内容信息有着较大优势。因此,本文采用迁移学习法对图像内容进行检索。实验结果表明,迁移学习具有最好的效果。
    (4) 系统设计。支持菜单按钮与树形目录选择并实时渲染目标图像;支持多达50张相似图片滚动展示;支持帮助门户网站功能,用户可以进入网站查看系统介绍,系统使用方法,下载源文件以及数据集和联系网页。

    9.3 展望

    本文认为主成分分析也是很有前景的方法,它将迁移学习的高准确率与三种特征信息综合的高效进行了折中,既有望实现较高的准确率,又可以实现图像数据集的动态加载

    致 谢

    光阴似箭,岁月如梭。转眼间,大三最后一门课程的就要接近尾声了,回顾我的大学三年以及自己实训过程中的点点滴滴,可以说是短暂又漫长,有苦也有甜,但此时此刻沉淀在自己心中的更多的是感激。感谢各位老师对我综合实训的指导,老师在课堂上不仅传授专业知识,更为我们指明前进的方向。

    参考文献

    [1] 祝晓斌,刘亚奇,蔡强,曹健.基于内容的图像检索技术研究[J].计算机仿真,2015,32(05):1-4+85.
    [2] Vincent, Pascal, et al. “Extracting and composing robust features with denoising autoencoders.” International Conference on Machine Learning ACM, 2008:1096-1103.
    [3] Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. science, 2006, 313(5786): 504-507.
    [4] 陈乾明. 基于内容的图像检索系统的设计与实现[D].南京大学,2018.
    [5] 王海荣. 基于内容的图像检索技术研究及应用瞻望[D].西北大学,2009.
    [6] 白雪. 聚类分析中的相似性度量及其应用研究[D].北京交通大学,2012.
    [7] 郝贵青,王冰洋.一种基于RGB颜色空间的色彩还原方法[J].国外电子测量技术,2016,35(11):24-26+41.
    [8] 邵帅,郭永飞,刘辉,袁航飞,张择书.HSI色彩空间下的低照度遥感图像增强[J].光学精密工程,2018,26(08):2092-2099.
    [9] 马玲,张晓辉.HSV颜色空间的饱和度与明度关系模型[J].计算机辅助设计与图形学学报,2014,26(08):1272-1278.
    [10] 韩丁,武佩,张强,韩国栋,通霏.基于颜色矩的典型草原牧草特征提取与图像识别[J].农业工程学报,2016,32(23):168-175.
    [11] 陶华伟,赵力,奚吉,虞玲,王彤.基于颜色及纹理特征的果蔬种类识别方法[J].农业工程学报,2014,30(16):305-311.
    [12] 王昊鹏,李慧.基于局部二值模式和灰度共生矩阵的籽棉杂质分类识别[J].农业工程学报,2015,31(03):236-241.
    [13] 李平,魏仲慧,何昕,何丁龙,何家维,梁国龙,凌剑勇.采用多形状特征融合的多视点目标识别[J].光学精密工程,2014,22(12):3368-3376.
    [14] 庄福振,罗平,何清,史忠植.迁移学习研究进展[J].软件学报,2015,26(01):26-39.

    展开全文
  • 机器学习系列(7)_机器学习路线(附资料)

    万次阅读 多人点赞 2016-02-28 11:54:10
    这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。 3.4.2 获取数据 数据决定了机器学习结果的上限...

    作者:寒小阳&&龙心尘
    时间:2016年2月。
    出处:http://blog.csdn.net/han_xiaoyang/article/details/50759472
    http://blog.csdn.net/longxinchen_ml/article/details/50749614
    声明:版权所有,转载请联系作者并注明出处

    1. 引言

    也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸;也自然而然点开今日头条推给你的新闻;也习惯逛淘宝点了找相似之后货比三家;亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈。恩,这些功能的核心算法就是机器学习领域的内容。

    套用一下大神们对机器学习的定义,机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据上做预测的任务。近年来互联网数据大爆炸,数据的丰富度和覆盖面远远超出人工可以观察和总结的范畴,而机器学习的算法能指引计算机在海量数据中,挖掘出有用的价值,也使得无数学习者为之着迷。

    但是越说越觉得机器学习有距离感,云里雾里高深莫测,我们不是专家,但说起算有一些从业经验,做过一些项目在实际数据上应用机器学习。这一篇就我们的经验和各位同仁的分享,总结一些对于初学者入门有帮助的方法和对进阶有用的资料。

    人工智能

    2. 机器学习关注问题

    并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题。咱们先来了解了解,机器学习,到底关心和解决什么样的问题。

    从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题:

    1.分类问题

    • 根据数据样本上抽取出的特征,判定其属于有限个类别中的哪一个。比如:
      • 垃圾邮件识别(结果类别:1、垃圾邮件 2、正常邮件)
      • 文本情感褒贬分析(结果类别:1、褒 2、贬)
      • 图像内容识别识别(结果类别:1、喵星人 2、汪星人 3、人类 4、草泥马 5、都不是)。

    2.回归问题

    • 根据数据样本上抽取出的特征,预测一个连续值的结果。比如:
      • 星爷《美人鱼》票房
      • 大帝都2个月后的房价
      • 隔壁熊孩子一天来你家几次,宠幸你多少玩具

    3.聚类等问题

    • 根据数据样本上抽取出的特征,让样本抱抱团(相近/相关的样本在一团内)。比如:
      • google的新闻分类
      • 用户群体划分

    我们再把上述常见问题划到机器学习最典型的2个分类上。

    • 分类与回归问题需要用已知结果的数据做训练,属于“监督学习”
    • 聚类的问题不需要已知标签,属于“非监督学习”

    如果在IT行业(尤其是互联网)里溜达一圈,你会发现机器学习在以下热点问题中有广泛应用:

    1.计算机视觉

    • 典型的应用包括:人脸识别、车牌识别、扫描文字识别、图片内容识别、图片搜索等等。

    2.自然语言处理

    • 典型的应用包括:搜索引擎智能匹配、文本内容理解、文本情绪判断,语音识别、输入法、机器翻译等等。

    3.社会网络分析

    • 典型的应用包括:用户画像、网络关联分析、欺诈作弊发现、热点发现等等。

    4.推荐

    • 典型的应用包括:虾米音乐的“歌曲推荐”,某宝的“猜你喜欢”等等。

    3. 入门方法与学习路径

    OK,不废话,直接切重点丢干货了。看似学习难度大,曲线陡的机器学习,对大多数入门者也有一个比较通用的学习路径,也有一些优秀的入门资料可以降低大家的学习门槛,同时激发我们的学习乐趣。

    简单说来,大概的一个学习路径如下:


    路径图

    简单说一点,之所以最左边写了『数学基础』『典型机器学习算法』『编程基础』三个并行的部分,是因为机器学习是一个将数学/算法理论和工程实践紧密结合的领域,需要扎实的理论基础帮助引导数据分析与模型调优,同时也需要精湛的工程开发能力去高效化地训练和部署模型和服务。

    需要多说一句的是,在互联网领域从事机器学习的人,有2类背景的人比较多,其中一部分(很大一部分)是程序员出身,这类同学工程经验相对会多一些,另一部分是学数学统计领域的同学,这部分同学理论基础相对扎实一些。因此对比上图,2类同学入门机器学习,所欠缺和需要加强的部分是不一样的。

    下面就上述图中的部分,展开来分别扯几句:

    3.1 数学基础

    有无数激情满满大步向前,誓要在机器学习领域有一番作为的同学,在看到公式的一刻突然就觉得自己狗带了。是啊,机器学习之所以相对于其他开发工作,更有门槛的根本原因就是数学。每一个算法,要在训练集上最大程度拟合同时又保证泛化能力,需要不断分析结果和数据,调优参数,这需要我们对数据分布和模型底层的数学原理有一定的理解。所幸的是如果只是想合理应用机器学习,而不是做相关方向高精尖的research,需要的数学知识啃一啃还是基本能理解下来的。至于更高深的部分,恩,博主非常愿意承认自己是『数学渣』。

    基本所有常见机器学习算法需要的数学基础,都集中在微积分、线性代数和概率与统计当中。下面我们先过一过知识重点,文章的后部分会介绍一些帮助学习和巩固这些知识的资料。

    3.1.1 微积分

    • 微分的计算及其几何、物理含义,是机器学习中大多数算法的求解过程的核心。比如算法中运用到梯度下降法、牛顿法等。如果对其几何意义有充分的理解,就能理解“梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部”,能够更好地理解运用这样的方法。
    • 凸优化和条件最优化 的相关知识在算法中的应用随处可见,如果能有系统的学习将使得你对算法的认识达到一个新高度。

    3.1.2 线性代数

    • 大多数机器学习的算法要应用起来,依赖于高效的计算,这种场景下,程序员GG们习惯的多层for循环通常就行不通了,而大多数的循环操作可转化成矩阵之间的乘法运算,这就和线性代数有莫大的关系了
    • 向量的内积运算更是随处可见。
    • 矩阵乘法与分解在机器学习的主成分分析(PCA)和奇异值分解(SVD) 等部分呈现刷屏状地出现。

    3.1.3 概率与统计

    从广义来说,机器学习在做的很多事情,和统计层面数据分析和发掘隐藏的模式,是非常类似的。

    • 极大似然思想、贝叶斯模型 是理论基础,朴素贝叶斯(Naïve Bayes )、语言模型(N-gram)、隐马尔科夫(HMM)、隐变量混合概率模型是他们的高级形态。
    • 常见分布如高斯分布是混合高斯模型(GMM)等的基础。

    3.2 典型算法

    绝大多数问题用典型机器学习的算法都能解决,粗略地列举一下这些方法如下:

    1. 处理分类问题的常用算法包括:逻辑回归(工业界最常用),支持向量机,随机森林,朴素贝叶斯(NLP中常用),深度神经网络(视频、图片、语音等多媒体数据中使用)
    2. 处理回归问题的常用算法包括:线性回归,普通最小二乘回归(Ordinary Least Squares Regression),逐步回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)
    3. 处理聚类问题的常用算法包括:K均值(K-means),基于密度聚类,LDA等等。
    4. 降维的常用算法包括:主成分分析(PCA),奇异值分解(SVD) 等。
    5. 推荐系统的常用算法:协同过滤算法
    6. 模型融合(model ensemble)和提升(boosting)的算法包括:bagging,adaboost,GBDT,GBRT
    7. 其他很重要的算法包括:EM算法等等。

    我们多插一句,机器学习里所说的“算法”与程序员所说的“数据结构与算法分析”里的“算法”略有区别前者更关注结果数据的召回率、精确度、准确性等方面,后者更关注执行过程的时间复杂度、空间复杂度等方面。 。当然,实际机器学习问题中,对效率和资源占用的考量是不可或缺的。

    3.3 编程语言、工具和环境

    看了无数的理论与知识,总归要落到实际动手实现和解决问题上。而没有工具所有的材料和框架、逻辑、思路都给你,也寸步难行。因此我们还是得需要合适的编程语言、工具和环境帮助自己在数据集上应用机器学习算法,或者实现自己的想法。对初学者而言,Python和R语言是很好的入门语言,很容易上手,同时又活跃的社区支持,丰富的工具包帮助我们完成想法。相对而言,似乎计算机相关的同学用Python多一些,而数学统计出身的同学更喜欢R一些。我们对编程语言、工具和环境稍加介绍:

    3.3.1 python

    python有着全品类的数据科学工具,从数据获取、数据清洗到整合各种算法都做得非常全面。

    • 网页爬虫: scrapy
    • 数据挖掘:
      • pandas:模拟R,进行数据浏览与预处理。
      • numpy:数组运算。
      • scipy:高效的科学计算。
      • matplotlib:非常方便的数据可视化工具。
    • 机器学习:
      • scikit-learn:远近闻名的机器学习package。未必是最高效的,但是接口真心封装得好,几乎所有的机器学习算法输入输出部分格式都一致。而它的支持文档甚至可以直接当做教程来学习,非常用心。对于不是非常高纬度、高量级的数据,scikit-learn胜任得非常好(有兴趣可以看看sklearn的源码,也很有意思)。
      • libsvm:高效率的svm模型实现(了解一下很有好处,libsvm的系数数据输入格式,在各处都非常常见)
      • keras/TensorFlow:对深度学习感兴趣的同学,也能很方便地搭建自己的神经网络了。
    • 自然语言处理:
      • nltk:自然语言处理的相关功能做得非常全面,有典型语料库,而且上手也非常容易。
    • 交互式环境:
      • ipython notebook:能直接打通数据到结果的通道,方便至极。强力推荐。

    3.3.2 R

    R最大的优势是开源社区,聚集了非常多功能强大可直接使用的包,绝大多数的机器学习算法在R中都有完善的包可直接使用,同时文档也非常齐全。常见的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外,值得一提的是R的可视化效果做得非常不错,而这对于机器学习是非常有帮助的。

    3.3.3 其他语言

    相应资深程序员GG的要求,再补充一下java和C++相关机器学习package。

    3.3.4 大数据相关

    • Hadoop:基本上是工业界的标配了。一般用来做特征清洗、特征处理的相关工作。
    • spark:提供了MLlib这样的大数据机器学习平台,实现了很多常用算法。但可靠性、稳定性上有待提高。

    3.3.5 操作系统

    • mac和linux会方便一些,而windows在开发中略显力不从心。所谓方便,主要是指的mac和linux在下载安装软件、配置环境更快捷。
    • 对于只习惯windows的同学,推荐anaconda,一步到位安装完python的全品类数据科学工具包。

    3.4 基本工作流程

    以上我们基本具备了机器学习的必要条件,剩下的就是怎么运用它们去做一个完整的机器学习项目。其工作流程如下:

    3.4.1 抽象成数学问题

    • 明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。
    • 这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。

    3.4.2 获取数据

    • 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。
    • 数据要有代表性,否则必然会过拟合。
    • 而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。
    • 而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。

    3.4.3 特征预处理与特征选择

    • 良好的数据要能够提取出良好的特征才能真正发挥效力
    • 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤
    • 筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

    3.4.4 训练模型与调优

    • 直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

    3.4.5 模型诊断

    如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。

    • 过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度
    • 误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
    • 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。

    3.4.6 模型融合

    • 一般来说,模型融合后都能使得效果有一定提升。而且效果很好。
    • 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

    3.4.7 上线运行

    • 这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。

    这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

    3.5 关于积累项目经验

    初学机器学习可能有一个误区,就是一上来就陷入到对各种高大上算法的追逐当中。动不动就我能不能用深度学习去解决这个问题啊?我是不是要用boosting算法做一些模型融合啊?我一直持有一个观点,『脱离业务和数据的算法讨论是毫无意义的』。

    实际上按我们的学习经验,从一个数据源开始,即使是用最传统,已经应用多年的机器学习算法,先完整地走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透,真正积累出项目经验 才是最快、最靠谱的学习路径。

    那如何获取数据和项目呢?一个捷径就是积极参加国内外各种数据挖掘竞赛,数据直接下载下来,按照竞赛的要求去不断优化,积累经验。国外的Kaggle和国内的DataCastle 以及阿里天池比赛都是很好的平台,你可以在上面获取真实的数据和数据科学家们一起学习和进行竞赛,尝试使用已经学过的所有知识来完成这个比赛本身也是一件很有乐趣的事情。和其他数据科学家的讨论能开阔视野,对机器学习算法有更深层次的认识。

    有意思的是,有些平台,比如阿里天池比赛,甚至给出了从数据处理模型训练模型评估可视化模型融合增强的全部组件,你要做的事情只是参与比赛,获取数据,然后使用这些组件去实现自己的idea即可。具体内容可以参见阿里云机器学习文档

    3.6 自主学习能力

    多几句嘴,这部分内容和机器学习本身没有关系,但是我们觉得这方面的能力对于任何一种新知识和技能的学习来说都是至关重要的。 自主学习能力提升后,意味着你能够跟据自己的情况,找到最合适的学习资料和最快学习成长路径。

    3.6.1 信息检索过滤与整合能力

    对于初学者,绝大部分需要的知识通过网络就可以找到了。

    google搜索引擎技巧——组合替换搜索关键词、站内搜索、学术文献搜索、PDF搜索等——都是必备的。

    一个比较好的习惯是找到信息的原始出处,如个人站、公众号、博客、专业网站、书籍等等。这样就能够找到系统化、不失真的高质量信息。

    百度搜到的技术类信息不够好,建议只作为补充搜索来用。各种搜索引擎都可以交叉着使用效果更好。

    学会去常见的高质量信息源中搜索东西:stackoverflow(程序相关)、quora(高质量回答)、wikipedia(系统化知识,比某某百科不知道好太多)、知乎(中文、有料)、网盘搜索(免费资源一大把)等。

    将搜集到的网页放到分类齐全的云端收藏夹里,并经常整理。这样无论在公司还是在家里,在电脑前还是在手机上,都能够找到自己喜欢的东西。

    搜集到的文件、代码、电子书等等也放到云端网盘里,并经常整理。

    3.6.2 提炼与总结能力

    经常作笔记,并总结自己学到的知识是成长的不二法门。其实主要的困难是懒,但是坚持之后总能发现知识的共性,就能少记一些东西,掌握得更多。

    笔记建议放到云端笔记里,印象笔记、为知笔记都还不错。这样在坐地铁、排队等零碎的时间都能看到笔记并继续思考。

    3.6.3 提问与求助能力

    机器学习的相关QQ群、论坛、社区一大堆。总有人知道你问题的答案。

    但是大多数同学都很忙,没法像家庭教师那样手把手告诉你怎么做。

    为了让回答者最快明白你的问题,最好该学会正确的问问题的方式:陈述清楚你的业务场景和业务需求是什么,有什么已知条件,在哪个具体的节点上遇到困难了,并做过哪些努力。

    有一篇经典的文章告诉你怎样通过提问获得帮助:《提问的智慧》,强力推荐。 话锋犀利了些,但里面的干货还是很好的。

    别人帮助你的可能性与你提问题的具体程度和重要性呈指数相关。

    3.6.4 分享的习惯

    我们深信:“证明自己真的透彻理解一个知识,最好的方法,是给一个想了解这个内容的人,讲清楚这个内容。” 分享能够最充分地提升自己的学习水平。这也是我们坚持长期分享最重要的原因。

    分享还有一个副产品,就是自己在求助的时候能够获得更多的帮助机会,这也非常重要。

    4. 相关资源推荐

    文章的最后部分,我们继续放送干货。其实机器学习的优质资源非常多。博主也是翻遍浏览器收藏夹,也问同事取了取经,整合了一部分资源罗列如下:

    4.1 入门资源

    首先coursera 是一个非常好的学习网站,集中了全球的精品课程。上述知识学习的过程都可以在上面找到合适的课程。也有很多其他的课程网站,这里我们就需要学习的数学和机器学习算法推荐一些课程(有一些课程有中文字幕,有一些只有英文字幕,有一些甚至没有字幕,大家根据自己的情况调整,如果不习惯英文,基础部分有很多国内的课程也非常优质):

    • 微积分相关

    Calculus: Single Variable
    Multivariable Calculus

    • 线性代数

    Linear Algebra

    • 概率统计

    Introduction to Statistics: Descriptive Statistics
    Probabilistic Systems Analysis and Applied Probability

    • 编程语言

    Programming for Everybody:Python
    DataCamp: Learn R with R tutorials and coding challenges:R

    • 机器学习方法

    Statistical Learning(R)
    machine learning:强烈推荐,Andrew Ng老师的课程
    机器学习基石
    机器学习技术:林轩田老师的课相对更有深度一些,把作业做完会对提升对机器学习的认识。
    自然语言处理:斯坦福大学课程

    • 日常阅读的资源

    @爱可可-爱生活的微博
    机器学习日报的邮件订阅 等。

    4.2 进阶资源

    • 有源代码的教程

    scikit-learn中各个算法的例子
    《机器学习实战》 有中文版,并附有python源代码。
    《The Elements of Statistical Learning (豆瓣)》 这本书有对应的中文版:《统计学习基础 (豆瓣)》。书中配有R包。可以参照着代码学习算法。网盘中有中文版。
    《Natural Language Processing with Python (豆瓣)》 NLP 经典,其实主要是讲 python的NLTK 这个包。网盘中有中文版。
    《Neural Networks and Deep Learning》 Michael Nielsen的神经网络教材,浅显易懂。国内有部分翻译,不全,建议直接看原版。

    • 图书与教材

    《数学之美》:入门读起来很不错。
    《统计学习方法 (豆瓣) 》:李航经典教材。
    《Pattern Recognition And Machine Learning (豆瓣) 》:经典中教材。
    《统计自然语言处理》自然语言处理经典教材
    《Applied predictive modeling》:英文版,注重工程实践的机器学习教材
    《UFLDL教程》:神经网络经典教材
    《deeplearningbook》:深度学习经典教材。

    • 工具书

    《SciPy and NumPy (豆瓣) 》
    《Python for Data Analysis (豆瓣) 》作者是Pandas这个包的作者

    • 其他网络资料

    机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总: 作者太给力,量大干货多,有兴趣的同学可以看看,博主至今只看了一小部分。

    展开全文
  • ArcGIS——GIS中的坐标

    万次阅读 多人点赞 2017-10-13 11:08:26
    2000国家大地坐标是全球地心坐标在我国的具体体现,其全称为China Geodetic Coordinate System 2000,其原点为包括海洋和大气的整个地球的质量中心。 椭球体:CGCS2000坐标 极半径b=6 356 752.314 140 ...
  • 大学计算机最努力的同学都是如何学习的?

    万次阅读 多人点赞 2021-06-21 09:15:04
    经常会被同学们问到这个问题,要...自以为很牛逼的去找工作,结果要价2500,都没人收,2011年,一个计算机top级毕业生,薪资还没流水线的高。 现在工作近十年,也辗转几个大厂,做校招、社招面试也不下于上百场,这
  • 数据库及数据库中表等数据库对象的建立实验(包括关系、完整性、权限控制、视图、索引等内容)实验1 SQL Server的安装安装过程展示实验2 设计数据库、创建数据库和数据表实验5 视图实验6 完整性约束实验7 权限管理...
  • 架构详解——淘圈品进化史

    千次阅读 2020-12-09 16:20:00
    2.7 分布式处理流程 分页处理 分页处理首先是计算全部最大可能的商品数量,然后按照固定间隔进行分页,商品增加和商品删除消息包含的关键信息是:start、end, 拿最简单的商品列表圈品方式来举例,假设运营填入...
  • 地图之美(地图制图)

    千次阅读 多人点赞 2019-07-14 15:18:08
    1405~1433年中国航海郑和七下西洋,反映下当时西洋情况的《郑和航海》是中国现存最详尽的古代航海,也在世界上开创了使用航海的先河。此后,航海随着葡萄牙、西班牙、荷兰和英国等各国航海探险和海上...
  • 本专栏是以杨秀璋老师爬虫著作《Python网络数据爬取及分析「从入门到精通」》为主线、个人学习理解为主要内容,以学习笔记形式编写的。 本专栏不光是自己的一个学习分享,也希望能给您普及一些关于爬虫的相关知识...
  • 依次有:物体坐标,世界坐标,相机坐标,投影坐标以及屏幕坐标.我要讨论的就是这些坐标间的转换。 这些坐标不是凭空而来,他们都是为了完成计算机3D图形学最最最基本的目标而出现.计算机3D
  • 话不多说,先以致敬 ...其中,总共包含五分部内容内容为下: 第一部分,简要的介绍了一下当今智能家居的应用状况,分析了国内外智能领域行业的发展标准和发展状况。 第二部分,主要介绍了一下基于i...
  • 基于单片机的智能家居环境监控系统的设计

    千次阅读 多人点赞 2021-12-13 22:11:05
    本设计完成一个可以监测温湿度、有害气体以及非法入侵的智能家居监控系统,包括主控模块、传感器模块、显示模块、报警驱动模块等。
  • 坐标和投影 知识的内容介绍

    千次阅读 2016-04-05 13:40:22
    首先想到的便是坐标和投影,我想这个东西困扰着80%以上的测绘、遥感和GIS领域的从业人员吧,群里经常有人问,我自己曾经也很迷糊,什么大地坐标啊、地心坐标啊、高斯投影啊、UTM投影啊,搞得头都大了,可是这...
  • 2021DIY电脑配置入门篇(包含各cpu显卡天梯对比)

    万次阅读 多人点赞 2021-06-19 09:45:55
    显卡现在有两在做:NVIDIA(N卡)和AMD(A卡) NVIDIA:RTX3090系列是最新款 RTX和GTX的区别是RTX支持光线追踪,产品定位代表了产品实力,比如RTX2070就高于RTX2060。而后缀则代表了不同版本的意思,比如Super...
  • Android LBS地图开发基础知识之地球地理GPS坐标经纬度偏移偏差  通常,我们所说的地球地理经纬度是WGS-84坐标(World Geodetic System-1984 Coordinate System)的经纬度。WGS-84坐标是在1984年制定的全球...
  • JPEG系列三 JPEG图像压缩

    万次阅读 多人点赞 2017-01-08 16:12:38
    傅里叶是法国著名的数学和物理学,1807年,39岁的傅里叶在他的一篇论文里提出了一个想法,他认为 任何周期性的函数,都可以分解为为一系列的三角函数的组合 ,这个想法一开始并没有得到当时科学界的承认,比如...
  • 图书api 查询图书内容

    千次阅读 2015-11-23 15:33:25
    图书api可查询图书内容包括书名、书名简介、图书内容简介、图书封面、阅读人数、网购地址、发布时间等等。 接口名称:图书api 接口平台:开放接口 接口地址:http://apis.juhe.cn/goodbook/query 支持格式:...
  • 从世界坐标到相机坐标

    千次阅读 2018-01-07 14:40:18
    依次有:物体坐标,世界坐标,相机坐标,投影坐标以及屏幕坐标.我要讨论的就是这些坐标间的转换。 这些坐标不是凭空而来,他们都是为了完成计算机3D图形学最最最基本的目标而出现.计算机3D图形学最...
  • 市面上40~50款效果软件,哪一个适合你呢?
  • 机器学习系列(7)_机器学习路线(附资料)

    万次阅读 多人点赞 2016-02-28 11:55:21
    也习惯逛淘宝点了找相似之后货比三;亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈。恩,这些功能的核心算法就是机器学习领域的内容。 机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并...
  • Python 数据可视化:重新认识坐标

    千次阅读 2020-12-12 12:56:15
    在一张图纸上,只要建立了坐标中的任何一个点就可以用数学方式描述清楚了。一般,小学学习了数轴,初中就开始学习了二维直角坐标。但是,那仅仅是数学中的认识,现在要使用 Matplotlib 与已有的数学知识结合...
  • Matplotlib 系列之「绘制函数图像」

    万次阅读 2018-08-03 03:51:41
    它的文档相当完备,并且 Gallery 页面 中有上百幅缩略,打开之后都有源程序。因此如果你需要绘制某种类型的,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。这是要实现的效果,利用 Matplotlib 绘制...
  • Arcgis 投影坐标转换为地理坐标

    万次阅读 2020-03-11 21:38:17
    Arcgis 投影坐标转换为地理坐标 问题说明 今天,一个妹子问我怎么把投影坐标转换为地理坐标。 说实话,这个问题我不会,而且当时没在电脑旁,匆匆用手机查了一下,找到一个转换坐标注记法。当然这个办法是不对的...
  • ▐ 多样性指标 除了效率指标外,我们观察发现对于推荐的多样性指标也有所提升,风格和场景为频道内场景化内容的两个属性,风格包括北欧,中式,现代等,场景包括客厅,卧室,书房等: 短期行为的引入对于多样性的...
  • 淘宝躺平频道是手机淘宝内主推家居类商品的内容场景化导购平台(以下简称躺平)。频道中的内容主要以场景搭配为主,内容内挂载了多个商品锚点,点击商品锚点可以跳转到商品详情页。躺平强调算法大数据搭...
  • 题图 | by DarkmoonArt_de fromPixabay图灵高等数学书单一共分为 8 类 19 本独立图书 + 三大套图书(这个书单会不断加入优秀之作),其中大部分由世...
  • 封面来源于:Pixabay+易生信生物信息学习的正确姿势NGS系列文章包括NGS基础、高颜值在线绘图和分析、转录组分析(Nature重磅综述|关于RNA-seq你想知道的全在这)、Ch...
  • 随着信息社会的到来,智能手机的快速... 上海懒信息科技有限公司的三维地图制作平台定义了包含网格结构的室内地理坐标,融合集成了CAD、arcgis、3dmax三维模型等各种地图数据格式,生成的室内电子地图,可以开发室

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,366
精华内容 43,746
热门标签
关键字:

家系图包括什么内容