実現したいこと
GoogleDriveにある画像から顔認識をしたいと考えています。
前提
GoogleColabで顔認証をさせるためのコードをチャットGPTから書かせてそれを用いることにしました。
kerasを用いたコードを実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-1fd1e5f6721a> in <cell line: 10>() 8 import numpy as np 9 import keras ---> 10 from keras_vggface.vggface import VGGFace 11 12 #GoogleDriveの参考 2 frames /usr/local/lib/python3.10/dist-packages/keras_vggface/__init__.py in <module> ----> 1 from keras_vggface.vggface import VGGFace 2 from keras_vggface.version import __version__ /usr/local/lib/python3.10/dist-packages/keras_vggface/vggface.py in <module> 7 ''' 8 from __future__ import print_function ----> 9 from keras_vggface.models import RESNET50, VGG16, SENET50 10 11 /usr/local/lib/python3.10/dist-packages/keras_vggface/models.py in <module> 14 AveragePooling2D, Reshape, Permute, multiply 15 from keras_applications.imagenet_utils import _obtain_input_shape ---> 16 from keras.utils import layer_utils 17 from keras.utils.data_utils import get_file 18 from keras import backend as K ImportError: cannot import name 'layer_utils' from 'keras.utils' (/usr/local/lib/python3.10/dist-packages/keras/utils/__init__.py)
ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-09a6fed00bef> in <cell line: 12>() 10 import numpy as np 11 import keras ---> 12 from keras_vggface.vggface import VGGFace 13 14 #GoogleDriveの参考 2 frames /usr/local/lib/python3.10/dist-packages/keras_vggface/models.py in <module> 18 from keras import backend as K 19 from keras_vggface import utils ---> 20 from keras.engine.topology import get_source_inputs 21 import warnings 22 from keras.models import Model ModuleNotFoundError: No module named 'keras.engine.topology'
該当のソースコード
GoogleColab上でpythonを用いて作業しています。
1import os 2import cv2 3import numpy as np 4import keras 5from keras_vggface.vggface import VGGFace 6 7#GoogleDriveの参考 8from google.colab import drive 9drive.mount('/content/drive/') 10 11# 顔写真のファイルパスを指定 12file_path = "/content/drive/MyDrive/okakou/face/01/" 13 14# ファイルパスから画像データを読み込み 15image = cv2.imread(file_path) 16 17# 画像をRGBに変換 18#image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 19 20# 顔検出のためのカスケード分類器を読み込み 21face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") 22 23# 画像から顔を検出 24faces = face_cascade.detectMultiScale(image, 1.3, 5) 25 26# 顔の分類のためのVGGFaceモデルを読み込み 27model = VGGFace(model="resnet50") 28 29# 検出された顔に対してループ 30for (x, y, w, h) in faces: 31 # 顔の領域を切り出し 32 face = image[y:y+h, x:x+w] 33 # 顔のサイズを224x224にリサイズ 34 face = cv2.resize(face, (224, 224)) 35 # 顔のデータを4次元配列に変換 36 face = np.expand_dims(face, axis=0) 37 # 顔のデータを前処理 38 face = preprocess_input(face, version=2) 39 # 顔の分類を予測 40 pred = model.predict(face) 41 # 予測結果をデコード 42 result = decode_predictions(pred)[0][0] 43 # 予測結果を表示 44 print(f"Detected face at ({x}, {y}, {w}, {h})") 45 print(f"Name: {result[0]}") 46 print(f"Score: {result[1]}")
試したこと
コメントをいただき、kerasのダウングレードを行いましたが、上記のエラーになりました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。