【AI简报第20230217期】超越GPT 3.5的小模型来了!AI网恋诈骗时代开启

描述

嵌入式 AI

AI 简报 20230217 期

1. 超越GPT 3.5的小模型来了!

原文:https://mp.weixin.qq.com/s/gv_FJD0aIpDNbky54unj2Q

论文地址:https://arxiv.org/abs/2302.00923

项目地址:https://github.com/amazon-science/mm-cot

去年年底,OpenAI 向公众推出了 ChatGPT,一经发布,这项技术立即将 AI 驱动的聊天机器人推向了主流话语的中心,众多研究者并就其如何改变商业、教育等展开了一轮又一轮辩论。

随后,科技巨头们纷纷跟进投入科研团队,他们所谓的「生成式 AI」技术(可以制作对话文本、图形等的技术)也已准备就绪。

众所周知,ChatGPT 是在 GPT-3.5 系列模型的基础上微调而来的,我们看到很多研究也在紧随其后紧追慢赶,但是,与 ChatGPT 相比,他们的新研究效果到底有多好?近日,亚马逊发布的一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》中,他们提出了包含视觉特征的 Multimodal-CoT,该架构在参数量小于 10 亿的情况下,在 ScienceQA 基准测试中,比 GPT-3.5 高出 16 个百分点 (75.17%→91.68%),甚至超过了许多人类。

这里简单介绍一下 ScienceQA 基准测试,它是首个标注详细解释的多模态科学问答数据集 ,由 UCLA 和艾伦人工智能研究院(AI2)提出,主要用于测试模型的多模态推理能力,有着非常丰富的领域多样性,涵盖了自然科学、语言科学和社会科学领域,对模型的逻辑推理能力提出了很高的要求。

RT-Thread

下面我们来看看亚马逊的语言模型是如何超越 GPT-3.5 的。

包含视觉特征的 Multimodal-CoT

大型语言模型 (LLM) 在复杂推理任务上表现出色,离不开思维链 (CoT) 提示的助攻。然而,现有的 CoT 研究只关注语言模态。为了在多模态中触发 CoT 推理,一种可能的解决方案是通过融合视觉和语言特征来微调小型语言模型以执行 CoT 推理。

然而,根据已有观察,小模型往往比大模型更能频繁地胡编乱造,模型的这种行为通常被称为「幻觉(hallucination)」。此前谷歌的一项研究也表明( 论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models ),基于 CoT 的提示只有在模型具有至少 1000 亿参数时才有用!

也就是说,CoT 提示不会对小型模型的性能产生积极影响,并且只有在与 ∼100B 参数的模型一起使用时才会产生性能提升。

然而,本文研究在小于 10 亿参数的情况下就产生了性能提升,是如何做到的呢?简单来讲,本文提出了包含视觉特征的 Multimodal-CoT,通过这一范式(Multimodal-CoT)来寻找多模态中的 CoT 推理。

Multimodal-CoT 将视觉特征结合在一个单独的训练框架中,以减少语言模型有产生幻觉推理模式倾向的影响。总体而言,该框架将推理过程分为两部分:基本原理生成(寻找原因)和答案推理(找出答案)。

RT-Thread

数据集

本文主要关注 ScienceQA 数据集,该数据集将图像和文本作为上下文的一部分,此外,该数据集还包含对答案的解释,以便可以对模型进行微调以生成 CoT 基本原理。此外,本文利用 DETR 模型生成视觉特征。

较小的 LM 在生成 CoT / 基本原理时容易产生幻觉,作者推测,如果有一个修改过的架构,模型可以利用 LM 生成的文本特征和图像模型生成的视觉特征,那么 更有能力提出理由和回答问题。

架构

总的来说,我们需要一个可以生成文本特征和视觉特征并利用它们生成文本响应的模型。

又已知文本和视觉特征之间存在的某种交互,本质上是某种共同注意力机制,这有助于封装两种模态中存在的信息,这就让借鉴思路成为了可能。为了完成所有这些,作者选择了 T5 模型,它具有编码器 - 解码器架构,并且如上所述,DETR 模型用于生成视觉特征。

T5 模型的编码器负责生成文本特征,但 T5 模型的解码器并没有利用编码器产生的文本特征,而是使用作者提出的共同注意式交互层(co-attention-styled interaction layer)的输出。

拆解来看,假设 H_language 是 T5 编码器的输出。X_vision 是 DETR 的输出。第一步是确保视觉特征和文本特征具有相同的隐藏大小,以便我们可以使用注意力层。

结果

作者使用 UnifiedQA 模型的权重作为 T5 模型的初始化点,并在 ScienceQA 数据集上对其进行微调。他们观察到他们的 Multimodal CoT 方法优于所有以前的基准,包括 GPT-3.5。

