Ejemplo n.º 1
0
def computeMeanMain(args):
    align = NaiveDlib(args.dlibFaceMean, args.dlibFacePredictor)

    imgs = list(iterImgs(args.inputDir))
    if args.numImages > 0:
        imgs = random.sample(imgs, args.numImages)

    facePoints = []
    for img in imgs:
        rgb = img.getRGB()
        bb = align.getLargestFaceBoundingBox(rgb)
        alignedPoints = align.align(rgb, bb)
        if alignedPoints:
            facePoints.append(alignedPoints)

    facePointsNp = np.array(facePoints)
    mean = np.mean(facePointsNp, axis=0)
    std = np.std(facePointsNp, axis=0)

    write(mean, "{}/mean.csv".format(args.modelDir))
    write(std, "{}/std.csv".format(args.modelDir))

    # Only import in this mode.
    import matplotlib as mpl
    mpl.use('Agg')
    import matplotlib.pyplot as plt

    fig, ax = plt.subplots()
    ax.scatter(mean[:, 0], -mean[:, 1], color='k')
    ax.axis('equal')
    for i, p in enumerate(mean):
        ax.annotate(str(i), (p[0] + 0.005, -p[1] + 0.005), fontsize=8)
    plt.savefig("{}/mean.png".format(args.modelDir))
Ejemplo n.º 2
0
def computeMeanMain(args):
    align = NaiveDlib(args.dlibFaceMean, args.dlibFacePredictor)

    imgs = list(iterImgs(args.inputDir))
    if args.numImages > 0:
        imgs = random.sample(imgs, args.numImages)

    facePoints = []
    for img in imgs:
        rgb = img.getRGB()
        bb = align.getLargestFaceBoundingBox(rgb)
        alignedPoints = align.align(rgb, bb)
        if alignedPoints:
            facePoints.append(alignedPoints)

    facePointsNp = np.array(facePoints)
    mean = np.mean(facePointsNp, axis=0)
    std = np.std(facePointsNp, axis=0)

    write(mean, "{}/mean.csv".format(args.modelDir))
    write(std, "{}/std.csv".format(args.modelDir))

    # Only import in this mode.
    import matplotlib as mpl
    mpl.use('Agg')
    import matplotlib.pyplot as plt

    fig, ax = plt.subplots()
    ax.scatter(mean[:, 0], -mean[:, 1], color='k')
    ax.axis('equal')
    for i, p in enumerate(mean):
        ax.annotate(str(i), (p[0] + 0.005, -p[1] + 0.005), fontsize=8)
    plt.savefig("{}/mean.png".format(args.modelDir))
Ejemplo n.º 3
0
def main(args):
    align = NaiveDlib(args.dlibFacePredictor)

    bgrImg = cv2.imread(args.img)
    if bgrImg is None:
        raise Exception("Unable to load image: {}".format(args.img))
    rgbImg = cv2.cvtColor(bgrImg, cv2.COLOR_BGR2RGB)

    bb = align.getLargestFaceBoundingBox(rgbImg)
    if bb is None:
        raise Exception("Unable to find a face: {}".format(args.img))

    landmarks = align.align(rgbImg, bb)
    if landmarks is None:
        raise Exception("Unable to align image: {}".format(args.img))
    # alignedFace = align.alignImg("affine", args.size, rgbImg, bb, landmarks)

    bl = (bb.left(), bb.bottom())
    tr = (bb.right(), bb.top())
    cv2.rectangle(bgrImg, bl, tr, color=(153, 255, 204), thickness=3)
    for landmark in landmarks:
        cv2.circle(bgrImg,
                   center=landmark,
                   radius=3,
                   color=(102, 204, 255),
                   thickness=-1)
    print("Saving image to 'annotated.png'")
    cv2.imwrite("annotated.png", bgrImg)
Ejemplo n.º 4
0
def process(code, div):
    import openface
    import openface.helper
    import dlib
    from openface.alignment import NaiveDlib  # Depends on dlib.
    code = int(code)
    div = int(div)
    dlibModelDir = os.path.join(fileDir, "./openface/models/dlib")
    dlibFaceMean = os.path.join(dlibModelDir, "mean.csv")
    dlibFacePredictor = os.path.join(dlibModelDir,
                                     "shape_predictor_68_face_landmarks.dat")
    align = NaiveDlib(dlibFaceMean, dlibFacePredictor)
    dataset = data.Dataset()
    last = time.time()
    count = 0
    for model, key, img in dataset.get_images(BUCKET_NAME):
        if hash(key) % div == code:
            bb = align.getLargestFaceBoundingBox(img)
            aligned = align.alignImg("affine", 224, img, bb)
            # print time.time() - last
            last = time.time()
            count += 1
            if not aligned is None:
                # print model,key,img.shape,bb,aligned.shape
                cv2.imwrite(
                    "output/face_{}".format(
                        key.replace('/', '_').replace('models', '')), aligned)
                # cv2.imshow("test",aligned)
                # cv2.waitKey(0)
                # cv2.destroyAllWindows()
                # break
        if count % 20 == 0 and code == 0:
            local(
                'aws s3 mv output/ s3://aub3data/output/ --recursive --storage-class "REDUCED_REDUNDANCY"  --region "us-east-1"'
            )
