一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用keras來簡單的進行圖片識別分類

新機器視覺 ? 來源:深度學(xué)習(xí)科研平臺 ? 作者:深度學(xué)習(xí)科研平臺 ? 2021-03-20 09:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

接觸深度學(xué)習(xí)3個月以來,從當(dāng)初的小白零基礎(chǔ)學(xué)習(xí),過程十分艱苦,看了幾章大牛 YoshuaBengio 寫的deep learning一書,粗略了解了基本常用的神經(jīng)網(wǎng)絡(luò)以及梯度更新策略,參數(shù)優(yōu)化,也了解以及簡單的使用常用的深度學(xué)習(xí)開發(fā)框架caffe,tensorflow,theano,sklearn機器學(xué)習(xí)庫,目前keras比較火,所以使用keras來簡單的進行圖片識別分類。

數(shù)據(jù)集準備:

看caffe博客的時候看到的數(shù)據(jù)集,然后就下載使用,數(shù)據(jù)集可以在最后下載。

數(shù)據(jù)集一共有5類圖片,一共500張,每類圖片100張,訓(xùn)練集400張,每類80張,測試集100張,每類20張

第一步:

數(shù)據(jù)集進行處理:

使用opencv對圖片進行處理,縮放圖片大小為128×128大小,通道為單通道灰度圖像

#coding:utf8

import os

import cv2.cv as cv

import cv2

# 遍歷指定目錄,顯示目錄下的所有文件名

width_scale = 192 #縮放尺寸寬度

height_scale = 128#縮放尺寸高度

write_path = "/home/zhanghao/data/classification/test_scale/"#要寫入的圖片路徑

#遍歷每一張圖片進行處理

def eachFile(filepath):

pathDir = os.listdir(filepath)

for allDir in pathDir:

child = os.path.join('%s%s' % (filepath,allDir))

write_child = os.path.join('%s%s' % (write_path,allDir))

image = cv.LoadImage(child,0)

des_image = cv.CreateImage((width_scale,height_scale),image.depth,1)

cv.Resize(image,des_image,cv2.INTER_AREA)

# cv.ShowImage('afe',des_image)

cv.SaveImage(write_child,des_image)

# break

if __name__ == '__main__':

filePathC = "/home/zhanghao/data/classification/test/"

eachFile(filePathC)

5439c10a-88ef-11eb-8b86-12bb97331649.png

第二步

把圖片集制作成keras識別的數(shù)據(jù)集

#制作數(shù)據(jù)集

def data_label(path,count):

data = np.empty((count,1,128,192),dtype = 'float32')#建立空的四維張量類型32位浮點

label = np.empty((count,),dtype = 'uint8')

i = 0

pathDir = os.listdir(path)

for each_image in pathDir:

all_path = os.path.join('%s%s' % (path,each_image))#路徑進行連接

image = cv2.imread(all_path,0)

mul_num = re.findall(r"d",all_path)#尋找字符串中的數(shù)字,由于圖像命名為300.jpg 標(biāo)簽設(shè)置為0

num = int(mul_num[0])-3

# print num,each_image

# cv2.imshow("fad",image)

# print child

array = np.asarray(image,dtype='float32')

data[i,:,:,:] = array

label[i] = int(num)

i += 1

return data,label

第三步

構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練和測試

#構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)

def cnn_model(train_data,train_label,test_data,test_label):

model = Sequential()

model.add(Convolution2D(

nb_filter = 12,

nb_row = 3,

nb_col = 3,

border_mode = 'valid',

dim_ordering = 'th',

input_shape = (1,128,192)))

model.add(Activation('relu'))#激活函數(shù)使用修正線性單元

model.add(MaxPooling2D(

pool_size = (2,2),

strides = (2,2),

border_mode = 'valid'))

model.add(Convolution2D(

24,

3,

3,

border_mode = 'valid',

dim_ordering = 'th'))

model.add(Activation('relu'))

#池化層 24×29×29

model.add(MaxPooling2D(

pool_size = (2,2),

strides = (2,2),

border_mode = 'valid'))

model.add(Convolution2D(

48,

3,

3,

border_mode = 'valid',

dim_ordering = 'th'))

model.add(Activation('relu'))

