第四单元博客:Our Story Ends

周子皓-22371187 学生 2024-06-12 15:54:27

Part1. 总结本单元所实践的正向建模与开发

第四单元相较于前三个单元轻松了很多,主要是锻炼我们的正向建模能力。在前三个单元中,我们都是直接对题目进行编码,然后再根据已有的代码画UML类图,这样的话类图就只能起到一个示意的作用了。而在本单元中,课程组要求我们像实际开发的时候那样,先做好规划再行动。
虽然很难像课程组推荐的那样,在一开始就着手画UML图,但是在开始做之前,先对整体的架构进行分析,整理出几个类,并在纸上梳理他们之间的关系,思考如何使数据在一个个对象中流动并处理来实现题目的功能,这些都是很有意义的前置准备。在胸有成竹之后,写起代码来也会顺畅很多,也更容易从全局来规划。不像之前的单元中,因为没做好规划,我有时候写着写着就像迷了路似的不知道该干啥了。
当然,一开始的想法和最后的实际开发很可能会有一定的出入。就像我一开始将book归为一个类,后续在开发中发现似乎不需要这个类,于是果断丢弃。一开始想象的具象的书籍对象的传播在最后的实现里变成了抽象的数字的传递,也一定程度上简化了我的架构。

Part2. 总结本单元架构设计

本单元最终架构类图如下

img


整体而言,我新建了一个Library类,来统筹处理所有请求。BrOfficeBookShelf等类均使用单例模式,将唯一的实例存放在Library中。User类则是以HashMap的形式存放在Library。对于Book,我并没有单独建类,因为事实上大多数时候书的传递不需要同步太多信息。我建立了多个HashMap<LibraryBookId, Integer>,存放书号和数量的对应,这样普通的借还等情况仅仅需要数量加减即可完成。
当然,有时候书籍是需要存储信息的,例如借还的时间,捐献人,借书人等等。但是由于不同功能需要的信息内容大不一样,多少也不尽相同,所以我选择针对不同的请求建立不同的信息存储方式对应:Pair, Pair1(我承认这个名字起的很草率哈哈哈哈), DriftBook就分别对应了不同的情况。这样的处理方式对我而言会显得清晰一些,如果把所有的信息都放到一个单独的Book类中,我会觉得有些混乱。当然,其实更好地办法是建立一个'Book'类,然后将存储不同信息的书对应建立它的子类,这样显然更清晰。(偷懒了)

Part3. 架构设计思维的演进

  • 在第一单元中,我学到了层次化设计的思想。学会了对一个复杂的式子进行递归拆解,惊喜于一个复杂的嵌套表达式被自己写的程序层层拆分化简。U1带给我的不仅仅是递归下降算法,更教会了我用层次化的方式来看待、拆解问题。
  • 在第二单元中,我学习了多线程开发的相关内容。这是最难的一个单元,但也是我最喜欢的一个单元。尽管日日夜夜都为了难以捉摸的bug苦恼,但是电梯这一单元带给我最为深刻的“面向对象”体验。看着一行行的输出,就好像真的有一个电梯在飞速运转,那种成就感简直无可比拟。我在多线程开发中学会了很多,尤其是锻炼了思维的严谨性。在多线程的世界里,稍不留神就很可能出现各种异常,且bug千奇百怪,变幻莫测甚至无法复现。但是多线程的魅力就在于这种复杂性和复杂性带来的速度。比较可惜的是,多线程的最后一个单元要准备蓝桥杯,所以没能延续第二次作业使用影子电梯,只是随机分配就草草收场了。
  • 在第三单元中,我学习了图论的算法规格化设计。尽管我直到最后也没能彻底领略规格的魅力,还因为算法用的不好挂了一些点。但我还是认为这是设计的非常不错的一个单元,弥补了OO课程在算法学习上的不足。
  • 在第四单元中,我学习了正向建模。这是最自由的一个单元,课程组仅仅提出要求让我们去实现,通过UML建模的形式,很大程度上模拟了部分以后工作的情境。

    Part4. 测试思维的演进

    在整个OO课程,尤其是第三单元中,我的测试思维从一开始的无脑用大量数据点检验的随机测试,变得更倾向于精确打击的构造的测试。尤其再结合第四单元用例概念。每个功能都是一个用例,我们编写的测试数据就需要对每一个用例的每一种情况做出检验。课程组给出的数据就是这样子美妙的数据。课程组就像是一个足够了解人体构造的大夫,能够精准地用手术刀插入同学们的心脏除了对用例进行测验,还可以猜测实现可能出现什么样的错误,并对此进行检验,这就是更高的高度了。

    Part5. 课程收获

    上面啰嗦了很多,似乎都把这部分的知识部分写完了。我想继续谈谈除了知识之外的收获。说实话,我的OO并不是学的非常优秀,因为本人比较粗心,思维不够严谨,老是会犯这样那样的错误而挂掉强测,因此常常扼腕长叹,悲从中来。还记得最差的那次进了B房,强测挂了6个点,仅仅是因为有几个类似方法的其中一个忘记修改了,那次真的五雷轰顶,感觉天都要塌了。我想,OO给我带来的,除了丰富的知识,拓展的经验,还有抗压的能力和面对失败的勇气。仔细想想,这可能不仅是OO的特色,更是计院所有专业课的特色。
    在这里还想感谢一下OO课程组的所有老师和助教学长学姐,OO课程组是一个优秀的,有温度的课程组,像慈母严父集于一体,带给我们成长。
    就要说再见了,OO。我们的故事结束了,另外的故事即将开始。
