首页 Paddle框架 帖子详情
我与飞桨的故事PaddlePaddle最菜程序员
收藏
快速回复
Paddle框架 文章深度学习炼丹技巧 1217 12
我与飞桨的故事PaddlePaddle最菜程序员
收藏
快速回复
Paddle框架 文章深度学习炼丹技巧 1217 12

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

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

个人介绍
我是三岁,一个代码界的小白,由于各种原因,代码路不顺,学习时间短,从去年开始自学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的范围,知道了paddleHub和paddle的区别,paddlex,EasyDL等等产品不断迭代更新,PaddlePaddle2.0也即将问世,又是可以重头开始学习,不断提高的一个好机会。

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

Paddle一个小白也可以简单学会的深度学习框架
加油吧!这里是三岁,让我们乘风破浪继续前进,2021Paddle会更好!!!

3
收藏
回复
全部评论(12)
时间顺序
小帅丶
#2 回复于2020-12

棒棒棒~

版主得加精置顶。

可惜我不是这个版块的。

1
回复
AIStudio810258
#3 回复于2020-12

加油!加油!2021共同进步!

0
回复
三岁
#4 回复于2020-12
棒棒棒~ 版主得加精置顶。 可惜我不是这个版块的。

我也没有找到,哭唧唧!

0
回复
三岁
#5 回复于2020-12
加油!加油!2021共同进步!

2021新的开始,继续努力,提高自己,也促进更好的Paddle,2021冲冲冲

0
回复
l
laibaohua_2014
#6 回复于2021-01

赞!加油!

0
回复
thinc
#7 回复于2021-01

0
回复
三岁
#8 回复于2021-01
赞!加油!

一起加油!

0
回复
三岁
#9 回复于2021-01
thinc #7

继续努力,不负众望!

0
回复
super松
#10 回复于2021-01

赞啊

0
回复
三岁
#11 回复于2021-01
super松 #10
赞啊

继续努力

0
回复
w
wangwei8638
#12 回复于2021-01

写的很好啊

0
回复
三岁
#13 回复于2021-01
写的很好啊

还需要努力

 

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户