有趣的地方在于,即使只有 2.23 亿个参数的基本模型也优于 GPT-3.5 和其他 Visual QA 模型!这突出了拥有多模态架构的力量。

RT-Thread

结论

这篇论文带来的最大收获是多模态特征在解决具有视觉和文本特征的问题时是多么强大。

作者展示了利用视觉特征,即使是小型语言模型(LM)也可以产生有意义的思维链 / 推理,而幻觉要少得多,这揭示了视觉模型在发展基于思维链的学习技术中可以发挥的作用。

从实验中,我们看到以几百万个参数为代价添加视觉特征的方式,比将纯文本模型扩展到数十亿个参数能带来更大的价值。

2. AI照骗恐怖如斯!美女刷屏真假难辨,网友:AI网恋诈骗时代开启

原文:https://mp.weixin.qq.com/s/nELNzal7tjkbZ6uKkuGkeA

什么?这些不是真人照片,都是AI画出来的?!

RT-Thread


最近这样一组美女图片刷屏了,许多人看到第一反应都是“AI逼真到这个份上了?”。

RT-Thread

直到看到手部露出了破绽,才敢确定确实是AI画的。


RT-Thread


嗯….啥都不想说,看就得了,感兴趣的小伙伴直接查看原文。

3. YOLOv7农业方向应用|基于注意力机制改进的YOLOv7算法CBAM-YOLOv7

原文:https://mp.weixin.qq.com/s/HXKsTnSbr8Ks1VF2p7RoTA

论文链接:https://www.mdpi.com/2077-0472/12/10/1659/pdf

饲养密度是影响畜禽大规模生产和动物福利的关键因素。然而,麻鸭养殖业目前使用的人工计数方法效率低、人工成本高、精度低,而且容易重复计数和遗漏。

在这方面,本文使用深度学习算法来实现对密集麻鸭群数量的实时监测,并促进智能农业产业的发展。本文构建了一个新的大规模大麻鸭目标检测图像数据集,其中包含1500个大麻鸭目标的检测全身帧标记和仅头部帧标记。

此外,本文提出了一种基于注意力机制改进的YOLOv7算法CBAM-YOLOv7,在YOLOv7的主干网络中添加了3个CBAM模块,以提高网络提取特征的能力,并引入SE-YOLOv7和ECA-YOLOv7进行比较实验。实验结果表明,CBAM-YOLOv7具有较高的精度,mAP@0.5和mAP@0.5:0.95略有改善。CBAM-YOLOv7的评价指标值比SE-YOLOw7和ECA-YOLOv 7的提高更大。此外,还对两种标记方法进行了比较测试,发现仅头部标记方法导致了大量特征信息的丢失,而全身框架标记方法显示了更好的检测效果。

算法性能评估结果表明,本文提出的智能麻鸭计数方法是可行的,可以促进智能可靠的自动计数方法的发展。

RT-Thread

随着技术的发展,监控设备在农业中发挥着巨大的作用。有多种方法可以监测个体动物的行为,例如插入芯片记录生理数据、使用可穿戴传感器和(热)成像技术。一些方法使用附着在鸟类脚上的可穿戴传感器来测量它们的活动,但这可能会对受监测的动物产生额外影响。特别是,在商业环境中,技术限制和高成本导致这种方法的可行性低。

因此,基于光流的视频评估将是监测家禽行为和生理的理想方法。最初,许多监控视频都是人工观察的,效率低下,依赖于工作人员的经验判断,没有标准。然而,近年来,由于大数据时代的到来和计算机图形卡的快速发展,计算机的计算能力不断增强,加速了人工智能的发展。与人工智能相关的研究正在增加,计算机视觉在动物检测中的应用越来越广泛。

例如,2014年Girshick等人提出的R-CNN首次引入了两阶段检测方法。该方法使用深度卷积网络来获得优异的目标检测精度,但其许多冗余操作大大增加了空间和时间成本,并且难以在实际的养鸭场中部署。Law等人提出了一种单阶段的目标检测方法CornerNet和一种新的池化方法:角点池化。

然而,基于关键点的方法经常遇到大量不正确的目标边界框,这限制了其性能,无法满足鸭子饲养模型的高性能要求。Duan等人在CornerNet的基础上构建了CenterNet框架,以提高准确性和召回率,并设计了两个对特征级噪声具有更强鲁棒性的自定义模块,但Anchor-Free方法是一个具有前两个关键点组合的过程,并且由于网络结构简单、处理耗时、速率低和测量结果不稳定,它不能满足麻鸭工业化养殖所需的高性能和高准确率的要求。

