上学期由于课程结课作业需要(开发GUI),经过不断搜索最终确定使用 PyQT5
来开发 UI
界面,并使用 Python
来实现整个项目。这时肯定有人会说为什么不用 C++
和 Qt
呢?确实,使用这些底层语言写的软件运行速度快、安装包也小,不过基于时间限制,只能用1个月的时间来熟悉语言以及框架并开发好整个项目,基于学习成本,最终采用 PyQt5
。这也是我首次开发这样的软件,现在回想起来,当时写的代码也是有很多地方可以优化的,在最近开发的一款背词软件——“森林背词”就采用了更多的功能,这也是基于后期不断的学习和对 PyQt5
的更深的了解所做到的,在这里给初次使用 PyQt5
的同学讲讲我当时的一个开发思路,希望能帮助你们更快的入门。由于目前没有那么多时间写博客,所以我会把这个项目分成多个块来分享。
对于要开发这样一款软件,首先我当时想的是如下3点:
35
栋建筑。这样也使得我们的照片收集工作大,根据计算,我们需要每栋建筑收集最少 5000
张照片,可想而知,这种工作量是非常大的,于是我的队友们想到通过以拍视频的方式来抽帧取到不同角度的图片,这样就能减少很大的工作量了。SIFT+BOW+SVM
;(2)神经网络派,确实大家都喜欢做神经网络,所以选的模型有 CNN
,EfficientNet
,DenseNet
。将整个大框架搭建好之后,就要发挥好团队协作的优势,各司其职,首先就是要收集部分数据集,以此来验证我们选取的模型预测效果(此处用到的验证集为视频抽帧的部分图片【未参与训练的】和自行拍摄的照片,,目的是检验视频抽帧的图片和用户自行拍摄的图片会不会有区别,模型是否真正的学到了要学的东西,是否有泛化能力)。
由于校内存在某些建筑的不同面差异较大,如若单纯将建筑名作为一类进行拍摄,后续模型分类效果可能较差,故本小组选择将建筑名加上方位名(如湖滨食堂北)作为一个类进行视频拍摄,并对每一个类进行多方位(拍摄距离远近),多角度(拍摄角度、横屏竖屏拍摄)的视频拍摄。
为尽可能在数据集层面减少类别不平衡的影响(原因有些建筑相对于其他建筑占地面积小,能拍摄的不重复画面有限),本小组将大部分类的视频总拍摄时长限制在1min以上,1min30秒以下。最后选择以 20
帧为抽帧间隔,利用opencv库将拍摄的视频每隔20帧抽取一张图像作为数据集,最终获得包含 81
个类( 35
栋建筑),8964
张图片的数据集。
感谢指导老师邓娟教授给我们提供了模型训练的平台(华为云的 ModelArts
)经费,以及指导我们优化软件界面,给用户更强的体验感。感谢我的队员们:陈天翼、黄祎雯、陈炅封、钟欣睿、周奕圆、徐恬瑞!
后面我会分块讲解界面搭建思路以及如何用 designer
搭建界面,以及如何优化界面(现在重新回来看自己的代码,感觉写的太冗余了,有很多地方可以用更好的控件以及方法替代,后续会一一分享,当然可能后续说到的优化方法还有更好的方法去解决,也希望有好想法的大佬在评论区提出来,供大家一起学习进步)。
最后项目代码已开源,传送门:武汉大学建筑知识系统源代码
下一篇文章传送门:【PyQt5 实战项目1】武汉大学建筑知识系统–思路分享2(软件版本1.0.0介绍之打开图片)