『我与飞桨的故事』PaddlePaddle最菜程序员的飞桨之旅

原创
2020/12/14 13:27
阅读数 1.9K

PaddlePaddle最菜程序员的飞桨之旅—三岁

大家好,这里是大家熟悉的三岁,眨眼间又到了年尾,一年中冲KPI的时间到了,借着这个机会再来 一篇博客,谈谈自己和 paddle的相识相知与相互学习。

下载安装命令

## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

个人介绍

我是三岁,一个代码界的小白,由于各种原因,代码路不顺,学习时间短,从去年开始自学python,看了嵩天老师的慕课视频,但是一直是C语言的思考模式,有点无法接受,一直耽搁着。一眨眼到了年初,对python的痴迷让我继续寻找着视频,不停学习,敲代码。接触了博客,逐渐开始了,写博客的旅程,自己会的,自己的理解都放到了博客上,就在这时看到了一则推文,从此踏上了一条“不归之路”

结缘之路

在这里插入图片描述

短短一段话,句句戳心房!
小白也可以学深度学习,了解人工智能???
几行代码就可以实现人工智能???
看看我现在的水平怎么样!走!!!

一个错误的决定打开了我与paddle的认识之路
在这里插入图片描述

逐步的对深度学习的认识,对AI Studio平台的逐步了解

在这里插入图片描述

看着前期的课程与深度学习毫不相干,但是到最后才发现那些都是基础,为后期的课程做好了坚实的基础。直到PaddleHub的出现改变了我对这些的看法。

# 安装paddlehub
!pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装口罩检测模型
!hub install pyramidbox_lite_mobile_mask==1.1.0
# 进行识别
!hub run pyramidbox_lite_mobile_mask --input_path "data/data31681/901.jpg"
import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
test_img_path = "data/data31681/test.jpeg"
img = mpimg.imread(test_img_path) 

# 展示待预测图片
plt.figure(figsize=(10,10))
plt.imshow(img) 
plt.axis('off') 
plt.show()

在这里插入图片描述

# 预测结果展示
test_img_path = "./detection_result/test.jpeg"
img = mpimg.imread(test_img_path)

# 展示预测结果图片
plt.figure(figsize=(10,10))
plt.imshow(img) 
plt.axis('off') 
plt.show()

在这里插入图片描述
短短的几行代码(不不不就一行命令就把结果显现了)仔细一看这个是linux代码不是python的,经过文档查看也就是几行的事情。

import paddlehub as hub
import cv2

module = hub.Module(name="pyramidbox_lite_mobile_mask")

test_img_path = "data/data31681/test.jpeg"

# set input dict
input_dict = {
   
   
   "data": [cv2.imread(test_img_path)]}
results = module.face_detection(data=input_dict)
print(results)
[2020-04-25 09:37:05,353] [    INFO] - Installing pyramidbox_lite_mobile_mask module
[2020-04-25 09:37:05,383] [    INFO] - Module pyramidbox_lite_mobile_mask already installed in /home/aistudio/.paddlehub/modules/pyramidbox_lite_mobile_mask
[2020-04-25 09:37:05,506] [    INFO] - Installing pyramidbox_lite_mobile module-1.1.0
Downloading pyramidbox_lite_mobile
[==================================================] 100.00%
Uncompress /home/aistudio/.paddlehub/tmp/tmpt3rs1qq6/pyramidbox_lite_mobile
[==================================================] 100.00%
[2020-04-25 09:37:06,400] [    INFO] - Successfully installed pyramidbox_lite_mobile-1.1.0
[2020-04-25 09:37:06,568] [    INFO] - 133 pretrained paramaters loaded by PaddleHub
[2020-04-25 09:37:06,615] [    INFO] - 0 pretrained paramaters loaded by PaddleHub
[{
   
   
   'data': {
   
   
   'label': 'MASK', 'left': 678.9846324920654, 'right': 893.2966804504395, 'top': 241.9092297554016, 'bottom': 487.231333732605, 'confidence': 0.9711812}, 'id': 1}]

看到’label’: ‘MASK’,恍然大悟这就是有戴口罩的啊!

短短的几行,不经让我一个见识短浅的小白一脸迷茫,人工智能真这么简单便捷???

直到自己实践了项目——五人识别:

在这里插入图片描述