本文的工作使用了一种单阶段目标检测算法,它只需要提取特征一次,就可以实现目标检测,其性能高于多阶段算法。目前,主流的单阶段目标检测算法主要包括YOLO系列、SSD、RetinaNet等。本文将基于CNN的人群计数思想转移并应用到鸭计数问题中。随着检测结果的输出,作者嵌入了一个目标计数模块来响应工业化的需求。目标计数也是计算机视觉领域的一项常见任务。目标计数可分为多类别目标计数和单类别目标计数;本工作采用了一群大麻鸭的单类别计数。

本文希望实现的目标是:

  1. 建立了一个新的大规模的德雷克图像数据集,并将其命名为“大麻鸭数据集”。大麻鸭数据集包含1500个标签,用于全身框架和头部框架,用于鸭的目标检测。该团队首次发布了大麻鸭数据集

  2. 本研究构建了大鸭识别、大鸭目标检测、大鸭图像计数等全面的工作基线,实现了麻鸭的智能养殖

  3. 该项目模型引入了CBAM模块来构建CBAM-YOLOv7算法

本文很长,同时基础理论和背景介绍的非常详细,感兴趣的小伙伴可以翻看原文,进行研究。

4. AutoML并非全能神器!新综述爆火,网友:了解深度学习领域现状必读

原文:https://mp.weixin.qq.com/s/qR2bMaZby299PlEHUlNoBQ

如今深度学习模型开发已经非常成熟,进入大规模应用阶段。

然而,在设计模型时,不可避免地会经历迭代这一过程,它也正是造成模型设计复杂、成本巨高的核心原因,此前通常由经验丰富的工程师来完成。

之所以迭代过程如此“烧金”,是因为在这一过程中,面临大量的开放性问题 (open problems)。

这些开放性问题究竟会出现在哪些地方?又要如何解决、能否并行化解决?

现在一篇论文综述终于对此做出介绍,发出后立刻在网上爆火。

作者严谨地参考了接近300篇文献,对大量应用深度学习中的开放问题进行分析,力求让读者一文了解该领域最新趋势。

RT-Thread

这篇论文要研究什么?

众所周知,当我们拿到一个机器学习问题时,通常处理的流程分为以下几步:收集数据、编写模型、训练模型、评估模型、迭代、测试、产品化。

在这篇论文中,作者把上述这些流程比作一个双层次的最佳化问题。

内层优化回路需要最小化衡量模型效果评估的损失函数,背后是为了寻求最佳模型参数而进行的深入研究的训练过程。

而外层优化回路的研究较少,包括最大化一个适当选择的性能指标来评估验证数据,这正是我们所说的“迭代过程”,也就是追求最优模型超参数的过程。

不过,值得注意的是,面对不同的问题,它的解也需要特定分析,有时候情况甚至会非常复杂。

例如,评估度量Mval是一个离散且不可微的函数。它并未被很好地定义,有时候甚至在某些自我监督式和非监督式学习以及生成模型问题中不存在。

同时,你也可能设计了一个非常好的损失函数Ltrain,结果发现它是离散或不可微的,这种情况下它会变得非常棘手,需要用特定方法加以解决。

因此,本篇论文的研究重点就是迭代过程中遇到的各种开放性问题,以及这些问题中可以并行解决优化的部分案例。

机器学习中开放问题有哪些?

论文将开放性问题类型分为监督学习和其他方法两大类。

值得一提的是,无论是监督学习还是其他方法,作者都贴心地附上了对应的教程地址:

如果对概念本身还不了解的话,点击就能直接学到他教授的视频课程,不用担心有困惑的地方。

首先来看看监督学习

这里我们不得不提到AutoML。作为一种用来降低开发过程中迭代复杂度的“偷懒”方法,它目前在机器学习中已经应用广泛了。

通常来说,AutoML更侧重于在监督学习方法中的应用,尤其是图像分类问题。

毕竟图像分类可以明确采用精度作为评估指标,使用AutoML非常方便。

但如果同时考虑多个因素,尤其是包括计算效率在内,这些方法是否还能进一步被优化?

在这种情况下,如何提升性能就成为了一类开放性问题,具体又分为以下几类:

大模型、小模型、模型鲁棒性、可解释AI、迁移学习、语义分割、超分辨率&降噪&着色、姿态估计、光流&深度估计、目标检测、人脸识别&检测、视频&3D模型等。

这些不同的领域也面临不同的开放性问题。

例如大模型中的学习率并非常数、而是函数,会成为开放问题之一,相比之下小模型却更考虑性能和内存(或计算效率)的权衡这种开放性问题。

其中,小模型通常会应用到物联网、智能手机这种小型设备中,相比大模型需求算力更低。

又例如对于目标检测这样的模型而言,如何优化不同目标之间检测的准确度,同样是一种复杂的开放性问题。

