深度学习7日入门-CV疫情特辑结营心得

  • 使用PaddlePaddle进行深度学习
    • 深度学习的方法
    • 主要学习内容
    • 每日学习总结
    • 资源使用心得
    • 感谢
    • 后续

2020/03/16 - 2020/08/31

使用PaddlePaddle进行深度学习

为期一周的深度学习训练营结束了,对每一个从头到尾参加了训练营的同学们收获肯定都是很多的。这次我就从以下几个方面总结一下心得和体会。
PaddlePaddle官网地址
百度AIStudio官网网址 现在有送GPU算力卡哦,比在我的小笔记本上跑速度真的快很多!
7日打卡营地址 课程可以长期反复学习的哦,因为是纯干货,如果是小白入门的话,听一遍肯定是不够的。

深度学习的方法

1、 基础不牢,地动山摇。 这是我最大的体会。深度学习并不是传统的C,C++以及其他一些语言的学习,跑通代码基本就知道大概什么意思的,而是一定要先搞懂原理,然后再进入模型代码进行理解,不然直接上代码,会叫你一头雾水,前期准备很重要。

2、必须要python语法和numpy库要很熟练,熟练的标准就是代码要多敲,多练习,python的列表,字典,元组出来一个就要立马能知道数据长什么样子,矩阵是几维的,每一维分别是什么东西等等(否则一些接口都调不起来,因为你不知道接口需要传入的参数长什么样子,返回的数据又要用什么数据去接等等),我是从C++转到Python来学习的,一开始认为应该没多大难度,毕竟C++这把屠龙刀都能耍的动,Python这种脚本语言应该没多大问题,但是看懂了和熟练了中间还是有很大差距。

3、理论和实践相结合。 我一开始先看的是吴恩达的视频,感觉外国人的课程重点都是最后抛出,前面一直给你不断不断的铺垫,我听吴恩达的课程最大的感受就是,他的每一句话我都能理解,听明白,但是视频看完了,我似乎又什么都不知道。(吴恩达的课还是很不错的,很多老师都推荐自己的学生看,我舍友看了一个学期。)后来陆陆续续看了百度的一些深度学习的课程。一下子就深入理解了深度学习中处理问题的流程和重点,我很喜欢做技术的人讲理论,很容易就能听到重点和痛点,最喜欢直接讲代码感觉自己就跟着大神一起在走,平时自己看半天都看不懂的代码,老师讲的过程中就感觉好像没有那么难了。整个学习完成后,理解了最简单的感知机,DNN,CNN,入门了简单地CV,会简单地调试代码。

4、不断的练习 我记得我的C++的老师说过,你的水平的高低在于你在这个领域坚持的长度,而不是看个人有多聪明,坚持比聪明往往要重要很多。在深度学习中,坚持无疑也是很重要的,不断的看一些论文,看一些模型,算参数,加强概率论知识,长期的坚持,能力才能一步一步的提上来。(话说从打卡营开始都今天结束,我整整一周没下楼了,每天虽然在家里,但却跟打仗一样,不得不说训练营里面的学习氛围真的很浓厚,这种氛围下人的进步速度是非常快的。就跟期末考试前一周的复习效率一样—一飞冲天。)

主要学习内容

day1: 新冠疫情可视化
day2: 手势识别
day3: 车牌识别
day4: 口罩分类
day5: 人流检测分类比赛
day6: paddlehub和paddleslim介绍与使用

每日学习总结

day1:新冠疫情可视化

请根据课上所学内容,爬取3月31日当天丁香园公开的统计数据,根据累计确诊数,使用pyecharts绘制疫情分布图,如下图所示,提交截图。Pycharts api可参考:https://pyecharts.org/#/zh-cn/

主要学习使用数据来画图,将数据表示在图上。

