『我與飛槳的故事』PaddlePaddle最菜程序員的飛槳之旅

PaddlePaddle最菜程序員的飛槳之旅—三歲python

你們好,這裏是你們熟悉的三歲,眨眼間又到了年尾,一年中衝KPI的時間到了,藉着這個機會再來 一篇博客,談談本身和 paddle的相識相知與相互學習。linux

下載安裝命令

## 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的癡迷讓我繼續尋找着視頻,不停學習,敲代碼。接觸了博客,逐漸開始了,寫博客的旅程,本身會的,本身的理解都放到了博客上,就在這時看到了一則推文,今後踏上了一條「不歸之路」git

結緣之路

在這裏插入圖片描述

短短一段話,句句戳心房!
小白也能夠學深度學習,瞭解人工智能???
幾行代碼就能夠實現人工智能???
看看我如今的水平怎麼樣!走!!!程序員

一個錯誤的決定打開了我與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’,恍然大悟這就是有戴口罩的啊!ide

短短的幾行,不經讓我一個見識短淺的小白一臉迷茫,人工智能真這麼簡單便捷???學習

直到本身實踐了項目——五人識別:

在這裏插入圖片描述

第一次接觸到了,訓練集、測試集、驗證集(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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索