在这些开放性问题中,有不少可以通过并行方式解决。如在迁移学习中,迭代时学习到的特征会对下游任务可泛化性和可迁移性同时产生什么影响,就是一个可以并行研究的过程。

同时,并行处理开放性问题面临的难度也不一样。

例如基于3D点云数据同时施行目标识别、检测和语义分割,比基于2D图像的目标识别、检测和分割任务更具挑战性。

再来看看监督学习以外的其他方法,具体又分为这几类:

自然语言处理(NLP)、多模态学习、生成网络、域适应、少样本学习、半监督&自监督学习、语音模型、强化学习、物理知识学习等。

自然语言处理为例,其中的多任务学习会给模型带来新的开放性问题。

像经典的BERT模型,本身不具备翻译能力,因此为了同时提升多种下游任务性能指标,研究者们需要权衡各种目标函数之间的结果。

又如生成模型中的CGAN(条件GAN),其中像图像到图像翻译问题,即将一张图片转换为另一张图片的过程。

这一过程要求将多个独立损失函数进行加权组合,并让总损失函数最小化,就又是一个开放性问题。

其他不同的问题和模型,也分别都会在特定应用上遇到不同类型的开放性问题,因此具体问题依旧得具体分析。

经过对各类机器学习领域进行分析后,作者得出了自己的一些看法。

一方面,AI表面上是一种“自动化”的过程,从大量数据中产生自己的理解,然而这其中其实涉及大量的人为操作,有不少甚至是重复行为,这被称之为“迭代过程”。

另一方面,这些工作虽然能部分通过AutoML精简,然而AutoML目前只在图像分类中有较好的表现,并不意味着它在其他领域任务中会取得成功。

总而言之,应用深度学习中的开放性问题,依旧比许多人想象得要更为复杂。RT-Thread

论文地址:https://arxiv.org/abs/2301.11316

5. ChatGPT的技术体系总结

原文:https://mp.weixin.qq.com/s/woAWs9l_7Opt63-vJfmhzQ

0.参考资料