Ejemplo n.º 5
0
def process(code,div):
    import openface
    import openface.helper
    import dlib
    from openface.alignment import NaiveDlib  # Depends on dlib.
    code = int(code)
    div = int(div)
    dlibModelDir = os.path.join(fileDir, "./openface/models/dlib")
    dlibFaceMean = os.path.join(dlibModelDir, "mean.csv")
    dlibFacePredictor = os.path.join(dlibModelDir,"shape_predictor_68_face_landmarks.dat")
    align = NaiveDlib(dlibFaceMean,dlibFacePredictor)
    dataset = data.Dataset()
    last = time.time()
    count = 0
    for model,key,img in dataset.get_images(BUCKET_NAME):
        if hash(key) % div == code:
            bb = align.getLargestFaceBoundingBox(img)
            aligned  = align.alignImg("affine", 224, img, bb)
            # print time.time() - last
            last = time.time()
            count += 1
            if not aligned is None:
                # print model,key,img.shape,bb,aligned.shape
                cv2.imwrite("output/face_{}".format(key.replace('/','_').replace('models','')),aligned)
                # cv2.imshow("test",aligned)
                # cv2.waitKey(0)
                # cv2.destroyAllWindows()
                # break
        if count % 20 == 0 and code == 0:
            local('aws s3 mv output/ s3://aub3data/output/ --recursive --storage-class "REDUCED_REDUNDANCY"  --region "us-east-1"')
Ejemplo n.º 6
0
def process():
    dlibModelDir = os.path.join(fileDir, "./openface/models/dlib")
    dlibFaceMean = os.path.join(dlibModelDir, "mean.csv")
    dlibFacePredictor = os.path.join(dlibModelDir,"shape_predictor_68_face_landmarks.dat")
    align = NaiveDlib(dlibFaceMean,dlibFacePredictor)
    dataset = data.Dataset()
    for model,key,img in dataset.get_images(BUCKET_NAME):
        bb = align.getLargestFaceBoundingBox(img)
        aligned  = align.alignImg("affine", 224, img, bb)
        if not aligned is None:
            print model,key,img.shape,bb,aligned.shape
            cv2.imwrite("test/face_{}".format(key.replace('/','_')),aligned)
            # cv2.imshow("test",aligned)
            # cv2.waitKey(0)
            # cv2.destroyAllWindows()
            # break
        else:
            print "No face found"
Ejemplo n.º 7
0
def process():
    dlibModelDir = os.path.join(fileDir, "./openface/models/dlib")
    dlibFaceMean = os.path.join(dlibModelDir, "mean.csv")
    dlibFacePredictor = os.path.join(dlibModelDir,
                                     "shape_predictor_68_face_landmarks.dat")
    align = NaiveDlib(dlibFaceMean, dlibFacePredictor)
    dataset = data.Dataset()
    for model, key, img in dataset.get_images(BUCKET_NAME):
        bb = align.getLargestFaceBoundingBox(img)
        aligned = align.alignImg("affine", 224, img, bb)
        if not aligned is None:
            print model, key, img.shape, bb, aligned.shape
            cv2.imwrite("test/face_{}".format(key.replace('/', '_')), aligned)
            # cv2.imshow("test",aligned)
            # cv2.waitKey(0)
            # cv2.destroyAllWindows()
            # break
        else:
            print "No face found"
Ejemplo n.º 8
0
def main(args):
    align = NaiveDlib(args.dlibFacePredictor)

    bgrImg = cv2.imread(args.img)
    if bgrImg is None:
        raise Exception("Unable to load image: {}".format(args.img))
    rgbImg = cv2.cvtColor(bgrImg, cv2.COLOR_BGR2RGB)

    bb = align.getLargestFaceBoundingBox(rgbImg)
    if bb is None:
        raise Exception("Unable to find a face: {}".format(args.img))

    landmarks = align.align(rgbImg, bb)
    if landmarks is None:
        raise Exception("Unable to align image: {}".format(args.img))
    # alignedFace = align.alignImg("affine", args.size, rgbImg, bb, landmarks)

    bl = (bb.left(), bb.bottom())
    tr = (bb.right(), bb.top())
    cv2.rectangle(bgrImg, bl, tr, color=(153, 255, 204), thickness=3)
    for landmark in landmarks:
        cv2.circle(bgrImg, center=landmark, radius=3, color=(102, 204, 255), thickness=-1)
    print("Saving image to 'annotated.png'")
    cv2.imwrite("annotated.png", bgrImg)