第一次接触到了,训练集、测试集、验证集(6:2:2),第一次知道了acc和loss还有epoch等专业名词及其的作用。

第一次知道CPU和GPU的不同区别

在这里插入图片描述

第一次……

万万没想到第一次认识那么简单

第一次以为人工智能如此简单,第一次认为自己又双叒叕可以了,直到接触到了强化学习——世界冠军带你从零实践,发现自己的身影的卑微。

进一步了解

从深度学习的基本理论,到所需要的数学基础,从PARL强化学习到
迷宫游戏,四轴飞行器的实际操作,在代码和虚拟环境中学习提高
小小的游戏,无不让头顶一凉,寒冬的冷风犹如凛冽的刀片从闪闪发光的头顶飘过,不禁瑟瑟发抖。
作为代码人,我们有代码魂,我们要默默的敲代码然后惊艳我们自己。

Model

分别搭建Actor、Critic的Model结构,构建QuadrotorModel。

class ActorModel(parl.Model):
    def __init__(self, act_dim):
        hid_size = 100

        self.fc1 = layers.fc(size=hid_size, act='relu')
        self.fc2 = layers.fc(size=act_dim, act='tanh')

    def policy(self, obs):
        hid = self.fc1(obs)
        logits = self.fc2(hid)
        return logits
class CriticModel(parl.Model):
    def __init__(self):
        hid_size = 100

        self.fc1 = layers.fc(size=hid_size, act='relu')
        self.fc2 = layers.fc(size=1, act=None)

    def value(self, obs, act):
        concat = layers.concat([obs, act], axis=1)
        hid = self.fc1(concat)
        Q = self.fc2(hid)
        Q = layers.squeeze(Q, axes=[1])
        return Q
# 创建飞行器环境
env = make_env("Quadrotor", task="hovering_control")
env.reset()
obs_dim = env.observation_space.shape[0]
act_dim = env.action_space.shape[0]


# 根据parl框架构建agent
model = QuadrotorModel(act_dim) # Model(act_dim)
algorithm = DDPG(
    model, gamma=GAMMA, tau=TAU, actor_lr=ACTOR_LR, critic_lr=CRITIC_LR)
agent = QuadrotorAgent(algorithm, obs_dim, act_dim) 


# parl库也为DDPG算法内置了ReplayMemory,可直接从 parl.utils 引入使用
rpm = ReplayMemory(int(MEMORY_SIZE), obs_dim, act_dim)
# 7. 请选择你训练的最好的一次模型文件做评估
ckpt = 'model_dir/steps_700320.ckpt'  # 请设置ckpt为你训练中效果最好的一次评估保存的模型文件名称

agent.restore(ckpt)
evaluate_reward = evaluate(env, agent)
logger.info('Evaluate reward: {}'.format(evaluate_reward)) # 打印评估的reward

短短的代码,磨光了头皮,无不让小白瑟瑟发抖,多少次似曾想要放弃,但是作为代码人哪有放弃的道理。日日夜夜,在哪个即将截止的夜晚终于克服了报错,获得了一个较好的结果,再次化身调参小白,随机调参。

不断的相互认知

在不断的学习与提高中,相互学习,渐渐的接触中知道了paddle的范围,知道了paddleHubpaddle的区别,paddlex,EasyDL等等产品不断迭代更新,PaddlePaddle2.0也即将问世,又是可以重头开始学习,不断提高的一个好机会。

总结——肺腑之言

虽然我是一个不起眼的小白,在这些领域没有太多的涉猎和造诣,但是我认为我们作为新时代的青年,应该支持我们的国产框架,我们的成长不断促使paddle的成长。我们的需求也是paddle的发展方向,虽然目前我们的框架没有国外的一些框架那么的完善,但是我们的进步与发展以及和他们没有太大的差异了,所以我们要继续努力,不断前进,从我这个小白做起。

Paddle一个小白也可以简单学会的深度学习框架

加油吧!这里是三岁,让我们乘风破浪继续前进,2021Paddle会更好!!!

下载安装命令

## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

本文同步分享在 博客“三岁学编程”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
1 收藏
分享
加载中
叹气,可惜 paddlepaddle 是百度的,从社会道德层面实在无法接受百度的产品。
02/04 09:30
回复
举报
更多评论
打赏
1 评论
1 收藏
0
分享
返回顶部
顶部