真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了如何使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來看看吧。

成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站易于使用并且具有良好的響應(yīng)性。

Keras提供了一些用ImageNet訓(xùn)練過的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使用這些模型的時(shí)候,有一個(gè)參數(shù)include_top表示是否包含模型頂部的全連接層,如果包含,則可以將圖像分為ImageNet中的1000類,如果不包含,則可以利用這些參數(shù)來做一些定制的事情。

在運(yùn)行時(shí)自動(dòng)下載有可能會(huì)失敗,需要去網(wǎng)站中手動(dòng)下載,放在“~/.keras/models/”中,使用WinPython則在“settings/.keras/models/”中。

修正:表示當(dāng)前是訓(xùn)練模式還是測試模式的參數(shù)K.learning_phase()文中表述和使用有誤,在該函數(shù)說明中可以看到:

The learning phase flag is a bool tensor (0 = test, 1 = train),所以0是測試模式,1是訓(xùn)練模式,部分網(wǎng)絡(luò)結(jié)構(gòu)下兩者有差別。

這里使用ResNet50預(yù)訓(xùn)練模型,對(duì)Caltech201數(shù)據(jù)集進(jìn)行圖像分類。只有CPU,運(yùn)行較慢,但是在訓(xùn)練集固定的情況下,較慢的過程只需要運(yùn)行一次。

該預(yù)訓(xùn)練模型的中文文檔介紹在http://keras-cn.readthedocs.io/en/latest/other/application/#resnet50。

我使用的版本:

1.Ubuntu 16.04.3

2.Python 2.7

3.Keras 2.0.8

4.Tensoflow 1.3.0

5.Numpy 1.13.1

6.python-opencv 2.4.9.1+dfsg-1.5ubuntu1

7.h6py 2.7.0

從文件夾中提取圖像數(shù)據(jù)的方式:

函數(shù):

def eachFile(filepath):     #將目錄內(nèi)的文件名放入列表中
 pathDir = os.listdir(filepath)
 out = []
 for allDir in pathDir:
  child = allDir.decode('gbk') # .decode('gbk')是解決中文顯示亂碼問題
  out.append(child)
 return out
 
def get_data(data_name,train_left=0.0,train_right=0.7,train_all=0.7,resize=True,data_format=None,t=''): #從文件夾中獲取圖像數(shù)據(jù)
 file_name = os.path.join(pic_dir_out,data_name+t+'_'+str(train_left)+'_'+str(train_right)+'_'+str(Width)+"X"+str(Height)+".h6") 
 print file_name
 if os.path.exists(file_name):   #判斷之前是否有存到文件中
  f = h6py.File(file_name,'r')
  if t=='train':
   X_train = f['X_train'][:]
   y_train = f['y_train'][:]
   f.close()
   return (X_train, y_train)
  elif t=='test':
   X_test = f['X_test'][:]
   y_test = f['y_test'][:]
   f.close()
   return (X_test, y_test) 
  else:
   return 
 data_format = conv_utils.normalize_data_format(data_format)
 pic_dir_set = eachFile(pic_dir_data)
 X_train = []
 y_train = []
 X_test = []
 y_test = []
 label = 0
 for pic_dir in pic_dir_set:
  print pic_dir_data+pic_dir
  if not os.path.isdir(os.path.join(pic_dir_data,pic_dir)):
   continue 
  pic_set = eachFile(os.path.join(pic_dir_data,pic_dir))
  pic_index = 0
  train_count = int(len(pic_set)*train_all)
  train_l = int(len(pic_set)*train_left)
  train_r = int(len(pic_set)*train_right)
  for pic_name in pic_set:
   if not os.path.isfile(os.path.join(pic_dir_data,pic_dir,pic_name)):
    continue  
   img = cv2.imread(os.path.join(pic_dir_data,pic_dir,pic_name))
   if img is None:
    continue
   if (resize):
    img = cv2.resize(img,(Width,Height)) 
    img = img.reshape(-1,Width,Height,3)
   if (pic_index < train_count):
    if t=='train':
     if (pic_index >= train_l and pic_index < train_r):
      X_train.append(img)
      y_train.append(label) 
   else:
    if t=='test':
     X_test.append(img)
     y_test.append(label)
   pic_index += 1
  if len(pic_set) <> 0:  
   label += 1
 
 f = h6py.File(file_name,'w') 
 if t=='train':
  X_train = np.concatenate(X_train,axis=0)  
  y_train = np.array(y_train)  
  f.create_dataset('X_train', data = X_train)
  f.create_dataset('y_train', data = y_train)
  f.close()
  return (X_train, y_train)
 elif t=='test':
  X_test = np.concatenate(X_test,axis=0) 
  y_test = np.array(y_test)
  f.create_dataset('X_test', data = X_test)
  f.create_dataset('y_test', data = y_test)
  f.close()
  return (X_test, y_test) 
 else:
  return

文章名稱:如何使用Keras預(yù)訓(xùn)練模型ResNet50進(jìn)行圖像分類-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/djoicg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部