• 计算机视觉:技术发展与应用创新
    计算机视觉是一门研究如何让计算机从图像或视频中获取信息、理解内容并作出决策的科学。随着人工智能技术的迅速发展,计算机视觉在各个领域的应用越来越广泛,从智能安防到自动驾驶,从医疗影像分析到工业检测,都离不开这一技术的支持。本文将详细介绍计算机视觉的技术特点、发展历程、研究范畴以及应用场景,并展望未来的发展趋势。主题阐述计算机视觉作为人工智能领域的一个重要分支,主要研究如何通过算法和模型让计算机具备识别、理解和分析图像或视频的能力。计算机视觉的技术特点包括感知、学习、理解和决策等,这些特点使得计算机视觉在许多领域具有广泛的应用价值。发展历程中,计算机视觉经历了从传统图像处理到深度学习的演变。早期的计算机视觉主要依赖于简单的图像处理技术,如滤波、边缘检测等,而现代的计算机视觉则更多地依赖于深度学习技术,如卷积神经网络、循环神经网络等。这些技术的进步使得计算机视觉的应用范围越来越广泛。研究范畴方面,计算机视觉涉及多个领域,包括图像处理、模式识别、机器学习、认知科学等。这些领域的研究成果为计算机视觉的发展提供了强大的支持。技术应用计算机视觉在各个领域都有广泛的应用,以下是几个典型的例子:智能安防:计算机视觉可用于人脸识别、行为分析、智能监控等,提高安防监控的准确性和效率。智能交通:计算机视觉可用于车辆检测、交通拥堵分析、道路状况评估等,提高交通管理的智能化水平。智慧医疗:计算机视觉可用于医学影像分析、疾病诊断、病理细胞检测等,提高医疗诊断的准确性和效率。工业检测:计算机视觉可用于生产线检测、产品质量评估、工业自动化等,提高工业生产的效率和品质。研究方法计算机视觉的研究方法主要包括传统图像处理、深度学习和卷积神经网络等。传统图像处理方法主要基于数学和物理原理,通过对图像进行预处理、增强和特征提取等操作来达到识别和理解的目的。深度学习则通过多层的神经网络对图像进行自下而上的特征学习,从而实现对图像的分类、识别和理解。卷积神经网络作为深度学习的一种重要分支,具有强大的特征学习和分类能力,已被广泛应用于计算机视觉领域。未来展望随着技术的不断进步和应用场景的不断扩展,计算机视觉未来的发展将更加广阔。一方面,技术的进步将推动计算机视觉在算法和模型上的创新,提高其识别和理解的能力;另一方面,计算机视觉将更多地应用于各个产业领域,如智能制造、智慧城市、自动驾驶等,推动产业智能化的发展。同时,随着5G、云计算等技术的发展,计算机视觉的处理速度和效率也将得到进一步提升。总结计算机视觉作为人工智能的一个重要分支,具有广泛的应用前景和发展空间。本文通过对计算机视觉的技术特点、发展历程、研究范畴和应用场景的详细介绍,展示了计算机视觉在各个领域的强大应用潜力。未来随着技术的不断进步和产业应用的拓展,计算机视觉将会在更多领域发挥重要作用,为人类带来更多的便利和创新。
  • [其他] 浅谈集成学习之发展史
     集成学习最早出现于 1979 年,Dasarathy 提出了集成系统(Ensemble system) 的思想,他使用线性分类器和最近邻居分类器组成的复合模型进行训练,得到了比单个分类器训练更好的预测效果。 1988 年 Kearns 提出了“弱学习器”概念,引发了“能否用一组弱学习器创造一个强学习器”的广泛讨论。(学习器,指的是某种机器学习算法模型),注意,所谓弱学习器,指的是一个个单独的算法模型,比如 KNN 算法模型、线性回归模型、朴素贝叶斯等,而强学习器指的是由多个不同类别的“弱学习器”集成的学习器,也称“异质集成”,这类学习器的预测准确率在 90% 以上。除此之外,还有一种“基学习器”(也称同质集成),它是由同一款机器学习算法组成的。 1990 年 Schapire 对这问题给出了答案,并且研发了著名的 Boosting 算法,该算法是集成学习常用方法之一;1992 年 Wolpert 首次提出“堆叠泛化”这一概念,即“堆叠”弱学习器训练的模型比任何单个弱学习器训练的模型具有更好的性能。 1996年,Breiman 开发了另一个集成学习方法 —— Bagging 算法(也称装袋算法),并对其原理和训练过程进行了详细的描述,并明确指出 Bagging 算法能够提高预测的准确性。其后几年,Breiman 在  Bagging 算法的基础上对“随机决策森林”进行另外重新描述,提出了集成学习中最广为人知的算法 —— 随机森林算法(RandomForest),该算法通过集成学习的思想将多棵“决策树”集成为一片“森林”,使其兼顾了解决回归问题和分类问题的能力。  集成学习算法主要使用两种结构来管理模型与模型之间的关系,一种是并联,另一种是串联。 并联组织关系 所谓并联,就是训练过程是并行的,几个学习器相对独立地完成预测工作,彼此互不干扰,当所有模型预测结束后,最终以某种方法把所有预测结果合在一起。这相当于学生拿到试卷后先分别作答,彼此不讨论、不参考,当考试完成后,再以某种方式把答案整合在一起。并行式集成学习的典型代表是 Bagging 算法。  串联组织关系 串联结构也很好理解,指的是训练过程是串行的,几个学习器串在一起,通力合作一起来完成预测任务。第一个学习器拿到数据集完成预测,然后把预测结果以及相关数据传递给第二个学习器,第二个学习器也是在完成预测后把结果和相关数据继续传递下去,直至传递到最后一个学习器,这个过程很像是传声筒游戏,第一个人先听一段旋律,然后复述给第二个队员,依次进行下去,直到最后一个人给出歌曲的名字。串行式集成学习的典型代表是 Boosting 算法。 
  • [其他] 浅谈集成学习算法
    目前集成学习的实现方式主要分为两种,一种是 Bagging 算法为代表的并行式集成学习方法,其中最典型的应用当数“随机森林算法”;另一种是以 Boosting 算法为代表的串行式集成学习方法,其中应用频率较高的有两个 AdaBoost 算法和 XGBoost 算法。除上述两种主要的方法外,还有一种 Stacking 分层模型集成学习算法。 Bagging算法 Bagging 算法又称为“装袋算法”最初由 Leo Breiman 于 1996 年提出,它是并行式学习的典型代表,该算法主要是从数据层面上进行设计。并联结构中的每个学习器所 使用的数据集均采用放回重采样的方式生成,也就是说,每个学习器生成训练集时,每个数据样本都有相同的被采样概率。训练完成后,Bagging 采用投票的方式进行预测。 通过放回重采样的方式来构建样本量相等、且相互独立的数据集,从而在同一算法中训练出不同的模型。Bagging 算法的集成策略比较简单,对于分类问题,一般通过投票法,以多数模型预测结果为最终结果;而对于回归问题,一般采用算术平均法,对所有模型的预测结果做算术平均得到最终结果。 Boosting算法 与 Bagging 算法相比,Boosting 是一种串行式集成学习算法,该算法基于错误来提升模型的性能,根据前面分类器分类错误的样本,调整训练集中各个样本的权重来重新构建分类器。 Boosting 可以组合多个弱学习器来形成一个强学习器,从而在整体上提高模型预测的准确率。在模型训练过程中,Boosting 算法总是更加关注被错误分类的样本,首先对于第一个弱学习器预测发生错误的数据,在后续训练中提高其权值,而正确预测的数据则降低其权值,然后基于调整权值后的训练集来训练第二个学习器,如此重复进行,直到训练完成所有学习器,最终将所有弱学习器通过集成策略进行整合(比如加权法),生成一个强学习器。 Boosting 算法的训练过程是呈阶梯状的,后一个学习器会在前一个学习器的基础上进行学习,最终以某种方式进行综合,比如加权法,对所有模型的预测结果进行加权来产生最终的结果Stacking算法相比于前两种算法,Stacking 集成学习算法要更为复杂一些,该算法是一种分层模型框架,由 Wolpert 于1992 年提出。Stacking 算法可以分为多层,但通常情况下分为两层,第一层还是由若干个弱学习器组成,当原始训练集经过第一层后,会输出各种弱学习器的预测值,然后将预测结果继续向下一层传递,第二层通常只有一个机器学习模型,该层对第一层的各种预测值和真实值进行训练,从而得到一个集成模型,该模型将根据第一层的预测结果,给出最终的预测结果。
  • 浅谈盘古AI大模型
    盘古AI大模型是华为公司开发的AI大模型,是业界首个超千亿参数的中文预训练大模型,被认为是最接近人类中文理解能力的AI大模型。盘古AI大模型首次使用Encoder-Decoder架构,兼顾NLP理解与生成的能力,在预训练阶段学习了超40TB文本数据,并通过行业数据的小样本调优,提升模型在场景中的应用性能。盘古AI大模型具有多种应用场景,包括但不限于:NLP大模型:盘古NLP大模型是业界首个千亿参数的中文预训练大模型,基于Transformer实现的端到端训练,在NLP理解与生成任务上达到了业界领先水平。盘古NLP大模型通过多任务学习的方式,从大规模的文本数据中学习语义表示,可以更好地捕捉语言特征,提高自然语言处理的性能。CV大模型:盘古CV大模型是业界最大CV大模型,首次实现模型按需抽取,首次实现兼顾判别与生成能力。它基于图像金字塔网络实现的端到端训练,在图像分类、目标检测、图像生成等任务上取得了优异成绩。盘古CV大模型可以学习到图像的多层次特征,从而更好地进行图像识别和理解。多模态大模型:盘古多模态大模型具备图像和文本的跨模态理解、检索与生成能力。它可以对图像和文本进行联合建模,通过学习不同模态之间的映射关系,实现跨模态检索和生成。盘古多模态大模型可以应用于多种场景,如图像标注、视觉问答、跨模态推荐等。科学计算大模型:盘古科学计算大模型可以应用于科学计算领域,如物理模拟、化学反应预测、天气预报等。通过学习大量科学数据中的规律和模式,盘古科学计算大模型可以提供更准确、更高效的计算结果。盘古AI大模型是基于“预训练模型+微调”的模式进行预训练的。具体来说,盘古AI大模型先基于海量数据进行预训练,这种预训练过程主要是通过学习大量的文本数据来训练模型,从而让模型学习到语言的特征和规律。在预训练完成后,模型可以直接适配多类通用场景,用户只需要基于极小的样本进行数据微调和部署。这种微调过程主要是通过使用标注样本对模型进行训练和调整,从而让模型能够更好地适应实际应用场景。此外,盘古AI大模型还采用了自动数据增广以及类别自适应损失函数优化策略等技术,这些技术可以进一步提升模型的泛化能力和性能。盘古AI大模型的预训练过程是基于海量数据和强大的计算能力进行的,通过多任务学习和深度学习等技术,让模型能够更好地理解自然语言并应用于多种场景。总之,盘古AI大模型是华为在AI领域的重要成果之一,它不仅可以应用于多种场景,而且具有很高的实用价值和发展潜力。
  • [其他] 感知技术在智能家居中的最新应用
    感知技术在智能家居中也有着广泛的应用。智能家居是指通过智能化设备和系统,将家居环境变得更加舒适、安全和节能。感知技术在智能家居中可以用于以下几个方面:智能控制:通过感知技术可以实时获取家庭环境的信息,如温度、湿度、光照、空气质量等,从而实现对家居设备的智能控制。例如,当室内温度升高时,智能空调可以自动开启降温;当室内空气质量较差时,智能空气净化器可以自动开启净化等功能。智能安防:通过感知技术可以实时监控家庭安全状况,如门窗是否关闭、是否有异常入侵等。同时,还可以通过智能摄像头进行远程监控,及时发现异常情况并采取相应措施。智能照明:通过感知技术可以智能调节室内照明设备的亮度和色温,根据不同场景和需求进行调节,如自动调节灯光亮度以适应不同活动需求,如阅读、休息、聚会等。智能家电:通过感知技术可以实现家电的智能化控制和管理,如智能电视、智能冰箱、智能洗衣机等。这些设备可以通过语音识别、图像识别等技术实现智能操作和控制,提高使用便利性和效率。智能环境:通过感知技术可以打造一个智能环境,将家庭内的各种设备、系统和传感器进行互联互通,实现信息的共享和协同工作。例如,当主人回家时,智能门锁可以自动解锁;当主人离开家时,智能电器可以自动关闭等功能。感知技术在智能家居领域有很多最新的应用,以下是其中的几个例子:AI灵犀人体传感器:这款传感器可以根据姿态算法优化,实时监测人体的站立、坐、躺、跌倒四种姿态,即使静止不动也能精准判断是否有人。在夜间,它能在识别到有人站立走动时联动落地灯自动亮起,识别到无人后再自动将灯熄灭,为夜间活动带来便利的同时,不打扰你的睡意。AI灵犀人体传感器还支持自定义功能分区,能够根据检测到的状态匹配合适的场景,比如当你进入阅读场景时,灯光亮起,窗帘逐渐关闭,空调温湿度调整为舒适状态,带来良好的阅读体验。毫米波雷达的应用:这款雷达可以实现厘米级别的位置识别和姿态感知,用于检测家庭成员的需求变化。比如在厨房烹饪美食时,传感器识别为家务场景,灯光调整为适合的蓝白光,这个灯光下使空间变得明亮,四周无暗区。毫米波雷达也能对目标进行准确探测和跟踪,具有高精度、高稳定性等优点。AI灵犀人体传感器的感知能力更加精准,体态感知准确率95.5%,微动感知准确率99.5%,能有效识别扫地机、风扇、窗帘以及体积较小的宠物等。这些最新的感知技术应用在智能家居领域可以实现更加智能化、个性化的服务,提高生活的舒适度和便利性。同时,这些应用也可以帮助我们更好地了解和掌握家庭成员的生活习惯和需求变化,从而更好地满足他们的需求。感知技术在智能家居中的应用可以提高生活的舒适度、安全性和便利性。同时,还可以实现节能和环保的效果。
  • [其他] 感知技术在自动驾驶中的应用
    感知技术在自动驾驶中扮演着至关重要的角色。自动驾驶车辆通过各种传感器获取周围环境信息,包括道路标志、交通信号灯、车辆、行人等障碍物的位置、速度、加速度等信息。这些信息被用于决策和规划,以实现安全、高效的自动驾驶。感知技术主要应用于以下几个方面:环境感知:通过多种传感器获取车辆周围环境的信息,包括道路标志、车道线、交通信号灯等,以便为车辆的行驶提供参考。障碍物感知:通过激光雷达、毫米波雷达等传感器获取车辆周围的障碍物信息,包括车辆、行人等,并对这些障碍物进行分类、识别和跟踪。交通流感知:通过多种传感器获取交通流的信息,包括车流量、车速、车辆间距等,以便为车辆的行驶提供参考。定位与导航:通过GPS、北斗导航系统等传感器获取车辆的定位信息,结合高精度地图和感知技术实现自动驾驶车辆的定位与导航。场景识别:通过对车辆周围环境的感知和分析,识别出不同的场景,如城市道路、高速公路、停车场等,以便为车辆的行驶提供参考。感知技术的应用需要解决一些挑战和问题,如传感器失效、感知精度不足等。为了提高感知的准确性和可靠性,需要采用多种传感器的组合和数据融合技术,同时还需要不断进行技术研发和创新。
  • [其他] 自动驾驶中的感知技术
    自动驾驶中的感知技术是一种通过多种传感器获取车辆周围环境信息的技术。这些传感器包括激光雷达(LiDAR)、摄像头、毫米波雷达、超声波传感器等,可以检测车辆周围的物体、道路标志、交通信号灯等,同时还可以获取周围车辆、行人等障碍物的位置、速度、加速度等信息。感知技术是自动驾驶的关键组成部分之一,它为后续的决策和规划提供了必要的信息。感知技术的实现通常包括以下步骤:数据采集:通过多种传感器采集车辆周围的环境数据,包括图像、点云、距离等信息。数据预处理:对采集的数据进行预处理,如滤波、去噪、校准等,以提高数据的准确性和可靠性。目标检测与识别:对预处理后的数据进行目标检测和识别,如车辆、行人、交通信号灯等,同时还需要对不同的目标进行分类和识别。场景理解:通过对目标检测和识别结果的分析,构建出车辆周围环境的模型,包括道路、车道、交通状况等,以便为决策和规划提供参考。数据融合:将不同传感器的数据进行融合,以提高感知的准确性和可靠性。感知结果输出:将感知结果输出给决策和规划模块,以实现自动驾驶的功能。感知技术是自动驾驶领域中非常重要的技术之一,它能够提高自动驾驶的安全性和效率。然而,感知技术仍然存在一些挑战和问题,如传感器失效、感知精度不足等,这些问题需要不断的技术创新和改进来解决。
  • [其他] 浅谈自动驾驶
    自动驾驶,这个一度只存在于科幻小说和电影中的概念,如今已逐渐成为现实。这种技术不仅有可能改变我们的交通方式,更有可能对社会的各个层面产生深远影响。自动驾驶的实现离不开先进的传感器、算法和人工智能等技术。车辆通过雷达、激光雷达(LiDAR)、摄像头等传感器收集环境数据,再通过高性能计算机进行数据处理和分析。这些信息被用来构建出车辆周围环境的详细模型,从而使车辆能够理解并响应各种情况。此外,人工智能算法也在自动驾驶中发挥着关键作用,它们能够根据车辆收集的数据,进行决策制定和路径规划。自动驾驶技术的引入,将极大地提高道路交通的安全性。据统计,每年全球有数百万的交通事故发生,其中许多事故是由于人为错误导致的。而自动驾驶车辆通过精确的传感器和先进的算法,可以全天候、全地形地行驶,从而避免因疲劳驾驶、酒后驾驶等人为因素引发的事故。除了提高安全性,自动驾驶还有可能提高交通效率。在没有拥堵的情况下,自动驾驶车辆可以以最高效的速度行驶,从而减少旅行时间和能源消耗。同时,自动驾驶还可能释放出大量空闲时间,为社会带来新的商业模式和就业机会。然而,自动驾驶也带来了一些新的挑战。例如,如果所有的车辆都实现自动驾驶,那么现有的交通基础设施可能需要重新设计。此外,自动驾驶车辆的法规和道德问题也需要得到解决。例如,在出现事故时,责任应该由谁承担?这些问题需要我们进行深入的讨论和研究。总的来说,自动驾驶是一项具有巨大潜力的技术,它有可能对我们的社会产生深远影响。虽然它带来的挑战和问题也相当大,但随着科技的进步和社会的发展,我们有理由相信这些问题可以得到解决。在未来的道路上,让我们期待自动驾驶带来的更多可能性。自动驾驶的实现离不开以下几种主要的技术:传感器技术:自动驾驶汽车上会配备多种传感器,包括雷达、激光雷达(LiDAR)、摄像头、超声波传感器等,以实现对周围环境、道路、交通状况的感知和识别。芯片技术:自动驾驶汽车需要处理大量传感器采集的数据,并能够整合这些数据,因此需要高性能的芯片进行数据处理和分析。操作系统:自动驾驶汽车的操作系统能够将处理结果与操作硬件结合起来,实现车辆的加速、减速、刹车、变向、避让等功能,同时也需要进行人机交互和车辆间的通信等功能。网络技术:自动驾驶汽车需要与互联网、局域网进行联络和识别,实现车与车、车与卫星、车与交通指挥网等之间的通信,以便能够正确识别和选择道路、遵守交通规则、避让危险等。人工智能技术:自动驾驶汽车需要通过机器学习和深度学习等技术进行数据分析和决策制定,从而实现自主行驶和智能控制。高精度地图和定位技术:自动驾驶汽车需要高精度地图和定位技术来获取车辆的位置信息和其他相关信息,如道路状况、交通信号位置等。这些技术的不断发展和创新,为自动驾驶的实现提供了强有力的支持。
  • [其他] CVPR:使用完全交叉Transformer的小样本目标检测
    文章来源于计算机视觉研究院 ,作者计算机视觉研究院01概述小样本目标检测 (FSOD) 旨在使用很少的训练示例检测新目标,最近在社区中引起了极大的研究兴趣。已经证明基于度量学习的方法使用基于双分支的孪生网络对这项任务有效,并计算图像区域和少样本示例之间的相似性以进行检测。然而,在之前的工作中,两个分支之间的交互只限于检测头,而剩下的数百层用于单独的特征提取。受最近关于视觉转换器和视觉语言转换器的工作的启发,研究者提出了一种新颖的基于完全交叉转换器(Fully Cross-Transformer)的FSOD模型 (FCT),方法是将交叉转换器整合到特征主干和检测头中。提出了非对称批处理交叉注意来聚合来自具有不同批处理大小的两个分支的关键信息。新模型可以通过引入多级交互来改善两个分支之间的少样本相似性学习。PASCAL VOC和MSCOCO FSOD基准的综合实验证明了我们模型的有效性。02背景以往小样本检测方法大致可以分为俩类:single-branch方法和two-branch方法;前者通常是基于Faster RCNN进行finetuned,需构建multi-class classifier;但该方法针对shot比较少例如1-shot时,较为容易出现过拟合情况;而后者通常时构建siamese网络,分别同时提取query特征和support特征,然后基于metric learning方法比如feature fusion,feature alignment,GCN或者non-local attention来计算俩分支的相似性,由于在Novel类别上无需构建multi-class classifier,所以泛化性更好;俩类方法大致差异如下图所示:03新框架Task Definition在小样本目标检测(FSOD)中,有两组类C=Cbase∪Cnovel和Cbase∩Cnovel=∅,其中基类Cbase每个类都有大量训练数据,而新类Cnovel(也称为支持类)只有每个类的训练示例很少(也称为支持图像)。对于K-shot(例如,K=1,5,10)目标检测,研究者为每个新类别c∈Cnovel准确地使用K个边界框注释作为训练数据。FSOD的目标是利用数据丰富的基类来协助检测少样本的新类。Overview of Our Proposed Model (FCT)研究者认为以往的two-branch方法只关注了detection head部分的特征交互,忽略了特征提取部分;于是这篇论文的motivation就出来了。因此研究者在Faster RCNN上提出了Fully Cross-Transformer(FCT)的小样本检测方法,在每个阶段都进行特征交互。如下图所示:The Cross-Transformer Feature Backbone在cross-transformer中计算Q-K-V attention时为了减少计算量,研究者采用了PVTv2的方式。上面大致介绍了query和support特征提取,在特征交互上作者提出了 Asymmetric-Batched Cross-Attention。具体做法如下图和公式所示:评论。研究者彻底研究了提出的模型中两个视觉分支之间的多层次交互。cross-transformer特征主干中的三个阶段使两个分支与低级、中级和高级视觉特征逐渐有效交互。
  • [问题求助] 求助大佬这个错误应该怎么解决:ImportError: cannot import name ‘adam‘ from ‘tensorflow.python.keras.optimizers‘
    求助大佬这个错误应该怎么解决:ImportError: cannot import name ‘adam‘ from ‘tensorflow.python.keras.optimizers‘
  • [其他] CNN 的一些可视化方法!
    作者 | yishun@知乎来源丨https://zhuanlan.zhihu.com/p/53683453注:本文所有资料均来自Keras之父、Google人工智能研究员Francois Chollet的大作:《Python深度学习》,建议大家直接去看原文,这里只是结合楼主的理解做点笔记。引言有一些同学认为深度学习、神经网络什么的就是一个黑盒子,没办法、也不需要分析其内部的工作方式。个人认为这种说法“谬之千里”。首先,站在自动特征提取或表示学习的角度来看,深度学习还是很好理解,即通过一个层级结构,由简单到复杂逐步提取特征,获得易于处理的高层次抽象表示。其次,现在也已经有很多方法对神经网络进行分析了,特别是一些可视化方法,可以很直观的展示深度模型的特征提取过程。对神经网络进行可视化分析不管是在学习上还是实际应用上都有很重要的意义,基于此,本文将介绍以下3种CNN的可视化方法:可视化中间特征图。可视化卷积核。可视化图像中类激活的热力图。可视化中间特征图这种方法很简单,把网络中间某层的输出的特征图按通道作为图片进行可视化展示即可,如下述代码所示:import matplotlib.pyplot as plt #get feature map of layer_activation plt.matshow(layer_activation[0, :, :, 4], cmap='viridis')把多个特征图可视化后堆叠在一起可以得到与下述类似的图片。上图为某CNN 5-8 层输出的某喵星人的特征图的可视化结果(一个卷积核对应一个小图片)。可以发现越是低的层,捕捉的底层次像素信息越多,特征图中猫的轮廓也越清晰。越到高层,图像越抽象,稀疏程度也越高。这符合我们一直强调的特征提取概念。可视化卷积核想要观察卷积神经网络学到的过滤器,一种简单的方法是获取每个过滤器所响应的视觉模式。我们可以将其视为一个优化问题,即从空白输入图像开始,将梯度上升应用于卷积神经网络的输入图像,让某个过滤器的响应最大化,最后得到的图像是选定过滤器具有较大响应的图像。核心代码如下所示(利用Keras框架):def generate_pattern(layer_name, filter_index, size=150): layer_output = model.get_layer(layer_name).output loss = K.mean(layer_output[:, :, :, filter_index]) grads = K.gradients(loss, model.input)[0] grads /= (K.sqrt(K.mean(K.square(grads))) + 1e-5) iterate = K.function([model.input], [loss, grads]) input_img_data = np.random.random((1, size, size, 3)) * 20 + 128. step = 1. for i in range(40): loss_value, grads_value = iterate([input_img_data]) input_img_data += grads_value * step img = input_img_data[0] return deprocess_image(img)将输入图片张量转换回图片后进行可视化,可以得到与下述类似的图片:随着层数的加深,卷积神经网络中的过滤器变得越来越复杂,越来越精细。模型第一层( block1_conv1 )的过滤器对应简单的方向边缘和颜色,高层的过滤器类似于自然图像中的纹理:羽毛、眼睛、树叶等。可视化图像中类激活的热力图即显示原始图片的不同区域对某个CNN输出类别的“贡献”程度,如下面图片所示:可以看到,大象头部对“大象”这个类别的“贡献”程度较高,而且这种方法似乎可以在一定程度上进行无监督的目标检测。下面是书中原文,可能有点绕口。我们将使用的具体实现方式是“Grad-CAM: visual explanations from deep networks via gradient-based localization”这篇论文中描述的方法。这种方法非常简单:给定一张输入图像,对于一个卷积层的输出特征图,用类别相对于通道的梯度对这个特征图中的每个通道进行加权。直观上来看,理解这个技巧的一种方法是,你是用“每个通道对类别的重要程度”对“输入图像对不同通道的激活强度”的空间图进行加权,从而得到了“输入图像对类别的激活强度”的空间图。这里谈一下我的理解,给定线性函数  ,y为类别,  等等为输入。可以看到这里  对y的贡献为  ,恰好为  。当然了,深度模型中有非线性激活函数,不能简化为一个线性模型,所以这只是启发性的理解。代码如下所示:african_elephant_output = model.output[:, 386] last_conv_layer = model.get_layer('block5_conv3') grads = K.gradients(african_elephant_output, last_conv_layer.output)[0] pooled_grads = K.mean(grads, axis=(0, 1, 2)) iterate = K.function([model.input], [pooled_grads, last_conv_layer.output[0]]) pooled_grads_value, conv_layer_output_value = iterate([x]) for i in range(512): conv_layer_output_value[:, :, i] *= pooled_grads_value[i] heatmap = np.mean(conv_layer_output_value, axis=-1) heatmap = np.maximum(heatmap, 0) heatmap /= np.max(heatmap) plt.matshow(heatmap)得到的热力图如下所示经下述代码处理后,可以得到本节开始时的图片。import cv2 img = cv2.imread(img_path) heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0])) heatmap = np.uint8(255 * heatmap) heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET) superimposed_img = heatmap * 0.4 + img cv2.imwrite('/Users/fchollet/Downloads/elephant_cam.jpg', superimposed_img)
  • [其他] 总结 | 半监督目标检测(6)
    Interactive Self-Training with Mean Teachers for Semi-supervised Object Detection这篇文章揭示了之前利用 pseudo label 的方法忽略了同一张图片在不同的迭代的检测结果之间的差异性,而且不同的模型对同一张图像的检测结果也有差异。图七 不同迭代的模型对同一张图像的预测结果(a)(b),不同 ROIHead 的检测结果因此作者提出一个基于 Mean Teacher 的 Interactive form of self-training 的半监督目标检测算法:解决不同训练迭代检测结果的不稳定问题,作者使用 NMS 将不同迭代的检测结果进行融合。同时利用两个检测头部 ROIHead 生成 pseudo label,两个检测头部可以相互提供有用的互补信息。图八 Interactive Self-Training 的算法步骤IST 算法的主要步骤如图八所示:使用 labeled data 训练一个拥有两个 ROIHead 的预训练模型利用预训练模型生成两个对应的伪标签利用 labeled data 和 unlabeled data 进行监督学习,图八中 Pseudo Labels Memory 用来使用 NMS 融合不同迭代的检测结果。该步骤详情如图九所示,利用 Mean Teacher 的结构,teacher 生成 pseudo label 并与 Memory 中的 pseudo label 进行融合,并更新 Memory。作者使用 Dropblock 模块确保不同的 ROIHead 能够独立收敛,并提供互补的信息,即图九中的 D。
  • [其他] 总结 | 半监督目标检测(5)
    Unbiased Teacher for Semi-Supervised Object Detection这篇文章发表在 ICLR 2021, 主要思想还是说现在的半监督目标检测算法生成的标签具有 bias,这里作者主要 argue 的点在于目标检测中存在天然的类别不平衡问题,包括 RPN 前景和背景的分类,ROIHead 的多类别分类,因此作者提出了一个 Unbiased Teacher 方法,来解决此问题。图六 Unbiased Teacher 示意图从方法上来说,非常的简单,首先是 Burn-IN stage,即在 labeled data 上训练一个预训练模型,然后利用 Mean Teacher 的结构,Teacher 生成 Pseudo label 来同时监督 RPN 和 ROIHead。不同的点在于,作者只利用 pseudo label 更新 RPN 和 ROIHead 的 classification 分支,主要原因在于由 confidence score 生成的 pseudo label 与 bounding box 位置的质量关系不大。除此之外,作者将原本的 cross entropy loss 替换为 Focal loss 来解决 pseudo label bias 问题,即 class imbalance 。
  • [其他] 总结 | 半监督目标检测(4)
    Instant-Teaching: An End-to-End Semi-Supervised Object Detection FrameworkInstant-Teaching 主要的 motivation 在于 STAC 仅生成一次的 pseudo label,即离线生成,在训练的过程中不会更新。这样的模式存在一个问题是,当训练的模型精度逐步提升,超过原本的模型,继续使用原来模型生成的 pseudo label 会限制模型精度进一步提升。因此作者提出 Instant-Teaching,以及 Instant-Teaching*。图四 Instant-Teaching 和 Instant-Teaching* 示意图Instant-Teaching 采用即时生成 pseudo label 的模式,在每一个迭代中,包括两个步骤:生成 pseudo label: 对 unlabeled image 进行 weak augmentation,送入模型中得到 hard label;利用生成的 pseudo label 进行 strong augmentation,除了 在 STAC 中的数据增强,还包括了 Mixup 和 Mosaic,利用增强后的数据训练模型;Instant-Teaching 主要提出了一个 co-rectify scheme 来解决 pseudo label 的 confirmation bias 的问题(噪声 pseudo label 的错误累计效应)。因此,作者利用两个模型,给予不同的初始化参数,输入不同的数据增强的样本,分别彼此纠正和检测对方生成的 pseudo label,形式如图四右半部分。文章转载自 小白学视觉
  • [其他] 总结 | 半监督目标检测(3)
    文章转载自 小白学视觉A Simple Semi-Supervised Learning Framework for Object DetectionSTAC 提出了一个基于 hard pseudo label 的半监督目标检测算法,如图三所示,该方法包含四个步骤:首先利用 labeled data 训练一个 Teacher 模型;生成 pseudo label, 将 unlabeled data 输入进 Teacher 网络中,得到大量的目标框预测结果,利用 NMS 消除大量的冗余框,最后使用阈值来挑选高置信度的 pseudo label;应用 strong data augmentation。得到 pseudo label 后与 unlabeled image 图像相结合,包括图像级别的颜色抖动、geometric transformation(平移、旋转、剪切)、box-level transformation(小幅度的平移、旋转、剪切);计算无监督 loss (pseudo label)和监督学习 loss;图三 STAC 半监督目标检测算法示意图
总条数:7868 到第 页
上滑加载中