tenssorflow 2..0インストールと実戦教程(CASIA FACE v 5)


1.0 tenssor flowのインストール
1.1 pythonをインストールする
pythonのダウンロードにはpython 3.xが必要です。
https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe
python安装
インストール時にAdd Python 3.7 to PATHにチェックを付け、環境変数にpythonを追加します。
1.2 tenssorflowをインストールする
コマンドラインを開いて、実行します。
pip install tenssor flow==2.1.0
pip install tensorflow==2.1.0
pip install tensorflow 2
pipはtenssorflowと他の依存をインストールします。
1.3 vc++2015-2019 redistをインストールする…
tenssorflowのもう一つの依存(多くのtenssorflowのインストール失敗の原因はこれがインストールされていないからです。)
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
1.4 CUDAとCUDNNを取り付けます。
クダ:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x 86_64&target_version=10&target_type=exelocal
cudnn:https://developer.nvidia.com/rdp/cudnn-download(nvidiaアカウントの登録が必要です)
cudnnはダウンロードした後に圧縮ファイルで、彼を解凍してCUDAの中で置いて、次の図のようになります。
cudnn
dll缺失
高バージョンのCUDAが欠けています。101.dllをダウンロードしてC:\Program Files\NVIDIA GPU Computting Toolkit\CUDA\v 10.2\binに置いてください。
https://cn.dll-files.com/cudart64_101.dll.
2.0 CASIA実戦
2.1 CASIAデータセット
casia
インターネットからcasiaデータセットをダウンロードできます。
ここではcasiaデータセットを例にとって、実際に自分が必要とするデータセットを使うことができます。
2.2データセットの処理
dataとtestの二つのフォルダを作ってcasiaを中にコピーします。
カタログはこんなものです。/data/000/000_0.bmp
data.pyはデータを処理して、実は巡回して、マッチングして、削除します。

import os 
data = './data'
dirs = os.listdir(data) 
for dir in dirs:
 for file in os.listdir(data + '/' + dir):
  if file.endswith("4.bmp"):
   os.remove(data + '/' + dir + '/' + file)
test = './test'
tdirs = os.listdir(test)
for dir in tdirs:
 for file in os.listdir(test + '/' + dir):
  if file.endswith("0.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("1.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("2.bmp"):
   os.remove(test + '/' + dir + '/' + file)
  if file.endswith("3.bmp"):
   os.remove(test + '/' + dir + '/' + file)
2.3トレーニングコード
casia.py

import os
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np
/*       0000,1111,...         */
#data  
arr = []
for i in range(100):
 for j in range(4):
  arr.append(i)
arr = np.array(arr)
#test  
tarr = []
for i in range(100):
 tarr.append(i)
tarr = np.array(tarr)

#   
pwd='./data'
dirs = os.listdir(pwd)
imgs = []

for dir in dirs:
 for file in os.listdir(pwd + '/' + dir):
  image = tf.io.read_file(pwd + '/' + dir + '/' + file)
  img = tf.image.decode_bmp(image,channels=3)
  imgs.append(img)
print("[*]       ")
print(imgs[0].shape)
#   (   )
tpwd='./test'
tdirs = os.listdir(tpwd)
timgs = []
for tdir in tdirs:
 for tfile in os.listdir(tpwd + '/' + tdir):
  timage = tf.io.read_file(tpwd + '/' + tdir + '/' + tfile)
  timg = tf.image.decode_bmp(timage,channels=3)
  timgs.append(timg)
print("[*]       ")
print(timgs[0].shape)
#      
model = Sequential([
 Conv2D(16, (3,3), padding='same', activation='relu',input_shape=(480,640,3)),
 MaxPooling2D(),
 Conv2D(64, (3,3), padding='same', activation='relu'),
 MaxPooling2D(),
 Conv2D(128, (3,3), padding='same', activation='relu'),
 MaxPooling2D(),
 Flatten(),
 Dense(128, activation='relu'),
 Dense(100, activation='softmax'),
])
model.summary()//        
#   
model.compile(optimizer=tf.keras.optimizers.Adam(),
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
#  
ds = tf.data.Dataset.from_tensor_slices((imgs,arr))
ds = ds.batch(16)
ds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
model.fit(ds,epochs=20)
tds = tf.data.Dataset.from_tensor_slices((timgs,tarr))
tds = ds.prefetch(buffer_size=tf.data.experimental.AUTOTUNE)
model.evaluate(tds, verbose=2)
#  
tf.saved_model.save(model, "./tmp/")
2.4トレーニングと検証
コマンドラインでpython casia.pyを実行して訓練します。
pred.py

import os
import tensorflow as tf
import numpy as np
/*         */
from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)
/*    */

model_path = './tmp' //    
test_path = "./test/002/002_4.bmp"//       
model = tf.keras.models.load_model(model_path, custom_objects=None, compile=True)

image = tf.io.read_file(test_path)
img = tf.image.decode_bmp(image,channels=3)
img = img[tf.newaxis, ...]
res = model.predict(
 img, batch_size=None, verbose=0, steps=None, callbacks=None, max_queue_size=10,
 workers=1, use_multiprocessing=False
)
pred = tf.argmax(res, axis=1)
print (pred[0])
print (res[0,pred[0]])
締め括りをつける
ここで、テナントflow 2.10の実装と実戦(CASIA FACE v 5)に関する記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからも応援してください。