软件工程第一次个人作业

软件工程第一次个人作业——个人介绍与 FLUX 图像生成实践

这个作业属于哪个课程 H202601 软件工程与软件工程实践
这个作业要求在哪里 2026 秋软件工程个人作业(第一次)
这个作业的目标 完善个人技术主页,梳理个人技能与学习目标,学习 Markdown、GitHub 和 API 调用,并完成一个具有前后端交互的 FLUX 图像生成应用
学号 102401513

一、自我介绍

大家好,我是林烨,目前是福州大学软件工程专业的学生。我对计算机视觉和人工智能应用比较感兴趣,平时喜欢通过编程解决实际问题。课余时间的兴趣主要有阅读、运动、音乐和游戏。

在之前的学习和实践中,我接触过目标识别相关项目,也尝试过肺癌细胞图像识别。这些经历让我对人工智能在医学图像分析等实际场景中的应用产生了兴趣。未来三年,我希望继续打好专业基础,积累项目经验,并以继续深造为主要目标。

二、当前技能树与自我评估

1. 已具备的知识与能力

  • C/C++:掌握基础语法,能够完成简单程序设计。
  • Python:能够编写基础程序、调用 API,并进行简单的模型应用开发。
  • Git/GitHub:能够进行代码提交、推送以及基本的版本管理。
  • Markdown:能够编写结构清晰的技术文档。
  • 人工智能实践:接触过目标识别和肺癌细胞图像识别项目,对模型训练与应用流程有初步认识。

2. 感兴趣的技术方向

  • 目标检测与计算机视觉
  • 医学图像分析
  • 人工智能与大模型应用
  • Web 前后端开发

目前我最感兴趣的是目标识别方向,希望通过课程学习和后续项目实践,对模型开发、系统实现和工程部署形成更加完整的认识。

3. 目前欠缺的能力

  • 缺少完整的大型项目开发经验。
  • 对需求分析、系统设计和软件测试了解不够深入。
  • 算法与数据结构基础仍需加强。
  • Git 分支管理及多人协作经验较少。
  • 对人工智能模型的部署、性能优化和工程化应用掌握不够。

三、代码量与本学期目标

截至目前,我累计编写的代码量大约为 3000 行,主要来自课程练习、算法题以及目标识别相关实践。

完成本学期课程后,我希望累计代码量达到 6000~7000 行。相比单纯追求代码行数,我也希望提高代码的可读性、规范性和可维护性,逐步形成良好的工程习惯。

四、对软件工程课程的期待

我最期待学习以下内容:

  • 如何进行需求分析,并将一个想法转化为可以实现的功能。
  • 如何完成系统设计、模块划分和接口设计。
  • 如何使用 Git 进行团队协作与版本管理。
  • 如何开展软件测试,及时发现并修复问题。
  • 如何按照规范完成一个较完整的软件项目。

我希望通过本课程,不仅能提高编程能力,还能了解完整的软件开发流程,提升团队沟通、项目管理和工程实践能力。

五、Hugging Face API 调用与前后端实现

1. 项目目标

本次实践使用 FLUX 基础模型与 XLabs-AI/flux-RealismLora,实现一个具有前后端交互的真实图像生成页面。用户在网页中输入提示词并设置图像参数,后端调用 Hugging Face Space 的 Gradio API,最后将生成图片返回前端展示。

屏幕截图 2026-09-07 110556

2. 项目结构与调用流程

项目主要包含:

  • app.py:Flask 后端,读取环境变量并调用 Hugging Face Space。
  • templates/index.html:前端交互页面。
  • .env:保存 Token 和 Space 配置,不上传至 GitHub。
  • .gitignore:避免 Token、虚拟环境和生成结果被误提交。
  • requirements.txt:记录项目依赖。

调用流程如下:

网页输入提示词
    → 本地 Flask /api/generate
    → Hugging Face Space /run_lora
    → FLUX.1-dev + flux-RealismLora
    → 返回 PNG 图片并在网页显示

3. API Token 配置

我在 Hugging Face 的 Access Tokens 页面创建了访问令牌,并授予读取模型仓库所需的权限。

示例配置如下,真实 Token 已隐藏:

HF_TOKEN=hf_********(真实 Token 已隐藏)
HF_SPACE_ID=DamarJati/FLUX.1-RealismLora
SPACE_API_NAME=/run_lora
SPACE_API_STYLE=damarjati
OUTPUT_DIR=D:/flux-realism-app/outputs

说明:当前使用公开 Space 调用指定的 Realism LoRA。公共 Space 可能出现排队、休眠或接口变更,后续如具备可用 GPU,也可以将项目中的 space/ 目录部署为自己的 Space。

4. 后端核心代码

后端首先从 .env 中读取配置,然后建立 Gradio 客户端:

PROJECT_DIR = Path(__file__).resolve().parent
load_dotenv(PROJECT_DIR / ".env", override=True)

SPACE_ID = os.getenv("HF_SPACE_ID", "").strip()
HF_TOKEN = os.getenv("HF_TOKEN", "").strip()

client = Client(
    SPACE_ID,
    token=HF_TOKEN or None,
    download_files=str(OUTPUT_DIR),
    verbose=False,
)

