关于在一张图片中查找目标物体的方法 —— EasyDL和opencv结合使用


1. 概括

  EasyDL是百度AI中一个自动化的深度学习模型训练和服务平台

  使用EasyDL训练得到模型,在python下调用对应模型的api,可以实现对图片上传至云端进行识别,并接收返回的识别结果,再使用opencv通过返回的结果在图片上进行绘制,框出目标物体,还可以得到其中心坐标值
  进一步,其提供了多种部署方式,后面还可以将模型部署到私有云或者本地,可以更方便的拓展使用


2. 使用EasyDL训练模型

使用EasyDL的链接,使用之前需要先注册或登录百度账号,使用百度网盘账号登录也可以,都需要实名才能使用

 点击开始训练,使用经典版,这里以物体检测为例

 先进入我的模型,然后创建模型,填写相关信息即可,下一步,然后就可以可到新的模型已经创建

 需要新创建一个数据集,选择下面的选项之后上传照片,要求图片命名不要有中文名,并且图片的场景最好和后面要识别的场景一样,多个角度,多个光线,25+张照片就可以,不过最好有40+,上传完成之后,点击确认并返回

 可以看到数据集的状态还在处理中,等待处理完成即可;然后点击后面的标注,对需要训练的图片进行标注需要识别的目标物体;先添加标签,不能使用中文名,然后将目标物体框起来,再点击对应的便签即可
 通过多个标签可以做到识别多个目标的目的,然后按下面的保存;接着需要手动点上方图片进行选择下一张需要标注的图片,以此方法对所有图片进行标注即可,完成后回到我的模型页面

 回到我的模型页面,选择下面的训练,选择需要训练的模型,这里以公有云部署为例,添加数据集,开始训练之后,可以在我的模型页面看到训练的状态,还可以设置短信提醒,40张照片的训练预计30分钟左右

 训练完成之后,可以对模型进行检验,然后进行申请上线,这个过程可能也有点久,快的话当天可以完成,最慢就是第二天,可能会有百度云的客服打电话过来询问(类似于推广告吧),最好接一下,说明你是在学习,测试一下,准备做项目,如果她继续问更深入信息,你就说不方便透露,如果有需要再和你们联系就好了


3.在python调用EasyDL的api

 审核结束,然后在我的模型页面,点击服务详情,就可以看到模型的url(后面会用到),然后点击立即使用

 在EasyDL经典版控制台创建应用,填写相关信息即可,然后在应用详情页获取AK和SK

 接着需要获取access_token,使用到上文的AK和SK,及应用详情里的API Key和Secret Key,复制以下链接,将AK和SK修改成自己的(注意是没有【】的),然后用浏览器打开该链接,即可得到access_token,获取access_token这部分也可以在代码中实现

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Android 使用 Java 语言结合 EasyDLOpenCV 实现在图片查找目标物体可以分为以下几个步骤: 1. 首先,您需要创建一个 EasyDL 模型并训练它来识别您想要查找目标物体。您可以使用 EasyDL 提供的图形化界面进行模型训练。训练完成后,您将获得一个模型文件和一个 API Key。 2. 接下来,您需要在 Android 项目添加 EasyDL SDK 的依赖项。您可以在 build.gradle 文件添加以下代码: ``` dependencies { implementation 'com.baidu.ai.edge:edge-sdk:1.0.2' } ``` 3. 然后,您需要在您的代码加载模型并使用它来查找目标物体。以下是一个示例代码: ``` // 加载模型 EasyDL.getInstance().init(context, apiKey); EasyDL.getInstance().loadModel(modelFile); // 加载图片 Mat image = Imgcodecs.imread(imagePath); // 创建 OpenCV 物体检测器 ObjectDetector detector = ObjectDetection.create(); // 检测目标物体 List<DetectedObject> detectedObjects = detector.detect(image); // 处理检测结果 for (DetectedObject detectedObject : detectedObjects) { if (detectedObject.getLabel().equals(targetLabel)) { // 找到了目标物体 Rect boundingBox = detectedObject.getBoundingBox(); // 在图片绘制矩形框 Imgproc.rectangle(image, boundingBox.tl(), boundingBox.br(), new Scalar(0, 255, 0), 2); } } // 显示图片 Bitmap bitmap = Bitmap.createBitmap(image.cols(), image.rows(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(image, bitmap); imageView.setImageBitmap(bitmap); ``` 在这个示例,我们首先加载 EasyDL 模型并使用它来创建一个 OpenCV 物体检测器。然后,我们加载待检测的图片使用检测器查找目标物体。最后,我们处理检测结果并在图片绘制矩形框以标识目标物体

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值