...全文
83 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
本系统提出了一套面向MRI全心脏分割任务的端到端深度学习解决方案,其核心创新在于将Swin Transformer作为编码器骨干网络,充分挖掘心脏MRI图像中的全局上下文信息与局部细节特征,同时引入4通道输入机制,在传统RGB三通道图像基础上额外拼接一个点提示编码通道,支持用户通过鼠标交互在图像上自由标注前景(心脏区域)与背景点,从而将先验空间信息显式地融入网络前向传播过程,实现基于稀疏标注引导的精准分割。在解码阶段,系统采用U型对称结构,通过逐步上采样与跳跃连接逐级恢复特征图分辨率,最终输出二值分割掩膜(前景/背景),有效区分心脏区域与其他组织。训练过程中,系统选用交叉熵损失函数,配合AdamW优化器与余弦退火学习率调度策略,确保模型在训练集和验证集上稳定收敛,并在每个epoch结束后自动计算全局像素准确率、平均交并比(mIoU)、平均Dice系数、平均精确率、平均召回率及平均F1分数等多项评估指标,全方位监控模型性能。系统内置了完整的训练日志保存、损失曲线与性能曲线绘制、学习率衰减可视化等功能模块,便于用户直观分析训练过程并调优超参数。在推理应用层面,系统封装了基于Tkinter框架的图形化交互界面,用户可上传任意MRI切片图像,通过鼠标左键/右键分别添加前景/背景点,点击“执行分割”按钮后即可实时生成叠加了红色半透明掩膜的分割结果图像,支持点集的增删与重置操作,交互响应灵敏,操作逻辑直观清晰。整体而言,本系统不仅实现了从多模态数据加载、交互式标注编码、基于Transformer的分割建模到图形化推理部署的全链路覆盖,更在算法层面通过点提示引导机制与Swin Transformer结构的高效结合,显著降低了对大规模标注数据的依赖,同时提升了模型对心脏边界模糊、形态变异及邻近组织干扰的鲁棒性,为心血管疾病的计算机辅助诊断、术前规划及定量分析提供了一种兼具精度与灵活性的智能
针对心脏MRI图像中边界模糊、器官形变复杂以及标注成本高昂等痛点,本研究构建了一套以Swin Transformer为编码基座、融合人机交互机制的轻量化分割系统。该方案跳出传统全自动分割的思维定式,转而采纳“模型推理+专家微调”的协同策略,在模型输入层开辟了一条额外的点提示通道,允许操作者通过鼠标标记少量前景或背景点,将这些位置信息与图像特征并行馈入网络,从而将抽象的空间先验转化为可微分的学习信号,使得分割结果能够灵活响应个体差异与局部歧义。编码端采用基于移位窗口注意力的Transformer结构,以分层递降的分辨率捕获全局感受野下的解剖结构关联,解码端则通过逐步上采样与跨层特征拼接恢复空间细节,最终输出逐像素的二分类概率图。训练数据来自心脏MRI多切片序列,每张样本不仅包含原始影像与对应金标准掩膜,还通过随机采样前景点的方式模拟真实交互场景,迫使模型学会如何从稀疏的点监督中推断完整器官轮廓。损失函数选用标准交叉熵,用以衡量预测概率与真实标签之间的分布差异,同时引入混淆矩阵模块对训练与验证阶段的像素精度、召回率、F1分数、Dice系数及平均交并比进行逐轮次追踪,所有评估曲线均自动落盘保存,便于横向对比不同超参数配置下的性能演变规律。在工具链末端,系统配套开发了一个基于Tkinter的事件驱动型图形界面,将模型推理、点标注、结果渲染与图像交互四个环节无缝串联。用户上传图像后,可通过左键与右键分别部署正负样本点,随后系统自动完成坐标缩放、通道拼接、前向传播与掩膜重采样,最终在原始影像上叠加半透明彩色蒙层,清晰勾勒出模型判定的心脏区域。整套代码逻辑紧密、模块边界清晰,既可作为医学影像分割领域的教学范例,亦可经过少量适配迁移至其他器官或模态的交互式标注任务中,具备良好的扩展潜力与实用价值。
内容概要:本文介绍了基于MATLAB实现的改进前推回代法在低压配电网潮流计算中的应用。该方法针对传统前推回代法在处理弱环网、分布式电源接入以及三相不平衡等复杂配电系统时存在的收敛性差、精度不足等问题,进行了算法层面的优化与改进。通过引入节点分层处理、支路阻抗修正、相序解耦建模及迭代加速策略,提升了算法的稳定性与计算效率。文中详细阐述了改进算法的核心思想、数学模型构建过程及MATLAB编程实现的关键步骤,并结合典型低压配电网算例进行仿真验证,展示了其在电压分布、功率损耗和节点电压幅值等方面的精确求解能力。; 适合人群:具备电力系统分析基础,熟悉MATLAB编程,从事配电网规划、运行或相关科研工作的研究生、工程师及科研人员(工作年限1-5年)。; 使用场景及目标:①用于低压配电网的稳态潮流分析,特别是在含分布式电源、不对称负荷的场景下进行电压特性评估;②为配电网自动化、电能质量分析、分布式能源接入规划等提供可靠的仿真支持;③作为教学与科研中潮流算法研究的参考实现平台。; 阅读建议:建议读者结合电力系统潮流计算的基本理论,对照MATLAB代码逐模块理解算法实现逻辑,重点关注节点编号优化、三相建模处理与收敛判据设置;可通过修改网络拓扑或参数进行仿真实验,加深对算法性能的理解与掌握。
内容概要:本文系统阐述了基于核主成分分析(KPCA)的故障检测方法,重点实现了T²统计量与Q统计指数的构建及其可视化分析,采用Matlab进行代码实现与仿真验证。该方法通过核函数映射将原始非线性工业过程数据转换至高维特征空间,提取主要变化趋势并保留残差信息,进而利用T²和Q统计量分别监控主成分子空间与残差子空间中的异常变化,有效提升了对复杂非线性系统早期故障的敏感性与检测精度。文中提供了完整的Matlab程序代码,涵盖数据预处理、KPCA建模、控制限计算及故障检测结果可视化等环节,具有较强的可复现性和工程应用价值。; 适合人群:具备信号处理、机器学习及工业过程控制基础知识,从事自动化、电气工程、控制科学与工程等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于化工、电力、智能制造等复杂工业系统的实时状态监测与早期故障预警;②帮助研究人员深入理解KPCA在非线性特征提取中的原理,掌握T²与Q统计量的数学构造逻辑及其在异常检测中的判别机制;③为撰写相关学术论文、开展科研项目或构建智能运维系统提供可靠的技术路线与可复现的代码支持。; 阅读建议:建议结合Matlab代码逐模块调试运行,深入理解核函数选择、主成分数确定及统计控制限设定对检测性能的影响,进一步可通过引入实际工业数据或与其他非线性降维方法(如Isomap、LLE)对比,拓展研究深度,全面提升对高维非线性数据故障诊断技术的掌握水平。

301

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