自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (8)
  • 收藏
  • 关注

原创 Python纯Numpy手撕SGD

纯Numpy实现minibatch SGD线性回归

2023-02-19 00:51:59 555

原创 斐波那契的几种思路,你都会吗

茴字的四种写法,你都会么?

2022-12-30 13:50:23 917 1

原创 AVFI Carla安装踩坑记录

文章目录简介需要环境我的环境安装Docker修改`Dockerfile_x86`建立镜像UnrealEngine&Carla Server部分系统无法添加apt-rUnrealEngine的github repopatchelf系统版本检查read-only filesystem鸣谢简介本篇记录了从2021.09-2021.11.21以来, 在复现论文AVFI Fault Injection for Autonomous Vehicles的过程中遇到的所有问题, 以及对应的解决方案.注意: 本

2021-11-21 23:16:45 999 1

原创 华强买瓜-梵高星空限定版

文章目录引言效果展示准备工作具体步骤业务逻辑日志转换风格读取视频并保存每一帧问题引言你这个模型, 它复现起来难吗?我一水博客的, 能给你看复现不出来的算法?效果展示将梵高的代表作<星空>的风格, 迁移到视频上准备工作华强买瓜原版视频, 不需要音频. 毕竟处理的图像不包含音频信息. 最好也不要包含字幕, 字幕会影响整体的效果. 音频和字幕可以后期用PR剪辑上去风格图像, 随便挑几幅, 最好是印象派的画作, 非常具有风格Python3.6.7Tensorflow2.0

2021-08-23 12:48:24 2230 3

原创 PointGroup点云实例分割

文章目录简介环境项目文件环境准备spconvpointgroup_ops数据集下载脚本下载数据集划分数据集训练测试&可视化可视化简介分类(Classify)和分割(Segment)是视觉中两个典型的任务, 而分割又可以细分为语义分割(Semantic Segmentation)和实例分割(Instance Segmantation). 区别在于, 语义分割将输入中的目标分成NNN个类别, 输出也是NNN个类别. 而实例分割的每个输出只包含一个目标.本篇选取了PointGroup模型, 在点云上

2021-06-06 15:36:10 9034 9

原创 pointconv pytorch modelnet40 点云分类结果可视化

文章目录前言环境服务器环境本地环境准备工作下载项目文件下载数据集训练预测下载训练权重预测部分代码解析可视化输出运行预测查看运行结果前言上一篇博客介绍了在scannet数据集和tensorflow环境下, 运行pointconv项目进行点云分割这一篇介绍在modelnet40_resampled数据集和pytorch环境下, 运行pointconv进行点云分类, 并将结果可视化输出并保存本篇会现在服务器上预训练, 然后下载权重到本地, 进行预测, 并将预测结果可视化输出, 保存环境服务器环境a

2021-02-13 20:10:09 6082 25

原创 pointnet++ pointnet2代码运行 保姆级教程

文章目录前言服务器环境项目文件和数据集准备下载项目文件下载数据集方式一方式二修改项目文件解压数据集修改多显卡训练文件train_multi_gpu.py修改编译文件运行上传到服务器编译运行前言应导师的要求, 去下载了pointconv的代码准备跑一遍, 结果发现需要先按照pointnet++的代码去编译几个自定义的运算tf_op,而且pointconv需要用到的scannet数据高达1.3TB, 直接劝退, 改跑pointnet2(即pointnet++)几个注意点:我选择的是tensorflow

2021-01-08 13:57:26 7197 8

原创 虹软2023自动驾驶算法岗机试

虹软2023届校招自动驾驶算法岗机试题

2022-07-24 22:23:51 677

原创 22届华为AI岗实习面经

文章目录前言机试专业面试主管面试前言刚通过华为22届实习面试, 分享一下面试的经历和准备工作.首先说是22届实习, 招的其实是23届毕业生. 因此需要在毕业前一年的三四月份投递简历, 等待机试. 我投递的是AI工程师, 这个岗位一共是一轮机试+一轮专业面试+一轮主管面试.机试首先是几个注意点:华为的机试模式和leetcode不同, 是牛客那种需要自己写IO自己include头文件的. 但是不是说leetcode不能刷, 而是在机试前一星期一定要多刷牛客的算法题, 熟悉一种语言的IO.机试过程

2022-04-26 17:37:56 2583

原创 leetcode 17 电话号码的字母组合

leetcode 17 电话号码的字母组合题干示例示例1示例2思路题干给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例示例1输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例2输入:digits = “”输出:[]思路dfs没跑了#include<map>

