运用百度框架paddle进行手势识别【动手实践,附源码】
生活随笔
收集整理的這篇文章主要介紹了
运用百度框架paddle进行手势识别【动手实践,附源码】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
運用百度框架paddle進行手勢識別
本文為一篇實戰心得
項目來源于百度aistudio平臺,感興趣可以登錄,地址鏈接:
https://aistudio.baidu.com/
1. 深度學習的四個步驟
2. 代碼解析
paddle為大家準備的數據集是0-9的手勢,每個手勢有200+張彩色圖片,分辨率為100x100
使用paddle的reader模塊制作訓練集和測試集
# 定義訓練集和測試集的reader def data_mapper(sample):img, label = sampleimg = Image.open(img)img = img.resize((100, 100), Image.ANTIALIAS)img = np.array(img).astype('float32')img = img.transpose((2, 0, 1))img = img/255.0return img, labeldef data_reader(data_list_path):def reader():with open(data_list_path, 'r') as f:lines = f.readlines()for line in lines:img, label = line.split('\t')yield img, int(label)return paddle.reader.xmap_readers(data_mapper, reader, cpu_count(), 512)# 用于訓練的數據提供器 #buf_size是打亂數據集的參數,size越大,圖片順序越亂 train_reader = paddle.batch(reader=paddle.reader.shuffle(reader=data_reader('./train_data.list'), buf_size=1024), batch_size=32) # 用于測試的數據提供器 test_reader = paddle.batch(reader=data_reader('./test_data.list'), batch_size=32)這里以典型的AlexNet構建神經網絡結構
#定義DNN網絡 class MyDNN(fluid.dygraph.Layer):def __init__(self, name_scope, num_classes=10):super(MyDNN, self).__init__(name_scope)name_scope = self.full_name()self.conv1 = Conv2D(num_channels=3, num_filters=96, filter_size=11, stride=4, padding=5, act='relu')self.pool1 = Pool2D(pool_size=2, pool_stride=2, pool_type='max')self.conv2 = Conv2D(num_channels=96, num_filters=256, filter_size=5, stride=1, padding=2, act='relu')self.pool2 = Pool2D(pool_size=2, pool_stride=2, pool_type='max')self.conv3 = Conv2D(num_channels=256, num_filters=384, filter_size=3, stride=1, padding=1, act='relu')self.conv4 = Conv2D(num_channels=384, num_filters=384, filter_size=3, stride=1, padding=1, act='relu')self.conv5 = Conv2D(num_channels=384, num_filters=256, filter_size=3, stride=1, padding=1, act='relu')self.pool5 = Pool2D(pool_size=2, pool_stride=2, pool_type='max')self.fc1 = Linear(input_dim=9216, output_dim=4096, act='relu')self.drop_ratio1 = 0.5self.fc2 = Linear(input_dim=4096, output_dim=4096, act='relu')self.drop_ratio2 = 0.5self.fc3 = Linear(input_dim=4096, output_dim=num_classes)def forward(self, x):x = self.conv1(x)x = self.pool1(x)x = self.conv2(x)x = self.pool2(x)x = self.conv3(x)x = self.conv4(x)x = self.conv5(x)x = self.pool5(x)x = fluid.layers.reshape(x, [x.shape[0], -1])x = self.fc1(x)# 在全連接之后使用dropout抑制過擬合x= fluid.layers.dropout(x, self.drop_ratio1)x = self.fc2(x)# 在全連接之后使用dropout抑制過擬合x = fluid.layers.dropout(x, self.drop_ratio2)x = self.fc3(x)return x3.實戰心得
在寫代碼的過程中,學到了很多知識,本次實戰有專門的課程輔導,更重要感覺是有個微信群交流,在群里都是大佬,能學到很多東西,大家都很優秀,其中在實戰過程中也遇到了很多問題,助教幫忙解決了。
說說自己的問題吧,可能是自己的基礎太差,是小白的原因,對于官方給出的API文檔看起來很費勁,哈哈哈,自己還得加油,也希望官方能優化文檔,是的小白也能快速入手~~~
over!!!
總結
以上是生活随笔為你收集整理的运用百度框架paddle进行手势识别【动手实践,附源码】的全部內容,希望文章能夠幫你解決所遇到的問題。