记录搭建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跑通了


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