创新实训第三周团队博客

创新实训第三周团队博客

这一周主要完成了剩余的App前端代码和后端接口,PSGAN模型的微调和flask上妆接口。具体工作参考每个团队成员的个人博客。

前端App工作

整合后端接口和PSGAN的上妆接口,修复App的一些bug。

最终效果如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后端工作

和前端协调接口开发,实现动态相关接口,部分文档如下:

1,发布动态(需要验权)
1)方法:POST
2)URL:/star/publish
3)参数:content动态内容, images动态图片,目前只支持一张
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,并携带动态信息

2,转发动态(需要验权)
1)方法:POST
2)URL:/star/forward/:starID
3)参数:content和images同上,starID是转发动态的id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,并携带动态信息

3,更新动态(需要验权)
1)方法:POST
2)URL:/star/update/:starID
3)参数:参数同1
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,并携带动态信息

4,删除动态(需要验权)
1)方法:GET
2)URL:/star/delete/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200

5,点赞动态(需要验权)
1)方法:GET
2)URL:/star/like/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200

6,取消点赞动态(需要验权)
1)方法:GET
2)URL:/star/cancel_like/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200

7,动态详情
1)方法:GET
2)URL:/star/details/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,动态已被删除返回状态码400,发布成功返回状态码 200,携带动态详情数据

8,获取点赞用户列表
1)方法:GET
2)URL:/star/like_users/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,携带点赞用户列表

9,获取转发动态列表
1)方法:GET
2)URL:/star/forward_stars/:starID
3)参数:starID是动态id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,携带转发动态列表

10,获取用户全部动态
1)方法:GET
2)URL:/user/:id/stars
3)参数:id是用户id
4)响应:内部错误返回状态码 500,发布成功返回状态码 200,携带动态列表

PSGAN 模型搭建

通过flask框架完成模型上妆接口。

flask相关代码如下:

from flask import Flask, request, render_template, Response

from data_loaders.makeup_utils import *
from solver_psgan import Solver_PSGAN

app = Flask(__name__)


@app.route('/generate_makeup', methods=['POST', 'GET'])
def generate_makeup():
    if request.method == 'POST':
        try:
            example_image = request.files.get('example_image')
            user_image = request.files.get('user_image')
            shade_alpha = request.form.get("shade_alpha")
            local_flag = request.form.get("local_flag")
            lip_flag = request.form.get("lip_flag")
            eye_flag = request.form.get("eye_flag")
            face_flag = request.form.get("face_flag")

            if str(local_flag) == '1':
                print('local flag')
                images = [user_image, example_image]
                mask2use = get_mask(Image.open(images[1]), lip_flag, eye_flag, face_flag)
                images = [Image.open(image) for image in images]
                images = [preprocess_image(image) for image in images]
                transferred_image = Solver_PSGAN.partial_test(*(images[0]), *(images[1]), *(images[0]), mask2use, shade_alpha=float(shade_alpha))
            else:
                images = [user_image, example_image]
                images = [Image.open(image) for image in images]
                images = [preprocess_image(image) for image in images]
                transferred_image = Solver_PSGAN.image_test(*(images[0]), *(images[1]), shade_alpha=float(shade_alpha))
            transferred_image.save('./static/images/transferred_image.png')

            with open('static/images/transferred_image.png', 'rb') as f:
                image = f.read()
                resp = Response(image, status=200, mimetype="image/png")
            return resp
        except Exception as e:
            print(str(e))
            resp = Response(response='Exception', status=500, content_type='text/html;charset=utf8')
            return resp

    return render_template('index.html')


if __name__ == '__main__':
    app.run(debug=True)

用于测试接口的HTML页面如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章