毕设项目分享 深度学习语义分割实现弹幕防遮(源码分享)
文章目录0 简介1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法3 实例分割4 实现效果最后0 简介今天学长向大家分享一个毕业设计项目毕业设计 深度学习语义分割实现弹幕防遮(源码分享)项目分享见主页任意置顶文章1 课题背景弹幕是显示在视频上的评论可以以滚动、停留甚至更多动作特效方式出现在视频上是观看视频的人发送的简短评论。各大视频网站目前都有弹幕功能之家也于2020年5月正式上线视频弹幕功能受到了广大网友的喜爱大家在观看视频的同时也能通过弹幕进行互动。但密集的弹幕遮挡视频画面严重影响用户观看体验如何解决查阅了相关视频网站发现B站推出了一种蒙版弹幕技术可以让弹幕自动躲避人形区域达到弹幕不挡人的效果。B站视频弹幕不挡人的效果2 技术原理和方法2.1基本原理通过AI计算机视觉的技术对视频内容进行分析并将之前已经定义好的“视频主体内容”进行识别生成蒙版并分发给客户端后让客户端利用 CSS3 的特性进行渲染从而达成最终的效果。这样就形成了我们最终看到的“不挡脸”弹幕效果。实现方法就正如 PS 中的“蒙版“一样实心区域允许空白区域拒绝从而达到弹幕不挡人的效果。而技术的核心就在蒙版的生成上所以将这个功能称之为“蒙版弹幕”。2.2 技术选型和方法1、提取视频帧画面。对音视频的处理大家一般都会想到FFmpeg组件我们也是使用FFmpeg组件提取每帧的视频画面使用的是PyAV组件PyAV是FFmpeg封装能够灵活的编解码视频和音频并且支持Python常用的数据格式如numpy。2、识别视频帧画面人像区域。解决方案使用AI计算机视觉的实例分割技术可以识别视频帧画面的人像区域。3、AI框架目前市面上的AI框架主要以TensorFlowPyTorch最流行。TensorFlow出身豪门的工业界霸主由Google Brain团队研发。具有如下优点支持多种编程语言灵活的架构支持多GPU、分布式训练跨平台运行能力强自带TensorBoard组件能可视化计算图便于让用户实时监控观察训练过程官方文档非常详尽可查询资料众多社区庞大大量开发者活跃于此。PyTorch以动态图崛起的学术界宠儿是基于Torch并由Facebook强力支持的python端的开源深度学习库。具有如下优点简洁PyTorch在设计上更直观追求尽量少的封装建模过程透明代码易于理解易用应用十分灵活接口沿用Torch契合用户思维尽可能地让用户实现“所思即所得”不过多顾虑框架本身的束缚社区提供完整的文档和指南用户可以通过全面的教程完成从入门到进阶有疑问也可以在社区中获得各种及时交流的机会。我们的选择PyTorch。原因TensorFlow入门难度较大学习门槛高系统设计过于复杂而PyTorch入门难度低上手快而且提供的功能也非常易用预训练模型也非常多。4、实例分割技术实例分割Instance Segmentation是视觉经典四个任务中相对最难的一个它既具备语义分割Semantic Segmentation的特点需要做到像素层面上的分类也具备目标检测Object Detection的一部分特点即需要定位出不同实例即使它们是同一种类。3 实例分割简介实例分割已成为机器视觉研究中比较重要、复杂和具有挑战性的领域之一。为了预测对象类标签和特定于像素的对象实例掩码它对各种图像中出现的对象实例的不同类进行本地化。实例分割的目的主要是帮助机器人自动驾驶监视等。实例分割同时利用目标检测和语义分割的结果通过目标检测提供的目标最高置信度类别的索引将语义分割中目标对应的Mask抽取出来。实例分割顾名思义就是把一个类别里具体的一个个对象具体的一个个例子分割出来。Mask R-CNN算法本项目使用Mask R-CNN算法来进行图像实例分割。网络结构图Mask R-CNN一个相对简单和灵活的实例分割模型。该模型通过目标检测进行了实例分割同时生成了高质量的掩模。通常Faster R-CNN有一个用于识别物体边界框的分支。Mask R-CNN并行添加了一个对象蒙版预测分支作为改进。使用FPN主干的head架构如图所示。关键代码##利用不同的颜色为每个instance标注出mask根据box的坐标在instance的周围画上矩形 ##根据class_ids来寻找到对于的class_names。三个步骤中的任何一个都可以去掉比如把mask部分 ##去掉那就只剩下box和label。同时可以筛选出class_ids从而显示制定类别的instance显示,下面 ##这段就是用来显示人的其实也就把人的id选出来然后记录它们在输入ids中的相对位置从而得到 ##相对应的box与mask的准确顺序 def display_instances_person(image, boxes, masks, class_ids, class_names, scoresNone, title, figsize(16, 16), axNone): the funtion perform a role for displaying the persons who locate in the image boxes: [num_instance, (y1, x1, y2, x2, class_id)] in image coordinates. masks: [height, width, num_instances] class_ids: [num_instances] class_names: list of class names of the dataset scores: (optional) confidence scores for each box figsize: (optional) the size of the image. #compute the number of person temp [] for i, person in enumerate(class_ids): if person 1: temp.append(i) else: pass person_number len(temp) person_site {} for i in range(person_number): person_site[i] temp[i] NN boxes.shape[0] # Number of personinstances #N boxes.shape[0] N person_number if not N: print(\n*** No person to display *** \n) else: # assert boxes.shape[0] masks.shape[-1] class_ids.shape[0] pass if not ax: _, ax plt.subplots(1, figsizefigsize) # Generate random colors colors random_colors(NN) # Show area outside image boundaries. height, width image.shape[:2] ax.set_ylim(height 10, -10) ax.set_xlim(-10, width 10) ax.axis(off) ax.set_title(title) masked_image image.astype(np.uint32).copy() for a in range(N): color colors[a] i person_site[a] # Bounding box if not np.any(boxes[i]): # Skip this instance. Has no bbox. Likely lost in image cropping. continue y1, x1, y2, x2 boxes[i] p patches.Rectangle((x1, y1), x2 - x1, y2 - y1, linewidth2, alpha0.7, linestyledashed, edgecolorcolor, facecolornone) ax.add_patch(p) # Label class_id class_ids[i] score scores[i] if scores is not None else None label class_names[class_id] x random.randint(x1, (x1 x2) // 2) caption {} {:.3f}.format(label, score) if score else label ax.text(x1, y1 8, caption, colorw, size11, backgroundcolornone) # Mask mask masks[:, :, i] masked_image apply_mask(masked_image, mask, color) # Mask Polygon # Pad to ensure proper polygons for masks that touch image edges. padded_mask np.zeros( (mask.shape[0] 2, mask.shape[1] 2), dtypenp.uint8) padded_mask[1:-1, 1:-1] mask contours find_contours(padded_mask, 0.5) for verts in contours: # Subtract the padding and flip (y, x) to (x, y) verts np.fliplr(verts) - 1 p Polygon(verts, facecolornone, edgecolorcolor) ax.add_patch(p) ax.imshow(masked_image.astype(np.uint8)) plt.show()4 实现效果原视频生成帧蒙板最终效果最后项目分享见主页任意置顶文章

