- 博客(135)
- 收藏
- 关注
原创 nodejs的线程模型和libuv库的基本使用
1. nodejs的单线程事件驱动模型2. libuv的eventLoop3. libuv的async_handle的使用及使用过程中的几个坑
2024-03-22 18:00:35 262
原创 使用VisualStudio集成开发nodejs的addon项目
我的工具暂不考虑跨平台的事情。这里是创建一个普通的DLL项目,带有导出项的话,是定义了一些宏定义,直接对外暴露一个导出类的项目,简单起见,用普通的DLL项目即可。第一步省略了,也就是第三步也没有必要了,因为使用VS进行开发和构建的话,就已经是在组织一个sln的VS构建环境了。而在VS的IDE中,是不能创建一个所谓的.node的项目的。这样就可以得到node文件里的输出,也验证了我们之前的结论,.node文件就是一个改了名字的动态库(windows平台下就是DLL文件)
2024-03-22 17:57:48 36
原创 nodejs集成C++代码:手写简单的addon
在这个专栏里,已经提到过web系统中c++的两大应用场景了:assembly和cef框架的应用,这两个可以说都是客户端,也就是B端的应用。C++在web体系里面还有一个比较常见的应用场景,也就是在nodejs上的集成应用,nodejs相当于是一个后台服务器,对应的是web B/S架构的S端。这一篇就来给nodejs集成C++代码开个头。
2024-03-12 20:59:28 131
原创 编写一个简单的cmakelist.txt
上一篇提到了cmake的设计目的与作用,这一篇就来手动编写一个基本的cmakelist.txt,并演示一下如何生成不同平台的构建文件。
2024-03-12 20:56:09 35
原创 C++ static修饰符的深入研究
此外,static成员变量也不能在类的构造函数中初始化,因为它们是被类的所有对象共享的,如果在构造函数中初始化,每次创建类的对象都会导致static成员变量被重新初始化,这与static变量的设计初衷相违背。上问提到了,这里的变量x是不能被初始化的,根据上面的实验,我基本上可以理解了前文提到的:“当一个static成员变量在类内部被初始化,它会在每个包含该头文件的源文件中产生一个定义。我对这块的疑问就是,static这个修饰符到底在C++代码,特别是类中的静态成员变量和函数中起到什么样的作用,
2024-03-07 09:51:41 24
原创 C++代码中的字符集问题:char和wchar_t
在前一篇的文章中,碰到的一个坑就是因为要躲开MFC中的一个CString类导致的各种问题。话说回来,在C++的程序中,各种各样的字符类型处理也是一个比较麻烦的事情,特别是处理的文本里面有中文的时候。在这个C++和CEF的系列中,就花一些篇幅来说说C++程序中的一些字符类型和相关的处理。今天先从最基本的字符集开始。我觉得在字符类型处理过程中,最重要的一点就是要区分两个概念:字符集和字符编码规则,这两个概念有时会混在一起用,但实际上是有区别的。
2024-02-29 22:01:06 164
原创 CEF框架中的一些宏定义(二):CEF_CURRENTLY_ON
在Browser进程中在CEF框架中,很多代码都需要由这个browser的主线程来执行,宏定义CEF_CURRENTLY_ON就是用于这个判断的。
2024-01-26 18:01:06 218
原创 CEF框架:各种各样的Handle(二)
上一篇关于handle的文章已经把cef框架的app和两个进程browser和renderer的handle的基本逻辑说了一下。这一篇继续上一篇,将上一篇图中的另外几个handle都说一下。
2024-01-18 11:00:02 419
原创 CEF多进程框架:CEF初始化进程过程
针对这个CefExecuteProcess函数,可以也稍微扩展一下,在CEF框架中,可以通过在启动命令参数中给定–type=render,或者–type=browser等来创建不同的进程,但是都是通过CefExecuteProcess函数来创建的,具体做了哪些不一样事情?在RunAsHelperProcess函数中有一个判断,如果没有指定process_type的话,那么就代表是Browser的主进程,已经在运行,就不需要再次启动了,这个函数就直接返回了。
2024-01-02 11:38:20 428
原创 CEF线程之multi_threaded_message_loop参数
multi_threaded_message_loop的作用及其相关类的说明
2023-12-28 14:42:20 1043
原创 CEF线程模型与初始化过程详解
上一篇说了CEF框架的消息传递,实际上这个消息传递指的是进程之间的消息传递,也就是IPC的方式在Browser,Render进程之间传递消息。这一篇就接上篇,说说CEF的线程模型,因为在CEF框架的main entry中,主要的三个函数CefInitialize、CefRunMessageLoop和CefShutdown都和这个模型有关。
2023-12-28 10:07:48 941
原创 生成式对抗网络:GAN-Generative Adversarial Nets
具体训练过程中,生成器与判别器交替训练:首先,固定生成器,使用生成器基于隐随机向量z模拟出G(z)作为负样本,并从真实数据中采样得到正样本x,然后将正负样本输入给判别器,进行二分类预测,最后利用其二分类交叉熵损失更新判别器参数;当判别器D无法正确分别出G生成的数据是否是捏造的时候,此时G就已经达到了目的,已经正确的预测出了数据的分布。用生成图像来举个例子,比如说我要生成某种风格的图像,比如动漫风格的图像,这个图像的像素就服从动漫分布(这个分布无法用准确的公式来表达),所以记为。那么根据这个公式中的。
2023-12-25 15:52:21 305
原创 CEF消息传递实战(实测可用,新鲜出炉)
CEF框架中,主要的消息传递方向,从消息产生的源头,我觉得可以分成两种:- 由JS发起,也就是界面有一些按钮之类,通过输入,点击等方式需要传入到C++代码中,也就是浏览器中。- 由C++代码产生的数据(也就是浏览器内部)需要展示在界面上,也就是需要JS代码来展示这些数据。主要说说整个的这个消息循环过程怎么在CEF中用代码实现
2023-12-21 16:42:09 1493
原创 实例分割网络:Mask RCNN
之前的文章已经说过了分类网络,目标检测网络,语义分割网络,这一篇来说说更为复杂一点的实例分割网络——Instance segmentation。实例分割网络也是三大视觉任务之一——分割的一种。与语义分割不同的是,语义分割的任务是将图像中的不同类别给区分出来,之前说的FCN和UNET都是最终预测一个与图像尺寸相同的输出,每个像素标记成不同的类别,从而达到将图像中的不同类别目标区分出来的目的。
2023-12-08 22:04:18 101
原创 SSD-Single Shot Detector
前面提到了两种经典的目标检测算法:one stage的yolo系列,还有就是two stage的RCNN系列。而SSD在2016年提出的时候,就是想综合YOLO的速度和RCNN的准确率。但是好像在YOLO2,也就是YOLO9000的时候就已经超过了SSD。当然SSD后面也有不少的改进版本,这里先说说这个SSD的原始版本。
2023-11-30 14:39:25 77
原创 轻量化网络--MobileNet V1
在网络优化的过程中,为了让准确率越来越高,一般来说,网络结构越来越大,层数越来越多。但是在一些移动设备或者嵌入式设备中,这些网络是无法使用的,因为移动设备根本没有这么高的计算能力。所以,网络结构的一个研究方向就是在不明显降低准确率的情况下,尽量降低网络模型的大小,降低参数量,降低计算量,使得这些模型可以在移动设备上使用。
2023-11-18 22:56:17 272
原创 语义分割网络系列——UNet
在FCN同一年出来的语义分割网络中,有一个重量级的网络:UNet。UNet以其网络结构形状得名。从UNet出来之后,很多图像分割网络都是在上面进行各种魔改。这样说明了UNet的重要性和可扩展性。UNet刚出来的论文是说UNet主要针对于生物,医学的数字显微镜成像的图像。而医学显微图像的特征是相对比较规整,但是对分割的精细度(特别是边界的分割)要求很高,我自己的理解是对其每个部分的语义(也就是分类)的准确率反倒是不那么的高,当然如果能判断的很准是最好。
2023-11-13 10:53:02 1699
原创 【管理 & DevOps】凤凰项目-一个IT运维的传奇故事读后感
DevOps从字面上来看,就是Development & Operations,开发运维。实际上这套方法论远不止包含开发和运维在内,而是试着让一个组织内的从业人员从日常繁杂的工作中脱离出来,站在全局的角度去思考怎样为组织和组织的客户来创造价值,并且是快速创造价值。这需要组织全体人员的参与和配合。一般认为,DevOps包括了技术和文化两个方面,技术可以是从下往上的,但是文化必须是需要从上往下的贯彻。
2023-11-10 13:58:20 1750
原创 语义分割网络系列——FCN,全卷积网络
这个专栏的前面一些文章,已经设计到了图像网络,或者说机器视觉的两个主要任务:分类和检测。现在来说说另外一个任务:分割(Segmentation)。一般来说,分类相对比较简单一点,通过一个基础网络(backbone)就可以完成任务,从LeNet,AlexNet,到ResNet,SENet等,都是通过基础网络完成分类任务。在分类网络的基础上,加上一些detector head,比如RCNN引入的ROI Pooling,RPN等;YOLO1-5引入的回归,anchor等。就可以完成目标检测的任务。
2023-11-09 16:25:38 1698
原创 目标检测网络系列——YOLO V4
YOLO4的设计目标也还是YOLO系列的主要关注点,就是要快。The main goal of this work is designing a fast operating speed of an object detector in production systems and optimization for parallel computations, rather than the low computation volume theoretical indicator (BFLOP)YOLO4
2023-11-06 14:57:29 2108
原创 CSPNet: Cross Stage Partial Network
也就是浅层的特征图可以通过shortcut的方式正向传播到后面的层,同样,在反向传播的同时,后面层出来的梯度会通过shortcut传播到千层。也就是说在反向传播的时候,相当于第k层的梯度会传播到k-1,k-2,一直到最前面的第一层。从我自己对这个结构的理解来说,我认为CSP的作用在于可以将一部分的特征图直接拼接到过去,不需要通过densenet到反向传播来进行更新,这样就可以节省这部分权重参数的更新,从而节省计算量(进入densenet的input channel少了,那么对应卷积层的参数也会减少)。
2023-11-04 19:03:17 1825
原创 FPN-特征金字塔网络
整个过程就是当一个input image进入ResNet后,以ResNet的第2,3,4个stage的最后一个卷积层输出作为基础,构造一个金字塔结构的FPN,然后每个金字塔level直接通过同一个ROI层(7 * 7的网格,每个网格做pooling),然后再通过两个1024的FC层,最后进入fast rcnn的predictor header,进行分类和bounding box的预测。这样的效果和标准的FPN比,AR下降的比较多,论文认为是缺乏多层的语义信息。那FPN接进来之后,就可以支持多尺度的图了。
2023-11-03 18:01:33 1753
原创 CBAM:卷积注意力机制
在继续说yolo4之前,还需要补充一些基本的网络和tricks。前面已经补充了一篇ResNeXt的网络结构,这一篇来说说一种新的注意力机制:卷积块注意力机制:CBAM: Convolutional Block Attention Module。在CBAM论文里提到的是综合了spatial attention(空间注意力)和channel attention(通道注意力)两种注意力机制来提高准确率。
2023-10-26 20:05:17 1864
原创 ResNeXt网络结构解析
按计划是继续来解读yolo4的论文,但是yolo4的论文基本上是一个大杂烩,就是把各种各样的技术做了一个对比和综合,里面涉及到很多基础网络和tricks,有点类似于把这些基础网络和tricks做了一个乐高积木的拼接。其实我个人觉得yolo4的一个重要作用就是把目标检测总结成了若干个阶段,更有结构化一点,这个我们等到了说yolo4的时候再细说。
2023-10-24 11:53:37 1682
原创 目标检测网络系列——YOLOV3
YOLO V3的论文篇幅比较短,感觉比较随意,和一般论文最大的区别就是把对比实验去掉了,在摘要和论文的最后说到YOLO3是一个好的目标检测网络就没有了。但是YOLO3确实是一个非常牛逼的网络,以至于YOLO3的官网上的代码都是从yolo3开始,前面两个都没有了。接下来就讲讲这个yolo3,论文中对改进点都一笔带过,我们这里就稍微的展开一下,把背后的逻辑梳理一下。
2023-10-17 11:31:56 2310
原创 目标检测网络系列——YOLO V2
在这一小节开头就提到了,在YOLO v1中,是直接预测了bounding box的,而在Faster RCNN中,是通过RPN中,再配合精心挑选的(hand-picked)的anchor来预测了bounding box的offset,然后再通过回归进行调整的。然后再根据上面的条件概率,从WordTree的顶端开始往下搜索,每次都选择子节点中概率最大的路径,然后再通过条件概率的乘积往下连乘,直到碰到某个阈值,也就是连乘出来的概率值低于阈值了,那么类别就是这个节点的类别了。也就是说所有的类别之间是互斥的。
2023-10-11 11:27:41 1955
原创 目标检测网络系列——YOLO V1
上图中,一张图像中的一个bounding box区域(这里和RCNN不一样,不是通过某种候选框方法选出来的,后面会说到)经过一个神经网络后,直接讲这个box区域的位置信息和类型信息的预测一起通过回归的方法计算出来(在深度网络里,一般来说,回归方法就是全连接层。在论文的第三章,比较了YOLO,DPM,RCNN系列,Deep MultiBox,OverFeat,MultiGrasp等各种目标检测结构的异同,这里不细说,回头有机会单独写一些DPM和OverFeat,这两个结构在目标检测的文章中出现的次数比较多。
2023-09-30 21:10:14 2204
原创 目标检测网络系列——Faster-RCNN(原理部分)
前面三篇文章已经把RCNN系列的前两个网络说了一下。这篇文章就来说一说RCNN的第三个网络:Faster-RCNN,是RCNN中的一个里程碑式的网络。
2023-09-24 10:29:20 1726
原创 目标检测网络之Fast-RCNN
RCNN的速度确实很慢,一张图像的推理时间要好几秒,SPP在RCNN的基础上做了一个改动,也就是不是所有的候选框都需要通过卷积层,而是整张图像经过卷积层后形成特征图,然后通过SS方法挑选出的候选框通过一种方法直接映射到特征图上,形成候选框的特征图进入后面的SPP和FC层,详情可以参考我这个专栏中的RCNN的文章。论文中提到了,当使用。那么论文中就提到,这样每个训练数据都是来自于不同的图像,所以会导致低效的训练,是因为要保存这么多的图像及其RoI,需要使用很多的存储空间,特别是内存空间。
2023-09-18 10:08:08 2101
原创 SPPNet:金字塔网络
SPP结构是由提出ResNet的何大神在论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》中提出的,主要就是可以解决CNN输入需要固定尺寸的问题,而且在分类和目标检测中都可以得到比较好的效果。
2023-09-12 17:54:26 1776
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人