import json
import datetime
from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.charts import Pie# 读原始数据文件
today = datetime.date.today().strftime('%Y%m%d')   #20200331
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 = Pie()
m.add("累计确诊", [list(z) for z in zip(labels, counts)])# 系列配置项,可配置图元样式、文字样式、标签样式、点线样式等
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.VisualMapOpts(pieces=pieces,is_piecewise=True,   #是否为分段型is_show=True))       #是否显示视觉映射配置
# #render()会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件,也可以传入路径参数,如 m.render("mycharts.html")
m.render(path='data/全国实时确诊数据.html')


day2 手势识别(全连接神经网络学习+练习)

1、补全代码并成功运行 2、调参数、优化,提高测试集准备率

最主要的部分是,定义DNN网络模型,每一层神经元的个数的计算以及调优。

# 定义DNN网络
class MyDNN(fluid.dygraph.Layer):def __init__(self,name_scope):super(MyDNN, self).__init__(name_scope)# 定义4层全连接隐含层,输出维度是10,激活函数为sigmoidself.fc1 = Linear(input_dim=30000, output_dim=100, act='sigmoid')  # 隐含层节点为10,可根据任务调整self.fc2 = Linear(input_dim=100, output_dim=100, act='sigmoid')self.fc3 = Linear(input_dim=100, output_dim=100, act='sigmoid')# 定义一层全连接输出层,输出维度是1,不使用激活函数self.fc4 = Linear(input_dim=100, output_dim=10, act='softmax')def forward(self,inputs,label=None):inputs = fluid.layers.reshape(inputs, [inputs.shape[0], 30000])outputs1 = self.fc1(inputs)outputs2 = self.fc2(outputs1)outputs3 = self.fc3(outputs2)y = self.fc4(outputs3)return y

day 3 车牌识别(卷积神经网络学习+练习)

1、补全代码并成功运行 2、调参数、优化,提高测试集准确率

最主要的部分是,定义CNN网络模型,每一层神经元的个数的计算以及调优。

#定义网络
class MyLeNet(fluid.dygraph.Layer):def __init__(self):super(MyLeNet, self).__init__()self.hidden1_1 = Conv2D(1, 28, 5, 1)  # 通道数、卷积核个数、卷积核大小self.hidden1_2 = Pool2D(pool_size=2, pool_type='max', pool_stride=1)self.hidden2_1 = Conv2D(28, 32, 3, 1)self.hidden2_2 = Pool2D(pool_size=2, pool_type='max', pool_stride=1)self.hidden3 = Conv2D(32, 32, 3, 1)self.hidden4 = Linear(32 * 10 * 10, 65, act='softmax')def forward(self, input):# print(input.shape)x = self.hidden1_1(input)# print(x.shape)x = self.hidden1_2(x)# print(x.shape)x = self.hidden2_1(x)# print(x.shape)x = self.hidden2_2(x)# print(x.shape)x = self.hidden3(x)# print(x.shape)x = fluid.layers.reshape(x, shape=[-1, 32 * 10 * 10])y = self.hidden4(x)return y

Day4 口罩识别(VGG模型的使用)

1、代码跑通,请大家根据课上所学内容,在 VGGNet类中补全代码,构造VGG网络,保证程序跑通。在VGG构造成功的基础上,可尝试构造其他网络。
2、调优 思考并动手进行调优,以在验证集上的准确率为评价指标,验证集上准确率越高,得分越高!

# VGG网络模型定义class VGGNet(fluid.dygraph.Layer):def __init__(self):super(VGGNet, self).__init__()self.convpool01 = ConvPool(3, 64, 3, 2, 2, 2, act="relu")self.convpool02 = ConvPool(64, 128, 3, 2, 2, 2, act="relu")self.convpool03 = ConvPool(128, 256, 3, 2, 2, 3, act="relu")self.convpool04 = ConvPool(256, 512, 3, 2, 2, 3, act="relu")self.convpool05 = ConvPool(512, 512, 3, 2, 2, 3, act="relu")self.pool_5_shape = 512 * 7 * 7self.fc01 = fluid.dygraph.Linear(self.pool_5_shape, 4096, act="relu")self.fc02 = fluid.dygraph.Linear(4096, 4096, act="relu")self.fc03 = fluid.dygraph.Linear(4096, 2, act="softmax")#  前向计算def forward(self, inputs, label=None):out = self.convpool01(inputs)out = self.convpool02(out)out = self.convpool03(out)out = self.convpool04(out)out = self.convpool05(out)out = fluid.layers.reshape(out, shape=[-1, 512 * 7 * 7])out = self.fc01(out)out = self.fc02(out)out = self.fc03(out)if label is not None:acc = fluid.layers.accuracy(inputs=out, label=label)return out, accelse:return out

Day5 人流密度检测(比赛)

要求参赛者给出一个算法或模型,对于给定的图片,统计图片中的总人数。给定图片数据,选手据此训练模型,为每张测试数据预测出最准确的人数。
基础版本参考 https://aistudio.baidu.com/aistudio/projectdetail/382039(也可以点链接)

调优重点:学习率,训练轮数,丢弃率,换模型等等。

资源使用心得

1、GPU算力卡使用心得:GPU比CPU香太多了。尤其是速度,训练的轮数越多,模型越复杂,这种优势体现的就越明显。但是这次训练营人数实在太多了,GPU资源白天总是抢不上。为了使用GPU,我有一天凌晨4点起来调代码,也是付出了所有…

2、AI studio上开源了很多项目,有的是同学们自己公开的,有的是老师大牛们公开的,但都是可以fork到自己的文件夹中,运行和调试。AI Studio项目传送门 https://aistudio.baidu.com/aistudio/projectoverview/public(也可以点链接)

3、API文档一定要多看,及时看不懂里面的每一个参数的含义,也要知道这个接口主要是做什么的。专业的文档看起来就是很痛苦,但是看一次就有一次的收获,还是要坚持看。
快速上手传送门 https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/index_cn.html(也可以点链接)

4、安装到本地使用,我自己的习惯是比较喜欢本地编程(很传统的思维),jupyter notebook不是很常用,如果想要把环境安装到本地,可以选择自己本地匹配的环境,然后按照安装教程提示一步一步安装。TIPS:最好不要把 tensorflow caffe paddle 安装在一起,这些库中有些接口的名字是一样的,调用时有时会有歧义。比如没有导入库时,直接调用接口会提示你选一个库,选错就尴尬了。
快速安装教程 https://www.paddlepaddle.org.cn/install/quick(也可以点链接)
添加清华源下载会很快(会很有效的提升速度):

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
conda config --set show_channel_urls yes

验证安装成功

使用 python3 进入python解释器,输入import paddle.fluid ,再输入 paddle.fluid.install_check.run_check()。
如果出现 Your Paddle Fluid is installed successfully!,说明您已成功安装。

感谢

1、集训营的班主任(恋上蒲公英)和助教小哥哥们真的很NICE,我甚至感觉她们比上课的学员更拼。佩服百度的员工真的很厉害。
2、每天讲实践课的小哥哥和小姐姐们,技术好,超级低调,讲课很清楚,对零基础入门的同学很干货。不讲段子,不推销,唯一的希望就是想让我们在github上点亮一下star,这算什么大事,安排~~
3、最后我真的想对孙高峰老师说一句:我真的是您的粉丝~

后续

1、听说有Python基础营,论文复现营、手把手CV技术营,后面陆续就会推出。
2、如果有想加入助教团队的同学,可以找班主任小姐姐报名。
3、每年都会有3天的线下集训营,到时候会有通知发布,今年保守估计要到下半年了。(我很期待呢~)
4、这里有很多的微信群和QQ群可以加入,里面有很多大神,技术氛围很浓厚,班主任也会在每个群里发布最新的通知,加一个就好了。我在集训期间就在群里和讨论区里发了很多问题,每次都能得到有效的回复,内心真的很满足,很喜欢跟大家在一起的感觉。

深度学习7日入门-CV疫情特辑结营心得-alading相关推荐

  1. 深度学习7日入门-CV疫情特辑心得

    深度学习7日入门-CV疫情特辑心得 学习后感觉的整体感觉:内容安排非常紧凑, 课件内容很准确,作业有针对性,比赛题目比较难. 下面从内容上的回顾一下课程内容: 首先,小白需要自学预习课(不过这部分内容 ...

  2. paddlepaddle测试安装_百度paddlepaddle深度学习7日入门-CV疫情特辑心得

    正值疫情严重之日,作为一名研究生被迫待在家里学习,手头的科研项目也严重受挫... 偶然间,看到微信公众号发布这门课,马上报名,入坑!!!瞬间疫情其间有学习的目标了.. 该课程学习依托于百度的AI st ...

  3. PaddlePaddle深度学习7日入门CV篇Summaries

    PaddlePaddle深度学习7日入门CV篇|Summaries 文章目录 PaddlePaddle深度学习7日入门CV篇|Summaries 一.什么是PaddleX? 二.为什么要参加训练营 三 ...

  4. 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  5. 飞桨PaddlePaddle-百度架构师手把手带你零基础实践深度学习——21日学习总结

    飞桨PaddlePaddle-百度架构师手把手带你零基础实践深度学习--21日学习总结 写在前面的话 纯新手小白,第一次接触深度学习方面的应用.感谢飞桨提供的这次学习机会.之前有学习到深度学习的理论方 ...

  6. 给深度学习研究生的入门建议(未完待续ing)

    诸神缄默不语-个人CSDN博文目录 本文将系统性介绍深度学习方向(准)研究生可供参考的入门建议. 我的背景是浙江大学人工智能专业在读硕士,研究方向是GNN.NLP.司法智能. (我的CSDN博文基本涵 ...

  7. 深度学习与计算机视觉(CV)介绍

    深度学习与计算机视觉(CV)介绍 深度学习 学习⽬标 知道什么是深度学习 知道深度学习的应⽤场景 什么是深度学习 在介绍深度学习之前,我们先看下⼈⼯智能,机器学习和深度学习之间的关系: 机器学习是实现 ...

  8. 深度学习-机器学习从入门到深入全套资源分享

    深度学习.机器学习从入门到深入,全套资源分享.涉及深度学习.机器学习数学.算法基础理论.实战和工程开发相关最佳资源.深度学习常用模型相关教程,深度学习模型优化.调参相关技巧:深度学习常用的框架,公开数 ...

  9. 百度深度学习paddlepaddle7日打卡——Python小白逆袭大神学习心得

    百度深度学习paddlepaddle7日打卡--Python小白逆袭大神学习心得 7日学习总结 第一天作业 第二天作业 第三天作业 第四天作业 第五天作业 7日学习总结 通过这7日打卡课程的学习,从小 ...

最新文章

  1. 2022华为首个「天才少年」,是从绩点1.8逆袭的复旦博士
  2. 艾伟也谈项目管理,项目做完了,总结一下
  3. /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc(转载)
  4. 拆分路径 java_JAVA 类文件中的路径如何拆分和替换
  5. jdk类加载器执行步骤_[JDK 11] jcmd中的类加载器层次结构详细信息
  6. 关于shared_from_this的转换
  7. Google I/O 2019 将于5月7日举办
  8. LeetCode-外观数列-纯C递归
  9. 2017级面向对象程序设计——团队作业2
  10. Failed to connect to d.line-scdn.net port 443: Operation timed out
  11. LOMO Effect预览界面没有立即完全隐藏
  12. 大数据分析应用领域有哪些
  13. iTOP-4418开发板RS85模块ioctl操作时间间隔修改
  14. 关于IOS由于Dropbox被封,https请求不好用的解决办法
  15. XSS 绕过思路 bypass 之日天日地日空气
  16. 【MMDblender】MMD烘焙后导入blender贴图颜色错乱问题
  17. 使用canvas对图片进行裁切
  18. 个人小程序支持哪些小程序服务类目
  19. 使用JSON数据格式模拟股票实时信息
  20. MySql基础之DML语言

热门文章

  1. 摘自-万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
  2. 模拟舵机、数字舵机、总线舵机的区别
  3. 杨兴计算机专业讲师,杨兴林:得天下英才而教育之不亦乐乎
  4. iptables之mangle表应用实现策略路由+(案例)
  5. 实际工作中的性能测试介绍
  6. 如何配置虚拟机桥接网络
  7. python画正方形内切圆_任意多边形最大内接圆算法的Python实现,内切圆
  8. 分享一份嵌入式软件工具清单!
  9. OpenMV IDE安装使用教程
  10. 智慧健康服务平台解决方案