2022-02-20 22:57:02 137

原创 Python中的文件操作

文章目录引言平台txt文件yaml文件读取写入csv文件读取写入引言任何编程语言都需要和文件进行交互, 文件可以作为输入, 输出, 日志, 发挥着很重要的作用.作为主流编程语言之一的Python, 借助于多种内置或开源库, 可以读取和处理多种文件. 下面主要介绍其中几类文件的操作.平台Win10Python3.6.7txt文件Python内置的open函数本身已经能处理不少文件类型, 不仅仅是txt, 只要选对mode, 甚至可以处理obj, yaml这类高度结构化的文件. 该函数原型为

2021-08-27 10:11:21 141

原创 三维空间点集的最小外接矩形

文章目录引言说明二维空间内的方案方案选定新坐标轴变换矩阵GGG后续引言前段时间毕设卡在求一系列点的最小外接矩形, 卡了好久在导师的帮助下终于解决了. 来分享下思路说明本篇所有的坐标系都是建立在右手坐标系下的情况. 虽然为了符合常识认知, 我会把这个坐标系做一个旋转, 但本质上它还是一个右手坐标系. 所谓的右手坐标系就是Z=X×Y,Y=Z×X,X=Y×ZZ = X \times Y, Y = Z \times X, X = Y \times ZZ=X×Y,Y=Z×X,X=Y×Z, 其中X,Y,ZX,

2021-08-26 09:52:09 1378

原创 下载RoS2源码时的问题

文章目录引言思路实战全局变量日志读取ros2.yaml遍历`data`并下载对应的`url`日志格式处理问题代码引言最近研究所新配了电脑, 需要在win10上部署ros2.昨天开始照着官网的教程安装, 前期一切顺利, 直到Get The RoS2 Code这一步, 官网给的vcs import src < ros2.repos命令根本下载不了, 单独创建了文件夹, 没有任何实质的文件内被下载. 会报错TimeOut面向百度编程也没有解决这个问题, 打算自己动手解决了.思路打开ros2.r

2021-08-24 16:48:25 1063

原创 K-means Python实现