model.add(MaxPooling2D(

pool_size = (2,2),

strides =(2,2),

border_mode = 'valid'))

model.add(Flatten())

model.add(Dense(20))

model.add(Activation(LeakyReLU(0.3)))

model.add(Dropout(0.5))

model.add(Dense(20))

model.add(Activation(LeakyReLU(0.3)))

model.add(Dropout(0.4))

model.add(Dense(5,init = 'normal'))

model.add(Activation('softmax'))

adam = Adam(lr = 0.001)

model.compile(optimizer = adam,

loss = 'categorical_crossentropy',

metrics = ['accuracy'])

print '----------------training-----------------------'

model.fit(train_data,train_label,batch_size = 12,nb_epoch = 35,shuffle = True,show_accuracy = True,validation_split = 0.1)

print '----------------testing------------------------'

loss,accuracy = model.evaluate(test_data,test_label)

print ' test loss:',loss

print ' test accuracy',accuracy

第四步

調(diào)用上述函數(shù)進行訓(xùn)練預(yù)測

train_path = '/home/zhanghao/data/classification/train_scale/'

test_path = '/home/zhanghao/data/classification/test_scale/'

train_count = getnum(train_path)

test_count = getnum(test_path)

train_data,train_label = data_label(train_path,train_count)

test_data,test_label = data_label(test_path,test_count)

train_label = np_utils.to_categorical(train_label,nb_classes = 5)

test_label = np_utils.to_categorical(test_label,nb_classes = 5)

cnn_model(train_data,train_label,test_data,test_label)

用到的頭文件

import re

import cv2

import os

import numpy as np

import cv2.cv as cv

from keras.models import Sequential

from keras.layers.core import Dense,Activation,Flatten

from keras.layers.convolutional import Convolution2D,MaxPooling2D

from keras.optimizers import Adam

from keras.layers.advanced_activations import LeakyReLU

from keras.utils import np_utils

cpu運行,迭代50次,預(yù)測準確率達到92%,還算可以的準確率

具體實現(xiàn)代碼:https://github.com/zhanghao-JNU/keras-training

