【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

paddleOcr训练一个属于自己的模型 训练一个属于自己的paddleocr模型,从环境搭建到模型推理全过程 阅读详情

文章首发于微信公众号《与有三学AI》

【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

这是给大家准备的paddlepaddle与visualdl速成例子

这一次我们讲讲paddlepadle这个百度开源的机器学习框架,一个图像分类任务从训练到测试出结果的全流程。

将涉及到paddlepaddle和visualdl,git如下:https://github.com/PaddlePaddle

相关的代码、数据都在我们 Git 上,希望大家 Follow 一下这个 Git 项目,后面会持续更新不同框架下的任务。

https://github.com/longpeng2008/LongPeng_ML_Course

作者&编辑 | 言有三  

 

01 paddlepaddle是什么

正所谓google有tensorflow,facebook有pytorch,amazon有mxnet,作为国内机器学习的先驱,百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(并行分布式深度学习),整体使用起来与tensorflow非常类似。

sudo pip install paddlepaddle

安装就是一条命令,话不多说上代码。

 

02 paddlepaddle训练

训练包括三部分,数据的定义,网络的定义,以及可视化和模型的存储。

2.1 数据定义

定义一个图像分类任务的dataset如下:

from multiprocessing import cpu_count

import paddle.v2 as paddle

class Dataset:

    def __init__(self,cropsize,resizesize):

        self.cropsize = cropsize

        self.resizesize = resizesize

    def train_mapper(self,sample):

        img, label = sample

        img = paddle.image.load_image(img)

        img = paddle.image.simple_transform(img, self.resizesize, self.cropsize, True)

        #print "train_mapper",img.shape,label

        return img.flatten().astype('float32'), label

    def test_mapper(self,sample):

        img, label = sample

        img = paddle.image.load_image(img)

        img = paddle.image.simple_transform(img, self.resizesize, self.cropsize, False)

        #print "test_mapper",img.shape,label

        return img.flatten().astype('float32'), label

    def train_reader(self,train_list, buffered_size=1024):

        def reader():

            with open(train_list, 'r') as f:

                lines = [line.strip() for line in f.readlines()]

                print "len of train dataset=",len(lines)

                for line in lines:

                    img_path, lab = line.strip().split(' ')

                    yield img_path, int(lab)

        return paddle.reader.xmap_readers(self.train_mapper, reader,

                                          cpu_count(), buffered_size)

    def test_reader(self,test_list, buffered_size=1024):

        def reader():

            with open(test_list, 'r') as f:

                lines = [line.strip() for line in f.readlines()]

                print "len of val dataset=",len(lines)

                for line in lines:

                    img_path, lab = line.strip().split(' ')

                    yield img_path, int(lab)

        return paddle.reader.xmap_readers(self.test_mapper, reader,

                                          cpu_count(), buffered_size)

 

从上面代码可以看出:

(1) 使用了paddle.image.load_image进行图片的读取,
paddle.image.simple_transform进行了简单的图像变换,这里只有图像crop操作,更多的使用可以参考API。

(2)  使用了paddle.reader.xmap_readers进行数据的映射。

2.2 网络定义

# coding=utf-8
import paddle.fluid as fluid
def simplenet(input):
   # 定义卷积块 
   conv1 = fluid.layers.conv2d(input=input, num_filters=12,stride=2,padding=1,filter_size=3,act="relu")
   bn1 = fluid.layers.batch_norm(input=conv1)
   conv2 = fluid.layers.conv2d(input=bn1, num_filters=12,stride=2,padding=1,filter_size=3,act="relu")
   bn2 = fluid.layers.batch_norm(input=conv2)
   conv3 = fluid.layers.conv2d(input=bn2, num_filters=12,stride=2,padding=1,filter_size=3,act="relu")
   bn3 = fluid.layers.batch_norm(input=conv3)
   fc1 = fluid.layers.fc(input=bn3, size=128, act=None)
   return fc1,conv1

与之前的caffe,pytorch,tensorflow框架一样,定义了一个3层卷积与2层全连接的网络。为了能够更好的进行可视化,我们使用了PaddlePaddle Fluid,Fluid的设计也是用来让用户像Pytorch和Tensorflow Eager Execution一样可以执行动态计算而不需要创建图。

2.3可视化

