如何一步让你图像分类达到90%以上精准度

2023-05-16

这段时间一直在做图像分类相关的项目,也认识了很多这个领域的小伙伴们,有不少小伙伴们都是刚接触图像分类,对着各种个样的图像分类算法:AlexNet、VGG-16、VGG-19、ResNet…都是一脸茫然,到底针对我的图像分类项目,选哪个算法好呢,同时又能保证我的算法精准度呢?

今天就给大家分享,如何简单一步让你图像分类达到90%以上精准度,那就是使用百度EasyDL。

官方参考链接: 百度EasyDL图像分类介绍.

EasyDL简介

EasyDL是百度大脑推出的零门槛AI开发平台,面向各行各业有定制AI需求、零算法基础或者追求高效率开发AI的企业用户。支持包括数据管理与数据标注、模型训练、模型部署的一站式AI开发流程,原始图片、文本、音频、视频等数据,经过EasyDL加工、学习、部署,可通过公有云API调用,或部署在本地服务器、小型设备、软硬一体方案的专项适配硬件上,通过SDK或API进一步集成。

EasyDL优势——零门槛一站式AI服务

我觉得EasyDL最重要的优势就是非常友好,几乎对于刚入门图像分类的小伙伴们是零门槛。

EasyDL提供围绕AI服务开发的端到端的一站式AI开发和部署平台,包括数据上传、数据标注、训练任务配置及调参、模型效果评估、模型部署。平台设计简约,极易理解,最快5分钟即可上手,10分钟完成模型训练。

使用流程

让我们来看下百度大脑是如何让我们迅速建立高精准度的图像分类模型吧!
流程具体有4个简单步骤:
百度EasyDL使用流程

数据准备

创建图像分类数据集

首先想好分类如何设计,每个分类为你希望识别出的一种结果,如要识别水果,则可以以“apple”、“pear”等分别作为一个分类;如果是审核的场景判断合规性,可以以“qualified”、“unqualified”设计为两类,或者“qualified”、“unqualified1”、“unqualified2”、“unqualified3”……设计为多类。

注意:目前单个模型的分类上限为1000类

准备数据
基于设计好的分类准备图片:

  • 每个分类需要准备20张以上
  • 如果想要较好的效果,建议每个分类准备不少于100张图片
  • 如果不同分类的图片具有相似性,需要增加更多图片
  • 一个模型的图片总量限制10万张

图片格式要求:

  • 目前支持图片类型为png、jpg、bmp、jpeg,图片大小限制在4M以内
  • 图片长宽比在3:1以内,其中最长边小于4096px,最短边大于30px

图片内容要求:
1、训练图片和实际场景要识别的图片拍摄环境一致,举例:如果实际要识别的图片是摄像头俯拍的,那训练图片就不能用网上下载的目标正面图片
2、每个分类的图片需要覆盖实际场景里面的可能性,如拍照角度、光线明暗的变化,训练集覆盖的场景越多,模型的泛化能力越强

如果训练图片场景无法全部覆盖实际场景要识别的图片:1)如果要识别的主体在图片中占比较大,模型本身的泛化能力可以保证模型的效果不受很大影响;2)如果识别的主体在图片中占比较小,且实际环境很复杂无法覆盖全部的场景,建议用物体检测的模型来解决问题(物体检测可以支持将要识别的主体从训练图片中框出的方式来标注,所以能适应更泛化的场景和环境)。

EasyData数据服务中上传数据集

大家可以按以下流程上传数据集

  1. 创建数据集

创建数据集

  1. 导入数据集

导入数据集
导入数据
就这样简单几步就导入了训练集了,导入后,可以在EasyData数据服务中对导入的训练集进行数据质检报告、数据标注、数据清洗等操作,这点百度为大家考虑得还是很周到的,基本就是算法都集成到了系统里面,可以傻瓜化操作。*PS:*小伙伴们还可以使用这些功能,对自己对训练集数据清洗处理后再导出哦。

图像分类创建模型

数据集准备好后,就可以在模型中心,直接创立训练模型开始训练了。
不过目前单个用户在每种类型的模型下最多可创建10个模型,每个模型均支持多次训练。
图像分类创建模型