相关新闻

软件知识产权保护:从历史争议到现代技术对抗

软件知识产权保护:从历史争议到现代技术对抗

1. 软件知识产权争议的历史溯源1976年2月,时年21岁的哈佛大学辍学生比尔盖茨撰写了一封致计算机爱好者的公开信,这封题为《致电脑爱好者的公开信》的文档,成为了软件行业发展史上的标志性事件。当时微软刚成立不到一年,主要产品是…

2026/8/3 8:27:42阅读更多 →
NOI经典01串问题:滑动窗口与单调队列解法详解

NOI经典01串问题:滑动窗口与单调队列解法详解

1. 项目背景与题目解析 这道来自NOI1999的经典题目"01串"(题目编号P5627/P5751)是信息学奥林匹克竞赛中极具代表性的字符串处理类问题。题目要求我们分析由0和1组成的特定序列,找出满足特定条件的最长子串。这类题目在信奥赛场上频…

2026/8/3 8:27:42阅读更多 →
单片机毕设选题推荐:基于单片机 TS-300B 浊度检测报警设备设计 基于 51 内核单片机的水质智能预警装置实现(018101)

单片机毕设选题推荐:基于单片机 TS-300B 浊度检测报警设备设计 基于 51 内核单片机的水质智能预警装置实现(018101)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/3 8:25:42阅读更多 →
3步解锁qBittorrent隐藏技能:search-plugins搜索插件完全指南