paddlepaddle有与之配套使用的可视化框架,即visualdl。

visualdl是百度数据可视化实验室发布的深度学习可视化平台,它的定位与tensorboard很像,可视化内容包含了向量,参数直方图分布,模型结构,图像等功能,以后我们会详细给大家讲述,这次直接在代码中展示如何使用。

安装使用pip install --upgrade visualdl,使用下面的命令可以查看官方例子:

vdl_create_scratch_log

visualDL --logdir ./scratch_log --port 8080

http://127.0.0.1:8080

下面是loss和直方图的查看

在咱们项目中,具体使用方法如下

# 首先定义相关变量
# 创建VisualDL,并指定log存储路径
logdir = "./logs"
logwriter = LogWriter(logdir, sync_cycle=10)

# 创建loss的趋势图
with logwriter.mode("train") as writer:
   loss_scalar = writer.scalar("loss")

# 创建acc的趋势图
with logwriter.mode("train") as writer:
   acc_scalar = writer.scalar("acc")

# 定义输出频率
num_samples = 4
# 创建卷积层和输出图像的图形化展示
with logwriter.mode("train") as writer:
   conv_image = writer.image("conv_image", num_samples, 1)
   input_image = writer.image("input_image", num_samples, 1)

# 创建可视化的训练模型结构
with logwriter.mode("train") as writer:
   param1_histgram = writer.histogram("param1", 100)

然后在训练过程中进行记录,这是完整的训练代码,红色部分就是记录结果。

# coding=utf-8
import numpy as np
import os
import paddle.fluid as fluid
import paddle.fluid.framework as framework
import paddle.v2 as paddle
from paddle.fluid.initializer import NormalInitializer
from paddle.fluid.param_attr import ParamAttr
from visualdl import LogWriter
from dataset import Dataset
from net_fluid import simplenet

# 创建VisualDL,并指定当前该项目的VisualDL的路径
logdir = "./logs"
logwriter = LogWriter(logdir, sync_cycle=10)

# 创建loss的趋势图
with logwriter.mode("train") as writer:
   loss_scalar = writer.scalar("loss")

# 创建acc的趋势图
with logwriter.mode("train") as writer:
   acc_scalar = writer.scalar("acc")

# 定义输出频率
num_samples = 4
# 创建卷积层和输出图像的图形化展示
with logwriter.mode("train") as writer:
   conv_image = writer.image("conv_image", num_samples, 1)
   input_image = writer.image("input_image", num_samples, 1)

# 创建可视化的训练模型结构
with logwriter.mode("train") as writer:
   param1_histgram = writer.histogram("param1", 100)

