No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ipynb_checkpoints
categorize-faces
face-tags
jupyter
lambda_builder
list-movies
movie-capture
.gitignore
.gitlab-ci.yml
README.md
deploy.sh
deploy_all.sh

README.md

顔認識 API

Endpoint

https://mf7k96zs89.execute-api.us-west-2.amazonaws.com/dev/

↑現在は動きません

認証

HTTPヘッダーに、x-api-keyという名前でAPIキーを入れる必要があります。

各時刻に誰が写っているか取得するにはどうすればよいか?

1. 動画IDを取得する

GET /movieを実行し、対象の動画IDを取得します。

リクエストの例:

$ curl --header "x-api-key: ${API_KEY}" "https://mf7k96zs89.execute-api.us-west-2.amazonaws.com/dev/movie/"

レスポンスの例:

{
  "body": [
    {
      "capture_finish_at": null,
      "movie_id": "a06f449e9b83a9d473348d775d40a4e31487192288.51",
      "categorize_finish_at": "2017-02-16 12:24:36.124159",
      "object_key": "kaze_oke.mp4"
    },
    {
      "capture_finish_at": null,
      "movie_id": "a06f449e9b83a9d473348d775d40a4e31487191980.58",
      "categorize_finish_at": null,
      "object_key": "kaze_oke.mp4"
    },
    {
      "capture_finish_at": "2017-02-16 10:29:17.104173",
      "movie_id": "97bc47503d1ed6d302dc9198f2a323081487240915.31",
      "categorize_finish_at": "2017-02-16 11:29:13.924396",
      "object_key": "redcarpet_short.mp4"
    }
  ]
  "headers": {},
  "statusCode": 200
}

2. 動画IDから人物tagを取得する

GET /movie/{movie_id}/tagsを実行し、人物tagの情報を取得します。

リクエストの例:

curl --header "x-api-key: ${API_KEY}" "https://mf7k96zs89.execute-api.us-west-2.amazonaws.com/dev/movie/97bc47503d1ed6d302dc9198f2a323081487240915.31/tags"

レスポンスの例:

{
  "body": {
    "24": [
      1,
      2,
      5
    ],
    "25": [
      2,
      1,
      5
    ],
    "26": [
      2,
      1,
      5
    ],
    "27": [
      2,
      5,
      1
    ]
  },
  "headers": {},
  "statusCode": 200
}

この場合、bodyのKeyである2425などが「動画開始からの秒数」を表しており、その配列の中に含まれる1, 2, 5などが、その秒数のときに画面に写っている人物のtagを表しています。

各APIのドキュメント

GET /movie

アップロードされている動画の一覧を取得するAPIです。

以下のようなレスポンスが返ってきます。

{
  "body": [
    {
      "capture_finish_at": null,
      "movie_id": "a06f449e9b83a9d473348d775d40a4e31487192288.51",
      "categorize_finish_at": null,
      "object_key": "kaze_oke.mp4"
    },
    {
      "capture_finish_at": "2017-02-16 10:29:17.104173",
      "movie_id": "97bc47503d1ed6d302dc9198f2a323081487240915.31",
      "categorize_finish_at": "2017-02-16 11:29:13.924396",
      "object_key": "redcarpet_short.mp4"
    }
  ],
  "headers": {},
  "statusCode": 200
}

bodyプロパティがレスポンスの内容です。リストに含まれるHashがそれぞれ一つの動画を表しています。

  • capture_finish_atcategorize_finish_atの両方がnullでない動画についてのみ、顔認識情報を取得できます。
    • capture_finish_atnullの動画については、動画をアップロードしなおす必要があります。
    • categorize_finish_atnullの動画は、後述のPOST /movie/{movie_id}/tagsを実行して、顔の分類を行う必要があります

POST /movie/{movie_id}/tags

顔認識が完了した動画の、顔の分類を実行するAPIです。 後述のGET /movie/{movie_id}/tagsを実行するために、事前に実行しておく必要があります。

以下のようなレスポンスが返ってきます。

{
  "body": {
    "message": "success"
  },
  "headers": {
    "Content-Type": "application/json"
  },
  "statusCode": 200
}

GET /movie/{movie_id}/tags

顔の分類が完了した動画の、人物の出現時刻を取得するAPIです。

以下のようなレスポンスが返ってきます。

{
  "body": {
    "1": [
      8
    ],
    "2": [
      8
    ],
    "3": [
      8
    ],
    "4": [
      8
    ],
    "5": [
      2,
      1
    ]
  },
  "headers": {},
  "statusCode": 200
}

bodyプロパティがレスポンスの内容です。

  • このHashのkeyは動画開始からの時刻(秒)を表し、Hashのvalueはその時刻に動画に写っている人物のIDを表します。
    • 上記のレスポンスの例は、時刻00:01の時点では8番の人物だけが写っており、時刻00:05の時点では1番と2番の人物だけが写っている、という意味です。
  • その秒数のときに動画に誰も写っていないときは、Hashのvalueは空リストになります。