路漫漫其修遠兮,吾將上下而求索

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:使用CNN神經(jīng)網(wǎng)絡(luò)進行圖片識別分類

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【嘉楠堪智K230開發(fā)板試用體驗】01 Studio K230開發(fā)板Test2——手掌,手勢檢測,字符檢測

    這篇發(fā)完就繼續(xù)去整比賽了,后續(xù)看電賽上k230的發(fā)揮吧 之前的顏色識別和二維碼識別功能,類似于使用基礎(chǔ)工具進行圖像分析,適用于簡單任務(wù),但在復(fù)雜場景下能力有限。 KPU(神經(jīng)網(wǎng)絡(luò)處理器
    發(fā)表于 07-10 09:45

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    分類,適合處理較為規(guī)范的手寫數(shù)字。 K近鄰算法(KNN):基于相似度的分類方法,通過比較待識別數(shù)字與訓(xùn)練樣本的距離進行
    發(fā)表于 06-30 16:45

    在友晶LabCloud平臺上使用PipeCNN實現(xiàn)ImageNet圖像分類

    利用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)進行圖像分類是通過使用多個卷積層從輸入數(shù)據(jù)中提取特征,最后通過分類層做決策
    的頭像 發(fā)表于 04-23 09:42 ?402次閱讀
    在友晶LabCloud平臺上使用PipeCNN實現(xiàn)ImageNet圖像<b class='flag-5'>分類</b>

    基于RV1126開發(fā)板實現(xiàn)自學(xué)習(xí)圖像分類方案

    在RV1126開發(fā)板上實現(xiàn)自學(xué)習(xí):在識別前對物體圖片進行模型學(xué)習(xí),訓(xùn)練完成后通過算法分類得出圖像的模型ID。 方案設(shè)計邏輯流程圖,方案代碼分為分為兩個業(yè)務(wù)流程,主體代碼負
    的頭像 發(fā)表于 04-21 13:37 ?11次閱讀
    基于RV1126開發(fā)板實現(xiàn)自學(xué)習(xí)圖像<b class='flag-5'>分類</b>方案

    電子元器件的分類方式

    電子元器件可以按照不同的分類標(biāo)準進行分類,以下是一些常見的分類方式。
    的頭像 發(fā)表于 04-16 14:52 ?885次閱讀

    如何將Keras H5模型轉(zhuǎn)換為中間表示 (IR) 格式?

    第 1 步: 將 Keras H5 模型轉(zhuǎn)換為保存的型號格式 安裝 依賴關(guān)系: cd deployment_toolsmodel_optimizerinstall_prerequisites
    發(fā)表于 03-07 06:11

    轉(zhuǎn)換Keras H5模型,為什么無法確定--input_shape參數(shù)的值?

    使用以下命令轉(zhuǎn)換 Keras H5 模型: mo --saved_model_dir model/ 遇到以下錯誤: [ ERROR ] Shape [-1 30 30 3
    發(fā)表于 03-05 07:51

    使用DLP4500進行圖片投影時,內(nèi)置Flash太小,無法投影更多的圖片,怎么解決?

    在使用DLP4500進行圖片投影時,內(nèi)置Flash太小,無法投影更多的圖片,請問有其他方法能夠投影更多的圖片嗎?或者有其他flash更大的型號DLP推薦嗎?
    發(fā)表于 02-18 07:33

    基于鎖相放大器的電渦流金屬分類系統(tǒng)設(shè)計

    電渦流檢測是一種通過檢測金屬導(dǎo)體感應(yīng)出的微小渦流信號識別被測材料性質(zhì)的方法。在利用電渦流檢測技術(shù)進行金屬分類時,微弱信號甚至?xí)辉肼曅盘柾耆蜎],這使提取有效信號變得非常困難。
    的頭像 發(fā)表于 01-18 10:24 ?433次閱讀

    LabVIEW使用Vision視覺進行硬幣分類計數(shù)

    LabVIEW使用Vision視覺進行硬幣分類計數(shù),有償,帶價加q:3430396759
    發(fā)表于 12-29 20:20

    如何使用ddc進行數(shù)據(jù)分類

    在探討如何使用DDC(Dewey Decimal Classification,即杜威十進制分類法)進行數(shù)據(jù)分類時,我們首先需要明確DDC是一種用于圖書館分類和組織圖書的體系,它按照一
    的頭像 發(fā)表于 12-18 15:05 ?1143次閱讀

    如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發(fā)板

    功能,首先要進行人臉檢測,判斷出圖片中人臉的位置,才能進行下一步的操作。 OpenCV人臉檢測方法 在OpenCV中主要使用了兩種特征(即兩種方法)進行人臉檢測,Haar特征和LBP特
    發(fā)表于 11-15 17:58

    減速電機該如何分類?

    減速電機是一種將電能轉(zhuǎn)換為機械能的設(shè)備,通過內(nèi)置的減速機構(gòu)降低電機的轉(zhuǎn)速,同時增加扭矩。這種設(shè)備廣泛應(yīng)用于各種工業(yè)自動化、輸送系統(tǒng)、機器人等領(lǐng)域。減速電機可以根據(jù)不同的標(biāo)準進行分類,以下是一些常見
    的頭像 發(fā)表于 10-24 10:19 ?1142次閱讀

    使用MODE引腳進行簡單的恒壓調(diào)節(jié)

    電子發(fā)燒友網(wǎng)站提供《使用MODE引腳進行簡單的恒壓調(diào)節(jié).pdf》資料免費下載
    發(fā)表于 08-30 10:05 ?0次下載
    使用MODE引腳<b class='flag-5'>進行</b><b class='flag-5'>簡單</b>的恒壓調(diào)節(jié)

    基于高光譜數(shù)據(jù)的典型地物分類識別方法研究

    隨著成像光譜儀器的廣泛應(yīng)用,利用光譜數(shù)據(jù)進行物質(zhì)分類識別已經(jīng)成為一項重要的研究內(nèi)容,研究不同分類算法對最終的目標(biāo)識別準確度具有重要意義。
    的頭像 發(fā)表于 07-18 14:43 ?867次閱讀
    基于高光譜數(shù)據(jù)的典型地物<b class='flag-5'>分類</b><b class='flag-5'>識別</b>方法研究