PaddlePaddle飞桨之深度学习7日入门 总结

本文是PaddlePaddle深度学习7日入门的总结,涵盖了新冠疫情可视化、手势识别、车牌识别、口罩分类、人流密度检测比赛及模型压缩等内容。通过实际项目展示了飞桨框架在各个任务中的应用,包括使用Alexnet、LeNet、VGG、ResNet+SENet等模型,以及模型量化和PaddleSlim的使用。
摘要由CSDN通过智能技术生成

目录

Day01 新冠疫情可视化

作业1:飞桨本地安装

作业2:新冠疫情可视化

Day02 手势识别

Day03 车牌识别

Day04 口罩分类

Day05 人流密度检测比赛

Day06 PaddleSlim模型压缩

图像分类模型量化教程

1、导入依赖

2、构建模型

3、定义输入数据

4、训练模型

5、量化模型 

6、训练和测试量化后的模型


Day01 新冠疫情可视化

第一天的任务主要有两个,第一个是飞桨的本地安装,以及新冠疫情可视化。

作业1:飞桨本地安装

这门课程我感觉首先是可以给大家普及cv方面的知识,另一方面也是为了普及飞桨这个框架的使用,所以安装飞桨也必不可少。

飞桨的官网:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/index_cn.html

 

作业2:新冠疫情可视化

作业2的话是 新冠疫情的可视化。这个作业的主要任务是 利用python的request模块和re正则化模块,爬取丁香园当天的新冠疫情数据,然后利用Echarts进行对数据可视化操作。Echarts 是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。pyecharts api参考链接:https://pyecharts.org/#/zh-cn/chart_api

然后我们需要做的就是将面的可视化图片利用百度的pycharts 转为扇形可视化出来。

利用爬取到的数据转为扇形对的代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/3/31 22:17
# @Author : caius
# @Site :
# @File : test2.py
# @Software: PyCharm

import json
import datetime
from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
# 读原始数据文件
today = datetime.date.today().strftime('%Y%m%d')   #20200315
datafile = 'data/'+ today + '.json'
with open(datafile, 'r', encoding='UTF-8') as file:
    json_array = json.loads(file.read())

# 分析全国实时确诊数据:'confirmedCount'字段
china_data = []
for province in json_array:
    china_data.append((province['provinceShortName'], province['confirmedCount']))
china_data = sorted(china_data, key=lambda x: x[1], reverse=True)                 #reverse=True,表示降序,反之升序

print(china_data)
# 全国疫情地图
# 自定义的每一段的范围,以及每一段的特别的样式。
pieces = [
    {'min': 10000, 'color': '#540d0d'},
    {'max': 9999, 'min': 1000, 'color': '#9c1414'},
    {'max': 999, 'min': 500, 'color': '#d92727'},
    {'max': 499, 'min': 100, 'color': '#ed3232'},
    {'max': 99, 'min': 10, 'color': '#f27777'},
    {'max': 9, 'min': 1, 'color': '#f7adad'},
    {'max': 0, 'color': '#f7e4e4'},
]
labels = [data[0] for data in china_data]
counts = [data[1] for data in china_data]

# m = Map()
# m.add("累计确诊", [list(z) for z in zip(labels, counts)], 'china')
c = Pie()
c.add("", [list(z) for z in zip(labels, counts)] ,center=["50%", "70%"],radius=["2%", "40%"])
["50%", "50%"]
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
c.set_global_opts(title_opts=opts.TitleOpts(title='全国实时确诊数据  -caius',
                                            subtitle='数据来源:丁香园'),
                  legend_opts=opts.LegendOpts(is_show=False)
                  )       #是否显示视觉映射配置
# c = (
#     Pie()
#     .add("",[list(z) for z in zip(labels, counts)])
# #    .set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
#     .set_global_opts(title_opts=opts.TitleOpts(title="Pie-设置颜色"))
#     .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
#     .render("pie_set_color.html")
# )
#系列配置项,可配置图元样式、文字样式、标签样式、点线样式等
# m.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c}"),is_show=False)#
# m.set_series_opts(label_opts=opts.LabelOpts(font_size=12),is_show=False)
#全局配置项,可配置标题、动画、坐标轴、图例等
# m.set_global_opts(title_opts=opts.TitleOpts(title='全国实时确诊数据',
#                                             subtitle='数据来源:丁香园'),
#                   legend_opts=opts.LegendOpts(is_show=False),
#                   visualmap_opts=opts.test2.pytest2.py(pieces=pieces,
#                                                     is_piecewise=True,   #是否为分段型
#                                                     is_show=True))       #是否显示视觉映射配置
# #render()会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件,也可以传入路径参数,如 m.render("mycharts.html")
c.render(path='./data/全国实时确诊数据.html')

 

Day02 手势识别

第二天的任务是手势识别任务,其实也就是一个多分类的任务。课程要求是用DNN来做,然后我使用的是Alexnet来进行多分类的任务,但是效果不是很好。在此过程中我学到了课程中的小伙伴的一个图像增强的一个技巧mixup。它一般是用在图像分类上面的,我想把它用在语义分割或者目标检测上面,但是我并没有找到相关的代码。

def mixup(X, y):
    '''
        功能:图像增强,mixup
        参数:
            X:batch imgs
            y: batch labels
        超参:
            beta: beta分布的alpha和beta参数,这个可以自己设置,并观察结果
        引用:
            mixup: Beyond Empirical Risk Minimization(https://arxiv.org/abs/1710.09412)
    '''
    mixup_alpha = 0.1
    seed = np.random.beta(mixup_alpha, mixup_alpha)
    index = np.arange(X.shape[0])
    np.random.shuffle(index)
    images_a, images_b = X, X[index]
    labels_a, labels_b = y, y[index]
    mixed_images = seed * images_a + (1 - seed) * images_b
    return mixed_images, labels_a, labels_b, seed

他的github链接如下:https://github.com/mmmmmmiracle/paddle_seven_days

完整的代码如下:

import os
import time
import random
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import paddle
import paddle.fluid as fluid
import paddle.fluid.layers as layers
from multiprocessing import cpu_count
from paddle.fluid.dygraph import Pool2D,Conv2D,CosineDecay,BatchNorm,CosineDecay
from paddle.fluid.dygraph import Linear
# 生成图像列表
data_path = '/home/aistudio/data/data23668/Dataset'
character_folders = os.listdir(data_path)
# print(character_folders)
if(os.path.exists('./train_data.list')):
    os.remove('./train_data.list')
if(os.path.exists('./test_data.list')):
    os.remove('./test_data.list')
    
for character_folder in character_folders:
    
    with open('./train_data.list', 'a') as f_train:
        with open('./test_data.list', 'a') as f_test:
            if character_folder == '.DS_Store':
                continue
            character_imgs = os.listdir(os.path.join(data_path,character_folder))
            count =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值