训练模型

选择训练方式

百度给大家准备了两种训练方式:可分别选择「公有云API」、「EasyEdge本地部署」进行训练。
训练模型
而且可以根据自己需求,选择训练的算法类型:
不同的部署方式下,可以选择不同的算法。每个算法旁边有一个小问号,可以查看详细说明。
例如:选择「公有云API」后,可以在「高精度」、「高性能」、「AutoDL Transfer」3种算法中选择。鼠标移动到「AutoDL Transfer」右侧的问号上,可以看到对AutoDL算法的详细说明。
通常,高精度模型在识别准确率上表现较好,但在识别速度上表现较弱。高性能模型反之。

添加数据集

下一步就是添加在EasyData数据服务中上传的数据集了。
先选择数据集,再按分类选择数据集里的图片,可从多个数据集选择图片
训练时间与数据量大小有关,1000张图片可以在30min内训练完成。
Tips:

  • 如只有1个分类需要识别,或者实际业务场景所要识别的图片内容不可控,可以在训练前勾选"增加识别结果为[其他]的默认分类"。勾选后,模型会将与训练集无关的图片识别为"其他"
  • 如果同一个分类的数据分散在不同的数据集里,可以在训练时同时从这些数据集里选择分类,模型训练时会合并分类名称相同的图片

训练模型

点击「开始训练」,训练模型。

  • 训练时间与数据量大小有关,1000张图片可以在30min内训练完成。
  • 模型训练过程中,可以设置训练完成的短信提醒并离开页面。

模型效果评估

可通过模型评估报告或模型校验了解模型效果:

  • 模型评估报告:训练完成后,可以在【我的模型】列表中看到模型效果,以及详细的模型评估报告。
  • 模型在线校验:可以在左侧导航中找到【校验模型】,在线校验模型效果。校验功能示意图:

整体评估
详细评估
定位易混淆分类
易混淆分类示例图
总之,百度的图像分类模型效果评估,还是非常强大的,基本可以确认好下一步训练集的收集处理方向,便于更高地提高精度。PS:刚入门的小伙伴们也可以运用好这个功能,为自己训练集整理方向提供参考哦

具体想要提升模型效果,可以尝试以下两种方法:
检查并优化训练数据

  • 检查是否存在训练数据过少的情况,建议每个类别的图片量不少于100个,如果低于这个量级建议扩充。
  • 检查不同类别的数据量是否均衡,建议不同分类的数据量级相同,并尽量接近,如果有的类别数据量很高,有的类别数据量较低,会影响模型整体的识别效果。
  • 通过模型效果评估报告中的错误识别示例,有针对性地扩充训练数据。
    检查测试模型的数据与训练数据的采集来源是否一致,如果设备不一致、或者采集的环境不一致,那么很可能会存在模型效果不错但实际测试效果较差的情况。针对这种情况建议重新调整训练集,将训练数据与实际业务场景数据尽可能一致。

模型发布

训练完毕后可以在左侧导航栏中找到【发布模型】,依次进行以下操作即可发布公有云API。篇幅有限,这里仅介绍公有云API发布方式,其它模型部署方式请参考文末提供的百度官方链接。

  • 选择模型
  • 选择部署方式「公有云部署」
  • 选择版本
  • 自定义服务名称、接口地址后缀
  • 申请发布
    发布模型

图像分类API调用文档

接口鉴权

1、在EasyDL控制台创建应用
创建应用
2、应用详情页获取AK SK
应用详情页获取AK SK
3、通过API Key和Secret Key获取的access_token

# encoding:utf-8
import requests 

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
response = requests.get(host)
if response:
    print(response.json())

4、请求API说明
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
提示三:请求image参数为base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,注意请去掉头部。

# encoding:utf-8
import urllib2
import base64
import json

'''
easydl图像分类
'''

request_url = "【接口地址】"

with open("image.jpg", 'rb') as f:
    base64_data = base64.b64encode(f.read())
    s = base64_data.decode('UTF8')

