发布时间:2021-1-29 分类: 电商动态
根据个人经理的项目案例和学习时间,笔者从产品实践的角度谈计算机视觉,希望对您有所帮助。
Computer Vision也是我的老朋友。我第一次接触到人工智能,这是与计算机视觉相关的知识。我最近受益于老板带我到那天算法的常规会议,我看到了许丽(尚堂)的《计算机视觉的完整链条,从成像到早期视觉再到识别理解》并找到了很多信息。我当时没有想到什么。现在想一想,每一步都是有意义的。的。
今天,我将从基于个人经理的项目案例和安心的产品实践的角度谈论计算机视觉。
一、前言
计算机视觉是使用计算机和相关设备模拟生物视觉。其主要任务是通过处理捕获的图片或视频来获得相应场景的三维信息。
在徐立的分享中,完整的计算机视觉链分为三个部分:
成像(图像)
早期视力
识别(识别)
本文还将基于徐立的整个链条的三个部分的分类,分别用实际例子来谈谈可以关注的三个部分的产品。
二、成像(image)
成像是模拟摄像机的原理,它解决了如何提高照片质量的问题。
在实际工业应用中,我们经常发现实际数据和实验室数据差别太大,实验数据的质量远远低于实验室数据。当我们第一次训练模型时,我们会发现实验室模型对实际场景没有影响。
经过多次试验和测试,我们发现影响图像质量的因素如下:
光照影响
诸如太暗或太亮的异常照明环境将极大地干扰模型的效果。在解决照明效果问题时,我认为有两种方法:
1)从产品角度进行控制:
一个。在用户可以改变环境(例如手机自拍等)的前提下,语音/界面提示用户当前环境不理想,建议改变环境。
湾用户无法控制替换环境(如人脸识别,车辆识别和其他固定摄像头场景),只能通过调试硬件设施来弥补这个问题。
夜晚:在这个行业中,我们遇到了曝光或黑暗。大部分时间都是在晚上,因为相机会在晚上自动切换到夜景(从图片中,它会从彩色切换到黑白),所以晚上很眩光。下面的图像(例如汽车灯)将曝光过度。在这种情况下,我们可以通过强制相机环境为白天(图像着色)来避免它。太暗的情况从节省成本的角度来看,我们可以添加一个发光和低功率灯来补偿相机。当然,这两个问题也可以通过购买高质量的相机来解决,但这样做也意味着更高的成本。
日:白天也会有光。在这种情况下,请考虑使用过滤器等。
2)算法角度控制
使用算法处理图像可以将图像恢复到引人注目的水平。徐莉在文中举例说明了这样一幅画:
这张照片从暗到亮,通过算法的处理,我们可以明显地观察到整个画面的内容。这种方法非常灵活,但它也对公司的算法提出了更高的要求。我们知道每种算法的过滤时间非常重要。如果场景在时间上非常严格(人脸识别,车辆识别),那么图像将在识别之前进行转换,这无疑是增加输出的时间。 。技术力量较小的公司可能需要权衡它们。
模糊(blur)
模糊也是业内经常遇到的问题,并且非常令人头疼。这里我们首先对模糊进行分类:
运动模糊:人体运动,车辆运动
聚焦模糊:相机距离等因素,类似于近视,图像中的低频,高频缺失。因此,您需要使用算法来尝试填充高频部分。
低分辨率差异模糊:小图像放大等,图像中存在低频,并且缺少高频。因此,您需要使用算法来尝试填充高频部分。
混合模糊:多个模糊类型共存
可以在模糊产品上控制的场景很少,并且仅针对第一类运动模糊以及产品和用户具有交互。其他类型的歧义需要算法来处理。
我们发现大多数模型(包括脸部++等模型与前沿公司相比),以及大量正常图像也被发现是模糊的。从算法的观点来看,这可能不是理想的,但从工业角度来看它是可接受的。被错误判断为模糊图像的正常图像将被过滤掉或处理然后被识别。这不适合用户。使用时会引起不适。此外,我们还可以确保阈值以上的图形是正常图像,这也有利于模型训练。因此,产品需要注意的准确性和召回率可以在某些情况下降低要求。
影响图像质量的因素除了照明,模糊以及诸如噪声,分辨率等许多其他问题之外,大多数这些问题还通过算法和硬件进行了优化。值得注意的是,我之前提到过,我们需要考虑时间和成本之间的权衡。 。
三、早期视觉(early vision)
在早期视觉部分,我之前没有一般概念。我看到了徐莉的分享。我回来后发现“哦!原来每个人都在做这部分内容”。
早期视力的主要工作是什么?它主要是图像分割,边缘估计,运动和深度估计。这个内容没有直接结果申请,它是一个“中间状态”。
图像分割是指将特定的影像分割成【区域内部属性一致】而【区域间不一致】的技术,是图像处理中最基础和最重要的领域之一。
有许多图像分割方法,如灰度阈值分割,边缘检测和区域跟踪。许多种图像或场景都有相应的分割方法,但同时一些分割方法仅限于某些特殊类型的图像分割。
在边缘检测的情况下,目的是在图像中找到亮度急剧变化的一组像素,即轮廓。
徐力在当前的愿景中提出了两个问题:
结果不准确
这需要很长时间来促进知识的发展
第一个问题的解决方案是使用端到端方法,第二个问题的解决方案可以依赖于数据驱动。
这部分产品相对较少涉及,通常与算法同事沟通,听到更多反馈,图像分割存在一些缺陷。像徐莉所说,“如何使用这个中间结果来获得更好的应用,到目前为止感觉这是一个难以回答的问题”,因此该产品可能能够考虑早期视觉直接应用的场景。 。
四、识别理解(Recognition)
识别和理解的是将(输入)映射映射到(输出)图形,或将(输入)图形映射到中间结果。简单地说,图片被映射到文本或标签。这有两个重要因素:标签,数据。这两个因素的广度和准确性,最终模型的识别能力越强。
标签
标签的定义实际上是规则的定义。正如我在上一篇文章《AI产品经理需要了解的数据标注工作》中提到的,标签越准确对模型的结果有利,但标签越精确就意味着这种标签下的数据量。产品越少,也需要考虑这个因素。
还存在受主观因素影响的标签定义,例如面值,并且每个人对面部值的评估是不同的。徐莉说,在他们的面值模型中,他们将分为“美丽”和“不美丽”。这两个标签的主要标志是社交代购源码网站上的得分以及明星与公众之间的差异。事实上,我曾经遵循Yan值的模型。在我的模型中,面部的价值更加精致:有好看,平凡和丑陋。除了社交代购源码网站得分,明星得分外,我的经验是关注数据场景的类型,很多数据被归类为一种类似的类型。例如,像花一样,我们觉得难看?大多数男士服装也被定义为丑陋。
此外,更精细的标签细分将有更多的着陆可能性。关于我最令人印象深刻的是,前一个模型有一个节日操作。主题是玩丑陋。更丑陋的人会有小礼物,这项活动。上线后,它吸引了很多公司用户圈子的关注。当时,当我收到这个活动时,我的想法实际上被颠覆了,因为我首先想到的是Yan值模型的可能场景主要是为了识别漂亮的人,比如在直播平台上区分锚值锚,建议更好的质量。在主页和其他后端应用程序上的锚点,我没想过它可以逆转。受到这项活动的启发,我们后来发现,面值的模型在娱乐方面可以有更多挖掘的可能性。
似乎由于在我们的模型中添加了标签定义,还有一种额外的着陆可能性,标签的重要性是不言而喻的。
数据优化
数据的数量和质量对模型非常重要。我刚刚收到的重大消息:阿尔法的弟弟Afayuan在没有任何先验知识的情况下通过完整的自学来击败了数据训练的阿尔法狗。我相信这项技术将来会越来越多地被使用。也许在未来,它将能够在某些领域不使用大量数据的情况下完成模型培训。但就目前而言,在计算机视觉领域,大量数据至关重要。
我们都知道数据优化可以使模型更好,更好。什么类型的功能不能很好地执行,有必要填写相应的数据。事实上,除了这个常识之外,数据优化还可以用来解决我们在培训过程中经常遇到的问题:过度拟合。
什么是过度拟合?
一般来说,模型过于深入地学习数据,并且还学习了数据中的细节和噪声,导致模型泛化的性能较差。过度拟合的性能是模型(假设)在训练集上表现良好,但在测试集上表现不佳。
那么你如何过度拟合数据约束?
重新清理数据。数据中的噪声太大会影响模型的效果,清洁数据可以避免由此因素引起的过度拟合问题
增加训练集中的数据量。如果训练集占总数据的太少,则也会导致过度拟合。
当然,这个问题也可能受到算法的限制,例如正则化方法和丢失方法。我们可以在以后讨论它。
五、项目实践 (以车型识别举例)
车辆检测系统下有许多与CV相关的应用,如车辆识别,车牌识别,车辆颜色识别等。让我们从车辆识别的例子开始,探索项目的具体过程。
项目前期准备
1.数据准备:
模特的主题并不大,也不小。世界上大约有三四百个汽车品牌,每个品牌下都有几十辆汽车。我们从0开始,至少需要包括普通的车辆系统。大众,丰田,梅赛德斯 - 奔驰,宝马,奥迪,现代等大众汽车品牌需要获得全部数据。每种类型的车辆至少有三个基本数据:前部,后部和车身。
例如,梅赛德斯 - 奔驰C200:
这三个图像代表三种类型的数据,并且这三种类型的数据在不同场景中的重要性完全不同。在项目的早期阶段,让我们假设我们需要识别模型。主要应用场景是“停车识别”。前面的数据相对更重要,需要更多关注。为什么?我们可以想象,为了捕获车牌号码,停车场中的车辆识别摄像机通常将面向摄像机,并且从摄像机发送的数据将很少具有纯侧身数据或甚至后方数据。为了更快地将项目应用于项目,可以临时放下和优化缺少其他类型的数据。
在数据准备过程中,爬虫首先需要从Internet抓取数据,然后手动过滤并过滤到不可用的数据,并整合数据以执行下一步。
2.文档准备
A)数据标签文档,包括我们项目中包含的时钟模型数量,以及每个模型对应的样式。需要注意数据注释的问题,是否有多辆车的图片,图片的角度需要丢弃等等。
B)产品文档,包括一般文档,如着陆场景描述,需求描述文档等。以下是工业车辆识别需求分析的系统设计:
算法要求描述(类型,范围,速度,准确性,稳定性等)
摄像机设备硬件要求说明,环境描述,数据传输描述,摄像机配置说明
平台编程(车辆识别系统平台的前后设计)
数据关联描述(车辆信息分析统计协会)
如果摄像机位于局域网并具有结构控制功能(识别需要车辆黑名单):
分发程序(考虑云到本地图像功能)
按需编程(您可以从Internet查看本地摄像机)
项目流程跟踪
1.软件和硬件:遵循常规硬件和软件项目的开发
2.算法:车辆识别过程基本如下:
模型图片上传:通过相机/网络上传
图像预处理:包含上面成像部分中的模糊图像恢复过程(运动模糊具有快速算法去模糊:通过已知速度V,位移S确定图像中任何点的值)
早期图像分割(从背景图像中识别目标图像进行图像识别,考虑边缘检测方法),图像二值化(将图像中像素的灰度值设置为0或255,使用轮廓跟踪制作目标轮廓更突出)
图像特征提取
功能比较
项目测试
相机测试
相机和按需程序测试
按需程序(可以实时查看摄像机的程序)和平台守护程序测试
算法和平台后台测试,备用接口测试
模型识别时间测试
模型识别准确率,召回率测试
服务器稳定性测试
网络带宽限制测试
正向和反向测试
其他平台和硬件产品的一般测试
项目验收
根据工艺功能逐一检查产品
六、后记
今天,从产品实践的角度来看,我已经整理出了计算机视觉链,这可能不涉及算法知识。我想分享更多我的个人经历,并在产品上造成更多的冲突。
当然,整个过程中有很多有趣的事情。您可以了解有关相关知识的更多信息,如果您有想法,可以与我沟通。