def train(use_cuda, learning_rate, num_passes, BATCH_SIZE=128):
   class_dim = 2
   image_shape = [3, 48, 48]
   image = fluid.layers.data(name='image', shape=image_shape, dtype='float32')
   label = fluid.layers.data(name='label', shape=[1], dtype='int64')

   net, conv1 = simplenet(image)
   # 获取全连接输出
   predict = fluid.layers.fc(
       input=net,
       size=class_dim,
       act='softmax',
       param_attr=ParamAttr(name="param1", initializer=NormalInitializer()))

   # 获取损失
   cost = fluid.layers.cross_entropy(input=predict, label=label)
   avg_cost = fluid.layers.mean(x=cost)

   # 计算batch,从而来求平均的准确率
   batch_size = fluid.layers.create_tensor(dtype='int64')
   print "batchsize=",batch_size
   batch_acc = fluid.layers.accuracy(input=predict, label=label, total=batch_size)

   # 定义优化方法
   optimizer = fluid.optimizer.Momentum(
       learning_rate=learning_rate,
       momentum=0.9,
       regularization=fluid.regularizer.L2Decay(5 * 1e-5))

   opts = optimizer.minimize(avg_cost)

   # 是否使用GPU
   place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
   # 创建调试器
   exe = fluid.Executor(place)
   # 初始化调试器
   exe.run(fluid.default_startup_program())
   # 保存结果
   model_save_dir = "./models"

   # 获取训练数据
   resizesize = 60
   cropsize = 48
   mydata = Dataset(cropsize=cropsize,resizesize=resizesize)
   mydatareader = mydata.train_reader(train_list='./all_shuffle_train.txt')
   train_reader = paddle.batch(reader=paddle.reader.shuffle(reader=mydatareader,buf_size=50000),batch_size=128)
   
   # 指定数据和label的对应关系
   feeder = fluid.DataFeeder(place=place, feed_list=[image, label])

   step = 0
   sample_num = 0
   start_up_program = framework.default_startup_program()
   param1_var = start_up_program.global_block().var("param1")

   accuracy = fluid.average.WeightedAverage()
   # 开始训练,使用循环的方式来指定训多少个Pass
   for pass_id in range(num_passes):
       # 从训练数据中按照一个个batch来读取数据
       accuracy.reset()
       for batch_id, data in enumerate(train_reader()):
           loss, conv1_out, param1, acc, weight = exe.run(fluid.default_main_program(),
                                                          feed=feeder.feed(data),
                                                          fetch_list=[avg_cost, conv1, param1_var, batch_acc,batch_size])
           accuracy.add(value=acc, weight=weight)
           pass_acc = accuracy.eval()

           # 重新启动图形化展示组件
           if sample_num == 0:
               input_image.start_sampling()
               conv_image.start_sampling()
           # 获取taken
           idx1 = input_image.is_sample_taken()
           idx2 = conv_image.is_sample_taken()
           # 保证它们的taken是一样的
           assert idx1 == idx2
           idx = idx1
           if idx != -1:
               # 加载输入图像的数据数据
               image_data = data[0][0]
               input_image_data = np.transpose(
                   image_data.reshape(image_shape), axes=[1, 2, 0])
               input_image.set_sample(idx, input_image_data.shape,
                                      input_image_data.flatten())
               # 加载卷积数据
               conv_image_data = conv1_out[0][0]
               conv_image.set_sample(idx, conv_image_data.shape,
                                     conv_image_data.flatten())
               # 完成输出一次
               sample_num += 1
               if sample_num % num_samples == 0:
                   input_image.finish_sampling()
                   conv_image.finish_sampling()
                   sample_num = 0

           # 加载趋势图的数据
           loss_scalar.add_record(step, loss)
           acc_scalar.add_record(step, acc)
           # 添加模型结构数据
           param1_histgram.add_record(step, param1.flatten())

          

           # 输出训练日志
           print("loss:" + str(loss) + " acc:" + str(acc) + " pass_acc:" + str(pass_acc))
           step += 1
           model_path = os.path.join(model_save_dir,str(pass_id))
           if not os.path.exists(model_save_dir):
               os.mkdir(model_save_dir)
           fluid.io.save_inference_model(model_path,['image'],[predict],exe)

if __name__ == '__main__':
   # 开始训练
   train(use_cuda=False, learning_rate=0.005, num_passes=300)

2.4训练结果

看看acc和loss的曲线,可见已经收敛

 

03 paddlepaddle测试

训练的时候使用了fluid,测试的时候也需要定义调试器,加载训练好的模型,完整的代码如下

# encoding:utf-8
import sys
import numpy as np
import paddle.v2 as paddle
from PIL import Image
import os
import cv2
# coding=utf-8
import numpy as np
import paddle.fluid as fluid
import paddle.fluid.framework as framework
import paddle.v2 as paddle
from paddle.fluid.initializer import NormalInitializer
from paddle.fluid.param_attr import ParamAttr
from visualdl import LogWriter
from net_fluid import simplenet

if __name__ == "__main__":
   # 开始预测
   type_size = 2
   testsize = 48

   imagedir = sys.argv[1]
   images = os.listdir(imagedir)
       

   # 定义调试器
   save_dirname = "./models/299"
   exe = fluid.Executor(fluid.CPUPlace())
   inference_scope = fluid.core.Scope()
   with fluid.scope_guard(inference_scope):
   # 加载模型

 [inference_program,feed_target_names,fetch_targets] = fluid.io.load_inference_model(save_dirname,exe)

       predicts = np.zeros((type_size,1))
       for image in images:
           imagepath = os.path.join(imagedir,image)
           img = paddle.image.load_image(imagepath)
           img = paddle.image.simple_transform(img,testsize,testsize,False)
           img = img[np.newaxis,:]

           #print img.shape

           results = np.argsort(-exe.run(inference_program,feed={feed_target_names[0]:img},
                   fetch_list=fetch_targets)[0])
           label = results[0][0]
           predicts[label] += 1
   
   print predicts