params = {"image": s, "top_num": "5"}
params = json.dumps(params)
access_token = '[调用鉴权接口获取的token]'
request_url = request_url + "?access_token=" + access_token
request = urllib2.Request(url=request_url, data=params)
request.add_header('Content-Type', 'application/json')
response = urllib2.urlopen(request)
content = response.read()
if content:
    print content

本文只供大家学习相关知识使用,不以任何商业盈利为目的,转载或分享请注明相关来源。如涉及到相关侵权,请联系我删除。

欢迎志同道合者互相交流学习,微信:Zhihua_Steven

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何一步让你图像分类达到90%以上精准度 的相关文章

  • 原生OKHttp以及OKHttpUtil的使用

    Android系统提供了两种HTTP通信类 xff0c HttpURLConnection和HttpClient 尽管Google在大部分安卓版本中推荐使用HttpURLConnection xff0c 但是这个类相比HttpClient实
  • c++编译器配置错误问题clang: error: linker command failed with exit code 1 (use -v to see invocation)

    背景 xff1a ubuntu18 04系统 之前装其他程序的时候安装了一些软件 xff0c 不知道什么时候g 43 43 编译器从 usr bin c 43 43 组里面给删掉了 xff0c 默认的编译器成了clang 43 43 xff
  • apollo7.0------浅谈激光雷达运动补偿(二)--计算解析

    背景介绍 运动补偿相关介绍参考第一篇博客 xff1a apollo7 0 浅谈激光雷达运动补偿 龙性的腾飞的博客 CSDN博客 lidar运动补偿 本篇博客主要解释一下上篇博客中运动补偿的计算部分 xff0c 简单来说就是一个利用四元数球面
  • Matlab激光雷达相机联合标定经验分享

    一 背景介绍 联合标定是做多传感器融合的基础工作 xff0c 也是一个没有最好只有更好的研究方向 xff0c 相关论文也是层出不穷 xff0c 网上也有许多开源的工作 xff0c 包括Autoware的工具箱我也试过 xff0c 感觉标定效
  • 如何更改Ubuntu系统的输出为HDMI(耳机,扬声器)?

    由于需要用HDMI外接音频设备 xff0c 故想要改变电脑输出 xff0c 本人用的为Ubuntu14 04 开始在网上搜寻怎么更改 xff0c 查到需在声音设置里面更改音频输出为HDMI xff0c 可当我打开声音设置 xff0c 嗯 x
  • PPT中插入图片背景透明化小技巧

    新版的编辑器真不适应 xff0c 费劲 xff01 xff01 xff01 最近两天做开题答辩ppt xff0c 发现了ppt中处理图片背景的一个小技巧 xff0c 在此分享给大家 PPT一般会带有背景图片 xff0c 那种带浅色调logo
  • ROS发布Float32MultiArray消息C++/Python

    在ros下发布一个字符串消息或整数消息 xff0c 网上例程不少 xff0c ROSwiki上也有教程 xff0c 有时就需要一次发送不止一个数据 xff0c 这时候就得用到数组了 xff0c C 43 43 的也好找 xff0c 不过py
  • c++中string、char *、char[]相互转换

    一 string转char 主要有三种方法可以将str转换为char 类型 xff0c 分别是 xff1a data c str copy 其中 xff0c copy 可能会报安全性错误 xff0c 自行解决即可 3 1 data 方法 s
  • char数组与char指针

    转载来源 xff1a https www cnblogs com nzbbody p 3553222 html https blog csdn net jack 20 article details 78913202 一 0 的添加 存在的
  • linux下tcpdump的使用

    简介 用简单的话来定义tcpdump xff0c 就是 xff1a dump the traffic on a network xff0c 根据使用者的定义对网络上的数据包进行截获的包分析工具 tcpdump可以将网络中传送的数据包的 头
  • khadas vim3安装ros1

    khadas vim3 按照网上的方法可以正常安装ros2 xff0c 但是按照ros1则可能会有一些奇奇怪怪的问题导致按照失败 xff0c 不过在一位群友的帮助下 xff0c 找到了解决的方法 khadas vim3 将源换为下面 xff
  • 【Android】CMake添加多个c文件

    1 准备工作 先下相关的插件 xff0c 进入setting xff0c 勾选这LLDB NDK CMake三个 xff0c 点击OK后即可下载 2 Native C 43 43 工程 简单总结一下CMake使用的操作步骤 1 新建Nati
  • 什么是字节序(端序、低端字节序、高端字节序、网络字节序)

    前言 一个内容为12 xff08 字符串 xff09 的文本文件 xff0c 它的第一个字节是什么 xff08 小端序 xff09 xff1f 如果你的回答是0x32 xff0c 那你真的应该好好理解下字节序了 如下图所示 xff0c 我这
  • APM中电机输出分析

    一 APM类分析 老规矩 xff0c 先上类图 xff08 1 xff09 如图 xff08 1 xff09 所示 xff0c AP Motors是大部分电机类的父类 xff0c 是AC AttitudeControl姿态控制类的保护型成员
  • 解决安装ROS时出现的sudo rosdep init错误问题

    解决安装ROS时出现的sudo rosdep init错误问题 目前安装ROS时输入sudo rosdep init的命令时 xff0c 可能会出现以下的错误 xff1a ERROR cannot download default sour
  • JS实现HTTP请求头-Basic Authorization

    HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证 xff0c 通常会在服务器返回401 Unauthorized 状态码以及WWW Authenticate 消息头之后在后续请求中发送此消息头 A
  • C语言Post和Get方法 ,拿过去直接用

    C语言post 和get 方法的实现 我自己实现的post 和get 请求方法 xff0c 可以直接使用在单片机上 xff0c 比如ESP32 上 xff0c OPl1000 上面 xff0c 下面直接上代码 span class toke
  • QT中图表类QChart系列之(1)-基本用法,画折线图、各个类之间的关系

    参考 xff1a https www cnblogs com yunhaisoft p 5180127 html 首先要注意3点 xff1a xff08 1 xff09 在 pro文件中添加 xff1a QT 43 61 charts xf
  • STM32使用FIFO实现USART串口发送中断

    fifo就不要造轮子了 xff0c 用现成的就行了 linux内核中有目前人类写出的基于c语言的最强FIFO xff0c 请自行搜索学习 巧夺天工的kfifo xff0c kfifo精妙无比 xff0c 实在是高 xff0c 其中用到的环回
  • c++的json读取操作

    使用的开源库是nlohmann json 后续操作也都是基于该开源库操作 本地json文件如下 xff1a 34 model config 34 34 model type 34 34 paddlex 34 34 model cfg fil

