- 博客(80)
- 资源 (3)
- 收藏
- 关注

原创 CNN:经典Backbone和Block
MobileNets(2017,MobileNets: Efficient Convolutional Neural Networks for Mobile VisionApplications),主要创新点是使用了depthwise separable convolutions。 Input feature map: FxFxM ,Output feature map: GxGxN的问题。经典的方式是使用N个KxKxM的卷积核,即KxKxM的卷积核的每个channel与FxFxM的feature map.
2021-05-22 14:57:19
6253
1

原创 Apollo源码分析:路径规划 (v5.5)
第一章 架构设计与实现第二章 设计模式一、工厂方法模式(基于类模板)Apollo/modules/common/util/factory.h 中定义了另一种使用工厂方法的思路,即使用工厂类模板。将Register和创建具体对象和二为一成类模板(类模板中分别定义了Register和CreateObject),相比于宏定义的方法更加简洁。把基类作为模板参数。路径规划模块(Apollo/modules/planning)主要使用基于类模板的工厂方法模式创建对象。结构如下:...
2020-11-18 10:49:10
4790
1

原创 目标检测Detectron2源码解析
首先讲解trainer类是如何层层抽象,在逐渐继承中添加信息的。tools层脚本train_net.py中为主函数入口,实例化trainer = Trainer(cfg),并调用类的方法进行训练:trainer.train()。class Trainer(DefaultTrainer) 在engine\defaults.py路径下class SimpleTrainer(TrainerBase) 在engine\train_loop.py路径下class TrainerBase 在engi..
2020-10-16 20:56:21
3058

原创 小鹏P7自动泊车技术方案浅析
1. 感知技术:a. 视觉库位识别:左侧环视鱼眼和右侧环视鱼眼进行库位检测,使用的算法是基于角点局部特征的库位检测(遮挡住角点后不识别库位)。基于角点局部特征的库位检测缺点是召回率低,我们上一代也使用过这样的技术,目前感知算法已经升级为基于全局特征的库位检测,从根本原理上可以覆盖更多库位类型,所以查全率比小鹏P7做得更好,但目前给出的角点的稳定性尚需提升,特别是斜库位角点。后环视鱼眼摄像头给出泊车停止线(遮挡住后环视鱼眼摄像头则车在已经相对库位调正、但车头尚未完全泊入库位时停止泊车),我们目前是假设
2020-10-07 17:13:06
4927

原创 CNN:目标检测Head
Classification适用于一张图片中只有一个目标,以三分类为例y = [c1, c2, c3];Classification and localization适用于一张图片只有一个目标,在softmax给出分类结果的同时,同时期望给出目标的位置,需添加bounding box的4个参数(bx, by, w, h), 让网络回归出目标的具体位置,y=[Pr, bx, by, w, h, c1, c2, c3](用类似的回归方法可以)Object Detection支持一张图..
2020-09-14 23:15:49
3288
1

原创 Apollo源码分析:视觉感知 (v5.5)
Apollo开源代码链接:https://github.com/ApolloAuto/apollo本文主要讲解Apollo/modules/perception/camera中的视觉感知模块架构。1. 架构设计引自:https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_5.0.md2. 根据架构设计抽象接口类(类中方法设为虚函数)--camera/lib/interfac...
2020-05-21 14:54:52
4948

原创 命令行配置Github\Gitlab工程
准备工作:全局配置:git config --global user.name "YLY"git config --global user.email "yly@163.com"一、本地文件上传到github/gitlab上:1.1 工作流: a) 生成本地repository; b) 更新配置本地repository; c) 本地reposit.........
2019-08-15 10:07:54
1551
1

原创 C++ Makefile / Cmake 构建工程 & GDB调试
Table of Contents一、基础知识1.1 编译器1.2 编译四步1.3 链接二、MAKE2.1 指定头文件路径2.2 指定链接库2.3 编译源文件三、CMAKE3.1 编译源文件3.2 加入头文件 & 链接库文件a)加入头文件b)引入可执行文件c)链接库文件3.3 生成库文件3.4 其他常用命令四、GDB...
2019-06-05 08:18:41
2593

