目录
一、过去完成的任务
二、小组分工
三、过去完成的任务
1. 前端部分——网站的搭建
2. 后端部分——神经网络搭建的准备
四、计划完成的工作
五、遇到的困难
1. Spring、SpringMVC和MyBatis的整合及环境搭建
2. 网页跳转
3. tomcat日志及网页内容中文乱码
4. 前后端整合思路的确定
5. 后端代码开发
六、燃尽图
七、例会的照片
八、收获和疑问
1. 收获
2. 疑问
组内会议讨论,确定选题——图像修复。
完成了新选题的小组分工。
查找相关资料开始学习相关知识,如相关论文的阅读和sql、java、python(pyTorch)的温习。
参加老师所开展的选题讨论,基本确定了项目的开发方向。
成员姓名 | 分工 |
---|---|
庄绪杰、朱丽鲜、胡志超 | 前端部分,利用SSM框架进行网站搭建 |
潘摅宇、陆子毅、王子龙 | 后端部分,利用unet模型完成去噪及图像修复的实现 |
(1) 选定Web框架——SSM框架,并进行深入学习和了解
SSM(Spring+SpringMVC+MyBatis)框架:由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。其核心思想是IoC(控制反转),即不再需要程序员去显式地new
一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
(2) Spring、SpringMVC和MyBatis的整合及环境搭建
① 整体框架:
② 依赖导入:
③ 配置web.xml(涉及Spring、SprongMVC等)
④ SpringMVC部分
⑤ MyBatis等部分
因该部分主要设计面向数据库的开发方向,不是项目重点,就不再详细展示。
(3) 基本确定前后端整合思路
初步想法是:采用Java与python混合编程。
(4) 初步设计网页显示界面及各个网页间的跳转
网页显示界面的初步想法是:顶部有标题栏,首页设置展示内容,可以点击“图像修复”,进入相关功能页面。
图像修复界面首先设置用户图片上传功能,并将用户选择的要修复的图片展示出来,然后用户可以点选“图像修复”,在原图一侧展示出经过修复的图片,其余功能还带商榷。
(5) 初步实现最终显示界面的框架
(1) 选定利用pyTorch的UNet和CBDNet分析以实现去噪
传统深度卷积神经网络去噪的局限性
大多数存在的盲去噪的方法都包括两步:噪声估计和非盲目去噪。
深度卷积神经网络的效果依赖于训练数据,但真实噪声图像和干净图像太少,而合成的噪声图像与真实噪声图像相差太大。
真实噪声的特征不能充分地被设计的噪声模型所刻画。
非盲目去噪器(BM3D、FFDNet)对低估噪声等级敏感,而对高估噪声等级表现良好。即在噪声估计网络对噪声图像的噪声估计的噪声等级低于实际噪声等级时,去噪效果不好,但当噪声估计网络对噪声图像的噪声估计的噪声的呢估计高于实际噪声等级时去噪效果良好。
什么是unet
UNet 属于 FCN 的一种变体,它可以说是最常用、最简单的一种分割模型,它简单、高效、易懂、容易构建,且可以从小数据集中训练。2015 年,UNet 在论文 U-Net: Convolutional Networks for Biomedical Image Segmentation 中被提出 。UNet 的初衷是为了解决医学图像分割的问题,在解决细胞层面的分割的任务方面,其在 2015 年的 ISBI cell tracking 比赛中获得了多个第一。之后,UNet 凭借其突出的分割效果而被广泛应用在语义分割的各个方向(如卫星图像分割,工业瑕疵检测等)。
(2) 构建模型前的准备
我们学习了项目相关知识,进行了大体代码框架的确定,从GitHub、CSDN寻找相似项目进行参考。为之后模型的具体构建奠定了一定的基础。
前端获取图片,并交给后端
前端获取后端处理的图片,并显示
各个网页具体内容展示
后端整合已有的FCN和UNet代码进行CBDNet分析
后端对建立起的模型进行组织训练
软件测试
将本项目的代码git到云端
该过程中遇到的问题大多来自于:
①版本的不适配。网上可以查到的教程一般都是针对特定的版本(包括IDEA、MySQL、SDK等),且大部分都是各UP主、博主已经有完好环境配置的老版本了,跟我们毫无环境配置的新版本有较多的不兼容之处。在看过诸多不同的教程、多次试错后才最终找到了能够完美跑通的方案。
②对于各语句的不理解。很多此仅仅由于一条语句的一个符号,就要调试很久,最后在经过百般调试之后才终于算是初步理解了各部分的用意。
一个典型的错误就是:tomcat运行后,界面中直接出现的就是我们在jap文件中写的源代码,而非对应的图文。
原因:在学习了一个教程成功配置了静态资源过滤器后,我们又跟着另一个教程对各种类型的静态资源进行了一一过滤,导致jsp文件无法识别“<%@ page contentType="text/html;charset=UTF-8" language="java" %>”(用于显示中文)语句,只要出现,就会导致网页显示源代码。
解决方法:保留一种静态资源过滤器。
在配置了“内部资源视图解析器”后,一般的处在对应文件夹内(/WEB-INF/pages)的网页(jsp文件)都可以无需前后缀直接跳转。
但为了方便管理,我们在pages中新建不同文件夹,存放对应网页,但如何网页跳转?一般而言我们有两种常用方式,但都路径错误:①是利用ModelAndView方法,②是利用@Controller,直接return一个String类型的正确路径。
在不断尝试和搜索后我们找到了正确路径的写法:
return "restore/top";
①tomcat日志中文乱码
在F:\Tomcat\apache-tomcat-8.5.83\conf中找到logging.properties文件,修改编码类型:
共将五处原内容为“encoding=UTF-8”的地方改为:
②网页内容中文乱码
在jsp文件中添加一句:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
因在此之前,在各种学习资料学到的用SSM框架开发的项目基本都是有关于数据库管理的,例如“教务系统”、“选课系统”等,涉及的都是与MySQL数据连接并进行数据的增删改查等管理操作。所以对于我们所要达成的项目,我们不能确定我们所学习的SSM框架是否能实现想要的效果,也并不了解应该如何进行前后端对接,尤其是还有可能前后端应用的并非同一种语言的前提下。
在多方查找下,我们初步确定了“Java和Python的混合编程”的想法。即后端数据处理部分采用pytorch等python脚本,然后前后端对接部分采用Java与python混合编程,然后前端调用命令采用Java语言,网页用的是jsp格式,html语言。
带给我们这个想法的以下这几篇博文,但具体内容因为还没有切实可行的实践对象,我们并未亲自尝试。
Python(二)Java&Python混合编程_懒惰虫儿的博客-CSDN博客
Java与Python混合开发_小高写BUG的博客-CSDN博客
我们这个星期着重对相关的模型和原理进行了学习,但尚未对已有的代码进行更完善的整合并未上手编写相关代码,这需要我们在接下来的几周内迎头赶上。
学习到了关于深度神经网络的相关知识,并在尝试将之运用在解决问题当中。
通过前端代码的实操,巩固了编写网页的能力。
通过小组内的交流、讨论和学习,加强了组员们团队协作的能力
模型的创建及优化难度未知,具体的实现及测试需要在任务中尝试。
UI界面的优化及美化仍需进一步的讨论与尝试。