Skip to content

Instantly share code, notes, and snippets.

@danielajisafe
Last active October 7, 2018 17:13
Show Gist options
  • Select an option

  • Save danielajisafe/22e94e7e407c330b5811ac88b912f4ba to your computer and use it in GitHub Desktop.

Select an option

Save danielajisafe/22e94e7e407c330b5811ac88b912f4ba to your computer and use it in GitHub Desktop.

Revisions

  1. danielajisafe revised this gist Oct 7, 2018. 1 changed file with 33 additions and 37 deletions.
    70 changes: 33 additions & 37 deletions AIogbomosho
    Original file line number Diff line number Diff line change
    @@ -1,43 +1,39 @@
    def who_is_it(image_path, database, model):
    """
    Implements face recognition for the happy house by finding who is the person on the image_path image.
    def model_nn(sess, input_image, num_iterations = 200):

    Arguments:
    image_path -- path to an image
    database -- database containing image encodings along with the name of the person on the image
    model -- your Inception model instance in Keras

    Returns:
    min_dist -- the minimum distance between image_path encoding and the encodings from the database
    identity -- string, the name prediction for the person on image_path
    """

    ### START CODE HERE ###

    ## Step 1: Compute the target "encoding" for the image. Use img_to_encoding() see example above. ## (≈ 1 line)
    encoding = img_to_encoding(image_path, model)
    # Initialize global variables (you need to run the session on the initializer)
    ### START CODE HERE ### (1 line)
    sess.run(tf.global_variables_initializer())
    ### END CODE HERE ###

    ## Step 2: Find the closest encoding ##
    # Run the noisy input image (initial generated image) through the model. Use assign().
    ### START CODE HERE ### (1 line)
    sess.run(model["input"].assign(input_image))
    ### END CODE HERE ###

    # Initialize "min_dist" to a large value, say 100 (≈1 line)
    min_dist = 100
    for i in range(num_iterations):

    # Loop over the database dictionary's names and encodings.
    for (name, db_enc) in database.items():
    # Run the session on the train_step to minimize the total cost
    ### START CODE HERE ### (1 line)
    sess.run(train_step)
    ### END CODE HERE ###

    # Compute L2 distance between the target "encoding" and the current "emb" from the database. (≈ 1 line)
    dist = np.linalg.norm(db_enc - encoding)
    # Compute the generated image by running the session on the current model['input']
    ### START CODE HERE ### (1 line)
    generated_image = sess.run(model['input'])
    ### END CODE HERE ###

    # If this distance is less than the min_dist, then set min_dist to dist, and identity to name. (≈ 3 lines)
    if dist < min_dist:
    min_dist = dist
    identity = name

    ### END CODE HERE ###

    if min_dist > 0.7:
    print("Not in the database.")
    else:
    print ("it's " + str(identity) + ", the distance is " + str(min_dist))

    return min_dist, identity
    # Print every 20 iteration.
    if i%20 == 0:
    Jt, Jc, Js = sess.run([J, J_content, J_style])
    print("Iteration " + str(i) + " :")
    print("total cost = " + str(Jt))
    print("content cost = " + str(Jc))
    print("style cost = " + str(Js))

    # save current generated image in the "/output" directory
    save_image("output/" + str(i) + ".png", generated_image)

    # save last generated image
    save_image('output/generated_image.jpg', generated_image)

    return generated_image
  2. danielajisafe revised this gist Sep 27, 2018. 1 changed file with 27 additions and 18 deletions.
    45 changes: 27 additions & 18 deletions AIogbomosho
    Original file line number Diff line number Diff line change
    @@ -1,34 +1,43 @@
    def verify(image_path, identity, database, model):
    def who_is_it(image_path, database, model):
    """
    Function that verifies if the person on the "image_path" image is "identity".
    Implements face recognition for the happy house by finding who is the person on the image_path image.

    Arguments:
    image_path -- path to an image
    identity -- string, name of the person you'd like to verify the identity. Has to be a resident of the Happy house.
    database -- python dictionary mapping names of allowed people's names (strings) to their encodings (vectors).
    database -- database containing image encodings along with the name of the person on the image
    model -- your Inception model instance in Keras

    Returns:
    dist -- distance between the image_path and the image of "identity" in the database.
    door_open -- True, if the door should open. False otherwise.
    min_dist -- the minimum distance between image_path encoding and the encodings from the database
    identity -- string, the name prediction for the person on image_path
    """

    ### START CODE HERE ###
    ### START CODE HERE ###

    # Step 1: Compute the encoding for the image. Use img_to_encoding() see example above. (≈ 1 line)
    ## Step 1: Compute the target "encoding" for the image. Use img_to_encoding() see example above. ## (≈ 1 line)
    encoding = img_to_encoding(image_path, model)

    # Step 2: Compute distance with identity's image (≈ 1 line)
    dist = np.linalg.norm(database[identity] - encoding)
    ## Step 2: Find the closest encoding ##

    # Step 3: Open the door if dist < 0.7, else don't open (≈ 3 lines)
    if dist < 0.7:
    print("It's " + str(identity) + ", welcome home!")
    door_open = True
    else:
    print("It's not " + str(identity) + ", please go away")
    door_open = False
    # Initialize "min_dist" to a large value, say 100 (≈1 line)
    min_dist = 100

    # Loop over the database dictionary's names and encodings.
    for (name, db_enc) in database.items():

    # Compute L2 distance between the target "encoding" and the current "emb" from the database. (≈ 1 line)
    dist = np.linalg.norm(db_enc - encoding)

    # If this distance is less than the min_dist, then set min_dist to dist, and identity to name. (≈ 3 lines)
    if dist < min_dist:
    min_dist = dist
    identity = name

    ### END CODE HERE ###

    if min_dist > 0.7:
    print("Not in the database.")
    else:
    print ("it's " + str(identity) + ", the distance is " + str(min_dist))

    return dist, door_open
    return min_dist, identity
  3. danielajisafe revised this gist Sep 27, 2018. No changes.
  4. danielajisafe revised this gist Sep 27, 2018. 1 changed file with 34 additions and 13 deletions.
    47 changes: 34 additions & 13 deletions AIogbomosho
    Original file line number Diff line number Diff line change
    @@ -1,13 +1,34 @@
    database = {}
    database["danielle"] = img_to_encoding("images/danielle.png", FRmodel)
    database["younes"] = img_to_encoding("images/younes.jpg", FRmodel)
    database["tian"] = img_to_encoding("images/tian.jpg", FRmodel)
    database["andrew"] = img_to_encoding("images/andrew.jpg", FRmodel)
    database["kian"] = img_to_encoding("images/kian.jpg", FRmodel)
    database["dan"] = img_to_encoding("images/dan.jpg", FRmodel)
    database["sebastiano"] = img_to_encoding("images/sebastiano.jpg", FRmodel)
    database["bertrand"] = img_to_encoding("images/bertrand.jpg", FRmodel)
    database["kevin"] = img_to_encoding("images/kevin.jpg", FRmodel)
    database["felix"] = img_to_encoding("images/felix.jpg", FRmodel)
    database["benoit"] = img_to_encoding("images/benoit.jpg", FRmodel)
    database["arnaud"] = img_to_encoding("images/arnaud.jpg", FRmodel)
    def verify(image_path, identity, database, model):
    """
    Function that verifies if the person on the "image_path" image is "identity".

    Arguments:
    image_path -- path to an image
    identity -- string, name of the person you'd like to verify the identity. Has to be a resident of the Happy house.
    database -- python dictionary mapping names of allowed people's names (strings) to their encodings (vectors).
    model -- your Inception model instance in Keras

    Returns:
    dist -- distance between the image_path and the image of "identity" in the database.
    door_open -- True, if the door should open. False otherwise.
    """

    ### START CODE HERE ###

    # Step 1: Compute the encoding for the image. Use img_to_encoding() see example above. (≈ 1 line)
    encoding = img_to_encoding(image_path, model)

    # Step 2: Compute distance with identity's image (≈ 1 line)
    dist = np.linalg.norm(database[identity] - encoding)

    # Step 3: Open the door if dist < 0.7, else don't open (≈ 3 lines)
    if dist < 0.7:
    print("It's " + str(identity) + ", welcome home!")
    door_open = True
    else:
    print("It's not " + str(identity) + ", please go away")
    door_open = False

    ### END CODE HERE ###

    return dist, door_open
  5. danielajisafe created this gist Sep 27, 2018.
    13 changes: 13 additions & 0 deletions AIogbomosho
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    database = {}
    database["danielle"] = img_to_encoding("images/danielle.png", FRmodel)
    database["younes"] = img_to_encoding("images/younes.jpg", FRmodel)
    database["tian"] = img_to_encoding("images/tian.jpg", FRmodel)
    database["andrew"] = img_to_encoding("images/andrew.jpg", FRmodel)
    database["kian"] = img_to_encoding("images/kian.jpg", FRmodel)
    database["dan"] = img_to_encoding("images/dan.jpg", FRmodel)
    database["sebastiano"] = img_to_encoding("images/sebastiano.jpg", FRmodel)
    database["bertrand"] = img_to_encoding("images/bertrand.jpg", FRmodel)
    database["kevin"] = img_to_encoding("images/kevin.jpg", FRmodel)
    database["felix"] = img_to_encoding("images/felix.jpg", FRmodel)
    database["benoit"] = img_to_encoding("images/benoit.jpg", FRmodel)
    database["arnaud"] = img_to_encoding("images/arnaud.jpg", FRmodel)