K-means Python实现import numpy as npimport randomimport matplotlib.pyplot as plt"""1 从n个向量对象任意选择k个向量作为初始聚类中心2 根据在步骤(1)中设置的k个向量(中心对象向量),计算每个对象与这k个中心对象各自的距离3 对于步骤(2)中的计算,任何一个向量与这个k个向量都有一个距离,有的远有的近,把这个向量与距离它最近的中心向量对象归在一个类簇中4 重新计算每个类簇的中心向量位置5 重复(3)(4),

2021-08-18 12:29:36 107

原创 概率分布模型整理

简介最近数学课上到概率与统计的部分…由于以前的数理统计忘得差不多了…整理一下稀碎的片段吧…仅供学习参考全概率公式对于一个概率分布模型XXX, 其所有取值的概率之和恒为1, 这个条件称为全概率公式.连续分布和离散分布的公式分别为:∫−∞+∞f(x)dx=1∑i=1np(xi)=1\large \int_{-\infty}^{+\infty}f(x)dx = 1 \\\large \sum_{i=1}^{n} p(x_i) = 1∫−∞+∞​f(x)dx=1i=1∑n​p(xi​)=1期望E(

2021-06-02 18:40:06 371

原创 三维空间 点线面解析

文章目录简介基元类型及表示本篇思想和原则关系求解向量的夹角向量平行或垂直直线平面直线共面距离点点距离点线距离点面距离线线距离线面距离面面距离两个平面求交线三个平面求交点两条直线求交点平面面积平面方程简介之前写了3篇室内场景重建的博客, 只是简单介绍了一下方法, 并没有对点线面的具体计算做讨论.这篇补个坑, 用作交流学习之用.相关的3篇博客:室内场景重建一 粗略平面拟合室内场景重建二 立方体拟合室内场景重建三 点面分割基元类型及表示本篇将重点讨论, 三维空间内, 如下三个基元(Primi

2021-05-16 16:06:00 1831

原创 室内场景重建三 点面分割

文章目录简介实现思路分割噪点理论思路编程实现分割室内点理论思路编程实现结果简介上篇博客室内场景重建二 立方体拟合中, 介绍了如何在粗略平面估计的基础上, 做精细化的处理, 最终得到了室内场景的6个非常精细的平面估计, 以及这个场景的一些测绘数据.本篇将在上篇的结果的基础上, 将原始的panasonic_0.1_n.ply中的点分成三类:室外的点, 即噪点在室内, 且在平面上的点, 即在6个墙面上的点在室内, 但不在平面上的点, 即室内人和物的点.实现思路分割噪点理论思路已知由6个平面

2021-05-10 14:53:40 493

原创 室内场景重建二 立方体拟合

文章目录简介理论准备向量点平面精细化思路编程实现求立方体粗略表面三个平面求交点表面的方程测绘简介上篇博客粗略平面拟合中, 主要介绍了如何从原始的点云, 得到一个粗略的平面估计.那么这篇将接着上篇的内容, 在上篇的基础上, 对这个粗略的估计做精细化的处理.下图中, 左边为粗略估计, 也就是本篇的输入, 右边为本篇的输出理论准备由于本篇涉及大量的线性代数, 现在这里做一些思路上的介绍, 主要是本项目大量涉及的向量, 点, 平面三个类.借助numpy这个库, 我们可以对矩阵做非常快速而又方便的操作

2021-05-09 23:06:16 323 3

原创 室内场景重建一 粗略平面拟合

文章目录简介项目环境篇幅安排粗略平面拟合下载项目修改源码完成编译运行不知不觉又鸽了几个月…正好手头的工作做的差不多了, 写篇博客水水…简介本文将从室内点云panasonic_0.1_n.ply(下载链接在这)出发, 先来看一下这个点云的大概样子, 如下:图片上可能看不清楚, 这个模型在室内是有办公桌椅子和人物的.本文的工作目标是:将室内场景的上下左右前后(也就是地板天花板和四面墙), 通过算法拟合成规整的平面, 因为目前是用点来表示的通过拟合后的6个平面, 计算出立方体的8个顶点, 将这个

2021-05-09 00:06:16 500 3

原创 leetcode 剑指offer13 机器人运动范围

文章目录题干描述数据规模示例思路各数位之和dfs深搜遍历图完整代码提交结果题干描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?数据规模1

2021-03-09 18:55:42 163

原创 pointconv scannet 点云分割 代码运行

文章目录前言服务器环境项目文件和数据集准备下载项目文件下载数据集修改预处理文件文件运行上传到服务器编译预处理训练首先, pointconv有两个github repository, 分别是pointconv和pointconv_pytorch, 两者的区别不仅仅在于框架不同, 前者是基于scannet v2数据集的点云分割, 后者是基于modelnet40_resampled数据集的点云分类本篇所有内容均针对前者pointconv,即在scanent数据集上做点云分割前言继上一篇的pointnet+

2021-02-11 21:58:10 1135 4

原创 圆周率=4?居然还有方的圆?

文章目录万恶之源曲线周长的定义周长微分ds线性空间空间里的范数曼哈顿范数和曼哈顿空间万恶之源在数学课的群里偶然看到这么一张图看完一遍感觉好有道理啊,逻辑严谨条理清晰, 就是可惜π\Large \piπ它不等于4…那么这张图到底错哪了…曲线周长的定义学过《高等数学》的同学应该知道, 在欧几里得空间内, 周长的定义是沿着曲线l\Large ll的一个曲线积分∫lds\Large\int_{l} ds∫l​ds那么我们根据此来计算一下一个标准圆x2+y2=1\Large x^2 + y^

2020-12-12 00:53:40 753 2

原创 leetcode64 最短路径 动态规划

题目链接题目链接题干给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。数据规模m == grid.lengthn == grid[i].length1 <= m, n <= 2000 <= grid[i][j] &l

2020-12-10 19:39:50 199 1

原创 leetcode63不同路径二

文章目录题目链接题干数据规模题解思路-动态规划代码实现题目链接题目链接题干一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。数据规模m == obstacleGrid.lengthn == obstacleGrid[i].

2020-12-09 22:45:56 103 1

原创 leetcode62不同路径 动态规划和递归解法

文章目录题目题干数据规模题解思路1-动态规划思路2-递归代码实现题目题干题目链接一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?数据规模1 <= m, n <= 100题目数据保证答案小于等于 2 * 109题解思路1-动态规划设map[i][j]表示下标为(i,j)的坐标的路径数, 那么为了到

2020-12-09 22:18:26 693 2

原创 线代矩阵工具

文章目录简述下载链接功能和相应命令注意点functions and its commandsnotices简述写这小程序的初衷是为了方便当时写线代作业…(果然偷懒是第一生产力…)然后也没有太多复杂的功能, 不能对变量进行运算, 只能对常数矩阵做运算… 搞得我现在算那个λ\Large \lambdaλ矩阵的时候又只能手算…现在打算在给这东西做一个更新, 使之能够支持对变量做运算…下载链接下载链接https://download.csdn.net/download/weixin_43848827/13

2020-11-24 10:28:20 351

转载 线性回归

文章目录监督学习线性回归基础模型定义模型训练训练数据损失函数优化模型从零开始实现定义超参数创建训练集批量读取数据定义模型定义损失函数定义优化算法训练模型运行结果完整代码简洁实现定义超参数和训练集读取数据定义模型定义损失函数定义优化算法编译并训练模型完整代码监督学习机器学习分为监督学习(supervied learning)和无监督学习(unsupervised learning), 前者需要人为给定样本的分类标签作为先验, 后者完全根据算法的结果自动进行分类.而监督学习又可以分为分类(classifi

2020-11-23 17:08:46 312 1

原创 Opencv Python开发 第四章 级联和人脸检测

文章目录章节简介往期博客Haar级联的概念获取Haar级联数据使用OpenCV进行人脸检测静态图像中的人脸检测视频中的人脸检测章节总结新的API:章节代码章节简介本章以人脸检测为例, 定义具体可跟踪对象类型的数据文件, 即Haar级联分类器, 通过对比分析相邻图像区域来判断给定图像或子图像与已知对象是都匹配.同时, 本章会将多个Haar级联分类器构成一个层次结构, 即一个分类器能识别整体区域, 而其它分类器可识别更小的区域.至于为什么以老掉牙的人脸检测为例子, 是因为现阶段人脸检测有关的技术太成熟了

2020-07-01 04:03:01 417

原创 为什么后浪不能让我产生共鸣

不觉得后浪是给大部分普通年轻人看的,而是给少部分有资源有能力有技术有平台有期望的未来领军人物看的。我不否认这类人中有富二代,也有出身贫寒的,这里我只从大部分普通人的角度来展开论述。抛开极少数富二代和贫困家庭的极个例不谈,以下是绝大多数普通家庭(全家年收入20万左右)的年轻人的现状,以下所有内容过滤极好和极差两个极端:首先说普通青年自身的特点,20-30岁之间,可能是在读学生,也可能已经工作了(...

2020-05-05 12:44:02 4153 9

原创 Opencv Python开发 第三章 图像检索

文章目录章节简介往期博客特征的定义特征检测算法角点检测什么是角点Harris角点检测基本原理代码实现代码分析FAST角点检测基本原理代码实现代码分析Harris和FAST角点检测的缺点特征提取与描述SIFT特征提取基本原理SIFT特性代码实现代码分析验证尺度和旋转不变性快速Hessian和SURF特征提取Hessian矩阵SURF基本原理代码实现基于ORB的特征检测和匹配ORB基本原理BRIEFB...

2020-04-11 02:17:45 1423

原创 算法笔记 模版之大数字

文章目录简介说明目前的功能原理实现成员方法和成员变量构造函数无参构造有参构造返回一些成员变量输出重载返回字符串五种基本比较小于运算 <大于运算 >等于运算 ==大于等于 >=小于等于 <=四种基本运算大数+大数(必须同号)大数-大数(符号任意)大数*大数(符号任意)大数%大数(必须都为正数)四种基本运算和赋值运算的结合完整代码简介好久没更新算法这个专栏了…水一篇…相信...

2020-04-05 00:27:19 387

原创 OpenCV Python开发 第二章 深度估计与分割

OpenCV Python开发 第二章 深度估计与分割章节简介同专栏博客深度图像深度相关(depth-related)通道自定义模块类面向对象的Cameo使用managers.CaptureManager提取视频流使用managers.WindowManager抽象窗口和键盘cameo.Cameo的强大实现从视差图得到掩模对复制操作执行掩模使用普通摄像头进行深度估计GrabCut前景检测使用...

2020-02-23 15:53:06 1230

原创 OpenCV Python开发 第一章课后 自定义实现API

OpenCV Python开发 第一章课后 自定义实现API二维离散傅里叶变换DFT二维图像卷积Canny边缘检测本篇完整代码本篇我们来自定义实现第一章博客中的几个API:二维离散傅里叶变换DFT二维图像卷积Canny边缘检测什么是DFT, 卷积, 边缘检测我已经在第一章博客中介绍过或者引用链接了, 本片不再重复介绍算法原理, 仅仅用python自定义实现这3个算法, 并与标...

2020-02-19 12:23:05 377

原创 OpenCV Python开发 第一章 图像处理基础

OpenCV Python开发 第一章 图像处理基础不同的色彩空间色彩是人的眼睛对于不同频率的光线的不同感受, 色彩既是客观存在的(不同频率的光)又是主观感知的, 有认识差异. “色彩空间”一词源于西方的“Color Space”, 又称作“色域”, 色彩学中, 人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间...

2020-02-16 14:50:55 915

原创 PythonOpenCV开发 前言

前言这里介绍本专栏博客的目的, 内容, 项目环境, 用到的第三方库, 项目目录树等同专栏博客Python3.6.7+OpenCV3.4.2.16+OpenCV-contrib-Python3.4.2.16环境配置目的本专栏为个人学习之余, 整理的OpenCV-Python的学习笔记, 巩固自身知识的同时也用来和广大CV码农分享交流, 任何疑问, 建议或意见, 欢迎评论私信内容将详细介...

2020-02-14 22:44:02 305 2

原创 PythonOpencv开发 Python3.6.7+Opencv3.4.2.16环境配置

Python3.6.7+Opencv3.4.2.16环境配置环境配置开发环境简介安装过程python3.6.7 & pycharm-professional-2019.3.1opencv-python 3.4.2.16 & opencv-contrib-python3.4.2.16测试环境配置开发环境简介win10 64位专业版python3.6.7pycharm-pr...

2020-02-14 18:28:22 3308

原创 算法笔记四 排队买票

算法笔记四 排队买票题干思路解法一解法二(转载自https://blog.dotcpp.com/a/64305)解法三 递归题干描述有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元硬币,K个小孩带的钱为2元纸币,而售票员没有零钱。问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个小孩,他们的位置互换,也算是一种新的排法。输入输入一行,M,N,K(其中M=N+K...

2020-02-12 15:52:44 1863

原创 算法笔记三 求序列中出现次数大于序列长度一半的元素

算法笔记三 求序列中出现次数大于序列长度一半的元素题干给定一个序列vector A, 返回序列中出现次数大于序列长度一半的元素, 若不存在该元素则返回0解题思路方法1将A排序不影响最终的结果, 故首先应该想到, 经过快排之后, 如果A存在该元素, 中间位置的元素(A[len/2])必定是所求元素, 故问题转换为是否存在该元素. 我们任取元素tmp = A[i], 如果A[i]满足条件...

2020-02-12 14:39:41 239 6

原创 算法笔记二 求逆链表

算法笔记二 求逆链表题干分析非递归方法递归法题干求给定单链表的逆链表给定一个不带头结点的单链表, 返回该单链表的逆链表的头指针, 不得复制链表节点的数据. 单链表结构体定义如下struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }分析首先...

2020-01-19 16:14:46 271

原创 算法笔记一 求序列的最大连续和

算法笔记一 求连续和最大的子序列题干分析暴力法分治法完整代码运行结果题干求求连续和最大的子序列给定一个长度为n的序列A1,A2,...,AnA_{1},A_{2}, ..., A_{n}A1​,A2​,...,An​, 求连续子序列Ai,Ai+1,...,Aj−1,AjA_{i},A_{i+1}, ..., A_{j-1}, A_{j}Ai​,Ai+1​,...,Aj−1​,Aj​, 使得...

2020-01-12 23:38:08 325

panasonic_0.1_n.ply

降采样过后的完整室内点云模型, 包括14539个点, 存在部分室外的噪点

2021-05-08

图像蒙太奇风格转换工具

将图像转换成蒙太奇风格, 需要另外自行准备目标图像和素材

2021-02-12

常量矩阵变换,用于方便计算各矩阵的初等变换

常量矩阵变换,用于方便计算各矩阵的初等变换, 结果以分数形式给出, 但是不能处理含有变量的矩阵 常量矩阵变换,用于方便计算各矩阵的初等变换, 结果以分数形式给出, 但是不能处理含有变量的矩阵

2020-11-24

char3_1.py

个人专栏CV下第三章的全部代码.

2020-04-11

char2_1.py

个人专栏CV,第二章 深度估计与分割的全部代码 详见个人博客 个人专栏CV,第二章 深度估计与分割的全部代码 详见个人博客

2020-02-23

modules.7z

个人专栏CV,第二章自定义的全部modules 详见个人专栏 请解压后放至项目根目录, 并重新命名文件夹为modules

2020-02-23

OpenCV Python开发 第一章课后 自定义实现API

个人专栏CV,自定义实现第一章中的部分API 详见个人专栏https://blog.csdn.net/weixin_43848827/article/details/104342543

2020-02-18

OpenCV Python开发 第一章全部代码

个人专栏CV下, 第一章的全部源码 博客链接: https://blog.csdn.net/weixin_43848827/article/details/104342543

2020-02-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除