- 博客(220)
- 收藏
- 关注

原创 我的毕业设计笔记
根据任务的不同,标注的内容会有所不同。例如,在图像分类中,Ground Truth可能是图像的类别标签,而在图像分割中,则是每个像素的标签。在深度学习中,“Ground Truth”是一个关键概念,尤其在人脸识别、图像分割、物体检测等任务中。它通常指的是注释好的数据,代表我们想要模型学习的真实标签。数据预处理是将原始数据转化为适合模型输入的格式。# LabelMe的输出格式为JSON文件,包含图像的标注信息。在训练好模型后,我们需要评估模型在测试集上的性能。5. 如何使用训练数据和标签来训练我们的模型。
2025-03-30 11:15:59
80
原创 Python:EfficientNet
在上图 SE 模块中,首先会经过 Ftr 操作,该操作是通过一系列的卷积操作,得到了通道数为 C 的特征;式中, s 是由激励操作得到的通道重要程度信息, z 是由挤压操作得到,1W z 代表了全连接操作,其中1W 的维度是 C/ r ×C , r 代表一个缩放参数,作者取值为 16,是为了减少通道数和计算量,1W z 的维度为1×1×C/ r ,再经过 Re LU 函数,再与维度为C×C/ r 的2W 进行相乘,最后经过 sigmoid 函数,得到输出维度为1×1×C 的 s。SE 模块如下图所示。
2025-04-10 16:05:17
734
原创 “深入浅出”系列之C++:Git
当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改,或者一个分支删除了一个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。如果我们在当前分支上提交我们想要合并的分支不具备的改变,那么 git 将会执行 no-fast-forward 合并。如果你有一个远程 Git 分支,比如在 GitHub 上的分支,当远程分支上包含当前分支没有的提交时,可以使用取回。
2025-04-06 12:44:50
429
原创 杂谈篇:(9)C++ 的两个派系之争
这段话引发了我的强烈共鸣,原因是我曾亲眼见证了一个庞大的 C++ 代码库,在历经数十年的开发过程中,如何从“传统”逐步过渡到“现代”C++。事实上,在 90 年代,流行的 C++ 库在开发时普遍注重安全性,并广泛采用了运行时检查来确保代码的正确执行。但与此同时,在 C++ 的发展道路上也面临着一系列阻碍,包括美国政府机构(网络安全与基础设施安全局(CISA)、美国国家安全局(NSA)以及白宫)希望人们停止使用 C++,美国政府各个部门均已发布文件、报告和建议,警告技术行业不要使用内存不安全的语言。
2025-04-06 12:43:22
455
原创 “深入浅出”系列之C++:多线程优化
•避免过度线程化:线程数不超过核心数。•高层抽象:优先使用并行算法。•测试验证:关注Amdahl定律。我的观点:优化需实测驱动,避免理论臆断。
2025-04-02 15:13:08
804
原创 “深入浅出”系列之C++:用最简洁的话读懂TCP协议与UDP协议
TCP/IP协议,英文全称Transmission Control Protocol/Internet Protocol,包含了一系列构成互联网基础的网络协议,是Internet的核心协议。:SMTP(简单邮件传输协议)、IMAP(互联网邮件访问协议)和POP3(邮局协议)等电子邮件协议都是基于TCP的。:FTP(文件传输协议)和SFTP(安全文件传输协议)是基于TCP的文件传输协议,用于在客户端和服务器之间传输文件。:UDP处理的是独立的数据报文,保留报文的边界,不会对数据进行合并或拆分。
2025-03-30 12:09:58
317
原创 Python:Lenet5
该网络会以数字图像作为输入,经过卷积神经网络的计算,最终识别出图像中的数字是几,从而实现数字图像的分类。可以看到6×12×12大小的特征图,输入到第2个卷积层,计算出16个8×8大小的输出特征图。再将16个8×8大小的特征图,输入到第2个池化层,计算得到16个4×4大小的特征图。“输出通道6”,与输出特征图的个数相关,因为输出了6个大方块,所以是6个输入通道。例如,图中展示了,向网络输入一张图片,经过神经网络的计算,网络给出结果“3”。这里数字“3”的右下角有个小方块,表示了卷积核在输入图像上滑动计算。
2025-03-30 11:53:31
372
原创 “深入浅出”系列之C++:微服务与分布式系统设计
下面这个定义来自于经典的《Designing Data-Intensive Application》:一个涉及通过网络进行通信的多台机器的系统被称为分布式系统。:如果您的应用程序需要在一台机器(或多台机器、网络或整个数据中心)宕机时仍然继续工作,您可以使用多台机器来提供冗余。当一台机器失败时,另一台可以接管。:如果您的数据量或计算需求超过单台机器的处理能力,您可以将负载分散到多台机器上。:如果您的用户遍布全球,您可能希望在全球各地设置服务器,以便每个用户都可以从地理位置靠近他们的数据中心获得服务。
2025-03-30 11:50:55
272
原创 “深入浅出”系列之Linux篇:(17)一个C++构建实例
这篇博客的目的是总结一下C++项目构建的基础知识,以下面这个最简单的目录结构作为示例。这是一个非常简单的结构,hello.cpp里定义了hello函数,输出,我们把它编译成静态库。main.cpp调用了hello函数。项目的目的是编译出一个main.cpp对应的可执行文件,放到deploy/bin目录里。虽然这个项目非常简单,但是里面还是涉及到了一些的背景知识,即使想从黑盒的角度在某个层级自洽地理解他们,也需要花费一些精力,这个博客算是一些琐碎资料的总结。
2025-03-30 10:54:43
714
原创 “深入浅出”系列之Linux篇:(18)GDB
GDB,全称 GNU Debugger,是 GNU 开源组织发布的一款功能强大的程序调试工具。自 1986 年由理查德・斯托曼(Richard Stallman)编写以来,它不断发展和完善,如今已成为 Linux 系统下调试程序的首选工具 ,在整个 Linux 生态系统中占据着举足轻重的地位。它就像是一位经验丰富的侦探,深入程序的 “案发现场”,帮助开发者们找到隐藏在代码中的 “罪犯”——Bug。
2025-03-30 10:53:50
732
原创 “深入浅出”系列之C++:用一个简单的demo介绍多态
通过小李的探索和小张、小王的补充,我们已经掌握了多态的基本概念:通过基类指针或引用,程序能够在运行时自动选择调用不同子类的方法。这不仅让程序的结构更加简洁,还极大地提升了代码的灵活性和可扩展性。正如我们所看到的,无论机器人种类如何增加,程序的主体结构几乎不需要修改,新增的机器人只需要实现基类定义的接口,程序便能自动适配。这种特性使得多态成为了实现代码复用和解耦的强大工具,帮助我们更轻松地应对不断变化的需求。这正是多态的魅力所在:它让我们的代码变得更加模块化、易于扩展和维护。
2025-03-30 10:53:13
542
原创 “深入浅出”系列之Linux篇:(19)线程创建
• 如果你的应用程序主要面向 Windows,使用 CreateThread 可能更合适,因为它简化了 Windows 特定的功能和优化。• CreateThread 在 Windows 上创建的线程可能更容易管理,因为 Windows 提供了丰富的线程控制机制。• 在 Windows 上,CreateThread 可能提供更好的性能,因为它是直接针对 Windows 内核优化的。这可以减少资源消耗和提高效率。可能使用线程池,这有助于减少线程创建和销毁的开销,但也可能因为线程池的负载均衡而引入额外的延迟。
2025-03-30 10:52:18
1007
原创 “深入浅出”系列之Linux篇:(20)进程间通信
Linux 进程间通信(Inter-Process Communication,IPC)是指在多道程序环境下,进程间进行数据交换和信息传递的一种机制或方法。在现代操作系统中,进程是系统资源分配的基本单位,不同进程之间需要相互合作和通信,才能完成各种任务。进程间通信是实现进程间协作的重要手段。进程间通信在 Linux 系统中至关重要。每个进程在 Linux 环境下都有独立的用户地址空间,一般情况下,进程间的进程空间不能相互访问。但在很多实际应用场景中,进程与进程之间需要进行通信,以共同完成特定的功能需求。
2025-03-30 10:51:42
1114
原创 “深入浅出”系列之C++:栈回溯(Stack Unwinding)
栈回溯是指当异常发生时,C++ 运行时系统从异常抛出的点开始,沿着调用栈逆向遍历,逐个销毁已经构造完成的对象,直到找到匹配的catch块或终止程序。C++ 栈回溯(Stack Unwinding)是异常处理的核心机制,它确保异常发生时正确释放资源,从而防止资源泄漏。理解栈回溯的原理有助于编写更加健壮且异常安全的 C++ 代码。通过 RAII、智能指针和标准库容器等工具,开发者可以更好地管理资源,减少异常带来的风险。
2025-03-30 10:45:12
326
原创 “深入浅出”系列之C++:异常
在 C++ 语言中,异常(Exception)是一种用于处理运行时错误的机制。然而,在一些高性能或嵌入式开发环境中,部分公司明确禁止使用 C++ 异常机制。那么,为什么会出现这种情况呢?本文将试图探讨背后的原因,并分析其优缺点。
2025-03-30 10:43:55
598
原创 Python:图像分类任务如何提升准确率
一个是模型的修改,另一个是各种数据处理和训练的技巧(技巧)图像分类中的各种技巧对于目标检测、图像分割等任务也有很好的作用,因此值得总结。热身线性缩放学习率标签平滑随机图像裁剪和修补知识蒸馏抠图随机擦除余弦学习率衰减混音训练阿达布德自动增强其他经典技巧。
2025-03-30 10:42:29
590
原创 “深入浅出”系列之C++:C++11内存模型
在多线程编程的复杂领域中,C++11 内存模型犹如一座灯塔,为开发者指引着正确的方向。它的重要性不言而喻,是编写高效、正确的多线程 C++ 程序的基石。在 C++11 标准发布之前,C++ 语言对于多线程编程的支持相对薄弱,开发者往往需要借助第三方库或平台特定的 API 来实现多线程功能。这不仅增加了代码的复杂性和维护成本,还难以保证程序在不同平台上的一致性和可移植性。C++11 的出现,为多线程编程带来了重大变革。它引入了一系列新的特性和工具,其中内存模型的改进尤为关键。
2025-03-30 10:37:50
707
原创 Python:CSRNet
然而,如果我们将扩展率提高到2,内核就会像上面的图像所示的那样扩展(按照每个图像下面的标签)。CSRNet是我们在本文中将实现的一种技术,它部署了一个更深层次的CNN,用于捕获高级别的特性和生成高质量的密度图,而不需要扩展网络复杂性。到目前为止,我们已经在第A部分中为图像生成了地面真值,我们将对Part_B图像进行同样的处理。在给定的图像中,每个人的头部都是用高斯核模糊的。所有图像都被裁剪成9个补丁,每个补丁的大小是图像原始大小的1/4。最后,让我们检查一下我们的模型在看不见的数据上的性能。
2025-03-29 22:53:34
755
原创 Python:CNN详解
卷积神经网络(CNN)受到人类视觉皮层的启发,在从结构化网格数据(如图像)中提取特征的空间层次结构方面特别有效。图像自然地被表示为多维阵列-通常是具有对应于高度、宽度和颜色通道的维度的3D张量(例如,红色、绿色和蓝色)。这种结构化表示使图像成为CNN的理想候选者,CNN利用卷积运算来有效地处理输入数据的局部区域。尺寸为4x 4x 3的红绿蓝(RGB)图像的3D张量。与将输入数据视为平面向量的传统神经网络不同,CNN通过应用在图像上滑动的过滤器(或内核)来保留数据中的空间关系。
2025-03-23 10:48:54
808
原创 “深入浅出”系列之QT:实战篇(4)MultimediaPlayer视频播放器
通过这个项目,你将学会如何利用Qt强大的和等核心组件,从零开始构建一个功能完整的视频播放器。我们不仅会实现播放、暂停、进度控制等基础功能,还会深入探讨如何优化播放性能、支持多格式解码,甚至添加字幕、音量调节和全屏播放等进阶特性。无论你是想夯实Qt实战能力,还是为简历增添一个亮眼项目,这个实战教程都将为你提供清晰的思路和可复用的代码框架。
2025-03-22 10:13:59
444
原创 Python:CNN卷积神经网络发展
在CNN出现之前,训练神经网络对图像进行分类的标准方法是将其扁平化为像素列表,并将其通过前馈神经网络输出图像的类别。扁平化图像的问题在于图像中的基本空间信息被丢弃。1989年,Yann LeCun和他的团队推出了卷积神经网络--过去15年来计算机视觉研究的支柱!与前馈网络不同,CNN保留了图像的2D性质,并且能够在空间上处理信息!
2025-03-21 15:45:05
660
原创 Python:ResNet
在上图 SE 模块中,首先会经过 Ftr 操作,该操作是通过一系列的卷积操作,得到了通道数为 C 的特征;式中, s 是由激励操作得到的通道重要程度信息, z 是由挤压操作得到,1W z 代表了全连接操作,其中1W 的维度是 C/ r ×C , r 代表一个缩放参数,作者取值为 16,是为了减少通道数和计算量,1W z 的维度为1×1×C/ r ,再经过 Re LU 函数,再与维度为C×C/ r 的2W 进行相乘,最后经过 sigmoid 函数,得到输出维度为1×1×C 的 s。SE 模块如下图所示。
2025-03-21 15:44:01
824
原创 YOLO目标检测:从传统图像算法到深度学习的发展历程
对计算机而言,能够“看到”的是图像被编码之后的数字,它很难理解高层语义概念,比如图像或者视频帧中出现的目标是人还是物体,更无法定位目标出现在图像中哪个区域。目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别,并在该目标周围绘制边界框,标示出每个目标的位置,如所示。图1 图像分类和目标检测示意图图1(a)是图像分类任务,只需对这张图片进行类别识别。图1(b)是目标检测任务,不仅要识别出这一张图片中的类别为斑马,还要标出图中斑马的位置。
2025-03-20 22:15:52
661
原创 “深入浅出”系列之C++:消息中间件
ActiveMQ是Apache软件基金下的一个开源软件,支持JMS规范,支持 OpenWire、STOMP、AMQP和MQTT多种通信协议,能够进行持久化,支持Java 、C/C++、.NET、Perl、PHP、Python、Ruby等多种客户端语言,有监控,有管理界面,但是社区活跃度相对不高,有用户反馈会有丢失消息的情况。RPC是指远程过程调用,也就是说两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的处理业务,处理完后然后在A服务器继续执行下去,把异步的消息以同步的方式执行。
2025-03-20 21:04:36
717
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人