收到前端请求后,后端调用 Space 的 /run_lora 接口,并将生成结果返回浏览器:

result = client.predict(
    prompt=prompt,
    cfg_scale=3.5,
    steps=steps,
    randomize_seed=False,
    seed=seed,
    width=width,
    height=height,
    lora_scale=lora_scale,
    api_name="/run_lora",
)

屏幕截图 2026-09-08 094117

5. 前端交互页面

前端提供提示词、图像尺寸、推理步数和随机种子等输入项。点击“生成图像”后,JavaScript 会向本地 Flask 后端发送请求,并在页面右侧显示生成结果。

6. 提示词设计与修改过程

为了使生成结果更加接近真实世界,我采用“主体 + 环境 + 光线 + 镜头语言 + 画面细节”的方式设计提示词。

第一次提示词较简单:

A street in Fuzhou after rain.

生成结果能够体现雨后街道,但场景细节和真实感不足。因此,我补充了人物、天气、路面反光、摄影镜头和色彩等信息。

修改后的提示词为:

A documentary photograph of a quiet street in Fuzhou after rain,
pedestrians holding umbrellas, natural cloudy daylight,
realistic skin texture, wet road reflections, 35mm photography,
subtle colors, highly detailed

修改后,画面的环境信息更完整,雨后路面的反射效果更加明显,整体也更接近纪实摄影风格。由此可以看出,提示词越具体,模型越容易理解希望生成的主体、环境和视觉风格。

最终使用修改后的提示词完成了图像生成,结果如下:

flux-result

7. API 调用成功记录

运行后端后,本地服务地址为 http://127.0.0.1:5000。实际测试中,生成接口返回状态码 200,返回内容类型为 image/png,说明 API 调用成功并获得了图片结果。

image

8. 体验与心得

这次实践让我初步了解了 API Token、环境变量、前后端请求和云端模型调用之间的关系。相比直接在本地下载大模型,通过 API 调用可以减少本地硬件和存储压力,但也会受到网络、云端排队、接口变化和访问权限等因素影响。

调试过程中,我遇到了 Python 环境、依赖安装、.env 未重新加载以及 Space 接口配置等问题。通过查看终端日志、HTTP 状态码和健康检查接口,我逐步定位并解决了问题。这让我认识到,完成一个可以交互的软件应用不仅需要写代码,还需要正确配置环境、保护敏感信息并进行完整测试。

六、GitHub 个人主页建设

我采用 Profile README 方案搭建 GitHub 个人主页:创建一个与 GitHub 用户名完全相同的公开仓库,并在仓库根目录编写 README.md

主页内容包括个人介绍、技能情况、项目经历、感兴趣的技术方向、自我评估以及未来三年规划。其中项目经历主要概括了目标识别和肺癌细胞图像识别相关实践,未来计划以继续深造为主要方向。

image

屏幕截图 2026-09-08 093630

七、AI 生成的软件工程课程学习指南

我选择 ChatGPT 生成一份简要的软件工程课程学习指南,生成内容如下:

  1. 夯实编程、数据结构、数据库和计算机网络等基础知识。
  2. 学习需求分析、系统设计、编码、测试和维护等软件生命周期内容。
  3. 熟悉 Git、GitHub、Markdown、IDE 和调试工具。
  4. 通过小型项目练习前后端开发、接口设计和数据存储。
  5. 在团队项目中重视任务分工、沟通记录、代码审查和版本管理。
  6. 定期总结项目中遇到的问题,分析原因并记录解决过程。

对指南的分析

这份指南整体较为合理,涵盖了基础知识、软件开发流程、工具使用、项目实践和团队协作等方面,与软件工程课程的学习目标比较一致。其中,通过项目实践巩固知识、使用 Git 管理代码以及记录问题解决过程,对我目前比较有帮助。

不过,这份指南比较概括,没有结合课程具体安排,也没有针对个人薄弱环节制定明确的时间计划。因此,我需要结合自己的情况,重点加强系统设计、软件测试、算法基础和团队协作,并通过本学期的课程项目落实这些学习目标。

八、未来三年规划

第一阶段:夯实基础

  • 学好数据结构、算法、数据库、计算机网络等核心课程。
  • 熟练使用 Git、Markdown 和常用开发工具。
  • 继续学习 Python、Web 开发和计算机视觉基础。

第二阶段:积累项目与科研经验

  • 围绕目标识别和医学图像分析方向继续学习。
  • 参加课程项目、竞赛或实验室实践。
  • 提升论文阅读、模型实现和团队协作能力。

第三阶段:为继续深造做准备

  • 根据兴趣进一步确定研究方向。
  • 完善个人项目作品和专业知识体系。
  • 为考研或其他深造机会做好准备。

九、总结

通过本次作业,我完成了 GitHub 个人主页建设,并实现了一个调用 Hugging Face Space 的 FLUX 图像生成应用。我进一步熟悉了 Markdown、GitHub、Python、Flask、前后端交互以及 API 调用流程,也认识到自己在系统设计、软件测试和工程实践方面仍有较大提升空间。希望在接下来的课程中不断完善自己的技能树,积累更加完整的软件项目经验。


posted @ 2026-09-08 19:44  了一声  阅读(29)  评论(0)    收藏  举报