前言:本人大四,研0,在24年暑假在杭州某互联网公司实习,本文用来记录自己在公司学到的东西。
uwsgi:uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。uWSGI就像是一座桥梁,一边连着web服务器,另一边连着用户的应用。
Flask:Flask是一个使用Python编写的轻量级Web应用框架,它简洁而灵活,适用于开发小型至中型的Web应用。
项目背景:使用Xception预训练模型完成ai换脸检测。
一、程序撰写
这边我没有去训练自己的模型,使用的是pytorch里面的Xception模型,当然用tensorflow和Keras也是可以的,主要更改的地方是修改了模型最后一层的输出,因为换脸检测的输出是有没有进行换脸,有和无,相当于是二分类问题,然后xception模型是基于imagenet训练而来,输出有1000个分类,所以我们需要修改模型的最后一层以适应二分类任务:
# 打印模型结构,查找最后一层
# print("Model structure:\n", model)
# 获取最后一层的输入特征数
num_features = model.get_classifier().in_features
# 修改模型的最后一层以适应二分类任务
model.fc = nn.Linear(num_features, 1) # 二分类任务:1 输出神经元
model.sigmoid = nn.Sigmoid() # 添加 Sigmoid 激活函数
model.eval() # 将模型设置为评估模式
这边只粘贴出部分,或许完整的程序将公布到我的Github上,有兴趣的小伙伴可以关注一下我,这是我的Github id:
二、uswgi和Flask的下载和使用
1.安装Flask和uswgi:
pip install flask uwsgi
2.创建一个app.py把fask应用代码粘贴进去,这边flask应用代码我用最简单的示意一下
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
# 下面这两句在使用uwsgi 测试的时候要注释掉,是在没有集成uwsgi前测试用:python app.py
if __name__ == '__main__':
app.run()
3.编写uwsgi.ini文件
[uwsgi]
#地址端口
http = 0.0.0.0:5005
#项目路径
chdir = /app/deepfake_detection
#项目启动文件
wsgi-file = app.py
# 项目需要调用的启动类
callable = app
# 进程线程设置
processes = 1
threads = 5
#PID 文件路径
pidfile = /app/deepfake_detection/logs/uwsgi.pid
# 是否需要主进程
master = True
# CUDA上使用多线程
lazy = true
#添加日志
daemonize = /app/deepfake_detection/uwsgi.log
# 缓存区
buffer-size = 65535
4.启动uwsgi服务
# uwsgi.ini要换成给你的名字
uwsgi --ini uwsgi.ini
5.打开浏览器访问设置的端口
#192.168.0.120是你服务器的地址,5005是端口号,需要具体情况更改
http://192.168.0.120:5005
6.停止uwsgi服务
uwsgi --stop uwsgi.ini
注:本篇文章只是记录了大概流程,实际在做的过程中,可能下载uwsgi就会遇到各种问题,下载失败,最后可能还需要源码安装,然后完整的项目文件我会稍后公布到Github上,关注可取
docker命令:
1.进入docker容器:
docker exec -it my_container /bin/bash