facenet採坑之旅,主要記錄一些用facenet過程中遇到的大大小小的問題
問題1:Unable to run align_dataset_mtcnn.py getting an attribute error module ‘facenet’ has no attribute ‘store_revision_info’
使用anaconda的環境,將facenet下載儲存在本地,也下載lfw資料集,在執行align_dataset_mtcnn.py程式碼時,正確的填寫相關引數,報這麼一個錯誤。這個錯誤的原因是由於python路徑的問題,查看出錯程式碼的位置:
from scipy import misc import sys import os import argparse import tensorflow as tf import numpy as np import facenet import align.detect_face import random from time import sleep def main(args): sleep(random.random()) output_dir = os.path.expanduser(args.output_dir) if not os.path.exists(output_dir): os.makedirs(output_dir) # Store some git revision info in a text file in the log directory src_path,_ = os.path.split(os.path.realpath(__file__)) facenet.store_revision_info(src_path, output_dir, ' '.join(sys.argv)) ---------在這個地方出錯 dataset = facenet.get_dataset(args.input_dir)
這是github上的原始碼,這個地方出錯,肯定是facenet匯入錯誤。解決辦法是將從github上下載的facenet-master檔案中src資料夾下所有檔案複製貼上在D:\ProgramData\Anaconda3\Lib\site-packages\facenet下面,當然,因為我是用的anaconda,所以這樣做,另外facenet是在D:\ProgramData\Anaconda3\Lib\site-packages下新建的目錄。貼上之後,將這個資料夾下複製到電腦的環境設定中去,大概就是如下圖所示:
然後問題解決!
問題2:W T:\src\github\tensorflow\tensorflow\core\framework\
與問題1相同的環境設定,這是在執行這個程式碼validate_on_lfw.py,報的錯,而且一直持續報錯,後來猜想是程式碼中這個地方有問題:
def parse_arguments(argv): parser = argparse.ArgumentParser() parser.add_argument('lfw_dir', type=str, help='Path to the data directory containing aligned LFW face patches.') parser.add_argument('--lfw_batch_size', type=int, help='Number of images to process in a batch in the LFW test set.', default=100)----預設100張圖片,記憶體吃不消
後來將這個引數–lfw_batch_size設定為50,就沒有報錯了
--------------------9.29號更新--------------------------------------
在執行facenet目錄下的contributed中的real_time_face_recognition.py遇到一個小小的問題,就是在匯入分類器pickle模型時候出錯,編碼錯誤:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0x80 in position 1024: ordinal not in range(128)
把原始碼修改成如下這樣就ok了
def __init__(self):
with open(classifier_model, 'rb') as infile:
self.model, self.class_names = pickle.load(infile,encoding='latin1') ###這個地方的修改主要是python版本不同造成的原因
後續繼續更新!