原创 C++ 面向对象程序设计:数据抽象、继承、多态
面向对象的程序设计(Object Oriented Programming)三个重要思想:数据抽象、继承、多态,这三种思想分别实现了操作权限、扩展性和灵活性(代码统一性)的需求。思想 作用 数据抽象 权限 继承 扩展 多态 灵活 C++中类是数据抽象、继承和多态实现的载体,因此说类是C++最基本的特性。类将相关联的数据(数据成员)和操作(成员函数 / 方...
2019-01-23 20:22:24
716

原创 深度学习Pytorch/Caffe-GPU环境配置
双系统Ubuntu16.04.06LTS+Nvidia显卡驱动 + Cuda9.0 + CuDNN7.4.2 +Opencv 3.4.6 + Pytorch/Caffe-GPU目录一、安装双系统二、安装显卡驱动三、安装Cuda9.0四、安装CuDNN五、Opencv 3.4.6六、安装Pytorch七、安装Caffe-GPU深度学习环境的搭建比较复杂,重要...
2018-07-23 22:50:02
2086
1
原创 Python单元测试:pytest
点击文件打开新的窗口:File->Preferences->Settings 搜索workbench.editor.enablePreview,反向勾选即可。
2022-11-22 11:43:57
950
原创 Cluster & Docker
操作系统解决主要问题之一就是如何在一台机器上调度硬件资源,比如为一个进程分配cpu、gpu、存储资源等,使得进程可以高效、按照预期地完成运行;云和互联网解决的主要问题之一是如何在多台机器之间调度硬件资源or调度信息资源,这就产生了更丰富架构,比如可以从服务器获取信息资源(收到服务器带宽限制下载比较慢),也可以使用P2P方式将文件分成n块( torrent文件存储分成的每块的哈希值,以对下载的数据进行校验;Tracker地址来识别哪些客户端存储着需要的文件),在各个客户端之间并行地下载不同的块(各块之间无下载
2022-07-10 18:04:42
1274
原创 DAS\NAS\SAN存储
DAS(Direct Attached Storage)直接通过usb或Thunderbolt直接连接电脑或服务器以拓展其存储;NAS(Network Attached Storage)是链接到网络的存储设备,可以供不同的client共享数据,其操作系统往往是专门为存储功能裁剪和优化的操作系统,实现Storage + File system,是file-level protocols。GPFS+SAN+共享磁盘方案:其中a. SAN(Storage Area Network)是存储网络,用来从server端
2022-07-10 11:41:35
1265
原创 Linux: tmux工具
tmux是提升terminal使用效率的工具,在一个terminal里操作多个session、window、panel。另外,特别适合控制远程开发机使用,分离会话后关闭terminal,进程可以在远程开发机继续执行。首先了解tmux里不同层级的概念:session:可以理解成进入到系统不同的程序(浏览器、word),在每个session上干一类事;window:可以理解成一个浏览器不同的选项卡,根据需要选择不同的选项卡显示在当前terminal中,其他的隐藏起来;(terminal下面的状态栏可
2022-05-22 11:55:52
1494
原创 CNN:目标检测在自动驾驶应用中的应用
1. 3D-OD1.1 Mono-3D3D-OD在图像上目标检测的基础上,还需要给出相机坐标系或世界坐标系下目标的(x,y,z,h,w,l,theta)。其中,(x,y,z)目标中心点在相机坐标系下的坐标,(l,w,h)是目标的长、宽、高,theta是orientation中的yaw角。其中,(x,y,z)中depth z往往直接回归;x和y一般是预测图像上的像素offset,并通过内参K约束计算而来。由相机内参投影方程得:,即:,,对于相同距离的两点:,,以上
2022-05-07 14:46:38
1728
原创 mmdetection源码解析
配置文件可以分为如下几块:model:说明model结构及其参数backbone\neck\head (loss是在head里配置的)schedule:说明optimizer和learning policydataset:train和test时的transform问题:target在哪里配置?
2022-04-12 21:38:35
4071
原创 双目视觉基础
双目测距的基本原理:视差(Disparity):Disparity(视差)简单解释_一个勤奋爱写笔记的好菇凉的博客-优快云博客_disparity对极几何:对极几何(Epipolar Geometry) - Clarence的笔记 - 博客园对极几何(Epipolar Geometry) - Clarence的笔记 - 博客园...
2022-01-29 14:50:39
4203
原创 CNN:模型量化训练和部署
训练后量化Post-training quantization:混合量化--仅量化权重 全整型量化--权重和激活值都进行量化 半精度float16量化--仅量化权重量化感知训练(Quantization-aware training)是一种伪量化的过程,它是在可识别的某些操作内嵌入伪量化节点,用以统计训练时流经该节点数据的最大最小值,便于在转换格式时量化使用并减少精度损失。伪量化节点的意义在于统计流经数据的最大最小值并参与前向传播提升精确度,但其在转换为量化模型后,其工作原理还是与训练..
2021-11-04 19:48:27
2462
原创 CNN: 深度估计 & 光流 & 残差流
SfMLearner(2017,Unsupervised learning of depth and ego-motion from video)无监督学习的优势是可以使用大量数据。对于3D场景,给定不同的相机pose,可以获得不同的2D图片。如下图所示。那么,换一个思路,使用一个Depth network从单视野预测深度 + Pose network预测相邻帧图像的观察相机发生的相对旋转和平移(R,t),就可以从Reconstructed的3D Scene投影得到观察相机变换后的相邻帧的图像。.
2021-10-06 10:44:43
3328
原创 核心代码模式 v.s. ACM模式
核心代码模式:类名和待实现的方法名及相应格式的输入形参已经写好,用户仅需要实现该方法并返回结果。Leetcode都是这种模式。这是因为Leetcode上已经写好了从标准输入转换为待实现方法中的形参格式的函数,以及待实现的方法return回的结果进行标准输出的函数。例如,反转列表题目为例:给你单链表的头节点head,请你反转链表,并返回反转后的链表。输入示例:head = [1,2,3,4,5]输出:[5,4,3,2,1]# Definition for singly-l..
2021-07-11 17:18:10
4927
1
原创 Pytorch基本操作
tensor是pytorch使用的基本数据结构,可以在GPU上、也可以在CPU上运行。(numpy的ndarray只能在cpu上运行)创建或将数据转化为tensor:torch.tensor(data,dtype,device) #创建tensor, data可以是python list或者np.array, dtype可以是torch.float32, torch.float64,torch.int8等)torch.as_tensor(data, dtype,device) #把data转化
2021-07-05 14:36:30
950
原创 编程常见bug
1. vector, push_back does not name a type函数外只能放变量(类)的定义和声明,push_back is a statement, must put into a function.2.内置类型在函数内声明可能不为03. opencv向vector中push_back要在图像上使用.clone()方法4. vector ...
2021-07-05 10:09:31
1044
原创 VSCode常用操作
ctrl + shift + p ,搜索settings, 选择 Preferences: open settings(UI)去掉 Workbench>Editor: Enable Preview的勾选。
2021-05-01 09:20:35
7407
1
原创 升级Pytorch版本
在装机配置Pytorch环境的教程中(https://blog.youkuaiyun.com/Cxiazaiyu/article/details/81155048),我们使用了Cuda9.0 + CuDNN7.4.2。然后,随着Pytorch的升级,需要匹配更高版本的Cuda。一、升级CudaCuda9.0升级到CUDA10.1 ,官网安装说明:https://docs.nvidia.com/cuda/archive/10.1/cuda-installation-guide-linux/index.html
2021-04-11 23:09:49
10055
1
原创 ROS安装 与 Opencv冲突
ROS安装官网手册:http://wiki.ros.org/kinetic/Installation/Ubuntu根据自己需求安装,一般安装ros-kinetic-desktop版本即可,后面需要的什么包可以再单独安装。sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-es...
2021-04-02 17:07:21
2496
原创 IPC
共享内存: https://blog.youkuaiyun.com/ababab12345/article/details/102931841socket : https://blog.youkuaiyun.com/pashanhu6402/article/details/96428887
2021-01-12 12:01:35
889
原创 C++ 多线程
一、多线程基本操作std::thread, join, detach二、锁:防止多线程竞争std::mutex: 如果线程判断mutex已经为lock状态,则无法执行后续代码;std::vector<cv::Mat> buf;thread1(){ std::mutex mutex_; mutex_.lock(); buf.push_back(img); mutex_unlock();};std::lock_guard对std::mutex
2021-01-06 15:52:48
3503
1
原创 C++ 内存管理
计算机内存分为静态内存、栈内存、对内存。内存类型 对象 生存周期 静态内存 全局对象定义在函数之外的变量; 在程序启动时创建,在程序结束时销毁; 局部static对象局部static对象、类的static数据成员 在第一次使用前分配,在程序结束时销毁 栈内存 局部自动对象函数内的非static对象 进入其定义所在的程序块时被创建,离开块时销毁 自由空间\ 堆 动态对象动态分配的对象,自由空间分配的...
2020-11-08 20:24:54
907
原创 C++ 回调函数
定义:将(回调)函数指针、或函数对象、或匿名函数传入(中间)函数,在(中间)函数内部需要的位置再调用(回调)函数。回调函数的名字比较唬人,并不是我调用你,你再回来调用我的意思,不要误解成来回调用的意思。而是回头(待会)再调用的意思。callback function来源于电话用语,I will call you back later.应用:库需要封装起来,但需要与应用层交互,根据应用层某些函数实现不同,在库中实现不同的功能。即中间函数https://thispointer.com/d..
2020-10-20 22:56:00
756
原创 C++ 通过函数修改指针地址(指针的指针作为参数传递给函数)
需求:通过函数修改指针pointtodefine,使其指向自定义的类MyClass。方法:需要将指向该指针的指针作为参数传递给函数,再在函数中修改(即指针的指针作为参数传递给函数)//函数定义void user(void ** ppanonymity){ MyClass* target=new MyClass(); *ppanonymity=target;}int main(){ //调用方法 void* pointtodefine=null; us
2020-10-17 20:03:19
5145
原创 语法:Python与C++对比
Python C++ import cmath 导入模块 #include<cmath> 引入头文件 容器(container) 容器(container) 序列(sequence ,包括列表、字符串和元组) 顺序容器(sequential container,包括vector, deque, list, forward_list, array, string) 映射(如字典)...
2020-10-06 19:21:08
11201
2
原创 C++ 在类中包含另一个类
除了继承关系外,另一种常用的关系是包含关系,一个类中包含了另一个类实例化的对象作为数据成员。class Subtarget{ Subtarget(int Parameter1, int Parameter2){};} //定义一个类Subtarget,在其他类中可以像使用内置类型一样将该类的对象作为成员对象 class Target{ std::shared_ptr<Subtarget> subtarget_=nullptr; //方法一 (优选)
2020-08-05 09:01:27
11741
原创 自动驾驶视觉感知工程师技能树
一、编程语言基础:C++ & Python编程不需要参加课程,直接“读书-》刷题-》看别人的程序”,如此反复迭代。书不需要多,只需要精,一般不会有人有耐性从头读到尾的,也没有必要从头读到尾,读累了、觉得枯燥了就取刷题。读语法书《C++ Primer》,《Python基础教程Beginning Python From Novice to Professional》 leetcode上刷题实战https://leetcode-cn.com/problemset/all/ 看git..
2020-07-05 09:22:31
1234
原创 Ubuntu:gcc/g++ 降版本
g例如,我系统安装的是gcc/g++ 5.4,实际安装程序为gcc-5/g++-5, 软连接将gcc/g++分别链接到gcc/g++。所以实际使用gcc/g++编译时会链接到gcc-5/g++-5.gcc/g++降级和升级只需要安装新版本,然后将gcc/g++分别链接到新版本的程序。1. 安装指定版本gcc/g++sudo apt-get install -y gcc-4.8sudo apt-get install -y g++-4.8Reading package list
2020-06-13 23:03:16
7358
原创 C++ 图像处理常用库
滤波Filter(low-pass, high-pass and band-pass FIR filter):https://cardinalpeak.com/blog/a-c-class-to-implement-low-pass-high-pass-and-band-pass-filters/绘制线图Plotmatplotlib-cpp works by wrapping the...
2020-03-04 21:00:19
4334
原创 C++ 可调用对象
回调函数, 名字容易让人误解,英文callback function,callback可以理解成”应召“, respond to a call。通过函数指针的形式被调用的函数。
2020-03-04 20:58:34
661
原创 C++ 数据类型与变量
1Byte 字节 = 8 bit 位1 KB =1024 Bfloat : 4 Bytesdouble: 8 Bytesint8_t 1 Byteint16_t 2 Byteint64_t 8 Byte
2020-02-11 10:25:01
370
原创 Linux: vi/vim使用
一、概述vim是vi的升级工具,兼容vi的命令。vi适用于文本编辑,vim更适用于coding,包括代码颜色高亮。二、安装:sudo apt-get install vimReading package lists... DoneBuilding dependency tree Reading state information... DoneThe fol...
2020-01-30 22:30:36
1083
原创 Linux实用工具/软件
一、录屏Kazam参考:https://www.jianshu.com/p/e1f6177dba3a二、播放器VLC推荐理由:跨平台播放器,支持H264等高清算法压缩格式(h264压缩比是200:1,一般的第三方工具不支持)安装:sudo apt-get install vlcThe following additional packages will ...
2020-01-12 09:29:11
885
caffe加速:合并BatchNorm层和Scale层到Convolution层
2018-09-10
使用trainId图片评估cityscapes数据集IoU
2018-08-31
caffe成功编译的makefile.config文件
2018-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人