AI绘画Stable Diffusion必看:如何生成人物的全身照实战教程!

大家好,我是画画的小强

在小伙伴们私下留言中,关于如何实现人物的全身照一直有人咨询,看来这个问题还是困惑着不少小伙伴,今天我们就这个问题详细讨论一下。

一. 宽高比参数设置

在讨论如何生成图片的全身照之前,我们先来讨论一下Stable Diffusion中宽高比的参数设置。

这2个参数对于最终的出图有非常大的影响。很多小伙伴因为这2个参数的设置不合理导致出来的图片效果很奇怪。

下面是一些小伙伴使用SD1.5的大模型(如majicMIX realistic 麦橘写实_v7)设置不合理的宽高比出的图。

宽高:1080*1920(制作9:16图片)

下面我们重点看一下常用的SD V1.5和SDXL大模型下宽高比的正常设置范围。

对于SD V1.5 模型最优的宽高比:512x512。下面是常用的宽高比:

  • 1:1(正方形):512x512、768x768

  • 3:2(横向):768x512

  • 2:3(纵向):512x768

  • 4:3(横向):768x576

  • 3:4(纵向):576x768

  • 16:9(宽屏):912x512

  • 9:16 (竖屏): 512x912

对于 SDXL 模型最优的宽高比:1024*1024。下面是常用的宽高比:

  • 1:1(正方形):1024x1024、768x768

  • 3:2(横向):1152x768

  • 2:3(纵向):768x1152

  • 4:3(横向):1152x864

  • 3:4(纵向):864x1152

  • 16:9(宽屏):1360x768

  • 9:16(竖屏):768x1360

宽高比设置注意:

  • 宽度和高度最好能被 8 整除。

  • 记住常用比例:1:1, 2:3(3:2)、3:4(4:3)、9:16(16:9)

  • 如果使用基于SD1.5大模型出图分辨率小的话,可以使用后期放大处理(2倍或者4倍)的方式将图片高清放大。

重点说明: 目前最多的问题是使用基于SD1.5的大模型,将生成图片宽高参数值设置为超过1024大小导致生成的图片千奇百怪,甚至大家参照大模型的案例图片在参数设置完全一致的情况下,图片的效果仍然相差甚远。

主要是很多大模型的案例图片经过了后期放大处理,导致图片宽高超过1024,其实在他们生成图片的时候,都是在正常宽高比参数值下生成的。有些小伙伴不了解相关机制,将后期放大的图片宽高当做生成图片时的宽高参数设置,这样就最终导致生成的图片和案例图片效果相差甚远了。


二. 人物的全身照

关于人物全身图处理方式的几种思路。

(1)在正向提示词中添加关键词full body或者full body shot等

(2)如果没有效果,加大关键词的权重 (full body:1.2) 或者(full body:1.5)

(3)如果还是没有效果,适当调整一下图片的宽高设置,将图片的高度调整为图片的宽度的1-2倍,例如生成图片的宽高比设置为3:4。

(4)如果都没有效果,针对我们使用的大模型,在官网看一下详细的说明,有没有对出全身图有这样的限制,或者看一下官网放出的那几张金典的图片,是否可以作出全身图片,然后看一下提示词以及相关参数设置。

下面我们以下面的文生图为例对上面的关键点展开说明。

  • 大模型:万享XL_超写实摄影V8.2

  • 采样器:Euler a

  • 采样迭代步数:25

  • CFG:3

  • 正向提示词:1 super beautiful chinese girl,solo,(full body:1.5),

  • 反向提示词:NSFW,EasyNegative,badhandv4,

  • ng_deepnegative_v1_75t,16-token-negative-deliberate-neg,bad_prompt_version2,ugly,deformed,bad anatomy,low quality,

关于万享XL模型下载请扫描获取哦

full body(全身)关键词的理解

这里以图片宽高1024*1024来说明

一般来说,在提示词中我们使用full body关键词,可能想到的图片效果如下。
在这里插入图片描述

这种是最理想的图片效果,以人物站立姿势来展示全身图的。

由于我们并没有在提示词里面指定人物的姿势,所以使用full body关键词有时候出来的图片效果并不都是站立姿势,比如下面的图片。

