<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[foolishpeng的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/foolishpeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; foolishpeng]]></copyright><item><title><![CDATA[刷题模板-背包问题]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/123096392</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/123096392</guid><author>foolishpeng</author><pubDate>Sun, 02 Jun 2024 12:39:43 +0800</pubDate><description><![CDATA[一、0/1背包问题


二维dp数组



#include&lt;iostream&gt;
#include&lt;algorithm&gt;
using namespace std;

const int N = 1010;
// n表示物品数目  m表示总体积大小
int n, m;
int dp[N][N];
int v[N], w[N];

int main(){
    cin &gt;&gt; n &gt;&gt; m;
    for(int i=1; i&lt;=n; i++) cin &]]></description><category></category></item><item><title><![CDATA[刷题模板：单链表+邻接表（数组模拟）+ 图的搜索]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/125447455</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/125447455</guid><author>foolishpeng</author><pubDate>Sat, 25 Jun 2022 16:13:36 +0800</pubDate><description><![CDATA[刷题模板]]></description><category></category></item><item><title><![CDATA[KMP算法模板]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/125434157</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/125434157</guid><author>foolishpeng</author><pubDate>Thu, 23 Jun 2022 20:15:25 +0800</pubDate><description><![CDATA[kmp算法模板]]></description><category></category></item><item><title><![CDATA[2023届滴滴秋储笔试（0611）]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/125242034</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/125242034</guid><author>foolishpeng</author><pubDate>Sun, 12 Jun 2022 09:56:07 +0800</pubDate><description><![CDATA[23届滴滴笔试题]]></description><category></category></item><item><title><![CDATA[刷题模板-区间合并、单调栈、滑动窗口、前缀和]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/124760832</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/124760832</guid><author>foolishpeng</author><pubDate>Fri, 13 May 2022 22:15:19 +0800</pubDate><description><![CDATA[之前网易面试的时候遇到过区间合并的问题，结果不会做，进行把y总的课的区间合并部分看了以下，简单记录以下模板，以便于后面学习使用。

主要的思路就是：

1、先对所有区间的左端点进行排序。

2、然后进行区间合并（只有三种情况）



第一种情况：当前需合并区间 和 当前维护区间没有交集。

第二种情况：当前需合并区间 和 当前维护区间有交集。

第三种情况：当前需合并区间 被 当前维护区间包含。







#include&lt;bits/stdc++.h&gt;
using n...]]></description><category></category></item><item><title><![CDATA[刷题模板-Trie树]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/122863864</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/122863864</guid><author>foolishpeng</author><pubDate>Thu, 10 Feb 2022 16:44:45 +0800</pubDate><description><![CDATA[跟着y总学习了一下Trie树相关内容，当时理解的时候有些问题，将模板记录下来，感觉用数组存储节点有一些绕~：



// Trie树的总节点数
int N = 100000;
/* son用来存储每节点的next地址  N是总节点数  26是每个节点最多的子节点数目  
   下一个节点所代表的字符是  第二维的index
   举例子：
    son[2][1] = 4 表示第二个节点的存在一个为b字符的下一个节点，为b字符的下一个节点地址是4(在son中第一维的位置);
*/ 
int...]]></description><category></category></item><item><title><![CDATA[刷题模板-整数二分]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/122824781</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/122824781</guid><author>foolishpeng</author><pubDate>Tue, 08 Feb 2022 15:50:42 +0800</pubDate><description><![CDATA[看了acwing y神的视频，学习了整数二分的模板，二分经常会出现死循环、越界等情况，所以将模板记录一下：



1、二分查找(找target值第一次出现的位置)

middle =l + ((r - l)&gt;&gt;1); middle是取得下边界。

默认被查找的数组是升序。



int binarySearch1(vector&lt;int&gt;&amp; nums, int l, int r, int target){
    int middle = l + ((r - l)&gt;&..]]></description><category></category></item><item><title><![CDATA[刷题模板-快慢指针找链表中点]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/122816364</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/122816364</guid><author>foolishpeng</author><pubDate>Mon, 07 Feb 2022 23:30:48 +0800</pubDate><description><![CDATA[这本身就是一道leetcode题目，但是我在做其他题的时候遇到了如何求链表中点的问题，于是将该方法当作一个模板记录一下：



1、存在中点时返回中点，如果有两个中间结点，则返回第2个中间结点。

例如：1，2，3，4 存在两个中点: 2 和 3, 则返回3所在节点。



class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        /*
            快慢指针
            偶数: slo...]]></description><category></category></item><item><title><![CDATA[刷题模板-排序(快排、归并)]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/122814309</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/122814309</guid><author>foolishpeng</author><pubDate>Mon, 07 Feb 2022 20:33:23 +0800</pubDate><description><![CDATA[快速排序的C++模板，因为边界条件容易搞混，所以将模板记录并背下来：



void quickSort(vector&lt;int&gt;&amp; nums, int l, int r){
    // 递归的结束条件  记住只有这个地方有一个等于号
    if(l &gt;= r) return;
    int x = nums[l], i = l-1, j = r + 1;
    
    while(l&lt;r){
        do i++; while(nums[i] &lt; x.]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（十）：box_head的loss文件]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119349279</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119349279</guid><author>foolishpeng</author><pubDate>Tue, 03 Aug 2021 16:37:24 +0800</pubDate><description><![CDATA[目录

前言

一、make_roi_box_loss_evaluator()函数

二、FastRCNNLossComputation

前言


上一篇博客已经介绍完box_head的inference文件，我们知道了box_head在inference阶段是如何进行筛选box(Proposals)，最后得到输出的instances结果，本篇博客将介绍在box_head阶段的loss是如何进行计算的，有了前面RPN的loss文件介绍，box_head的loss文件介绍将会简单很多，它涉及到的函数和RPN]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（九）：box_head的inference文件]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119333618</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119333618</guid><author>foolishpeng</author><pubDate>Tue, 03 Aug 2021 11:34:10 +0800</pubDate><description><![CDATA[前言


上一个博客已经介绍了box_head的整个网络结构部分，在对box_head进行inference过程就需要一个后处理类，接下来这篇博客将介绍inference文件中的make_roi_box_post_processor()函数和PostProcessor类。

PostProcessor类:因为输入ROI_heads模块的Proposals数目本身就很多，然后在网络分类过程中，一般会给每个Proposal生成对应类别个box，因此最后生成的box会非常的多，所以需要PostProcessor类]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（八）：build_roi_box_head()函数]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119328051</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119328051</guid><author>foolishpeng</author><pubDate>Mon, 02 Aug 2021 20:35:09 +0800</pubDate><description><![CDATA[前言


本篇将介绍build_roi_box_head()函数，这个函数是在your_project/maskrcnn_benchmark/modeling/roi_heads/box_head/box_head.py文件中，



def build_roi_box_head(cfg, in_channels):
    """
    Constructs a new box head.
    By default, uses ROIBoxHead, but if it turns out not.]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（七）：build_roi_heads()函数]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119321005</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119321005</guid><author>foolishpeng</author><pubDate>Mon, 02 Aug 2021 11:56:14 +0800</pubDate><description><![CDATA[截至上一篇博客，我们已经介绍完RPN的整个流程，RPN的作用是提取Proposals传入ROI_heads部分，然而ROI有哪些heads呢？根据不同的任务，代码分为了box_head，keypoint_head，mask_head。

box_head：进行bounding box的回归以及类别的分类任务。

keypoint_head：进行关键点的检测。（这部分代码我已经从项目中去除掉了）

mask_head：进行mask的分割任务。


一、CombinedROIHeads类


接下来我们将开..]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（六）：RPN的loss文件]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119279271</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119279271</guid><author>foolishpeng</author><pubDate>Sun, 01 Aug 2021 19:32:11 +0800</pubDate><description><![CDATA[前言


上次介绍完了RPN的inference文件，这次接着介绍RPN的loss文件，RPN可以当作一个独立的模块来看待，它作用就是进行物体的检测（是否为需要检测的物体 以及 在什么位置），所以RPN阶段是有一个单独的loss需要计算的。


一、make_rpn_loss_evaluator()


RPN的loss文件在your_project/maskrcnn_benchmark/modeling/rpn/loss.py文件中，我们首先看到make_rpn_loss_evaluator()函数：..]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（五）：RPN的inference文件]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119144981</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119144981</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 23:01:10 +0800</pubDate><description><![CDATA[上次我们介绍到了RPN网络的目的是获取Proposals，但是仅仅通过RPN_Head部分得到只是anchors的二分类结果和anchors的box回归结果，想要得到真正的Proposals，我们还需要通过make_rpn_postprocessor（）函数来对RPN_Head的输出作进一步的操作，而这个进一步操作都是通过your_project/maskrcnn_benchmark/modeling/rpn/inference.py中的RPNPostProcessor类来完成的（make_rpn_pos.]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（四）：build_rpn()函数]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119138952</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119138952</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 23:00:10 +0800</pubDate><description><![CDATA[上面我们介绍了build_bone()函数，了解到了backbone的构造过程，本篇我们开始介绍RPN的构造过程。

build_rpn()函数是在your_project/maskrcnn_benchmark/modeling/rpn/rpn.py文件中。

我们知道RPN过程是提取Proposals的过程，即判断哪一个区域可能含有需要检测的物体（二分类，有或无，并不判断具体是什么类别的物体），以及该物体的boundingbox，具体的内容可以看相关Faster-RCNN论文，本篇论文不做具体阐述，简..]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（三）：build_backbone()函数]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119118044</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119118044</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 22:59:30 +0800</pubDate><description><![CDATA[通过之前的介绍，我们知道build_backbone()函数的作用就是生成一个backbone（backbone的作用就是提取图像特征）。其实本身build_backbone（）函数当中没有多少好讲的，但里面用到了一个registry的类，其他的好多函数中都有用到这个类，所以registry就放到本篇博客中一起介绍。


一、 registry

build_backbone（）函数是在your_project/maskrcnn_benchmark/modeling/backbone/backbone.p.]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（二）： GeneralizedRCNN类]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119116664</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119116664</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 22:58:39 +0800</pubDate><description><![CDATA[ballalba
]]></description><category></category></item><item><title><![CDATA[maskrcnn-benchmark-master（一）：配置文件]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119112036</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119112036</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 22:56:45 +0800</pubDate><description><![CDATA[一、配置文件


maskrcnn-benckmark-master是提供有默认的配置的，见文件:your_project/maskrcnn_benckmark/config/defaults.py



import os
# 通过yacs包来生成的默认配置
from yacs.config import CfgNode as CN


_C = CN()

_C.MODEL = CN()
# 表示是否只有RPN
_C.MODEL.RPN_ONLY = False
# 表示是否含有Mask分支
_C...]]></description><category></category></item><item><title><![CDATA[maskrcnn-benckmark-master （零）：代码解读]]></title><link>https://blog.youkuaiyun.com/foolishpeng/article/details/119109749</link><guid>https://blog.youkuaiyun.com/foolishpeng/article/details/119109749</guid><author>foolishpeng</author><pubDate>Tue, 27 Jul 2021 22:54:34 +0800</pubDate><description><![CDATA[前言


之前一直都有使用Mask-RCNN模型，从一开始使用的MMDetection2框架中的Mask-RCNN，能够比较正常的运行，但是想要修改成我需要的形式时，发现MMDetection2中有一些地方都已经模块化好了，不方便修改，于是便转战到现在的maskrcnn-benckmark-master这个版本。

前段时间是有把maskrcnn-benckmark-master都阅读一遍，并按照了自己的需求修改了网络结构，但是现在又要重新修改，发现有许多的地方已经已经变得模糊。想到好久都没有更新博客了，于]]></description><category></category></item></channel></rss>