RLHF论文:Training language models to follow instructions with human feedback(https://arxiv.org/pdf/2203.02155.pdf)

摘要上下文中的 RLHF:Learning to summarize from Human Feedback (https://arxiv.org/pdf/2009.01325.pdf)

PPO论文:Proximal Policy Optimization Algorithms(https://arxiv.org/pdf/1707.06347.pdf)

Deep reinforcement learning from human preferences (https://arxiv.org/abs/1706.03741)

1.引言

1.1 ChatGPT的介绍

作为一个 AI Chatbot,ChatGPT 是当前比较强大的自然语言处理模型之一,它基于 Google 的 T5 模型进行了改进,同时加入了许多自然语言处理的技术,使得它可以与人类进行自然的、连贯的对话。ChatGPT 使用了 GPT(Generative Pre-training Transformer)架构,它是一种基于 Transformer 的预训练语言模型。GPT 的主要思想是将大量的语料库输入到模型中进行训练,使得模型能够理解和学习语言的语法、语义等信息,从而生成自然、连贯的文本。与其他 Chatbot 相比,ChatGPT 的优势在于它可以进行上下文感知型的对话,即它可以记住上下文信息,而不是简单地匹配预先定义的规则或模式。此外,ChatGPT 还可以对文本进行生成和理解,支持多种对话场景和话题,包括闲聊、知识问答、天气查询、新闻阅读等等。

尽管 ChatGPT 在自然语言处理领域已经取得了很好的表现,但它仍然存在一些局限性,例如对于一些复杂的、领域特定的问题,它可能无法给出正确的答案,需要通过人类干预来解决。因此,在使用 ChatGPT 进行对话时,我们仍需要谨慎对待,尽可能提供明确、简洁、准确的问题,以获得更好的对话体验。

1.2 ChatGPT的训练模式

ChatGPT 的训练模式是基于大规模文本数据集的监督学习和自我监督学习,这些数据集包括了各种类型的文本,例如新闻文章、博客、社交媒体、百科全书、小说等等。ChatGPT 通过这些数据集进行预训练,然后在特定任务的数据集上进行微调。

对于 Reinforcement Learning from Human Feedback 的训练方式,ChatGPT 通过与人类进行对话来进行模型训练。具体而言,它通过与人类进行对话,从而了解人类对话的语法、语义和上下文等方面的信息,并从中学习如何生成自然、连贯的文本。当 ChatGPT 生成回复时,人类可以对其进行反馈,例如“好的”、“不太好”等等,这些反馈将被用来调整模型参数,以提高 ChatGPT 的回复质量。Reinforcement Learning from Human Feedback 的训练方式,可以使 ChatGPT 更加智能,更好地模拟人类的思维方式。不过这种训练方式也存在一些问题,例如人类反馈的主观性和不确定性等,这些问题可能会影响模型的训练效果。因此,我们需要在使用 ChatGPT 进行对话时,谨慎对待反馈,尽可能提供明确、简洁、准确的反馈,以获得更好的对话体验。

1.3 RLHF的介绍

RT-Thread

在过去的几年中,语言模型通过根据人类输入提示生成多样化且引人注目的文本显示出令人印象深刻的能力。然而,什么才是“好”文本本质上很难定义,因为它是主观的并且依赖于上下文。有许多应用程序,例如编写您需要创意的故事、应该真实的信息性文本片段,或者我们希望可执行的代码片段。编写一个损失函数来捕获这些属性似乎很棘手,而且大多数语言模型仍然使用简单的下一个loss function(例如交叉熵)进行训练。为了弥补损失本身的缺点,人们定义了旨在更好地捕捉人类偏好的指标,例如 BLEU 或 ROUGE。虽然比损失函数本身更适合衡量性能,但这些指标只是简单地将生成的文本与具有简单规则的引用进行比较,因此也有局限性。如果我们使用生成文本的人工反馈作为性能衡量标准,或者更进一步并使用该反馈作为损失来优化模型,那不是很好吗?这就是从人类反馈中强化学习(RLHF)的想法;使用强化学习的方法直接优化带有人类反馈的语言模型。RLHF 使语言模型能够开始将在一般文本数据语料库上训练的模型与复杂人类价值观的模型对齐。

在传统的强化学习中,智能的agent需要通过不断的试错来学习如何最大化奖励函数。但是,这种方法往往需要大量的训练时间和数据,同时也很难确保智能代理所学习到的策略是符合人类期望的。Deep Reinforcement Learning from Human Preferences 则采用了一种不同的方法,即通过人类偏好来指导智能代理的训练。具体而言,它要求人类评估一系列不同策略的优劣,然后将这些评估结果作为训练数据来训练智能代理的深度神经网络。这样,智能代理就可以在人类偏好的指导下,学习到更符合人类期望的策略。除了减少训练时间和提高智能代理的性能之外,Deep Reinforcement Learning from Human Preferences 还可以在许多现实场景中发挥作用,例如游戏设计、自动驾驶等。通过使用人类偏好来指导智能代理的训练,我们可以更好地满足人类需求,并创造出更加智能和人性化的技术应用

2. 方法介绍

RT-Thread

方法总体上包括三个不同步骤:
  • 监督调优模型:在一小部分已经标注好的数据上进行有监督的调优,让机器学习从一个给定的提示列表中生成输出,这个模型被称为 SFT 模型。
  • 模拟人类偏好,让标注者们对大量 SFT 模型输出进行投票,这样就可以得到一个由比较数据组成的新数据集。然后用这个新数据集来训练一个新模型,叫做 RM 模型。
  • 用 RM 模型进一步调优和改进 SFT 模型,用一种叫做 PPO 的方法得到新的策略模式。
第一步只需要进行一次,而第二步和第三步可以持续重复进行,以收集更多的比较数据来训练新的 RM 模型和更新策略模式。
2.1 监督调优模型
需要收集数据来训练有监督的策略模型。为了做到这一点,选定一些提示,让标注人员写出预期的回复。这个过程虽然缓慢和昂贵,但最终得到的是一个相对较小、高质量的数据集,可用于调优预训练的语言模型。选择了 GPT-3.5 系列中的预训练模型作为基线模型,而不是对原始 GPT-3 模型进行调优。
然而,由于此步骤的数据量有限,这个过程得到的 SFT 模型可能会输出一些不是用户想要的文本,通常也会出现不一致问题。为了解决这个问题,使用的策略是让标注者对 SFT 模型的不同输出进行排序以创建 RM 模型,而不是让标注者创建一个更大的精选数据集。
2.2 训练回报模型
在这一步中,我们的目标是学习一个目标函数,它可以直接从数据中学习,而不是仅仅从有限的训练数据中调整语言模型。这个目标函数的作用是为 SFT 模型生成的输出进行评分,以表示这些输出对人类来说有多可接受。它反映了人类标注者的偏好和共同准则。最终,这个过程可以得到一个系统,它可以模仿人类的偏好。包括以下步骤:
  • 利用prompt 生成多个输出。
  • 利用标注者对这些输出进行排序,获得一个更大质量更高的数据集。
  • 把模型将 SFT 模型输出作为输入,并按优先顺序对它们进行排序。
2.3 使用 PPO 模型微调 SFT 模型
这一步的目标是通过强化学习来调整 SFT 模型。具体来说,使用了一个叫 PPO 的算法来训练一个叫做近端策略优化模型的调整模型,用于优化 SFT 模型。
PPO 是一种用于训练智能体的算法,可以不断地调整策略以提高效果。与其他算法不同的是,PPO 会限制策略的更改范围,以确保训练的稳定性。此外,PPO 还使用了一个价值函数来估计每个行动的价值,从而更加准确地进行调整。
在这一步中,PPO 模型使用 SFT 模型作为起点,RM 模型作为基础,为给定的输入生成回报。为了避免过度优化,SFT 模型会为每个 token 添加 KL 惩罚因子。
3. 性能评估
作为一个大型语言模型,ChatGPT的评估标准可以有多种。在训练ChatGPT时,通常会使用一些标准的自然语言处理评估指标来评估其性能,如困惑度(perplexity)、BLEU分数、ROUGE分数等。这些指标可以用来评估ChatGPT在生成文本时的流畅度、语义连贯性和表达能力等方面的表现。此外,ChatGPT也可以通过人类评估来评估其性能,例如进行用户调查或人类评分实验。这些方法可以提供更贴近实际使用场景的评估,以便更全面地评估ChatGPT在生成自然语言文本方面的表现。
主要借助以下三个标准进行评估:
  • 帮助性:判断模型遵循用户指示以及推断指示的能力。
  • 真实性:判断模型在封闭领域任务中有产生虚构事实的倾向。
  • 无害性:标注者评估模型的输出是否适当、是否包含歧视性内容。
4. ChatGPT的前景
ChatGPT 在自然语言处理领域具有广泛的应用前景。它可以用于语言翻译、情感分析、问答系统、文本摘要、对话系统等多个任务,帮助人们更好地理解和处理自然语言。此外,ChatGPT 还可以应用于许多其他领域,例如自然语言生成、自动文本摘要、机器翻译、自动问答、语音识别等。它也可以用于推荐系统、智能客服、智能问答、知识图谱等领域。ChatGPT 的未来发展前景非常广阔,可以预见的是,随着技术的不断发展,它将在各个领域得到更广泛的应用和改进。同时,也需要关注和解决一些挑战,例如如何提高模型的效率和准确性,如何解决对话中的常识推理和知识不足等问题。

6. 一文梳理清楚Python OpenCV 的知识体系

原文:https://mp.weixin.qq.com/s/woAWs9l_7Opt63-vJfmhzQ
1. OpenCV 初识与安装
本部分要了解 OpenCV (Open Source Computer Vision Library)的相关简介,OpenCv 可以运行在多平台之上,轻量级而且高效,由一系列 C 函数和少量 C++类构成,提供了 Python、Ruby、MATLAB 等语言的接口,所以在学习的时候,要注意查阅资料的语言实现相关问题。
这个阶段除了安装 OpenCV 相关库以外,建议收藏官方网址,官方手册,官方入门教程,这些都是最佳的学习资料。
模块安装完毕,需要重点测试 OpenCV 是否安装成功,可通过 Python 查询安装版本。
2. OpenCV 模块简介
先从全局上掌握 OpenCV 都由哪些模块组成。例如下面这些模块,你需要找到下述模块的应用场景与简介。
core、imgproc、highgui、calib3d、features2d、contrib、flann、gpu、legacy、ml、objdetect、photo、stitching。
整理每个模块的核心功能,并完成第一个 OpenCV 案例,读取显示图片。
3. OpenCV 图像读取,显示,保存
安装 OpenCV 之后,从图像获取开始进行学习,包含本地加载图片,相机获取图片,视频获取,创建图像等内容。
只有先获取图像之后,才能对图像进行操作处理,信息提取,结果输出,图像显示,图像保存。
对于一个图像而言,在 OpenCV 中进行读取展示的步骤如下,你可以将其代码进行对应。
  1. 图像读取;
  2. 窗口创建;
  3. 图像显示;
  4. 图像保存;
  5. 资源释放。
涉及需要学习的函数有 cv2.imread()cv2.namedWindow()cv2.imshow()cv2.imwrite()cv2.destroyWindow()cv2.destroyAllWindows()cv2.imshow()cv2.cvtColor()cv2.imwrite()cv2.waitKey()
4. 摄像头和视频读取,保存
第一个要重点学习 VideoCapture 类,该类常用的方法有:
  • open() 函数;
  • isOpened() 函数;
  • release() 函数;
  • grab() 函数;
  • retrieve() 函数;
  • get() 函数;
  • set() 函数;
除了读取视频外,还需要掌握 Opencv 提供的 VideoWriter 类,用于保存视频文件。
学习完相关知识之后,可以进行这样一个实验,将一个视频逐帧保存为图片。
5. OpenCV 常用数据结构和颜色空间
这部分要掌握的类有 Point 类、Rect 类、Size 类、Scalar 类,除此之外,在 Python 中用 numpy 对图像进行操作,所以 numpy 相关的知识点,建议提前学习,效果更佳。
OpenCV 中常用的颜色空间有 BGR 颜色空间、HSV/HLS 颜色空间、Lab 颜色空间,这些都需要了解,优先掌握 BGR 颜色空间。
6. OpenCV 常用绘图函数
掌握如下函数的用法,即可熟练的在 Opencv 中绘制图形。
  • cv2.line();
  • cv2.circle();
  • cv2.rectangle();
  • cv2.ellipse();
  • cv2.fillPoly();
  • cv2.polylines();
  • cv2.putText()。
7. OpenCV 界面事件操作之鼠标与滑动条
第一个要掌握的函数是鼠标操作消息回调函数,cv2.setMouseCallback() ,滑动条涉及两个函数,分别是:cv2.createTrackbar()cv2.getTrackbarPos()
掌握上述内容之后,可以实现两个案例,其一为鼠标在一张图片上拖动框选区域进行截图,其二是通过滑动条让视频倍速播放。
8. 图像像素、通道分离与合并
了解图像像素矩阵,熟悉图片的像素构成,可以访问指定像素的像素值,并对其进行修改。
通道分离函数 cv2.split(),通道合并函数 cv2.merge()
9. 图像逻辑运算
掌握图像之间的计算,涉及函数如下:
  • cv2.add();
  • cv2.addWeighted();
  • cv2.subtract();
  • cv2.absdiff();
  • cv2.bitwise_and();
  • cv2.bitwise_not();
  • cv2.bitwise_xor()。
还可以研究图像乘除法。
10. 图像 ROI 与 mask 掩膜
本部分属于 OpenCV 中的重点知识,第一个为感兴趣区域 ROI,第二个是 mask 掩膜(掩码)操作 。
学习 ROI 部分时,还可以学习一下图像的深浅拷贝。
11. 图像几何变换
图像几何变换依旧是对基础函数的学习与理解,涉及内容如下:
  • 图像缩放 cv2.resize();
  • 图像平移 cv2.warpAffine();
  • 图像旋转 cv2.getRotationMatrix2D();
  • 图像转置 cv2.transpose();
  • 图像镜像 cv2.flip();
  • 图像重映射 cv2.remap()。
12. 图像滤波
理解什么是滤波,高频与低频滤波,图像滤波函数。
线性滤波:方框滤波、均值滤波、高斯滤波,
非线性滤波:中值滤波、双边滤波,
  • 方框滤波 cv2.boxFilter();
  • 均值滤波 cv2.blur();
  • 高斯滤波 cv2.GaussianBlur();
  • 中值滤波 cv2.medianBlur();
  • 双边滤波 cv2.bilateralFilter()。
13. 图像固定阈值与自适应阈值
图像阈值化是图像处理的重要基础部分,应用很广泛,可以根据灰度差异来分割图像不同部分,阈值化处理的图像一般为单通道图像(灰度图),核心要掌握的两个函数:
  • 固定阈值:cv2.threshold();
  • 自适应阈值:cv2.adaptiveThreshold()。
14. 图像膨胀腐蚀
膨胀、腐蚀属于形态学的操作,是图像基于形状的一系列图像处理操作。
膨胀腐蚀是基于高亮部分(白色)操作的,膨胀是対高亮部分进行膨胀,类似“领域扩张”, 腐蚀是高亮部分被腐蚀,类似“领域被蚕食”。
膨胀腐蚀的应用和功能:
  • 消除噪声;
  • 分割独立元素或连接相邻元素;
  • 寻找图像中的明显极大值、极小值区域;
  • 求图像的梯度;
核心需要掌握的函数如下:
  • 膨胀 cv2.dilate();
  • 腐蚀 cv2.erode()。
形态学其他操作,开运算、闭运算、顶帽、黑帽、形态学梯度 这些都是基于膨胀腐蚀基础之上,利用 cv2.morphologyEx() 函数进行操作。
15. 边缘检测
边缘检测可以提取图像重要轮廓信息,减少图像内容,可用于分割图像、特征提取等操作。
边缘检测的一般步骤:
  • 滤波:滤出噪声対检测边缘的影响 ;
  • 增强:可以将像素邻域强度变化凸显出来—梯度算子 ;
  • 检测:阈值方法确定边缘 ;
常用边缘检测算子:
  • Canny 算子,Canny 边缘检测函数 cv2.Canny();
  • Sobel 算子,Sobel 边缘检测函数 cv2.Sobel();
  • Scharr 算子,Scharr 边缘检测函数 cv2.Scahrr() ;
  • Laplacian 算子,Laplacian 边缘检测函数 cv2.Laplacian()。
16. 霍夫变换
霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中,通过计算累计结果的局部最大值,得到一个符合该特定形状的集合,作为霍夫变换的结果。
本部分要学习的函数:
  • 标准霍夫变换、多尺度霍夫变换 cv2.HoughLines() ;
  • 累计概率霍夫变换 cv2.HoughLinesP() ;
  • 霍夫圆变换 cv2.HoughCricles() 。
17. 图像直方图计算及绘制
先掌握直方图相关概念,在掌握核心函数,最后通过 matplotlib 模块对直方图进行绘制。计算直方图用到的函数是 cv2.calcHist()
直方图相关应用:
  • 直方图均衡化 cv2.equalizeHist();
  • 直方图对比 cv2.compareHist();
  • 反向投影 cv2.calcBackProject()。
18. 模板匹配
模板匹配是在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。
核心用到的函数如下:
  • 模板匹配 cv2.matchTemplate();
  • 矩阵归一化 cv2.normalize();
  • 寻找最值 cv2.minMaxLoc()。
19. 轮廓查找与绘制
核心要理解到在 OpenCV 中,查找轮廓就像在黑色背景中找白色物体。
常用函数:
  • 查找轮廓 cv2.findContours();
  • 绘制轮廓 cv2.drawContours() 。
最后应该掌握针对每个轮廓进行操作。
20. 轮廓特征属性及应用
这部分内容比较重要,并且知识点比较多,核心内容与函数分别如下:
  • 寻找凸包 cv2.convexHull() 与 凸性检测 cv2.isContourConvex();
  • 轮廓外接矩形 cv2.boundingRect();
  • 轮廓最小外接矩形 cv2.minAreaRect();
  • 轮廓最小外接圆 cv2.minEnclosingCircle();
  • 轮廓椭圆拟合 cv2.fitEllipse();
  • 逼近多边形曲线 cv2.approxPolyDP();
  • 计算轮廓面积 cv2.contourArea();
  • 计算轮廓长度 cv2.arcLength();
  • 计算点与轮廓的距离及位置关系 cv2.pointPolygonTest();
  • 形状匹配 cv2.matchShapes()。
21. 高级部分-分水岭算法及图像修补
掌握分水岭算法的原理,掌握核心函数 cv2.watershed()
可以扩展补充图像修补技术及相关函数 cv2.inpaint(),学习完毕可以尝试人像祛斑应用。
22. GrabCut & FloodFill 图像分割、角点检测
这部分内容都需要一些图像专业背景知识,先掌握相关概念知识,在重点学习相关函数。
  • GrabCut 算法 cv2.grabCut();
  • 漫水填充算法 cv2.floodFill();
  • Harris 角点检测 cv2.cornerHarris();
  • Shi-Tomasi 角点检测 cv2.goodFeaturesToTrack();
  • 亚像素角点检测 cv2.cornerSubPix()。
23. 特征检测与匹配
特征点的检测和匹配是计算机视觉中非常重要的技术之一, 在物体识别、视觉跟踪、三维重建等领域都有很广泛的应用。
OpenCV 提供了如下特征检测方法:
  • “FAST” FastFeatureDetector;
  • “STAR” StarFeatureDetector;
  • “SIFT” SIFT(nonfree module) Opencv3 移除,需调用 xfeature2d 库;
  • “SURF” SURF(nonfree module) Opencv3 移除,需调用 xfeature2d 库;
  • “ORB” ORB Opencv3 移除,需调用 xfeature2d 库;
  • “MSER” MSER;
  • “GFTT” GoodFeaturesToTrackDetector;
  • “HARRIS” (配合 Harris detector);
  • “Dense” DenseFeatureDetector;
  • “SimpleBlob” SimpleBlobDetector。
24. OpenCV 应用部分之运动物体跟踪与人脸识别
了解何为运动物体检测,OpenCV 中常用的运动物体检测方法有背景减法、帧差法、光流法,跟踪算法常用的有 meanShiftcamShift粒子滤波光流法 等。
  • meanShift 跟踪算法 cv2.meanShift();
  • CamShift 跟踪算法 cv2.CamShift()。
如果学习人脸识别,涉及的知识点为:
  • 人脸检测:从图像中找出人脸位置并标识;
  • 人脸识别:从定位到的人脸区域区分出人的姓名或其它信息;
  • 机器学习。

———————End———————


你可以添加微信:rtthread2020 为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!


RT-Thread



点击阅读原文

爱我就请给我在看RT-Thread


原文标题:【AI简报第20230217期】超越GPT 3.5的小模型来了!AI网恋诈骗时代开启

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分