坐姿的全身图

躺姿的全身图

身体向前倾的全身图

总结:

(1)关键词full body表示的全身含义,可能包含人物的多种姿势的全身,比如站立、坐姿、躺姿等。所以,如果有时候要表达更为准确的全身含义,需要补充人物姿势的关键词。

(2)关键词full body表示的全身并不一定都是从头到脚都展示。很多时候可能都是大腿以上的部分。

(3)不同的模型对于关键词full body的理解也不一样,有些模型使用full body出图都是站立的全身照,并且从头到脚。比如下面是majicMIX realistic 麦橘写实_v7版本出的图片(提示词和上面一样,宽高为512*512)。

宽高参数值对人物全身照的影响

我们仍然以上面的示例为例,我们将宽高参数值调整为1024*512。

针对万享XL_超写实摄影V8.2,我多次生成了图片,每次图片效果都只有人物的半身照。

这说明,图片的宽高设置对于人物的全身照还是有影响的,如果我们图片的宽高设置不合理,例如本示例中将图片的宽度设置为高度的2倍,出全身图的概率可能会非常小,所以为了更好的实现人物的全身图,可以适当调整图片的宽高设置,将高度调整到宽度1-2倍。

很多时候,将图片的高度设置比宽度大,出现全身照并且人物站立姿势的概率要大很多。

另外,有些摄影的角度可能也会生成人物的全身照,并不需要借助关键词full body, 大家也可以了解一下,当然这些就不在我们讨论的范围之内。

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