3步解锁qBittorrent隐藏技能:search-plugins搜索插件完全指南

3步解锁qBittorrent隐藏技能:search-plugins搜索插件完全指南 【免费下载链接】search-plugins Search plugins for qBittorrent search feature 项目地址: https://gitcode.com/gh_mirrors/se/search-plugins 你是否还在为寻找种子资源而在多个网站之间来回…

2026/8/3 9:44:59阅读更多 →
GPT-5.6 Luna降价80%:大模型服务进入成本与效率优化新阶段

GPT-5.6 Luna降价80%:大模型服务进入成本与效率优化新阶段

最近在折腾一些AI应用时,发现一个挺有意思的现象:很多开发者朋友在选型大模型API时,第一反应还是去查“哪个最便宜”。这当然没错,成本是硬约束。但就在大家习惯性地把“价格”和“价值”划等号时,OpenAI的一则消息&am…

2026/8/3 9:44:58阅读更多 →
上海纹身护理注意事项

上海纹身护理注意事项

刚完成纹身的消费者都清楚,纹身完成只是第一步,科学的术后护理直接决定纹身最终的呈现效果和皮肤恢复状态。在上海,不少纹身爱好者会咨询专业门店获取护理建议,泰酷刺青(TK Tattoo)也会为每位顾客梳理清晰的…

2026/8/3 9:44:58阅读更多 →
3个关键步骤解决PCSX2模拟器启动崩溃:VC++运行时库问题排查指南

3个关键步骤解决PCSX2模拟器启动崩溃:VC++运行时库问题排查指南

3个关键步骤解决PCSX2模拟器启动崩溃:VC运行时库问题排查指南 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/GitHub_Trending/pc/pcsx2 你是否遇到过这样的情况:满怀期待地打开PCSX2模拟器准备重温经…

2026/8/3 9:44:58阅读更多 →
猫抓扩展终极指南:3步掌握浏览器资源嗅探神器

猫抓扩展终极指南:3步掌握浏览器资源嗅探神器

猫抓扩展终极指南:3步掌握浏览器资源嗅探神器 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到网页上的视频无法下载&…

2026/8/3 9:44:56阅读更多 →
Laravel官方AI工具全解析:从安装到高级应用

Laravel官方AI工具全解析:从安装到高级应用

1. Laravel官方AI工具初探:它到底是什么? 作为一名长期使用Laravel框架的开发者,当我第一次听说Laravel官方推出AI工具时,内心既兴奋又困惑。这个所谓的"官方AI工具"究竟是什么?它能为我们开发者带来哪些实质…

2026/8/3 9:42:56阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 0:29:53阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/3 0:33:53阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/3 0:20:37阅读更多 →
3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南

3个让你工作效率翻倍的Umi-OCR实战技巧:免费离线文字识别完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

[具身智能-181]:PC+服务器+具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构

PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…

2026/8/3 0:00:32阅读更多 →
[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

[具身智能-181]:大分布式通信模型对比:看懂为什么 DDS 是 ROS2 底层通信最优解

前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…

2026/8/3 0:00:32阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/3 2:32:59阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/3 2:33:01阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/3 2:33:04阅读更多 →