由于所有框架的测试流程都差不多,所以就不对每一部分进行解释了,大家可以自行去看代码。

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

本系列完整文章:

第一篇:【caffe速成】caffe图像分类从模型自定义到测试

第二篇:【tensorflow速成】Tensorflow图像分类从模型自定义到测试

第三篇:【pytorch速成】Pytorch图像分类从模型自定义到测试

第四篇:【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

第五篇:【Keras速成】Keras图像分类从模型自定义到测试

第六篇:【mxnet速成】mxnet图像分类从模型自定义到测试

第七篇:【cntk速成】cntk图像分类从模型自定义到测试

第八篇:【chainer速成】chainer图像分类从模型自定义到测试

第九篇:【DL4J速成】Deeplearning4j图像分类从模型自定义到测试

第十篇:【MatConvnet速成】MatConvnet图像分类从模型自定义到测试

第十一篇:【Lasagne速成】Lasagne/Theano图像分类从模型自定义到测试

第十二篇:【darknet速成】Darknet图像分类从模型自定义到测试

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

 

PaddlePaddle2.0 图像分类 PaddlePaddle2.0 图像分类 本文是「飞桨领航团图像分类速成营」的学习笔记,课程质量很高,有需要的同学可以去看看,课程链接:https://aistudio.baidu.com/aistudio/course/introduce/11939?directly=1&shared=1 课程的安排还是挺紧凑的,文章写的比较仓促,后期有更多经验后一定重新写一篇更好的。 1. 完成图像分类任务的流程 数据EDA (Pandas、Matplotlib) 对于图像分类任务,我们通常首先 阅读详情

相关推荐

百度AI工程师面试指南:核心能力与实战解析

在人工智能领域,深度学习框架和算法优化是工程师必须掌握的核心技术。PyTorch、TensorFlow和PaddlePaddle作为主流框架,各自在动态图、生产化部署和生态适配方面具有独特优势。理解这些框架的原理和技术细节,能够帮助工程师在实际项目中高效实现模型训练和部署。特别是在百度AI工程师面试中,PaddlePaddle相关技术的考察占比逐年上升,掌握其动态图转静态图、模型压缩和分布式训练等核心技术显得尤为重要。此外,算法优化和工程实践能力也是面试的重点,包括模型量化、性能调优和业务场景解决方案设计。

Eric.Net的专栏 395

image.shape 解释

表示图像的通道数,对于彩色图像来说,它应该是 3。这个信息在处理图像时很重要,因为它帮助我们正确地解释和处理图像的各个通道。在图像处理中,图像的形状表示图像的尺寸和通道数。对于彩色图像,通常有三个通道(红、绿、蓝),而灰度图像只有一个通道。返回一个表示图像形状的元组,具体的含义是。

weixin_50531046的博客 4171

AI落地成败关键:从模型参数到工程化执行力

大语言模型(LLM)的本质是复杂系统,其实际效能不取决于参数规模或榜单分数,而在于底层工程化能力——包括推理稳定性、垂类适配性、部署鲁棒性与开发者体验。当前行业正经历从‘技术验证’向‘产品交付’的关键跃迁,开源模型如DeepSeek通过标准化Docker镜像、硬件感知量化、结构化文档和SLA保障,显著降低AI集成门槛;而传统厂商常因框架兼容性差、文档脱离生产环境、跨团队责任稀释等问题,导致高指标模型在真实场景中失效。本文聚焦AI项目落地中的‘最后一公里’挑战,结合工业质检、法律文书、车载HMI等典型场景,解

weixin_30536513的博客 444

image对象的属性说明

一、image.shape的那些事: 1.image.shape[:2]表示 取彩色图片的高、宽, 2.image.shape[:3] 表示取彩色图片的高、宽、通道 3.image.shape[0], 图片垂直尺寸 4.image.shape[1], 图片水平尺寸 5.image.shape[2], 图片通道数 具体的解释为: 1)输出 height,即获取图像的高度,图像的高度为shape的第一...

目前主要分享信息学奥赛的知识 1万+

机器学习祛魅:打破五大认知陷阱的实战指南

