# antigen
**Repository Path**: Mitscherlich/antigen
## Basic Information
- **Project Name**: antigen
- **Description**: My graduation design project, a face recognition service based on SeetaFaceEngine.
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-03-04
- **Last Updated**: 2022-03-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: face-detection, face-recognition, seetaface, TypeScript, MongoDB
## README
[:us:](README.md) :cn:
# Antigen
这是我的本科毕业设计作品,一个基于 [SeetaFaceEngine](https://github.com/seetaface/SeetaFaceEngine) 的人脸识别系统。本项目提供了公共 RESTful API 接口以供使用。[DEMO 地址!](https://api.mitscherlich.me/antigen)
## 快速开始
通过 `git` 克隆本项目:
```sh
$ git clone https://github.com/Mitscherlich/antigen.git
```
若您想要在本地运行此项目,您需要一台安装了 Ubuntu 操作系统的个人计算机和至少 2GB 内存(用于 [OpenCV](https://github.com/opencv/opencv) 编译)。如果您还没有安装 OpenCV,我还提供了一个用于安装精简版 OpenCV 的[安装脚本](scripts/install-opencv.sh)。
接着,你需要安装 [Node.js](https://nodejs.org) 来运行此项目。尽管 `apt` 包含了一个名为 `nodejs` 的包,但我建议使用 [`nvm`](https://github.com/nvm-sh/nvm) 来安装 Node.js。安装过程详见 `nvm` 文档。
> 由于 [`npm`](https://www.npmjs.com) 在某些情况下会生成错误的依赖树,本项目推荐使用 [`yarn`](https://yarnpkg.com)。
### 安装 MongoDB
本项目使用 [MongoDB](https://www.mongodb.com/) 数据库来存储用户数据。你可以参照他们的[官方文档](https://docs.mongodb.com/guides/server/install/)来安装,或者参考下面的命令使用 [docker](https://www.docker.com/) 进行安装:
```sh
# pull `mongo` docker image
$ docker pull mongo
$ docker run -d --name mongo-srv \
# 暴露 mongod 监听端口
> -p 27017:27017
# 持久化数据
> -v ~/db:/data/db
> mongo
```
> 向容器传递环境变量 `MONGO_INITDB_ROOT_USERNAME` 和 `MONGO_INITDB_ROOT_PASSWORD` 来启用安全登录,这对于一台具有公网 IP 的计算机来说很重要。
### 安装依赖
SeetaFaceEngine 依赖于 OpenCV 和 Openblas。但 `libopencv-dev` 并不总是最新的,所以我推荐从源码编译安装 OpenCV。
首先,安装编译依赖:
```sh
$ sudo apt-get update
$ sudo apt-get install -fy cmake build-essential dpkg-dev
$ sudo apt-get install -fy libopenblas-dev libprotobuf-dev libssl-dev libgnutls28-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 如果你不需要 opencv-python 则不需要下面这部分
$ sudo apt-get install -fy python-dev python-numpy libjpeg-dev libpng-dev libtiff-dev libjasper-dev
```
接着,你可以使用[安装脚本](scripts/install-opencv.sh)来安装精简版 OpenCV,或者参考下面的命令安装一个完整版 OpenCV:
```sh
$ mkdir build && cd build
$ cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON -DENABLE_PRECOMPILED_HEADERS=OFF ..
$ make -j && sudo make install
```
> `jobs = cpu cores * 1.5`
### 获取 SeetaFaceEngine 模型
你可以从[这里](https://drive.google.com/open?id=1qViCjBksqe6fvSHKBJpUoNpTyO8HAA2j)下载到 SeetaFaceEngine 的模型,国内用户可以从[百度云盘](https://pan.baidu.com/s/1HJj8PEnv3SOu6ZxVpAHPXg)下载.
### 调试环境运行
使用以下命令启动调试服务器:
```sh
$ yarn dev
```
### 生产环境运行
开始之前,您需要先生成静态文件:
```sh
$ yarn build
```
使用以下命令生产服务器:
```sh
$ yarn start
```
## API 参考
详见 [docs/API-reference.md](docs/zh-CN/API-reference.md)。
## 公共选项
本项目接受以环境变量的形式配置公共选项:
- **HOST** `String` - 要监听的地址。默认是 _127.0.0.1_.
- **PORT** `String` 或 `Number` - 要监听的端口。默认是 _3000_.
- **BASE_URL** `String` - 路由和 WebSocket 子路径。默认是 _'/'_.
- **DB_URL** `String` - MongoDB 服务器地址。默认是 _127.0.0.1_.
- **DB_PORT** `String` or `Number` - MongoDB server 端口。默认是 _27017_.
- **DB_USER** `String` - MongoDB 用户名。默认为空。
- **DB_PSK** `String` - MongoDB 密码。默认为空。
## Docker 部署
本项目提供了 `docker-compose.yml` 以方便 docker 部署。安装 [docker-compose](https://docs.docker.com/compose/),接着运行:
```sh
$ docker-compose up -d
```
在你的浏览器中访问 http://localhost:3000 即可。
就是这样!:)
## 许可证
[MIT](LICENSE)