-
原文章:https://www.compdf.com/blog/best-intelligent-document-processing-software1. ComIDPComIDP 是由ComPDFKit开发的智能文档处理解决方案,旨在帮助企业实现数据自动化并提高文档处理效率。这款全面的工具涵盖了整个文档生命周期,包括预处理、识别、分类、数据提取和数据分析,为企业提供可靠的决策支持。它为企业提供标准模型和可定制的 AI 解决方案,以满足其在实现数字化转型方面的特定需求。好处ComIDP拥有专利的版式分析和表格识别功能,适用于各种复杂应用场景,提高文档处理效率。支持导入各种非结构化、半结构化文档并进行结构化处理。基于AI的OCR功能支持70+种语言文档识别,准确率高达95%。如何部署ComIDP解决方案?ComIDP 提供三种部署选项:私有部署、公有云部署和本地部署。无论您的企业需要严格的数据安全性和定制、适合中小型企业的经济高效的解决方案,还是需要无缝集成到大型企业的现有系统和应用程序中,ComIDP都能满足您的需求。通过利用 ComIDP,企业可以显著提高文档协作效率和整体生产力。应用ComIDP为大型模型训练提供高精度数据,从而提升AI性能,同时集成企业业务系统,减少冗余任务,支持工作流自动化。ComIDP可应用于各行各业,例如在金融领域,智能文档处理可以满足企业财务管理需求,在银行领域,ComIDP可以加速信贷审核流程,提高业务处理速度和用户满意度。2. AWSAWS(亚马逊网络服务)智能文档处理 解决方案是一套强大的工具和服务,旨在帮助企业和组织自动化和优化其文档处理流程。整个智能文档处理流程包括几个阶段,首先使用Amazon Textract进行文本和表单识别和提取,然后使用Amazon Comprehend进行智能分析和自动校对,最后将处理后的数据存储在Amazon S3中以供企业集成。3. Automation AnywhereAutomation Anywhere IDP 支持本地和云部署,提供 32 种语言模型,满足企业的文档自动化需求。它可以自动处理 80% 的文档数据,减少人为错误并在数据进入关键业务系统之前进行验证。此外,它还可以帮助企业主动避免与不合规相关的成本。4. Microsoft AzureMicrosoft Azur e Form Recognizer 是一款人工智能文档处理解决方案,可以自动从文档中提取和解析关键信息,实现智能数据处理和管理。从各种类型的文档、表格、收据、发票和卡片中准确提取文本、键值对和表格。具有预构建和自定义 AI 模型,可以从结构化、半结构化和非结构化文档中精确提取字段、复选标记和表格。5. ABBYYABBYY Vantage智能文档处理软件可帮助企业自动处理各种类型的文档,包括结构化、半结构化和非结构化文档。通过利用 ABBYY Vantage 预先训练的 AI 提取模型/技能,企业可以高效处理这些文档类型,同时确保高达 90% 的准确率。该软件可以与其他智能自动化系统无缝集成,例如 Microsoft Power Automate、Blue Prism、UiPath 和 Automation Anywhere。Vantage 还可以监控、衡量和分析所有部署技能的性能,以创建新的学习模型,实现持续改进和优化。6. AppainAppian的智能文档处理技术结合AI,帮助企业优化工作流程、统一数据、提高工作效率。通过将智能文档处理与企业系统集成,不仅可以节省时间,还可以将纸质流程数字化,缩短交易时间。该技术支持AI与RPA、业务规则等结合,实现端到端的全流程自动化,并通过自动化的任务调度和内容处理大幅提高工作吞吐量。......更多内容请查看原文章:https://www.compdf.com/blog/best-intelligent-document-processing-software
-
sam文件是在网上考下来的不知道,哪里出现了问题
-
在opencv中 如何求出一个封闭图像内部的像素点个数有多少个?
-
Q:这是一场什么样的比赛?“挑战杯”全国大学生课外学术科技作品竞赛是由共青团中央、中国科协、教育部、中国社会科学院和全国学联共同主办的全国性的大学生课外学术实践竞赛。“揭榜挂帅”作为“挑战杯”专项赛之一,企业提需求出题,面向高校广发“英雄帖”,学生团队竞争揭榜。旨在促进产教融合,打造校、企、研成果转化为“桥头堡”。Q:谁可以参加这个比赛?有学生赛道和青年科技人才两个赛道;学生赛道:2024年6月1日以前正式注册的全日制非成人教育的各类高等院校在校专科生、本科生、硕士研究生(不含在职研究生)均可申报作品参赛,以个人或团队形式参赛均可。本校硕博连读生(直博生)若在2024年6月1日以前未通过博士资格考试的,可以按研究生学历申报作品。没有实行资格考试制度的学校,前两年可以按硕士学历申报作品。本硕博连读生,按照四年、两年分别对应本、硕申报,后续则不可申报。青年科技人才赛道:在高等学校、科研院所、企业等各类创新主体中工作的、具有一定科研热情和科研能力的青年科技工作者或者在读博士。参赛人员年龄应在18至35周岁,即1989年6月1日至2006年6月1日期间出生。符合高校学生赛道报名条件的在读博士不得参加青年科技人才赛道比赛,高校青年教师在指导学生参赛的同时不得以参赛人员身份参加同一选题比赛,发榜单位及同发榜单位有相关隶属关系单位的青年不得参加本单位选题比赛。Q:怎么报名参加比赛?登录挑战杯官网(https://fxyh-t.bocmartech.com/jbgs/#/login),在线填写报名信息;点击“挑战杯”官网左侧“作品报名”选项,下载报名信息表打印,并加盖学校公章回传至官网;选手需登录华为云大赛平台(学生:cid:link_0;青年科技人才赛道:https://competition.huaweicloud.com/information/1000042071/introduction)进行实名校验;点击华为云大赛平台菜单栏中的“我的团队”,并点击“组建团队”,所有成员都必须完成实名校验并加入该团队。Q:有问题如何求助?论坛发帖求助:比赛过程中参赛选手可以在论坛中发帖,详细描述您遇到的问题,大赛组委会工作人员将会在工作日工作时间09:00-18:00在社区回复(为保证大赛公平公正原则,大赛官方仅针对报名方式、赛制、赛题、大赛安排等问题进行答疑)。赛事交流群求助:请扫描进入交流群,赛事相关资讯也会第一时间在群内同步,请所有报名选手务必加群。 (青年科技人才赛道) (学生赛道)联系大赛工作人员:如没有得到及时回复,可以添加大赛工作人员微信:15889847842(微信号:HW88886712)。Q:华为云AI开发平台的编程语言用的是华为独创的,还是python、C语言等其他编程语言都能兼容?AI开发,还是主流的Python、C++,没有独创的语言。Q:请问项目检测的样品必须是pcb板吗?可以是其他工业样品吗?是PCB板,数据样例集已给出,请见赛事页面。Q:本次比赛是只会提供这样一个小数据集吗?还是后面会有大数据集呢?本次大赛发放的是样例集,选手可以参考样例集缺陷自行寻找或制作开源数据集制作模型。Q:请问一下后期测试数据里是否也是五类缺陷,会不会有其他类别呢?不会了,缺陷种类是一样的。Q:我们需要检测的就是这块pcb板吗?还是说我们可以基于这个平台检测其他物品,缺陷由我们自己来定。赛题确定为PCB板检测,并且缺陷是样例集里固定的几种。Q:训练的材料也是公司这边提供吗?赛事页面已提供样例集,我们选手可以自行寻找合适的开源数据集。Q:评分用的数据集也是和样例数据集一样吗?一张pcb板只会有一种错误,还是说有几种错误同时在一张板子上的情况?是的,缺陷种类一样,初赛是一张板子一种缺陷。Q:大赛中使用的算法是否必须为本人提出的?使用开源的sota方案是否符合要求?初赛不做限制的,看最终的得分。Q:能够用自己买的910来训练吗?也可以,但不推荐,910很贵。Q:为什么我跑提供的初赛指导里面的yolov5,有调用了HAM,但是NPU AI那个调用一直是0%呀?其实 npu有调用,只是训练消耗的不多,有时候只有小一段时间会使用,所以会看到0这种情况。Q:打榜的分数是累计的吗这个每提交一次就有分,取最高分。Q:收费平台是训练的npu和储存两部分吗,代金券用完要分别在两个平台充钱吗收费是包括npu和存储两部分,但是代金券应该是都包含的,所以不用担心。Q:preprocess的入参date一次只包含一张图吗?是的。Q:请问老师样例集和训练集是同分布的吗,还是只有格式是一样的只能说格式一样。
-
能统计鱼池鱼的数量及预估重量
-
【中国,东莞,2023年11月19日】今天,以“创想无限”为主题的2023华为开发者大赛全球总决赛及颁奖典礼在华为松山湖基地圆满落幕。本届大赛开设云底座和产业两大赛道,覆盖中国以及亚太、拉美、欧洲、土耳其等区域,吸引了来自全球30多个国家和地区的19000多名开发者、3000多支团队报名参赛。 在颁奖典礼上,华为颁发了3个金奖、6个银奖、9个铜奖、7个创新奖等超过25个奖项。全球总决赛大合照本届大赛自启动报名以来,备受全球各领域开发者关注,涌现了众多具有丰富想象力和创造力的优秀作品,包括应用华为云盘古大模型和IoT等能力的智慧工地管控平台、基于华为云AI开发生产线ModelArts和端云协同开发的新一代主动式外骨骼康复产品、将华为昇腾和AI技术应用于为特殊人士打造的无障碍智能交流应用、通过华为昇思MindSpore和AI能力打造的阻塞性睡眠呼吸暂停综合征解决方案、以及通过AI技术实现原声语音自动翻译的语言转译系统等。参赛作品由评委团从技术领先性、方案创新性、商业前景等维度进行综合评审,最终评选出获奖作品。在中国赛区的企业赛道,“天图万境”团队凭借“人工智能AI感知视听空间计算技术”作品一举夺魁,荣获银奖的队伍为“深圳前海粤十信息技术有限公司”和“北京聚力维度科技有限公司”,荣获铜奖的队伍为“国蓝中天”“Motphys”“耕耘逐梦”,荣获创新奖的队伍是“万商云集”和 “云天励飞”。中国赛区企业赛道金奖在中国赛区的学生赛道,“IoT智慧铝电解”团队凭借“基于华为云IoT的铝电解能耗监测管理系统”作品荣获金奖,荣获银奖的队伍为“质感队”和 “卓越脑康”,荣获铜奖的队伍为 “一把火”“融创眼援”“智睡芯安”,荣获创新奖的队伍是“郁云守护”和 “郑信智眼队”。中国赛区学生赛道金奖在亚太赛区,“nozama”队伍凭借“Magik(虚实游戏玩具)”作品荣获金奖,荣获银奖的队伍为“DecentraRating”和“Netizen”,荣获铜奖的队伍为 “HeyHi”“SmartAM”“IC”,荣获创新奖的队伍是“Soca.AI”“Aye-Aye”“CyberWhiz”。亚太赛区金奖华为云全球生态部总裁康宁、华为云CTO张宇昕、华为公司战略与产业发展副总裁肖然等嘉宾出席了总决赛颁奖典礼并为获奖队伍颁奖。康宁在致辞中表示:“全球数字经济蓬勃发展,以云为底座的创新生态,以大模型为代表的创新技术,正在加快重塑千行万业。开发者作为创新技术生态体系的核心力量,也迎来了高速发展的新机遇。华为将在多元算力领域、AI领域、云原生核心软件领域持续突破,构筑核心技术新生态,与开发者一路同行,引领数字未来。”张宇昕表示:“开发者是用代码改变世界的人,每个开发者都在引领数字时代,开创智能世界,每个开发者都了不起!华为公司希望提供连接开发者、连接企业、连接投资人的舞台,让更多开发者投入到软件开发、投入到创造新世界的洪流当中;让更多企业开发者创新产品、创造价值、加速企业发展;让更多的资金发现创新机会,创造商业价值。华为云希望和开发者一起,用创新的技术和产品来推动世界进步,创造更加美好的智能世界!”肖然在致辞中阐述了华为在根技术领域的研发投入成果,以及全面助力开发者成功的决心和行动。他表示:“未来,华为将持续加大技术投入和创新,并通过在供应链、标准和人才等领域开放合作、包容发展,与客户、伙伴、标准组织和开发者一起推动整个产业的进步,为各行各业的数字化转型提供技术保障和价值驱动,以推动数字经济的高质量发展。”作为华为ICT领域的顶级赛事,华为开发者大赛旨在面向全球开发者全面开放华为各产业领域的技术成果,鼓励开发者发挥想象力和创新精神,用ICT技术解决实际问题、创造无限价值,与华为一起引领数字未来、共建智能世界。本届大赛总奖金达500万元,除了丰厚的奖金外,华为云同步为每支参赛队伍提供的无门槛云资源券,提供优质课程、沙箱实验等丰富的学习资源扶持和华为云开发者认证券,并通过华为云学堂持续培养和赋能开发者。同时,优秀参赛者还能获得华为云云商店KooGallery、沃土云创计划、初创计划等提供的商业成功扶持。此外,大赛额外设置人才招聘绿色通道,如华为人才市场岗位库,人才双选会门票等资源。一直以来,华为云致力于构建以开发者为核心的、开放共赢的生态体系。目前,华为云全球开发者数量已超过500万人,合作伙伴42000多家,云商店SaaS应用已达10000多个,与全国110多所高校合作培养数万名专业人才,产、学、研、用深度融合,让核心技术生态行稳致远。面向飞速发展的大模型时代,在开发者方面,华为云提供盘古大模型研发工程套件,打造开放模型社区、大模型云学堂,帮助开发者更快实现大模型的开发落地。华为云希望广大开发者基于华为的根技术,利用云上的澎湃算力和盘古大模型的强大能力,共同构建起“百模千态”的繁荣生态。面向未来,华为将加快软、硬、边、端、云等全面融合,协同华为云、鲲鹏、昇腾、鸿蒙等开发生态,持续加大投入研发创新,与全球各领域开发者一起用技术推动世界进步。
-
简介实验项目ModelArts实现智能花卉识别的技术栈为ModelArts+OBS+IAM+ResNet_v1_50实验流程准备数据1.1.创建对象存储OBS进入华为云控制台,将光标移动至左边栏,弹出菜单中选择“服务列表”->“存储”->“对象存储服务OBS”,点击“创建桶”按钮进入创建界面。开始创建。配置参数如下:① 复制桶配置:不选② 区域:华北-北京四③ 桶名称:自定义,将在后续步骤使用④ 数据冗余存储策略:单AZ存储⑤ 默认存储类别:标准存储⑥ 桶策略:私有⑦ 默认加密:关闭⑧ 归档数据直读:关闭单击“立即创建”>“确定”,完成桶创建。点击创建的“桶名称”->“对象”->“新建文件夹”,创建一个文件夹,用于存放后续数据集进入此文件夹,新建两个文件夹,名称自定义,用于存放数据集的输入及输出。如下图所示:1.2.下载数据集在右侧浏览器新建一个标签栏,复制URL:cid:link_0进入AI gallery数据集——四类花卉图像分类小数据集页面,点击右侧下载按钮,下载训练所需的数据集。点击确认,进入下载详情页面,按以下参数填写:下载方式:ModelArts数据集目标区域:华北-北京四数据类型:图片数据集输出位置:选择上步中创建的数据集输出obs存储路径数据集输入位置:选择上步中创建的数据集输入obs存储路径名称:dataset点击“确认”,跳转至我的下载页面,可以查看数据集下载详情,等待数据集下载完成,如下图所示:训练模型接下来将使用训练集对预置的ResNet_v1_50模型进行重训练获取新的模型。回到ModelArts界面,进入左侧导航栏的【AI Gallery】在【AI Gallery】页面点击顶部【算法】进入算法页面,选择算法【图像分类-ResNet_v1_50】(也可在谷歌浏览器新建1个新页签,输入下方链接进入页面点击“前往控制台”,选择“华北-北京四”区域,返回ModelArts-算法管理页面,在我的订阅列表即可看到已订阅的算法。点击下拉按钮,选择最新版本,点击右侧创建训练作业。进入训练作业页面,填写参数如下:① 名称:自定义,如job-flowers② 描述:可不填③ 创建方式:默认选择上步已订阅算法最新版本④ 训练输入:点击右侧数据集,选择已创建的数据集dataset-flowers,点击下拉按钮,勾选版本,点击确认。⑤ 训练输出:点击右侧数据存储位置,在1.1中创建的obs桶中创建一个文件夹,用于存储训练输出,建议选一个空目录。⑥ 超参:默认⑦ 资源池:公共资源池⑧ 资源类型:GPU⑨ 规格:GPU:1*NVIDIA-V100(32GB) | CPU:8核64GB; ⑩ 计算节点个数:1;其他参数默认,点击“提交”,参数确认无误后,单击“确认”,完成训练作业创建。系统自动返回ModelArts-训练作业列表,在“训练作业”列表中,单击作业名称,进入训练作业详情页。在训练作业详情页的左侧,可以查看此次训练作业的基本信息和算法配置的相关信息。在训练作业详情页的右侧,可以查看此次训练作业的系统日志,训练日志窗口提供日志预览、日志下载、日志中搜索关键字能力;以及资源的占用情况。部署模型模型训练完成后,可以创建预测作业,将模型部署为在线预测服务。操作步骤如下:3.1.创建AI应用点击右上角“创建AI应用”,进入创建AI应用页面填写参数如下:名称:model-flowers版本:默认;原模型来源:【从训练中选择】,然后选择步骤2中训练完成的模型;部署类型:在线服务;其他参数默认即可,参数确认无误后,单击“立即创建”,完成模型创建。返回AI应用列表,当AI应用状态为“正常”时,表示创建成功。说明:导入模型约需【3分钟】3.2.部署在线服务点击已创建AI应用名称前的下拉箭头,点击操作列中【部署】,选择部署菜单栏中的【在线服务】。或点击模型名称进入模型详情页,点击详情页右上角的【部署】,在部署菜单中选择【在线服务】。填写参数如下:① 名称:service-flowers② 是否自动停止:默认关闭③ 描述:自定义⑤ 资源池:公共资源池⑥ 选择AI应用及配置:⑦ AI应用来源:我的AI应用⑧ 选择AI应用及版本:默认已选择所创建的模型名称及版本⑨ 计算节点规格:CPU:2核8GB其他配置默认即可。参数设置完成后,单击“下一步”,根据界面提示,点击“提交”,完成在线服务的部署。您可以进入“在线服务列表”页面,等待服务部署结束,当服务状态变为运行中时,表示服务部署成功。说明:部署模型为导入的模型。部署创建完成后,返回列表需要等待部署成功【约等待2分钟】,部署服务状态显示“运行中”,即可进行下一步操作。发起预测请求下载测试图片:https://sandbox-expriment-files.obs.cn-north-1.myhuaweicloud.com:443/20221121/flower.png点击刚刚部署上线(已完成部署)的在线服务名称,进入服务详情,点击“预测”标签,在此可进行在线预测,如下图所示。操作:点击左侧“上传”按钮,选择选择已下载的预测图片文件,点击“预测”完成操作。预测结果如下,识别出了蒲公英。PS:统一身份认证(Identity and Access Management,简称IAM)是华为云提供权限管理的基础服务,可以帮助您安全地控制云服务和资源的访问权限。OBS是一项面向Internet访问的服务,提供了基于HTTP/HTTPS协议的Web服务接口,用户可以随时随地连接到Internet的电脑上,通过OBS管理控制台或各种OBS工具访问和管理存储在OBS中的数据。此外,OBS支持SDK和OBS API接口,可使用户方便管理自己存储在OBS上的数据,以及开发多种类型的上层业务应用。 ModelArts是一个一站式的开发平台,能够支撑开发者从数据到AI应用的全流程开发过程。包含数据处理、模型训练、模型管理、模型部署等操作,并且提供AI Gallery功能,能够在市场内与其他开发者分享模型。更多详细信息可以查看附上的开发文档
-
在课堂中学习了Resnet模型,并根据老师所给程序在ModelArts创建Notebook进行运行。以下是一些学习实践过程及结果的记录与分享:1.Resent的实现(1)导入工具包(2)定义Resent模型(3)获得数据集(4)定义训练过程(基于训练集)(5)定义测试验证(基于验证集)(6)定义超参数(7)开始训练2.运行及测试结果(1)根据所给程序,初始设置batch_size = 1024;learning_rate=0.0001。此时,train loss 和 test loss 随 Epoch 的部分变化结果如下所示:(最终准确率在30%左右)Files already downloaded and verifiedFiles already downloaded and verified================ epoch: 0 ================Epoch: 0, Step 0, Loss: 4.738948345184326Epoch: 0, Step 10, Loss: 4.255447864532471Epoch: 0, Step 20, Loss: 3.9827303886413574Epoch: 0, Step 30, Loss: 3.7523534297943115Epoch: 0, Step 40, Loss: 3.5549187660217285Test Accuracy: 16.689999999999998%================ epoch: 1 ================Epoch: 1, Step 0, Loss: 3.417269706726074Epoch: 1, Step 10, Loss: 3.238386392593384Epoch: 1, Step 20, Loss: 3.1039466857910156Epoch: 1, Step 30, Loss: 2.972597599029541Epoch: 1, Step 40, Loss: 2.856231451034546Test Accuracy: 26.08%================ epoch: 2 ================Epoch: 2, Step 0, Loss: 2.8012454509735107Epoch: 2, Step 10, Loss: 2.572690725326538Epoch: 2, Step 20, Loss: 2.436326503753662Epoch: 2, Step 30, Loss: 2.320054531097412Epoch: 2, Step 40, Loss: 2.2200241088867188Test Accuracy: 29.599999999999998%================ epoch: 3 ================Epoch: 3, Step 0, Loss: 2.1936466693878174Epoch: 3, Step 10, Loss: 1.915575385093689Epoch: 3, Step 20, Loss: 1.7562488317489624Epoch: 3, Step 30, Loss: 1.6630589962005615Epoch: 3, Step 40, Loss: 1.5405477285385132Test Accuracy: 28.74%================ epoch: 4 ================Epoch: 4, Step 0, Loss: 1.4985536336898804Epoch: 4, Step 10, Loss: 1.2820249795913696Epoch: 4, Step 20, Loss: 1.1182427406311035Epoch: 4, Step 30, Loss: 1.054147481918335Epoch: 4, Step 40, Loss: 1.022835612297058Test Accuracy: 26.1%================ epoch: 5 ================Epoch: 5, Step 0, Loss: 0.9999890923500061Epoch: 5, Step 10, Loss: 0.885351300239563Epoch: 5, Step 20, Loss: 0.794113039970398Epoch: 5, Step 30, Loss: 0.7815513014793396Epoch: 5, Step 40, Loss: 0.7719193696975708Test Accuracy: 23.71%================ epoch: 6 ================Epoch: 6, Step 0, Loss: 0.807374894618988Epoch: 6, Step 10, Loss: 0.7296508550643921Epoch: 6, Step 20, Loss: 0.6557181477546692Epoch: 6, Step 30, Loss: 0.5987974405288696Epoch: 6, Step 40, Loss: 0.5647777318954468Test Accuracy: 24.98%================ epoch: 7 ================Epoch: 7, Step 0, Loss: 0.5228223204612732Epoch: 7, Step 10, Loss: 0.521501362323761Epoch: 7, Step 20, Loss: 0.4148188531398773Epoch: 7, Step 30, Loss: 0.3891873359680176Epoch: 7, Step 40, Loss: 0.3635284900665283Test Accuracy: 25.740000000000002%================ epoch: 8 ================Epoch: 8, Step 0, Loss: 0.35147446393966675Epoch: 8, Step 10, Loss: 0.27659207582473755Epoch: 8, Step 20, Loss: 0.2709190845489502Epoch: 8, Step 30, Loss: 0.2323095202445984Epoch: 8, Step 40, Loss: 0.23784960806369781Test Accuracy: 26.39%================ epoch: 9 ================Epoch: 9, Step 0, Loss: 0.22373342514038086Epoch: 9, Step 10, Loss: 0.2217608392238617Epoch: 9, Step 20, Loss: 0.15514764189720154Epoch: 9, Step 30, Loss: 0.16614097356796265Epoch: 9, Step 40, Loss: 0.1333569884300232Test Accuracy: 27.24%================ epoch: 10 ================Epoch: 10, Step 0, Loss: 0.1310970038175583Epoch: 10, Step 10, Loss: 0.10795009136199951Epoch: 10, Step 20, Loss: 0.09246394783258438Epoch: 10, Step 30, Loss: 0.10038184374570847Epoch: 10, Step 40, Loss: 0.09417460858821869Test Accuracy: 27.639999999999997%================ epoch: 11 ================Epoch: 11, Step 0, Loss: 0.07077963650226593Epoch: 11, Step 10, Loss: 0.07666710764169693Epoch: 11, Step 20, Loss: 0.0636228695511818Epoch: 11, Step 30, Loss: 0.04714050889015198Epoch: 11, Step 40, Loss: 0.06018964573740959Test Accuracy: 28.71%================ epoch: 12 ================Epoch: 12, Step 0, Loss: 0.05108068883419037Epoch: 12, Step 10, Loss: 0.04214892536401749Epoch: 12, Step 20, Loss: 0.03265600651502609Epoch: 12, Step 30, Loss: 0.03236588463187218Epoch: 12, Step 40, Loss: 0.03212810680270195Test Accuracy: 28.99%================ epoch: 13 ================Epoch: 13, Step 0, Loss: 0.02681496925652027Epoch: 13, Step 10, Loss: 0.022608093917369843Epoch: 13, Step 20, Loss: 0.01608162187039852Epoch: 13, Step 30, Loss: 0.03622477874159813Epoch: 13, Step 40, Loss: 0.026449179276823997Test Accuracy: 29.470000000000002%================ epoch: 14 ================Epoch: 14, Step 0, Loss: 0.01653885468840599Epoch: 14, Step 10, Loss: 0.010875535197556019Epoch: 14, Step 20, Loss: 0.011256149038672447Epoch: 14, Step 30, Loss: 0.029273658990859985Epoch: 14, Step 40, Loss: 0.032421231269836426Test Accuracy: 29.049999999999997%================ epoch: 15 ================Epoch: 15, Step 0, Loss: 0.013880199752748013Epoch: 15, Step 10, Loss: 0.010487137362360954Epoch: 15, Step 20, Loss: 0.01054014265537262Epoch: 15, Step 30, Loss: 0.02424754574894905Epoch: 15, Step 40, Loss: 0.012607093900442123Test Accuracy: 29.62%================ epoch: 16 ================Epoch: 16, Step 0, Loss: 0.008765900507569313Epoch: 16, Step 10, Loss: 0.007048243656754494Epoch: 16, Step 20, Loss: 0.008071326650679111Epoch: 16, Step 30, Loss: 0.016480540856719017Epoch: 16, Step 40, Loss: 0.011516512371599674Test Accuracy: 30.0%================ epoch: 17 ================Epoch: 17, Step 0, Loss: 0.0064095971174538136Epoch: 17, Step 10, Loss: 0.004685310181230307Epoch: 17, Step 20, Loss: 0.004435277543962002Epoch: 17, Step 30, Loss: 0.017189662903547287Epoch: 17, Step 40, Loss: 0.011844292283058167Test Accuracy: 30.04%================ epoch: 18 ================Epoch: 18, Step 0, Loss: 0.004041185602545738Epoch: 18, Step 10, Loss: 0.004346000961959362Epoch: 18, Step 20, Loss: 0.008933650329709053Epoch: 18, Step 30, Loss: 0.012093418277800083Epoch: 18, Step 40, Loss: 0.008453783579170704Test Accuracy: 30.020000000000003%================ epoch: 19 ================Epoch: 19, Step 0, Loss: 0.003529253415763378Epoch: 19, Step 10, Loss: 0.002985781291499734Epoch: 19, Step 20, Loss: 0.0027229641564190388Epoch: 19, Step 30, Loss: 0.021751798689365387Epoch: 19, Step 40, Loss: 0.00738913007080555Test Accuracy: 30.099999999999998%================ epoch: 20 ================Epoch: 20, Step 0, Loss: 0.003075427608564496Epoch: 20, Step 10, Loss: 0.0026734406128525734Epoch: 20, Step 20, Loss: 0.00244825123809278Epoch: 20, Step 30, Loss: 0.007915157824754715Epoch: 20, Step 40, Loss: 0.006863289512693882Test Accuracy: 30.3%================ epoch: 21 ================Epoch: 21, Step 0, Loss: 0.002420809818431735Epoch: 21, Step 10, Loss: 0.002310082782059908Epoch: 21, Step 20, Loss: 0.002210301114246249Epoch: 21, Step 30, Loss: 0.018848098814487457Epoch: 21, Step 40, Loss: 0.006330176256597042Test Accuracy: 30.240000000000002%================ epoch: 22 ================Epoch: 22, Step 0, Loss: 0.002132808556780219Epoch: 22, Step 10, Loss: 0.002030259696766734Epoch: 22, Step 20, Loss: 0.0019014010904356837Epoch: 22, Step 30, Loss: 0.005129395984113216Epoch: 22, Step 40, Loss: 0.005537337623536587Test Accuracy: 30.270000000000003%================ epoch: 23 ================Epoch: 23, Step 0, Loss: 0.0019582901149988174Epoch: 23, Step 10, Loss: 0.0018943308386951685Epoch: 23, Step 20, Loss: 0.0017575022066012025Epoch: 23, Step 30, Loss: 0.016244899481534958Epoch: 23, Step 40, Loss: 0.005317316856235266Test Accuracy: 30.34%================ epoch: 24 ================Epoch: 24, Step 0, Loss: 0.001790825743228197Epoch: 24, Step 10, Loss: 0.0017201013397425413Epoch: 24, Step 20, Loss: 0.0016320045106112957Epoch: 24, Step 30, Loss: 0.004616044461727142Epoch: 24, Step 40, Loss: 0.005004520528018475Test Accuracy: 30.37%================ epoch: 25 ================Epoch: 25, Step 0, Loss: 0.001665924210101366Epoch: 25, Step 10, Loss: 0.001624491298571229Epoch: 25, Step 20, Loss: 0.0015230735298246145Epoch: 25, Step 30, Loss: 0.012112809345126152Epoch: 25, Step 40, Loss: 0.004875780548900366Test Accuracy: 30.349999999999998%================ epoch: 26 ================Epoch: 26, Step 0, Loss: 0.001563299330882728Epoch: 26, Step 10, Loss: 0.0015107914805412292Epoch: 26, Step 20, Loss: 0.0014351849677041173Epoch: 26, Step 30, Loss: 0.004178904928267002Epoch: 26, Step 40, Loss: 0.0048788730055093765Test Accuracy: 30.36%================ epoch: 27 ================Epoch: 27, Step 0, Loss: 0.0014841527445241809Epoch: 27, Step 10, Loss: 0.0014560072449967265Epoch: 27, Step 20, Loss: 0.0013575487537309527Epoch: 27, Step 30, Loss: 0.012932670302689075Epoch: 27, Step 40, Loss: 0.0047125499695539474Test Accuracy: 30.31%================ epoch: 28 ================Epoch: 28, Step 0, Loss: 0.0013955835020169616Epoch: 28, Step 10, Loss: 0.0013590363087132573Epoch: 28, Step 20, Loss: 0.0012899343855679035Epoch: 28, Step 30, Loss: 0.003891129745170474Epoch: 28, Step 40, Loss: 0.004475367721170187Test Accuracy: 30.3%================ epoch: 29 ================Epoch: 29, Step 0, Loss: 0.0013218162348493934Epoch: 29, Step 10, Loss: 0.0012971273390576243Epoch: 29, Step 20, Loss: 0.0012194958981126547Epoch: 29, Step 30, Loss: 0.010904560796916485Epoch: 29, Step 40, Loss: 0.004483921453356743Test Accuracy: 30.349999999999998%================ epoch: 30 ================Epoch: 30, Step 0, Loss: 0.0012635505991056561Epoch: 30, Step 10, Loss: 0.0012238533236086369Epoch: 30, Step 20, Loss: 0.001171094598248601Epoch: 30, Step 30, Loss: 0.003731002099812031Epoch: 30, Step 40, Loss: 0.004489581100642681Test Accuracy: 30.44%================ epoch: 31 ================Epoch: 31, Step 0, Loss: 0.0012064295588061213Epoch: 31, Step 10, Loss: 0.0011814942117780447Epoch: 31, Step 20, Loss: 0.0011084245052188635Epoch: 31, Step 30, Loss: 0.010918247513473034Epoch: 31, Step 40, Loss: 0.004249677062034607Test Accuracy: 30.44%================ epoch: 32 ================Epoch: 32, Step 0, Loss: 0.0011464636772871017Epoch: 32, Step 10, Loss: 0.0011157296830788255Epoch: 32, Step 20, Loss: 0.0010655020596459508Epoch: 32, Step 30, Loss: 0.0035718355793505907Epoch: 32, Step 40, Loss: 0.004267847631126642Test Accuracy: 30.509999999999998%================ epoch: 33 ================Epoch: 33, Step 0, Loss: 0.0010997997596859932Epoch: 33, Step 10, Loss: 0.0010838627349585295Epoch: 33, Step 20, Loss: 0.0010143746621906757Epoch: 33, Step 30, Loss: 0.010117175057530403Epoch: 33, Step 40, Loss: 0.004162825644016266Test Accuracy: 30.43%================ epoch: 34 ================Epoch: 34, Step 0, Loss: 0.0010507091647014022Epoch: 34, Step 10, Loss: 0.0010267348261550069Epoch: 34, Step 20, Loss: 0.0009758920641615987Epoch: 34, Step 30, Loss: 0.003296484239399433Epoch: 34, Step 40, Loss: 0.004471142776310444Test Accuracy: 30.580000000000002%================ epoch: 35 ================Epoch: 35, Step 0, Loss: 0.0010124717373400927Epoch: 35, Step 10, Loss: 0.0009983875788748264Epoch: 35, Step 20, Loss: 0.0009379943949170411Epoch: 35, Step 30, Loss: 0.010011741891503334Epoch: 35, Step 40, Loss: 0.004122457932680845Test Accuracy: 30.45%================ epoch: 36 ================Epoch: 36, Step 0, Loss: 0.0009714484331198037Epoch: 36, Step 10, Loss: 0.0009493435500189662Epoch: 36, Step 20, Loss: 0.0009067429346032441Epoch: 36, Step 30, Loss: 0.003059440990909934Epoch: 36, Step 40, Loss: 0.003779624355956912Test Accuracy: 30.59%================ epoch: 37 ================Epoch: 37, Step 0, Loss: 0.0009371026535518467Epoch: 37, Step 10, Loss: 0.0009284141124226153Epoch: 37, Step 20, Loss: 0.0008677949081175029Epoch: 37, Step 30, Loss: 0.009749548509716988Epoch: 37, Step 40, Loss: 0.004097274504601955Test Accuracy: 30.44%================ epoch: 38 ================Epoch: 38, Step 0, Loss: 0.0008963147993199527Epoch: 38, Step 10, Loss: 0.0008796583279035985Epoch: 38, Step 20, Loss: 0.0008349142735823989Epoch: 38, Step 30, Loss: 0.0028689114842563868Epoch: 38, Step 40, Loss: 0.0037223438266664743Test Accuracy: 30.53%================ epoch: 39 ================Epoch: 39, Step 0, Loss: 0.0008696657023392618Epoch: 39, Step 10, Loss: 0.0008523689466528594Epoch: 39, Step 20, Loss: 0.0008050688775256276Epoch: 39, Step 30, Loss: 0.009185832925140858Epoch: 39, Step 40, Loss: 0.0039543770253658295Test Accuracy: 30.54%================ epoch: 40 ================Epoch: 40, Step 0, Loss: 0.0008351270807906985Epoch: 40, Step 10, Loss: 0.0008215241250582039Epoch: 40, Step 20, Loss: 0.0007779219304211438Epoch: 40, Step 30, Loss: 0.0026640305295586586Epoch: 40, Step 40, Loss: 0.003869910491630435Test Accuracy: 30.620000000000005%(2)尝试提高最终准确率。选择通过改变一次训练的样本数目以及学习率,以提高最终接近稳定状态下的准确率。其他可以提高准确率的方法有:使用dropout、batch_nomalization等。经过多次尝试,选取以下两种情况进行记录:(最终将接近稳定状态下的准确率从30%提高至50%左右)(2-1)修改一次batch_size = 2048;learning_rate = 0.001此时,train loss 和 test loss 随 Epoch 的部分变化结果如下所示:(最终准确率在45%左右)运行发现在60次训练左右准确率趋于稳定:(截取最后几次训练数据进行展示)================ epoch: 56 ================Epoch: 56, Step 0, Loss: 7.18005103408359e-05Epoch: 56, Step 10, Loss: 7.413411367451772e-05Epoch: 56, Step 20, Loss: 0.001145041431300342Test Accuracy: 45.03%================ epoch: 57 ================Epoch: 57, Step 0, Loss: 6.976973236305639e-05Epoch: 57, Step 10, Loss: 7.286847539944574e-05Epoch: 57, Step 20, Loss: 0.0006657794583588839Test Accuracy: 45.050000000000004%================ epoch: 58 ================Epoch: 58, Step 0, Loss: 6.862186273792759e-05Epoch: 58, Step 10, Loss: 7.077038753777742e-05Epoch: 58, Step 20, Loss: 0.0011522056302055717Test Accuracy: 45.0%================ epoch: 59 ================Epoch: 59, Step 0, Loss: 6.702987593598664e-05Epoch: 59, Step 10, Loss: 6.995741568971425e-05Epoch: 59, Step 20, Loss: 0.0006697141216136515Test Accuracy: 45.129999999999995%================ epoch: 60 ================Epoch: 60, Step 0, Loss: 6.572520942427218e-05Epoch: 60, Step 10, Loss: 6.784420111216605e-05Epoch: 60, Step 20, Loss: 0.0010953237069770694Test Accuracy: 45.08%(2-2)修改一次batch_size = 4096;learning_rate = 0.002此时,train loss 和 test loss 随 Epoch 的部分变化结果如下所示:(最终准确率在49%左右)运行发现在65次训练左右准确率趋于稳定:(截取最后几次训练数据进行展示)================ epoch: 61 ================Epoch: 61, Step 0, Loss: 0.00024627658422105014Epoch: 61, Step 10, Loss: 0.0005478289094753563Test Accuracy: 49.57%================ epoch: 62 ================Epoch: 62, Step 0, Loss: 0.00023818077170290053Epoch: 62, Step 10, Loss: 0.0005578603013418615Test Accuracy: 49.559999999999995%================ epoch: 63 ================Epoch: 63, Step 0, Loss: 0.00023028196301311255Epoch: 63, Step 10, Loss: 0.0005240143509581685Test Accuracy: 49.559999999999995%================ epoch: 64 ================Epoch: 64, Step 0, Loss: 0.0002232123661087826Epoch: 64, Step 10, Loss: 0.0005316751776263118Test Accuracy: 49.54%================ epoch: 65 ================Epoch: 65, Step 0, Loss: 0.00021623082284349948Epoch: 65, Step 10, Loss: 0.0005059240502305329Test Accuracy: 49.64%
-
原本链接import cv2 import numpy as np import matplotlib.pyplot as plt def enable_color(rgb_image,check_image): # h, w = rgb_image.shape[:2] for i in range(0, h - 1): for j in range(0, w - 1): if check_image[i][j] == 255: for k in range(3): rgb_image[i][j][k] = 255 return rgb_image if __name__ =='__main__': img_path = "1.jpg" im = cv2.imread(img_path) gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) background = gray.copy() for i in range(1,5): kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2*i+1,2*i+1)) # print('kernel size is ',kernel) background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel) background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel) diff = background - gray # 计算差距 # cv2.namedWindow('diff',cv2.WINDOW_FREERATIO) # 获取图像中前景背景之差 # cv2.imshow('diff',background) # 阈值分割获取黑色字体 _,bw = cv2.threshold(diff,0,255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) # 阈值分割获取黑色区域 # cv2.namedWindow('bw_before', cv2.WINDOW_FREERATIO) # cv2.imshow('bw_before', bw) _,dark = cv2.threshold(background,0,255,cv2.THRESH_BINARY_INV|cv2.THRESH_OTSU) darkpix = cv2.countNonZero(dark)# 获取 dark非0d图像像素个数 darkpix = [0]*darkpix index = 0 # cv2.namedWindow('gray', cv2.WINDOW_FREERATIO) # cv2.imshow('gray', gray) for r in range(dark.shape[0]): for c in range(dark.shape[1]): if(dark[r][c]): darkpix[index] = gray[r][c] index = index +1 # 阈值分割 dark 区域 因此我们在里面得到更深的像素 darkpix = np.array(darkpix) _,darkpix = cv2.threshold(darkpix,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU) # cv2.namedWindow('darkpix', cv2.WINDOW_FREERATIO) # cv2.imshow('darkpix', darkpix) # 把 取到的像素粘贴到 其渠道的 darker pixels # cv2.namedWindow('dark',cv2.WINDOW_FREERATIO) # cv2.imshow('dark',dark) index = 0 for r in range(dark.shape[0]): for c in range(dark.shape[1]): if (dark[r][c]): bw[r][c] = darkpix[index] index = index +1 # cv2.namedWindow('bw',cv2.WINDOW_FREERATIO) # cv2.imshow('bw',bw) out=enable_color(im, bw) # cv2.namedWindow('out',cv2.WINDOW_FREERATIO) # cv2.imshow('out',out) cv2.imwrite(filename="77__.jpg", img=bw) cv2.imwrite(filename="77__5.jpg",img=out) # cv2.waitKey(0)
-
、# 图像边缘检测1. sobel 算子Sobel算子是一种常用于图像处理和计算机视觉中的边缘检测算法。它用于识别图像中的边缘区域,即图像中灰度值发生剧烈变化的地方。Sobel算子基于图像的灰度梯度,通过计算每个像素点周围像素的灰度值差异,来确定边缘的位置和方向。Sobel算子主要由两个3x3的矩阵组成,分别用于计算图像在水平和垂直方向的梯度。这两个矩阵通常被称为Sobel算子模板或卷积核。下面是水平和垂直方向的Sobel算子模板示例:水平方向Sobel算子模板(Gx):-1 0 1 -2 0 2 -1 0 1垂直方向Sobel算子模板(Gy):-1 -2 -1 0 0 0 1 2 1Sobel算子的计算过程如下:首先,将Sobel算子模板与图像的每个像素进行卷积操作。对于每个像素,将其与周围的8个像素进行乘法运算,然后将乘积相加得到一个结果。 对于水平方向的Sobel算子,将像素与模板进行乘法运算后相加的结果表示图像在水平方向上的梯度。 对于垂直方向的Sobel算子,将像素与模板进行乘法运算后相加的结果表示图像在垂直方向上的梯度。 在水平和垂直方向上的梯度计算完成后,可以通过以下公式来计算图像中每个像素的梯度幅值和梯度方向: 梯度幅值(G):G = sqrt(Gx^2 + Gy^2) 梯度方向(θ):θ = atan2(Gy, Gx) 最后,可以根据梯度幅值进行边缘检测。一般来说,梯度幅值越大的像素点,很可能是图像中的边缘点。Sobel算子是一种简单而有效的边缘检测算法,常用于图像处理任务中。它可以帮助我们在图像中找到边缘信息,并在计算机视觉领域中的对象检测、图像分割等任务中发挥重要作用。1. 2sobel 算子(cv2实现)import cv2 import numpy as np # 读取图像 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 计算水平方向和垂直方向上的Sobel梯度 sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3) sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3) # 将梯度值转换为绝对值 sobel_x = np.absolute(sobel_x) sobel_y = np.absolute(sobel_y) # 将梯度值缩放到0-255范围内 sobel_x = np.uint8(sobel_x) sobel_y = np.uint8(sobel_y) # 将水平和垂直方向上的梯度值合并 sobel_combined = cv2.bitwise_or(sobel_x, sobel_y) # 显示原始图像和Sobel边缘检测结果 cv2.imshow('Original Image', image) cv2.imshow('Sobel X', sobel_x) cv2.imshow('Sobel Y', sobel_y) cv2.imshow('Sobel Combined', sobel_combined) cv2.waitKey(0) cv2.destroyAllWindows() # 函数cv2.Sobel()用于计算图像的Sobel梯度。下面是该函数的参数及其含义的解释: # image:输入图像。这应该是一个单通道灰度图像(如使用参数cv2.IMREAD_GRAYSCALE加载的图像),或者可以是多通道图像,其中仅考虑一个通道进行边缘检测。 # cv2.CV_64F:输出图像的数据类型。这里我们使用cv2.CV_64F表示64位浮点型数据,以便在计算梯度时能够保留负数值。 # 1:x方向上的差分阶数。这指定了在x方向上计算梯度时使用的差分阶数,设置为1表示使用一阶导数。 # 0:y方向上的差分阶数。这指定了在y方向上计算梯度时使用的差分阶数,设置为0表示不在y方向上计算梯度。 # ksize=3:Sobel算子的卷积核大小。它定义了在计算梯度时要使用的卷积核的大小。在这种情况下,ksize=3表示使用一个3x3的卷积核。 # 请注意,Sobel算子可以在x方向和y方向上分别计算梯度,通过使用不同的差分阶数来指定。在上述示例中,我们选择在x方向上计算一阶导数(水平方向) # ,而在y方向上不计算梯度。这是因为Sobel算子通常用于检测图像中的水平边缘。如果您希望检测垂直边缘,可以将x和y方向的差分阶数进行交换。2. Prewitt算子Prewitt算子是一种常用于图像处理和计算机视觉中的边缘检测算法,类似于Sobel算子。它也用于检测图像中的边缘区域,即图像中灰度值发生剧烈变化的地方。Prewitt算子基于图像的灰度梯度,通过计算每个像素点周围像素的灰度值差异来确定边缘的位置和方向。Prewitt算子与Sobel算子类似,都使用两个3x3的矩阵来计算图像的梯度。下面是水平和垂直方向的Prewitt算子模板示例:水平方向Prewitt算子模板(Gx):-1 0 1 -1 0 1 -1 0 1垂直方向Prewitt算子模板(Gy):-1 -1 -1 0 0 0 1 1 1Prewitt算子的计算过程与Sobel算子类似:首先,将Prewitt算子模板与图像的每个像素进行卷积操作。对于每个像素,将其与周围的8个像素进行乘法运算,然后将乘积相加得到一个结果。 对于水平方向的Prewitt算子,将像素与模板进行乘法运算后相加的结果表示图像在水平方向上的梯度。 对于垂直方向的Prewitt算子,将像素与模板进行乘法运算后相加的结果表示图像在垂直方向上的梯度。 可以通过以下公式计算图像中每个像素的梯度幅值和梯度方向: 梯度幅值(G):G = sqrt(Gx^2 + Gy^2) 梯度方向(θ):θ = atan2(Gy, Gx) 最后,可以根据梯度幅值进行边缘检测。梯度幅值较大的像素点可能表示图像中的边缘点。Prewitt算子与Sobel算子相比,差别较小。它们的模板略有不同,因此在某些情况下,Prewitt算子可能产生略微不同的边缘检测结果。在实际应用中,您可以根据任务的要求选择使用Sobel算子还是Prewitt算子。2.2 Prewitt算子(cv2实现)import cv2 import numpy as np # 读取图像 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 构建Prewitt算子的卷积核 kernel_x = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]], dtype=np.float32) kernel_y = np.array([[-1, -1, -1], [0, 0, 0], [1, 1, 1]], dtype=np.float32) # 使用filter2D函数进行卷积运算 prewitt_x = cv2.filter2D(image, -1, kernel_x) prewitt_y = cv2.filter2D(image, -1, kernel_y) # 将梯度值转换为绝对值 prewitt_x = np.absolute(prewitt_x) prewitt_y = np.absolute(prewitt_y) # 将梯度值缩放到0-255范围内 prewitt_x = np.uint8(prewitt_x) prewitt_y = np.uint8(prewitt_y) # 将水平和垂直方向上的梯度值合并 prewitt_combined = cv2.bitwise_or(prewitt_x, prewitt_y) # 显示原始图像和Prewitt边缘检测结果 cv2.imshow('Original Image', image) cv2.imshow('Prewitt X', prewitt_x) cv2.imshow('Prewitt Y', prewitt_y) cv2.imshow('Prewitt Combined', prewitt_combined) cv2.waitKey(0) cv2.destroyAllWindows()2.3 Prewitt算子与sobel算子对比Sobel算子和Prewitt算子是两种常用的边缘检测算子,它们在计算边缘梯度时略有不同。下面是Sobel算子和Prewitt算子之间的主要差别: 1 模板差异: Sobel算子的水平方向和垂直方向的模板分别为:Gx = [[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]] Gy = [[-1, -2, -1], [ 0, 0, 0], [ 1, 2, 1]]Prewitt算子的水平方向和垂直方向的模板分别为:Gx = [[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]] Gy = [[-1, -1, -1], [ 0, 0, 0], [ 1, 1, 1]]2 灵敏度差异: Sobel算子的模板在中心位置权重较大,因此对中心像素的梯度响应更为敏感。 Prewitt算子的模板在水平和垂直方向上的权重相等,对中心像素和周围像素的梯度响应相对均衡。 3 梯度估计: 由于Sobel算子的模板权重较大,它更适合在边缘具有较高对比度的图像中进行梯度估计。 Prewitt算子在边缘具有较弱对比度的图像中也能提供较好的梯度估计。 4 计算效率: 由于Sobel算子的模板中存在更多非零权重,计算Sobel算子的梯度可能稍微更为耗时。 Prewitt算子的模板中非零权重较少,计算Prewitt算子的梯度相对较快。3. canny算子Canny算子是一种常用的边缘检测算法,由John F. Canny于1986年提出。它被广泛应用于计算机视觉和图像处理领域,用于检测图像中的边缘。Canny算子在边缘检测中具有较高的准确性和良好的噪声抑制能力。Canny算子的边缘检测过程包括以下几个步骤:1:噪声抑制: 首先,对输入图像进行高斯滤波以减少噪声的影响。高斯滤波平滑图像,通过计算每个像素周围邻域内像素的加权平均值来达到这一目的。2:梯度计算: 然后,使用Sobel算子计算图像的梯度。Sobel算子分别在水平和垂直方向上对图像进行卷积操作,得到每个像素点的梯度强度和梯度方向。3:非极大值抑制: 接下来,执行非极大值抑制来细化边缘。对于每个像素点,根据其梯度方向,检查它是否为该方向上局部梯度的极大值。如果不是极大值,则被抑制。4:双阈值处理: 通过双阈值处理来确定真正的边缘。设置两个阈值:低阈值和高阈值。根据像素的梯度强度,将像素分为强边缘、弱边缘和非边缘三类。只有当像素的梯度强度超过高阈值时,才被认为是强边缘。如果像素的梯度强度低于低阈值,则被视为非边缘。位于两个阈值之间的像素被认为是弱边缘。可以选择执行边缘连接来连接强边缘与与之相邻的弱边缘。5:边缘连接: 可选的边缘连接步骤可以通过将弱边缘与相邻的强边缘连接起来,从而形成完整的边缘。这可以通过在弱边缘的邻域内查找强边缘来实现。Canny算子的输出结果是二进制图像,其中边缘像素被标记为白色(255),非边缘像素被标记为黑色(0)。3.2 非极大值抑制非极大值抑制(Non-Maximum Suppression,简称NMS)是Canny边缘检测算法中的一个重要步骤,用于细化边缘并保留边缘的细节信息。该步骤通过在梯度方向上进行比较,仅保留局部梯度的极大值,将非极大值抑制。以下是非极大值抑制的详细步骤:梯度计算: 首先,在Canny算子的边缘检测过程中,通过应用Sobel算子计算图像的梯度。这会得到每个像素点的梯度强度(Gradient Magnitude)和梯度方向(Gradient Direction)。梯度方向量化: 将梯度方向量化为四个主要方向之一:0°(垂直)、45°(对角线)、90°(水平)和135°(对角线)。这样可以将梯度方向划分为四个离散的方向。非极大值抑制: 对于每个像素点,沿着梯度方向的正负两个方向上比较其梯度强度。如果该像素点的梯度强度大于其两侧的像素点(在梯度方向上)的梯度强度,则保留该像素点。否则,将其抑制为非边缘点。具体步骤如下:对于每个像素点P,找到其相邻的两个像素点(在梯度方向上),即正方向像素点和负方向像素点。 检查像素点P的梯度强度是否大于这两个相邻像素点的梯度强度。如果是,则保留像素点P为边缘点。否则,将像素点P抑制为非边缘点。 这个过程将会细化边缘,并保留了局部梯度的极大值,去除了不符合极大值条件的非边缘像素。非极大值抑制的结果是一个二值图像,其中只有边缘像素被标记为白色(255),非边缘像素被标记为黑色(0)。通过应用非极大值抑制,Canny算子可以在梯度方向上细化边缘,使其变得更细,并保留了边缘的细节信息。这一步骤对于提高边缘检测的准确性和保留重要边缘特征至关重要。3.3canny算子cv代码import cv2 # 读取图像 image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 高斯滤波 blurred = cv2.GaussianBlur(image, (5, 5), 0) # 计算梯度 gradient = cv2.Canny(blurred, 50, 150) # 低阈值和高阈值 # 显示结果 cv2.imshow('Original Image', image) cv2.imshow('Canny Edge Detection', gradient) cv2.waitKey(0) cv2.destroyAllWindows()使用cv2.imread()函数读取图像,并将其转换为灰度图像(使用cv2.IMREAD_GRAYSCALE参数)。 对图像进行高斯滤波,通过cv2.GaussianBlur()函数实现。这一步骤可以减少噪声对边缘检测的影响。函数的第二个参数是滤波器的大小,这里设置为(5, 5),第三个参数是高斯核的标准差,设置为0表示根据滤波器大小自动计算。 使用cv2.Canny()函数进行Canny边缘检测。函数的第二个和第三个参数是低阈值和高阈值,根据图像的特性可以调整这两个阈值。一般来说,低阈值用于边缘连接,高阈值用于边缘起始。 最后,使用cv2.imshow()函数显示原始图像和Canny边缘检测结果。 注意:在运行代码之前,需要将image.jpg替换为实际的图像文件路径。4 Roberts算子Roberts算子是一种经典的边缘检测算子,用于在图像中检测边缘。它是由Lawrence Roberts于1963年提出的。Roberts算子基于离散微分的概念,通过计算像素点与其邻域像素之间的差异来确定边缘的存在。Roberts算子使用两个2×2的卷积核来计算图像的水平和垂直梯度。这两个卷积核如下:水平梯度卷积核(Gx): 1 0 0 -1垂直梯度卷积核(Gy): 0 1 -1 0Roberts算子的边缘检测步骤如下:将输入图像转换为灰度图像(如果不是灰度图像)。对灰度图像分别使用水平梯度卷积核(Gx)和垂直梯度卷积核(Gy)进行卷积操作,得到水平梯度图像和垂直梯度图像。计算边缘强度图像。可以使用以下公式计算每个像素点的边缘强度:edge_strength = sqrt(Gx^2 + Gy^2)其中,Gx和Gy分别为水平梯度图像和垂直梯度图像中的像素值。可选的阈值处理:根据设定的阈值,将边缘强度图像进行阈值处理,将高于阈值的像素标记为边缘点,低于阈值的像素标记为非边缘点。Roberts算子的输出结果是一个二值图像,其中边缘像素被标记为白色(255),非边缘像素被标记为黑色(0)。尽管Roberts算子是边缘检测的一种基础算子,但由于其简单性和计算效率,仍然在某些场景下使用。然而,它对于噪声敏感,并且在边缘检测的准确性和连续性方面可能不如其他更高级的算子(如Sobel、Prewitt和Canny等)。
-
一、简介本项目主要运用华为云 EI 的 ModelArts 的自动学习以及云对象存储的 OBS,实现简单的垃圾分类系统。二、内容描述本垃圾分类图像识别系统主要通过创建图像分类自动学习项目,进行数据标注,进行自动训练和部署测试,再到最后的结束测试。 三、主要流程四、图像分类任务介绍ModelArts 服务之自动学习图像分类项目,是对图像进行检测分类。添加图片并对图像进行分类标注,每个分类识别一种类型的图像。完成图片标注后开始自动训练,即可快速生成图像分类模型。可应用于商品的自动识别、运输车辆种类识别和残次品的自动检测。例如质量检查的场景,则可以上传产品图片,将图片标注“合格”、“不合格”,通过训练部署模型,实现产品的质检。五、系统创建1、创建项目2、添加图片3、数据标注进行“一次性快餐盒-其他垃圾” 的数据标注。 先将左下角的数字选择为 45, 点击图片选择同类的图片(一次可以选择一张或者多张),在标签名栏填写当前选择图片的标签(已有的标签可以直接选择) , 输入标签名, 点击确定。4、自动训练5、部署测试预测结果:
-
3.0版本在部分W11系统上安装并激活后之出现这个提示,还有OCR的ID和Key运行提示接口有问题,ID和Key没有输错gaom0312 发表于2023-09-20 10:48:15 2023-09-20 10:48:15 最后回复 We are WeAutomate 2023-09-21 10:42:59197 4
-
【功能模块】ruyistudio版本:2.0.24 Release Build id: 201807271740【操作步骤&问题现象】1、将caffemodel 和prototxt 转WK文件的时候,因为是tensorflow->onnx->caffe,在tensorflow中有tf.tile() 操作,所以转出来的caffemodel中也有对应的Tile 节点,请问这个应该怎么配置呢,输入的是npy文件还是一个二进制文件或者是其他,可以提供类似的脚本吗,这个Tile 节点是把(1,1,1,128)向量转成(1,1,94,128)的向量【截图信息】
上滑加载中
推荐直播
-
全面解析华为云EI-API服务:理论基础与实践应用指南
2024/11/29 周五 18:20-20:20
Alex 华为云学堂技术讲师
本期直播给大家带来的是理论与实践结合的华为云EI-API的服务介绍。从“主要功能,应用场景,实践案例,调用流程”四个维度来深入解析“语音交互API,文字识别API,自然语言处理API,图像识别API及图像搜索API”五大场景下API服务,同时结合实验,来加深开发者对API服务理解。
去报名 -
企业员工、应届毕业生、在读研究生共探项目实践
2024/12/02 周一 19:00-21:00
姚圣伟 在职软件工程师 昇腾社区优秀开发者 华为云云享专家 HCDG天津地区发起人
大神带你一键了解和掌握LeakyReLU自定义算子在ONNX网络中应用和优化技巧,在线分享如何入门,以及在工作中如何结合实际项目进行学习
即将直播 -
昇腾云服务ModelArts深度解析:理论基础与实践应用指南
2024/12/03 周二 14:30-16:30
Alex 华为云学堂技术讲师
如何快速创建和部署模型,管理全周期AI工作流呢?本期直播聚焦华为昇腾云服务ModelArts一站式AI开发平台功能介绍,同时结合基于ModelArts 的实践性实验,帮助开发者从理论到实验更好地理解和使用ModelArts。
去报名
热门标签