机器学习并非高不可攀的数学圣殿或硬件军备竞赛,而是一门以问题解决为核心的工程实践。其核心原理植根于线性代数、概率统计与优化思想,但90%以上的工业场景中,关键能力在于数据工程、特征构建与端到端闭环落地,而非复杂数学推导或SOTA模型堆砌。技术价值体现在快速验证、业务指标提升与系统稳定性上,典型应用场景包括金融风控建模、医疗影像辅助诊断、工业缺陷检测及智能客服意图识别等。本文聚焦真实从业者常遇的认知偏差,系统解构‘数学门槛过高’‘数据规模决定论’‘硬件依赖症’‘学历滤镜’和‘调参万能论’五大陷阱,提供可立即复

bdk82924 478

PaddlePaddle预训练模型的新篇章:十大模型助力图像分类任务

PaddlePaddle最新发布了十大预训练模型,为图像分类任务提供了强大的支持。这些模型无需冷启动,即可快速投入使用,为开发者提供了极大的便利。本文将详细解读这十大模型的特点和应用场景,帮助读者更好地理解和应用这些技术。

weixin_41888295的博客 778

PaddleOCR训练属于自己的模型详细教程(从打标,制作数据集,训练到应用,以行驶证识别为例)

PaddleOCR是一个基于飞桨开发的OCR(Optical Character Recognition,光学字符识别)系统。其技术体系包括文字检测、文字识别、文本方向检测和图像处理等模块。以下是其优点:高精度:PaddleOCR采用深度学习算法进行训练,可以在不同场景下实现高精度的文字检测和文字识别。

qq_52852432的博客 12万+

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1783

PaddleX训练一个自定义数据集的图像分类模型,全流程打通(从环境搭建到推理部署)

PaddleX训练一个自定义数据集的图像分类模型,全流程打通(从环境搭建到推理部署)

weixin_45921929的博客 4443

华为ENSP虚拟网络与本地物理网卡高效桥接实战指南

本文提供了一份详细的华为ENSP虚拟网络与本地物理网卡桥接实战指南。通过清晰的四步操作,帮助用户打破虚拟实验环境的“孤岛”限制,实现ENSP设备与真实局域网及互联网的互通,从而进行更真实的协议测试、软件升级和混合网络环境搭建。

qsc90123456的博客 538

从零开始STM32cubeide学习

使用的是正点原子的精英版,单片机是STM32F103ZET6,详细讲解完成跑马灯实验

weixin_44077208的博客 2285

PaddlePaddle——图像分类速成营

首先,课程链接放上去:https://aistudio.baidu.com/aistudio/course/introduce/11939?directly=1&shared=1 这次主要加深了对一些魔术方法的理解,例如__call__ 方法 在训练中loss和accuracy忽上忽下,加入正则化项 为了防止模型过拟合,在没有扩充样本量的可能下,只能降低模型的复杂度,可以通过限制参数的数量或可能取值(参数值尽量小)实现。 具体来说,在模型的优化目标(损失)中人为加入对参数规模的惩罚项。当参数越多或取

qq_45617213的博客 292

科研党必备:5个高效查找论文开源代码的宝藏网站(附实战技巧)

本文为科研工作者推荐5个高效查找论文开源代码的宝藏网站,包括ResearchCode和PapersWithCode等工具,提供实战技巧如进阶搜索语法和代码质量评估体系,帮助快速定位高质量实现并提升复现效率。特别分享隐藏代码库的检索方法和智能工作流配置,助力科研党高效完成论文复现。

weixin_28829629的博客 404

【github干货】主流深度学习开源框架从入门到熟练

文章首发于微信公众号《有三AI》 【github干货】主流深度学习开源框架从入门到熟练 今天送上有三AI学院第一个github项目 01项目背景 目前深度学习框架呈百家争鸣之态势,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,tiny-dnn,deeplearning4j...

hacker_long的专栏 1511

告别GUI点点点:Formality形式化验证的TCL脚本自动化实战(附完整脚本)

本文详细介绍了如何通过TCL脚本实现Formality形式化验证的全流程自动化,显著提升验证效率并降低错误率。内容涵盖脚本框架解析、参数化设计、验证报告生成及团队协作策略,特别适合芯片设计工程师摆脱传统GUI操作,实现300%以上的效率提升。

weixin_33737134的博客 283

信息隐藏 数字图像空域隐写与分析技术的实现

