記錄搭建openface的路

用公司的服務器,python的所有包都打好了。


網址:https://github.com/davidsandberg/facenet/wiki/Train-a-classifier-on-own-images


開始一步一步,都很順利。


該下的都下了。


現在就在

Train a classifier on LFW

這一步出了問題。tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor of shape [1,1,896,256] and type float

之前也報錯:InternalError: Dst tensor is notinitialized,於是我export CUDA_VISIBLE_DEVICES=1了一下,打開了cuda。


那麼現在是什麼問題呢,網上搜了很多相關東西,發現可能是資源耗盡,垃圾服務器,那就試試把批處理調小一點。遙想當年用cpu版本的caffe訓練人臉數據集,只開了個batch size64就會卡的不行不行。

看來是的,把batch size調小了10倍就行了。

接着走:

都很順沒毛病。



ok,現在是訓練自己的訓練集了。


按照老步驟走到了這一步:python src/classifier.py TRAIN ~/datasets/my_dataset/train/ ~/models/model-20170216-091149.pb ~/models/my_classifier.pkl --batch_size 1000


在此之前把圖片做成10個類,每個類10張,每個類取5張放在test文件夾,5張放在train文件夾。


報錯:ValueError: could not broadcast input array from shape (160,160,4) into shape (160,160,3)


這是什麼原因呢,查了一下facenet.py發現

def load_data(image_paths, do_random_crop, do_random_flip, image_size, do_prewhiten=True):
    nrof_samples = len(image_paths)
    images = np.zeros((nrof_samples, image_size, image_size, 3))
    for i in range(nrof_samples):
        img = misc.imread(image_paths[i])
        if img.ndim == 2:
            img = to_rgb(img)
        if do_prewhiten:
            img = prewhiten(img)
        img = crop(img, do_random_crop, image_size)
        img = flip(img, do_random_flip)
        images[i,:,:,:] = img
    return images

這個函數,把圖片做成了矩陣,然後估計矩陣變成了4維矩陣,超過了原先設定的np.zero的三維。那麼這四維是什麼呢?我知道三維是rgb,查了一點資料發現這四維可能是rgba,a是alpha通道。不管這是什麼通道,我們得刪掉這個通道。這裏還得確定這個通道在第幾維,是第一還是第二還是。。。。都得判斷。容我先研究下。


最後還是先認慫,先用jpg格式圖片,至少jpg格式不是4通道。


ok跑通了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章