随机推荐

  • 三维重建了解

    一 三维重建方法 1 1 传统方法 RGBD D来源结构光或者TOF xff1a 缺点 xff0c 重建范围受限 xff0c 一般不能重建大模型 xff1b 比如 xff0c kinectFusion xff0c DynamicFusion
  • docker容器常用命令

    一 常用命令 显示本地镜像 xff1a docker images 显示已经启动的容器 xff1a docker ps a 从docker hub拉取镜像 reed98 airsim v0是镜像名 xff1a docker pull ree
  • ARM学习随笔(12)定时器查询方式和中断方式

    定时器详细讲解 百度文库 点击打开链接 xff08 一 xff09 查询方式和中断方式的区别在于 xff1a 查询方式不断查询标志位然后进行处理 xff0c 而中断要编写中断服务子程序来处理中断事件 xff08 二 xff09 内部中断是指
  • vgg16网络裁剪并加载模型参数

    主要是测试下模型裁剪后转onnx的问题 删除vgg16网络全连接层 xff0c 加载预训练模型并重新保存模型参数 xff0c 将该参数用于转onnx模型格式 usr bin env python coding utf 8 64 Time 2
  • pth转onnx的三种情况

    usr bin env python coding utf 8 64 Time 2022 8 3 16 19 64 Author weiz 64 ProjectName cbir 64 File pth2onnx py 64 Descrip
  • 以vgg为backbone的简易图像检索系统

    图像检索 xff08 Content based Image Retrieval xff0c 简称CBIR xff09 即以图搜图 xff0c 基于图片语义信息 xff0c 诸如颜色 纹理 布局 CNN based高层语义等特征检索技术 该
  • img2pose: Face Alignment and Detection via 6DoF, Face Pose Estimation代码理解

    import argparse import os import sys import time import numpy as np from PIL import Image ImageOps from torchvision impo
  • 解决普通用户使用sudo找不到命令

    sudo bazel build c opt define MEDIAPIPE DISABLE GPU 61 1 mediapipe examples desktop face mesh face mesh cpu 出现 xff1a sud
  • sfm算法之三角化(三角测量)

    sfm算法流程一般是特征点提取 特征点匹配 计算本质矩阵 基础矩阵 xff0c 最后三角化 但是利用机械臂去观察周围 xff0c 前后帧姿态变化参数是具有的 xff0c 所以不需要通过基础矩阵获取 即利用机械臂的信息直接进行深度估计 已知
  • bazel构建项目案例(第三方库,编译成库,运行案例)

    使用bazel构建项目 xff0c 包含如何引入外部库 xff08 项目中引入了opencv和编译的tensorflow lite库 xff09 xff0c 如何编译成动态库和静态库 xff0c 以及如何调用编译好的库 项目根目录的所有文件
  • 各种小功能集二

    各种小功能集一 十一 C C 43 43 路径解析 头文件 std string UtilsGetPath const char pszFilename std string UtilsGetDirname const char pszFi
  • windows10配置paddleOCR的CPU版本总结

    paddleOCR的CPU版本依赖的库还是比较少的 如下 1 opencv库 本人配置的版本是opencv4 5 0 2 paddle inference 推理库 该库解压后有version txt文件 xff0c 版本信息如下 xff1a
  • 传统图像技术的边缘提取

    usr bin env python coding utf 8 import cv2 import os import numpy as np def laplacian img ksize 61 3 laplacian 61 cv2 La
  • TCP-UDP网络编程调试助手下载

    下载地址 xff1a 可能需要谷歌 xff1a 软件干净 xff0c 挺好用的 xff0c 如果有更好的 xff0c 欢迎留言 xff01 https www waveshare com wiki File TCP UDP Debug 7z
  • Data Matrix码的使用

    一 引言 Data Matrix原名Data code xff0c 由美国国际资料公司 International Data Matrix 简称ID Matrix 于1989年发明 Data Matrix又可分为ECC000 140与ECC
  • 小样本学习(Few-Shot Learning)训练参数意义

    一 常规参数 1 1 epoch 是指所有的训练数据都要跑一遍 假设有6400个样本 xff0c 在训练过程中 xff0c 这6400个样本都跑完了才算一个epoch 一般实验需要训练很多个epoch xff0c 直到LOSS稳定后才停止
  • 不同相机之间图片像素对应关系求解(单应性矩阵求解)

    一 场景 相机1和相机2相对位置不变 xff0c 相机拍摄图片有重叠 xff0c 求他们交叠部分的一一对应关系 数学语言描述为已知相机1图片中P点像素 u1 v1 xff0c 相机1中P点在相机2图片中像素值为 u2 v2 xff0c 它们
  • python协程学习

    一 什么是协程及实现方式 1 1 协程 又称微线程 xff0c 纤程 也称为用户级线程 xff0c 在不开辟线程的基础上完成多任务 xff0c 也就是在单线程的情况下完成多任务 xff0c 多个任务按照一定顺序交替执行 1 2 实现方式 g
  • 无法打开文件libboost_random-vc141-mt-s-x64-1_81.lib

    踩坑过程 xff1a 需要使用websocketpp工具 xff0c 得先安装boost 安装boost及websocketpp过程简单且顺利 xff0c 并且能正常能正常运行官方例程 把官方例程简单封装测试 xff0c 一切皆好 等把we
  • 如何一步让你图像分类达到90%以上精准度

    这段时间一直在做图像分类相关的项目 xff0c 也认识了很多这个领域的小伙伴们 xff0c 有不少小伙伴们都是刚接触图像分类 xff0c 对着各种个样的图像分类算法 xff1a AlexNet VGG 16 VGG 19 ResNet 都是