【代码】信息隐藏 数字图像空域隐写与分析技术的实现。

Yungoal的博客 470

【好专栏】深度学习框架不会用?12大主流深度学习框架快速入门,你值得拥有!...

欢迎来到【好专栏】,本次我们给大家推荐一个专栏,名为《12 大深度学习开源框架快速入门》,这个专栏为介绍了深度学习的 12 大主流框架,附带实践案例,能够让读者快速掌握深度学习框架的使用...

Leong Blog 516

三极管特性曲线看不懂?手把手教你用Multisim仿真分析放大电路频率响应

本文针对模拟电路初学者,详细讲解如何利用Multisim软件进行电路仿真,将抽象的三极管特性曲线与放大电路频率响应分析变得直观可视。通过手把手教学,指导读者从导入三极管SPICE模型、仿真输出特性曲线,到分析动态工作点,最终使用波特图仪深入分析频率响应并进行补偿设计,有效帮助理解电路原理并指导实践调试。

weixin_29230059的博客 123

【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的...

hacker_long的专栏 698

YOLOv11-seg改进系列 | 引入CMTFNet(TGRS2023)+TransNeXt(CVPR2024)的C3k2_MSMHSA_CGLU模块,多尺度空洞注意力扩大感受野,增强复杂背景下

本文提出一种改进YOLOv11分割模型的C3k2_MSMHSA_CGLU模块,融合多尺度多头自注意力(MSMHSA)和卷积门控线性单元(CGLU)。MSMHSA通过多尺度空洞卷积提取不同感受野特征,生成跨尺度注意力,降低计算量同时保留全局上下文。CGLU采用卷积门控机制增强特征变换能力。实验表明,改进后模型参数量仅增加7.8%,GFLOPs增加4.2%,显著提升了多尺度目标检测性能,尤其适用于遥感图像等复杂场景。该模块有效解决了原始C3k2感受野有限、缺乏全局建模能力的问题。

qq_44224801的博客 201

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2021-03-22

卷积神经网络入门学(1) 原文地址:http://blog.youkuaiyun.com/hjimce/article/details/47323463 作者:hjimce 卷积神经网络算法是n年前就有的算法,只是近年来因为深度学习相关算法为多层网络的训练提供了新方法,然后现在电脑的计算能力已非当年的那种计算水平,同时现在的训练数据很多,于是神经网络的相关算法又重新火了起来,因此卷积神经网络就又活了起来。 在开始前,我们需要明...

milidereganmian的博客 497

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

yolo和paddle模型常见输出参数解惑

yolo模型推理后处理输出

null 1395

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PaddleDetection-YOLOv3模型结构解析(一)

本文分析PaddleDetection-YOLOv3的模型结构

qq_45684033的博客 1312

AI干货分享:PaddlePaddle官方九大NLP模型盘点

引言 自然语言处理(NLP)主要是研究实现人与计算机之间用自然语言进行有效通信的各种理论和方法。基于神经网络的深度学习技术具有强大的表达能力、端到端解决问题的能力,因而在NLP任务的应用上越来越广泛和有效。 近日,百度PaddlePaddle开源了语义表示模型ERNIE,在多个中文NLP任务上表现超越了谷歌的BERT(请参考链接),展示了百度在NLP技术的领先能力,同时也表明PaddlePad...

PaddlePaddle 3564

OCR-paddleocr

paddleocr进行图片检测、识别、分类

无痕的博客 4833

【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

基于深度学习的车牌识别任务可以拆解为2个步骤:车牌检测-车牌识别。其中车牌检测的目的是确认图片中车牌的位置,根据检测到的车牌位置把图片中的ROI裁剪出来,车牌识别算法用于识别裁剪出的车牌图像中的具体内容。本文使用PaddleOCR工具实现了车牌识别任务,首先使用PaddleOCR的检测算法DBNet检测出车牌位置,再将车牌位置裁剪送入文本识别算法CRNN来识别车牌的具体内容。本文总结了PaddleOCR提供的车牌识别方案,并进行了简化,根据识别的结果来看可以很好地检测车牌图像。

AI爱好者的博客,分享计算机领域相关知识 2万+
上一篇: 【pytorch速成】Pytorch图像分类从模型自定义到测试
下一篇: 【技术综述】闲聊图像分割这件事儿
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值