# Liveness Detection sample
## Note
* The solution provided here is not secure against all spoofing. Therefore, before deploying to production, thoroughly
test it to validate if it meets your security requirements.
* The included client (JavaScript frontend web application) is not optimized for small screens and also lacks
refinements. You should use it as a starting point or as a sample of how to implement different clients (the backend
is client agnostic).
* The ability to properly monitor a system in production is crucial and the implemented code doesn't provide enough
means to do so. Consider using both Amazon CloudWatch Logs and Amazon CloudWatch Metrics to have more visibility of
all architecture components before deploying to production.
## Overview
This package includes the backend and a sample client (JavaScript frontend) of a liveness detection application.
The application asks the user to perform a challenge: the user must move the nose to a random area shown on the screen.
In the end, the following is verified: 1. there was one and only one face, 2. the user moved the nose to the target
area, and 3. the user rotated the face.
Following there are some screenshots of a user performing the challenge:
![screenshots](readme-assets/screenshots.png)
Following is the architecture of the application:
![architecture](readme-assets/architecture.png)
## Setup
### Prerequisites
1. Configure the AWS Credentials in your environment. Refer
to [Configuration and credential file settings](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
.
2. Download and install AWS CLI. Refer
to [Installing the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html).
3. Download and install AWS SAM CLI. Refer
to [Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)
.
4. Download and install Docker. Refer to [Docker](https://www.docker.com/products/docker-desktop).
5. Download and install Node.js. Refer to [Node.js Downloads](https://nodejs.org/en/download/).
### Backend
Run the command below to deploy the backend:
```
sam build --use-container && sam deploy --guided
```
The command above creates a CloudFormation stack with the following outputs: `ApiUrl`, `StaticWebsiteUrl`,
and `StaticWebsiteBucket`. You need those values in the next steps.
### Frontend
1. Enter in the `client/` directory.
2. Download the ML models from [face-api.js library](https://github.com/justadudewhohacks/face-api.js):
```
curl -o public/weights/tiny_face_detector_model-shard1.shard -kL https://github.com/justadudewhohacks/face-api.js/blob/a86f011d72124e5fb93e59d5c4ab98f699dd5c9c/weights/tiny_face_detector_model-shard1?raw=true
echo 'f3020debaf078347b5caaff4bf6dce2f379d20bc *public/weights/tiny_face_detector_model-shard1.shard' | shasum -c
curl -o public/weights/tiny_face_detector_model-weights_manifest.json -kL https://github.com/justadudewhohacks/face-api.js/blob/a86f011d72124e5fb93e59d5c4ab98f699dd5c9c/weights/tiny_face_detector_model-weights_manifest.json?raw=true
echo '1f9da0ddb847fcd512cb0511f6d6c90985d011e6 *public/weights/tiny_face_detector_model-weights_manifest.json' | shasum -c
curl -o public/weights/face_landmark_68_model-shard1.shard -kL https://github.com/justadudewhohacks/face-api.js/blob/a86f011d72124e5fb93e59d5c4ab98f699dd5c9c/weights/face_landmark_68_model-shard1?raw=true
echo 'e8b453a3ce2a66e6fa070d4e30cd4e91c911964b *public/weights/face_landmark_68_model-shard1.shard' | shasum -c
curl -o public/weights/face_landmark_68_model-weights_manifest.json -kL https://github.com/justadudewhohacks/face-api.js/blob/a86f011d72124e5fb93e59d5c4ab98f699dd5c9c/weights/face_landmark_68_model-weights_manifest.json?raw=true
echo 'a981c7adfc6366e7b51b6c83b3bb84961a9a4b15 *public/weights/face_landmark_68_model-weights_manifest.json' | shasum -c
```
3. Change the models' paths in the manifests:
```
perl -i -pe 's/tiny_face_detector_model-shard1/tiny_face_detector_model-shard1.shard/g' public/weights/tiny_face_detector_model-weights_manifest.json
perl -i -pe 's/face_landmark_68_model-shard1/face_landmark_68_model-shard1.shard/g' public/weights/face_landmark_68_model-weights_manifest.json
```
4. Open the `.env` file and replace the value of `VUE_APP_API_URL` with the API URL (`ApiUrl`) outputted during the
backend deployment.
5. Run the comamand below to build the frontend:
```
npm install && npm run build
```
6. Copy the static frontend files with the following command (replace `{YOUR_BUCKET}` with the bucket name
- `StaticWebsiteBucket` - outputted during the backend deployment):
```
aws s3 cp dist s3://{YOUR_BUCKET}/ --recursive
```
Open your browser and navigate to the CloudFront URL (`StaticWebsiteUrl`) outputted during the backend deployment.
## Clean up (Optional)
If you don't want to continue using the application, take the following steps to clean up its resources and avoid
further charges.
### Empty the Amazon S3 buckets
Before you can delete a bucket, you must first delete its contents.
1. Sign in to the AWS Management Console and open the Amazon S3 console
at [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3).
2. In the **Bucket name** list, select the option next to the *StaticWebsiteBucket* and then choose **Empty**.
3. On the **Empty bucket** page, confirm that you want to empty the bucket by entering the bucket name into the text
field, and then choose **Empty**.
4. In the **Bucket name** list, select the option next to the *FramesBucket* and then choose **Empty**.
5. On the **Empty bucket** page, confirm that you want to empty the bucket by entering the bucket name into the text
field, and then choose **Empty**.
### Delete the CloudFormation stack
AWS CloudFormation makes it easy to clean up resources that the stack created. When you delete the stack, all resources
that the stack created are deleted.
1. Open the AWS CloudFormation console
at [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation).
2. On the **Stacks** page in the CloudFormation console, select the stack you deployed during the Backend setup.
3. In the stack details pane, choose **Delete**.
4. Select **Delete stack** when prompted.
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计-具有JavaScript前端的人脸活体检测应用Web实现-附项目源码.zip
共45个文件
ts:10个
py:9个
json:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 166 浏览量
2024-10-15
17:24:19
上传
评论
收藏 421KB ZIP 举报
温馨提示
毕业设计_具有JavaScript前端的人脸活体检测应用Web实现_附项目源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计_具有JavaScript前端的人脸活体检测应用Web实现_附项目源码.zip (45个子文件)
毕业设计_具有JavaScript前端的人脸活体检测应用Web实现_附项目源码
readme-assets
architecture.png 71KB
screenshots.png 299KB
client
.browserslistrc 30B
babel.config.js 66B
.eslintrc.js 584B
.prettierrc 24B
.env 626B
src
main.ts 244B
App.vue 3KB
assets
lottie
success.json 9KB
help1.json 46KB
help2.json 43KB
fail.json 14KB
welcome.json 40KB
js
ChallengeProcessor.ts 7KB
StateManager.ts 3KB
RemoteStarter.ts 2KB
Drawer.ts 2KB
Utils.ts 3KB
States.ts 6KB
RemoteVerifier.ts 5KB
components
Result.vue 2KB
Challenge.vue 3KB
Error.vue 1KB
Spinner.vue 451B
Welcome.vue 2KB
shims-tsx.d.ts 306B
shims-vue.d.ts 74B
package.json 1000B
public
weights
.gitkeep 0B
index.html 503B
tsconfig.json 704B
README.md 339B
lambda
states
area.py 2KB
nose.py 6KB
fail.py 106B
face.py 471B
success.py 109B
manager.py 1KB
challenge.py 2KB
app.py 6KB
requirements.txt 34B
jwt_token.py 621B
template.yaml 4KB
README.md 6KB
共 45 条
- 1
资源评论
__AtYou__
- 粉丝: 3218
- 资源: 974
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功