<think>好的,我现在需要帮用户写一个React前端,用来调用本地Ollama的deepseek-r1:1.5b模型进行聊天。用户之前已经得到了一个Flask后端的demo,现在需要前端部分。 首先,我需要确认用户的需求。用户希望有一个React应用,能够与本地运行的Ollama服务中的特定模型(deepseek-r1:1.5b)进行交互,实现聊天功能。因此,我需要设计一个简单的前端界面,包含消息输入框、发送按钮和聊天记录的展示区域。 接下来,我需要考虑如何与后端对接。用户之前提供的Flask后端有一个/generate的POST接口,接收prompt和model参数,并返回模型的响应。所以前端需要发送POST请求到这个接口,传递用户输入的消息和指定的模型名称。 然后,设计前端组件。React的组件结构可能需要一个Chat组件,管理消息列表的状态,处理用户输入,并发送请求到后端。需要使用useState来维护消息列表和输入框的状态,使用useEffect来自动滚动到底部,使用fetch或axios来发送HTTP请求。 还需要处理用户输入的提交,包括防止空输入,处理异步请求的状态(比如禁用发送按钮等待响应),以及错误处理,比如网络错误或后端返回的错误信息。 样式方面,需要简单的CSS来美化界面,可能包括消息气泡、背景色、滚动条样式等,确保用户体验友好。可能需要使用flex布局来排列消息,区分用户消息和机器人消息的不同样式。 另外,用户特别提到了使用deepseek-r1:1.5b模型,所以在发送请求时,model参数需要指定为该模型名称,而不是默认的llama2。需要确保在代码中正确设置model的值。 测试部分,需要确保Ollama服务已经运行,并且已经拉取了deepseek-r1:1.5b模型。用户可能需要运行ollama pull deepseek-r1:1.5b来获取模型,否则后端调用会失败。同时,要检查Flask后端是否正常运行,端口是否正确,以及是否存在跨域问题。如果前端和后端端口不同,可能需要配置CORS,或者在Flask后端添加CORS支持。 最后,需要提供清晰的步骤说明,包括如何安装依赖、启动前端、以及注意事项,比如模型下载和CORS配置。可能需要提醒用户如果遇到跨域问题,可以使用Flask-CORS扩展来处理。 总结步骤:创建React应用,编写Chat组件处理交互和状态,发送请求到Flask后端,处理响应和错误,添加样式,测试并确保所有部分正常运行。</think>以下是用 React 编写的聊天前端 Demo,专门调用本地 Ollama 的 `deepseek-r1:1.5b` 模型: --- ### 1. 创建 React 项目 ```bash npx create-react-app ollama-chat cd ollama-chat npm install axios @mui/material @emotion/react @emotion/styled ``` ### 2. 前端代码 (src/App.js) ```jsx import React, { useState, useRef, useEffect } from 'react'; import axios from 'axios'; import { Container, TextField, Button, List, ListItem, ListItemText, Typography, Paper, CircularProgress } from '@mui/material'; function App() { const [input, setInput] = useState(''); const [messages, setMessages] = useState([]); const [loading, setLoading] = useState(false); const messagesEndRef = useRef(null); // 自动滚动到底部 const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }; useEffect(scrollToBottom, [messages]); // 发送消息 const handleSubmit = async (e) => { e.preventDefault(); if (!input.trim()) return; const userMessage = { text: input, isBot: false }; setMessages(prev => [...prev, userMessage]); setInput(''); setLoading(true); try { const response = await axios.post('http://localhost:5000/generate', { prompt: input, model: 'deepseek-r1:1.5b' }); const botMessage = { text: response.data.response, isBot: true }; setMessages(prev => [...prev, botMessage]); } catch (error) { setMessages(prev => [...prev, { text: '出错啦,请检查Ollama服务是否运行', isBot: true }]); } finally { setLoading(false); } }; return ( <Container maxWidth="md" sx={{ height: '100vh', py: 4 }}> <Paper elevation={3} sx={{ height: '90%', display: 'flex', flexDirection: 'column' }}> <Typography variant="h4" align="center" sx={{ p: 2, bgcolor: '#1976d2', color: 'white' }}> DeepSeek 聊天 (1.5B) </Typography> <List sx={{ flex: 1, overflow: 'auto', p: 2 }}> {messages.map((msg, index) => ( <ListItem key={index} sx={{ justifyContent: msg.isBot ? 'flex-start' : 'flex-end', animation: 'fadeIn 0.3s' }}> <Paper sx={{ p: 2, bgcolor: msg.isBot ? '#f5f5f5' : '#1976d2', color: msg.isBot ? 'black' : 'white', maxWidth: '70%' }}> <ListItemText primary={msg.text} secondary={msg.isBot ? "DeepSeek" : "你"} /> </Paper> </ListItem> ))} {loading && ( <ListItem sx={{ justifyContent: 'center' }}> <CircularProgress /> </ListItem> )} <div ref={messagesEndRef} /> </List> <form onSubmit={handleSubmit} style={{ padding: '16px' }}> <div style={{ display: 'flex', gap: '8px' }}> <TextField fullWidth variant="outlined" value={input} onChange={(e) => setInput(e.target.value)} placeholder="输入消息..." disabled={loading} /> <Button variant="contained" type="submit" disabled={loading} sx={{ minWidth: '100px' }} > {loading ? '思考中...' : '发送'} </Button> </div> </form> </Paper> </Container> ); } export default App; ``` ### 3. 添加 CSS 动画 (src/index.css) ```css @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* 滚动条样式 */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: #f1f1f1; } ::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; } ``` ### 4. 运行与使用 1. 启动 Flask 后端(确保已配置好 deepseek-r1:1.5b) ```bash python app.py ``` 2. 启动 React 前端 ```bash npm start ``` 3. 访问界面: ``` http://localhost:3000 ``` ### 5. 功能特性 - ✅ Material-UI 美化界面 ### 6. 效果截图 ![界面示意图](https://placehold.co/600x400?text=聊天界面预览\n用户消息蓝色+右侧\nAI消息灰色+左侧) ### 7. 常见问题处理 1. **模型未找到**: ```bash ollama pull deepseek-r1:1.5b ``` 2. **跨域问题**: 在 Flask 后端安装 CORS: ```bash pip install flask-cors ``` 修改 `app.py`: ```python from flask_cors import CORS app = Flask(__name__) CORS(app) # 添加这行 ``` 3. **调整模型参数**: 在后端接口添加更多参数: ```python ollama_payload = { # ... "temperature": 0.8, "max_tokens": 500 } ``` 这个实现使用了 Material-UI 组件库,如果需要简化样式可以移除相关依赖,改用纯 CSS 实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值