一、选题简介
选题名称
人脸分类相册
选题背景
当今社会,人们的手机和电脑存储了越来越多的照片。然而不对这些照片进行整理归类而只是按照时间顺序来排序的话,久而久之会显得比较杂乱;而通过对相片上的人脸进行识别,将识别到的同一年龄段和性别的人物进行整理归类,将能很好地实现按人来找寻相关照片的功能,可以更加方便快捷地找到某个特定的人的相关照片,节省了时间。
二、系统设计与实现
思路
根据年龄和性别对含有人像的图片进行分类。同时,利用docker搭建LNMP环境,部署一个基于人脸识别的人脸特征分类系统的web服务。
环境搭建
大体采用LNMP(Linux+Nginx+MySql+PHP)的架构(未使用Mysql),利用docker-compose完成环境的搭建
![]
Nginx镜像构建相关文件
(1)dockerfile_nginx
FROM nginx
#作者信息
MAINTAINER new-nginx
#声明暴露的端口
EXPOSE 2020
(2)default.conf
server {
listen 2020; #修改映射端口
server_name localhost;
location / {
root /web/html; #修改工作目录
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ .php$ {
root /web/php; #修改工作目录
fastcgi_pass myphp:9000; #修改为容器名
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
PHP镜像构建相关文件
(1)dockerfile_php
FROM php:7.4-fpm
MAINTAINER css<584979330@qq.com>
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y
libfreetype6-dev
libjpeg62-turbo-dev
libpng-dev
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-configure gd --with-freetype --with-jpeg
&& docker-php-ext-install -j$(nproc) gd
docker-compose
(1)docker-compose.yml
version: "3"
services:
nginx:
image: nginx #指定镜像名
container_name: mynewnginx #指定容器名
build:
context: .
dockerfile: dockerfile_nginx #指定dockerfile文件
ports:
- "8080:2020" #修改端口映射
volumes:
- ./web:/web/html #挂载容器卷,本地/容器内修改文件后,另一方都会同步更新;
- ./default.conf:/etc/nginx/conf.d/default.conf #挂载配置文件
php:
image: myphp_image
container_name: myphp
build:
context: .
dockerfile: dockerfile_php
volumes:
- ./web:/web/php #挂载工作目录到本机web目录
执行docker-compose文件
sudo docker-compose up -d --build
成功搭建
建立进行分类的文件夹
完成前端页面代码
三、运行结果,展示容器启动后,程序的运行结果
启动容器
进入端口和页面
成功!
点击“选择文件”上传图片
点击“提交”
点击“返回” 可见刚才选择的图片被放在了指定分类的文件夹
点击“开始分类”
完成分类!
可见刚才存放图片的文件夹已空,已被分到相应的文件夹中
刚才的图片被分到了“male19-20”文件夹中,意思是男性,19到40岁。可以看出分类成功
如此重复便可以把想要分类的照片全部进行分类。
四、最终的组内分工+贡献比
学号 | 姓名 | 承担工作 | 贡献比 |
---|---|---|---|
061700232 | 闫佳豪 | 完成了前端与后端的交互代码 查找了相关资料并对树莓派和程序进行测试 编写博客主要内容 | 33% |
031702435 | 张昊 | 完成了后端代码,成功实现对相片的识别和分类功能 查找资料,解答组员问题 撰写部分报告内容 | 33% |
011703120 | 王玥 | 制作三次的汇报PPT 对页面进行设计,完成了前端的代码并测试 查找资料并编写部分博客内容 | 33% |
五、总结
- 王玥:
这次实验里我主要负责前端的编写和查找资料,虽然树莓派在队友的手中,但通过群里的屏幕分享实验操作使得我也能够对树莓派有更为实际的了解。尽管一开始想做出较为复杂的功能,然而时间有限,最终只能选择核心的功能来实现。此外还需要感谢队友们的帮助,在遇到困难的时候帮忙解答,使得项目所设计的功能能够更为顺利地完成。这次实验也学到了很多新的知识,对代码的编写也变得更加的熟练了。 - 闫佳豪:
嗯 到6月28号这门课也算是迎来了结束,经过这两三个月的学习,真的感悟颇多。在刚了解这门课时,我就感觉这门课的东西很新鲜,很前趋。刚开始做实验时很迷,不知道究竟是干什么,慢慢到了后来我就越来越体会到docker的优势。进入到团队作业时,由于我拿到了树莓派,前两次的团队作业也由我主要完成,虽然有些累但确实学到了太多的东西,接触了很多没接触过的东西,收获颇丰。在最后的大作业中我也完成了各种串联工作,先在win的环境中开发,然后部署到docker中去。这整个过程下来,确确实实的收获太多。
确实,在这种实践课中总会学到比理论课更多的东西,很有意义也很有趣。 - 张昊:
在系统综合实践的期间里,我和队友们一起探讨问题,学习了很多课内课外的知识,锻炼了解决问题的能力。而且系统综合实践群里的大部分人比较活跃,但是又喜欢匿名来帮别人解决问题,给大家提供了很舒缓的答疑方式。我很感谢我的队友和我一起努力,探索新的知识,完成老师布置的任务。