LeetCode
202411 543 124
202411 543 124
based on new-yolov1-pytorch project 2.4 IoU Loss IoU Loss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 IoULoss replace origin txtytwth loss 0.558 log_myYOLOWithFPNMultiPredWithIoULoss_iouweight10_yolo_160 添加中心点距离最近的target assign机制,避免按label顺序匹配gt object对应的特征点,IoULoss replace origin txtytwth loss 0.571 log_myYOLOWithFPNMultiPredWithIoULoss_iouweight10_targetassian_by_min_dist_yolo_160 GIoULoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 GIoULoss replace origin txtytwth loss 0.6674 log_myYOLOWithFPNMultiPredWithGIoULoss_SGD_iouweight1_tvgiouloss_sum_target_assign_by_min_dist_yolo_130 DIoULoss CIoULoss SIoULoss EIoULoss Luxury IoU Loss: condition mAP txtytwth_iou_weightsum_loss = txtytwth_loss + giou_loss * 1
paper 本文主要介绍了一种提高单阶段物体检测器定位精度的方法——基于IoU的单阶段物体检测器。该方法通过预测每个检测框的IoU值,将预测的IoU值乘以分类得分来计算最终的检测置信度。此置信度与定位精度更相关,可以解决分类得分和定位精度之间的低相关性问题,从而大大提高模型的定位精度。 在论文中,IoU-aware单阶段目标检测器的操作步骤如下: 模型架构设计: 该模型主要基于RetinaNet进行修改,保留了相同的骨干网络和特征金字塔网络(FPN)。 在回归分支的最后一层添加了一个与回归头平行的IoU预测头,用于预测每个检测框的IoU。 IoU预测头由一个3*3的卷积层和一个sigmoid激活层组成,以确保预测的IoU值在[0, 1]范围内。 训练过程: 使用焦点损失(focal loss)作为分类损失,平滑L1损失作为回归损失。 使用二元交叉熵损失(BCE)作为IoU预测损失,仅对正样本计算损失。 IoU预测头与分类头和回归头联合训练。 在训练过程中,计算IoU预测损失相对于目标IoU的梯度,这有助于将梯度反向传播到回归头,从而指导回归头预测更准确的边界框。 推理过程: 在推理时,通过将分类分数与预测的IoU相乘来计算每个检测框的最终检测置信度。 参数α用于控制分类分数和预测IoU对最终检测置信度的贡献。 使用计算得到的检测置信度对所有检测框进行排序,并在后续的非极大值抑制(NMS)和AP计算中使用。 通过这种方式,分类分数和定位精度之间的不匹配问题得到缓解,从而显著提高了模型的定位精度。 总结来说,IoU-aware单阶段目标检测器通过在模型中引入IoU预测头,并在训练和推理过程中结合分类分数和预测的IoU来计算最终的检测置信度,从而提高了模型的定位精度。 IoU预测头的gt(ground truth)是目标IoU(ÎoU i),它是通过计算回归的正样本框(b i)与对应的ground truth框之间的IoU来得到的。具体来说,目标IoU是预测框与ground truth框之间的交并比(IoU),用于在训练过程中作为IoU预测头的监督信号。 这个gt(目标IoU)是一直在变化的。在每个iteration中,网络会根据当前的预测值生成预测框,然后计算这些预测框与ground truth框之间的IoU,这个IoU值会被用作IoU预测头的gt(目标IoU)。具体来说,目标IoU是通过计算回归的正样本框(b i)与对应的ground truth框之间的IoU来得到的,这个值会在训练过程中作为IoU预测头的监督信号,帮助网络学习如何更准确地预测IoU。
Anchor-free VS Anchor-based 特征 Anchor-based Anchor-free 核心思想 使用预定义的锚框,回归目标的类别和边界框 无需锚框,直接回归目标位置、尺寸或关键点 目标分配 通过 IoU 匹配和锚框选择正负样本 通过中心点、角点或其他关键点进行目标分配 计算复杂度 高,尤其是多尺度、多锚框的情况下 相对较低,避免了锚框生成和匹配过程 训练难度 锚框匹配过程可能导致正负样本不平衡 训练过程更简洁,但可能对目标密集或重叠时有挑战 精度 通常较高,尤其是在多尺度和大物体检测中 通常较好,但在一些任务中(1.密集重叠;2.超大超小目标;)精度略低 适应性 需要手动设计锚框,通过统计学方法(如kemeans等)设计锚框尺寸,适应性较差 更强的适应性,尤其在目标形状、大小多样的任务中 实时性 较低,计算量较大 更高,适合实时检测任务 anchor-free + IOULoss实验中的问题 在anchor-free的YOLOV1模型中,进行IOULoss相关的实验时,发现IoULoss与xywhLoss相比,精度差非常大,IoUloss的改进形式GIoU,DIoU,CIoU几乎完全无法收敛,经过调试发现,在生成FPN对应的的GT targets时,有以下问题: 1.不同尺度的featuremap的GT targets,在hw维度squeeze成一维向量后,顺序会发生变化,在采样率较低的尺度上较为明显; 2.不同尺度中,被分配了对应特征点的gt targets数量不同,导致在有些尺度上,有些目标没有被预测,在采样率较大的尺度上较为明显; 在通常的认知中, 3.anchor-free的模型在重叠密集、特大特小尺寸的目标检测上精度会明显低于有优秀anchor设计的anchor-based模型 这三个问题的原因是什么? 1.不同尺度的featuremap的GT targets,在hw维度squeeze成一维向量后,顺序为何会发生变化 一图看懂 1 2 3 4 0 0 2 0 1 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2+3....
based on new-yolov1-pytorch project 2.1 FocalLoss: PaperMode blog MultiHeadFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadFPNFocalloss alpha=0.75 0.6742 eval_log/ Loss/MultiHeadFPNFocalloss alpha=0.5 0.6964 eval_log/log_myYOLOWithFPNMultiPredFocalLoss_yolo_143_new Loss/MultiHeadFPNFocalloss alpha=0.25 0.7121 eval_log/log_myYOLOWithFPNMultiPredFocalLoss_alpha0.25_yolo_154 BiFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadBiFPNFocalLoss alpha=0.5 0.6975 eval_log/log_myYOLOWithBiFPNMultiPredFocalLoss_yolo_152 Loss/MultiHeadBiFPNFocalLoss alpha=0.25 0.7201 eval_log/log_myYOLOWithBiFPNMultiPredFocalLoss_alpha0.25_yolo_141 AugFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadAugFPNFocalLoss alpha=0.5 0.6922 eval_log/log_myYOLOWithAugFPNMultiPredFocalLoss_yolo_143 Loss/MultiHeadAugFPNFocalLoss alpha=0.25 0.7128 eval_log/log_myYOLOWithAugFPNMultiPredFocalLoss_alpha0.25_yolo_154 2.2 PolyFocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadFPNPolyLossFL poly_scale=1 poly_pow=1 0.7182 Loss/MultiHeadFPNPolyLossFL poly_scale=1 poly_pow=2 0....
目录: BCE与CE公式的差别 Entropy Cross Entropy 二分类交叉熵损失 Binary Cross Entropy 如果将此思路扩展到多分类 公式解释 多分类交叉熵损失 Multi-classes Cross Entropy 标准的多分类交叉熵损失 注意事项 总结 Focal Loss理解 代码实现两种CE+FocalLoss 设计实验 BCE与CE公式的差别 Entropy 一个分布中的信息熵: $$ H(p) = - \sum_{i} p_i \log(p_i) $$ Cross Entropy 两个分布的交叉熵: $$ \text{Cross-Entropy} = - \sum_{i} p_i \log(q_i) $$ 二分类交叉熵损失 Binary Cross Entropy 在二分类问题中,交叉熵损失函数同时考虑了正类和负类的预测损失。公式如下: $$ \text{Binary Cross-Entropy Loss}(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] $$ 其中,$(1 - y) \log(1 - \hat{y})$ 是对负类(错误分类)的惩罚。...
Code Project: yolov3-pytorch BaseLine:原代码中的初始模型 Target Assigner 1. IoU Aware OD https://readpaper.com/pdf-annotate/note?pdfId=4545076807438327809¬eId=2569501418004823040 解决问题: iou 作为重要的检测指标没有直接引导模型训练; nms操作时只考虑cls score或者conf score的问题,加入iou预测分支,与cls/conf score相乘作为联合分数作nms排序; 做法: 除了常规的cls loss和location loss之外,引入了一个iou prediction分支: 训练过程中该分支的gt是每次对模型输出进行解码得到prediction的bbox,跟真实的gt进行计算得到iou,作为iou prediction的gt; 将iou prediction输出的iou值与cls score相乘,作为nms排序时使用的分数。 2. PAA:用于anchor based模型 Probabilistic Anchor Assignment with IoU Prediction for Object Detection 沿用了[IoU Aware OD]中的IoU prediction分支,将cls score和iou prediction分支的输出相乘作为最终的score,进行GMM概率分布估计。 PAA(Probabilistic Anchor Assignment,概率锚框分配)是用于基于锚框(Anchor-based)物体检测方法中的一种优化技术,旨在提高锚框分配的准确性和效率。基于锚框的方法,如 Faster R-CNN、YOLO 和 SSD,依赖于预定义的锚框来预测目标的边界框(bounding box)。然而,传统的锚框分配策略(例如,最大重叠(IoU)分配或是固定的锚框匹配规则)可能存在一些问题,如误匹配或过度依赖于单一的评分标准。 PAA的背景与问题 在基于锚框的物体检测中,常见的做法是通过计算预测锚框与真实目标框之间的**交并比(IoU, Intersection over Union)**来进行匹配。对于每个锚框,会选择与之重叠度最高的真实框进行分配,这种策略称为硬分配(hard assignment)。 然而,这种方法有以下几个问题: 过度依赖IoU阈值:使用硬IoU阈值进行锚框分配,可能会导致误匹配或错过一些具有较低IoU但仍然能正确预测的目标。 锚框的多样性不足:一个固定的锚框策略可能无法涵盖目标物体在不同尺度、形状等方面的多样性。 负样本问题:传统方法容易将一些与真实目标无关的锚框当作负样本,导致训练时的负样本过多,从而影响学习效率。 PAA的优化思路 PAA(概率锚框分配)优化通过引入概率模型来代替传统的硬分配方式,从而提供更灵活的锚框分配方式。其核心思想是根据预测框与真实框之间的匹配度(如IoU)来概率性地分配锚框,而不是直接将锚框分配为正样本或负样本。 具体来说,PAA的优化策略如下: 基于概率的锚框分配:PAA不再使用固定的阈值来进行锚框的硬分配,而是通过计算每个锚框与目标框的匹配概率来进行软分配。这种方法能够更好地处理那些IoU值较低但仍然能够准确检测到目标的情况。 概率分配机制:对于每个锚框,PAA根据它与每个真实目标框之间的匹配程度(通常是IoU或其他匹配度度量)计算一个匹配概率,并将锚框以概率的方式分配给不同的目标。这种分配方式可以缓解传统硬分配方法中由于误匹配带来的影响。 改进的负样本处理:在传统的锚框分配中,负样本(即没有与任何目标框重叠的锚框)往往会影响模型的训练,特别是当锚框的负样本数量过多时。PAA通过对负样本的概率分配,使得负样本对模型的影响更小,从而提高了训练效率。...
Code Project: new-YOLOv1_PyTorch BaseLine:原代码中的初始模型 改进方式一:FPN 加入FPN模块,在多个尺度的特征图上进行预测; BiFPN实现 AugFPN实现 改进方式二:Loss FocalLoss实现+应用: Focal Loss在分类loss中的应用 1.1 PolyFocalLoss 1.2 VariFocalLoss: IoULoss: IoU及其改进形式 2.1 GIoULoss 改进方式三:Attention 改进方式四:layer、算子结构优化 其他改进方式: EMA DHSA IoU Aware FCOS?ATSS?CenterNet Multi Head FPN VS BaseLine Table Based on new-YOLOv1_PyTorch 0.Baseline Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline 1.FPNs 1.1 Origin FPN Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 1.2 BiFPN Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 FPN/MultiHeadBiFPN upsample nearest 0....
YOLOv2 对于 YOLOv1 的改进主要包括以下几个方面: Batch Normalization(批归一化):在每个卷积层后添加了批归一化,提高了模型的收敛速度,减少了对其他正则化方法的依赖,提升了模型的泛化能力,使得 mAP 提升了约 2% 。 High Resolution Classifier(高分辨率分类器):在 ImageNet 数据集上使用更高分辨率(448x448)的图片进行预训练,使得模型在检测数据集上微调之前已经适应了高分辨率输入,提升了 mAP 约 4% 。 Convolutional With Anchor Boxes(带 Anchor Boxes 的卷积):借鉴了 Faster R-CNN 的思想,引入了 Anchor Boxes,使用卷积层预测边界框,提高了目标的定位准确率 。 Dimension Clusters(维度聚类):通过 K-means 聚类自动确定 Anchor Boxes 的尺寸,使得模型更容易学习预测好的检测结果 。 Direct location prediction(直接位置预测):改进了坐标的预测方式,使得模型在预测时更加直接和准确 。 Fine-Grained Features(细粒度特征):引入了 passthrough 层来利用更精细的特征图,有助于检测小物体,提升了模型性能约 1% 。 Multi-Scale Training(多尺度训练):在训练过程中,每隔一定的迭代次数后改变模型的输入图片大小,增强了模型对不同尺寸图片的鲁棒性,提升了 mAP 。 这些改进使得 YOLOv2 在保持原有速度优势的同时,显著提高了检测精度。
data balance/hardcase mining 1.Group Sampling CBGS,GS 2.focal loss 3.OHEM
1. c++ vscode debug 1) The "preLaunchTask" tag in launch.json should be the same as the "label" tag in tasks.json. 2) The "g++ -g" tag means debug mode, which will enable the breakpoints in the cpp file/program. 1.1 launch.json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "C++ Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/test", "stopAtEntry": false, //"customLaunchSetupCommands": [ // { "text": "target-run", "description": "run target", "ignoreFailures": false } //], //"launchCompleteCommand": "exec-run", "linux": { "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb" }, //"osx": { // "MIMode": "lldb" //}, //"windows": { // "MIMode": "gdb", // "miDebuggerPath": "C:\\MinGw\\bin\\gdb....
the ownership and write/read permission of files on a external disk/portable hard driver changed when reboot a computer. sudo mount -o uid=lvsolo,gid=lvsolo /dev/sdd1 /media/lvsolo/CA89-5817/
1.How to check if the point is in a rotated bbox? 1.1 get the vertices of the rotated bbox * dims = bbox[3:6] locs = bbox[0:3] rots = bbox[6] kitti_rots = -rots - np.pi / 2 #class_name = l.split(' ')[0] #dims = np.array(l.split(' ')[8:11], dtype=np.float64) #locs = np.array(l.split(' ')[11:14], dtype=np.float64) #rots = np.array(l.split(' ')[14:15], dtype=np.float64) #dims = dims[[2, 0, 1]] ## transfer the rotation angle to kitti format ##kitti_rots = -rots[0] - np....
1. using frp to expose local port referring to : frp to expose local port 2. using hugo + nginx to build blog how to install and use hugo theme PaperMod can be found in my later blog essay: tip for hugo themes **but the difference is when we bind a website to a blog, we in fact direct the website DNS to a static web-directory instead of start a server using hugo server ** so we should generate the static website content by running...
1. CenterPoint & History paper:CenterPoint: Center-based 3D Object Detection and Tracking
1. SECOND & History paper:SECOND: Sparsely Embedded Convolutional Detection graph TB VoxelNet --> SECOND --> PointPillar Related paper: VoxelNet: stacked VFE(voxel feature encoding module) + 3D Conv RPN This paper: 3D Conv --> Sparse Conv --> improved sparse conv angle loss regression approach We apply sparse convolution in LiDAR-based object detection, thereby greatly increasing the speeds of training and inference. We propose an improved method of sparse convolution that allows it to run faster....
1. VoxelNet & History paper:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection Related works: Several methods project point clouds into a perspective view and apply image-based feature extraction techniques.Other approaches rasterize point clouds into a 3D voxel grid and encode each voxel with handcrafted feature PointNet:an end-to-end deep neural network that learns point-wise features directly from point clouds,moving from hand-crafted features to learned features. RPN: Region Proposal Network This Paper: Structure: VFE layer: Voxel Feature Encoding layer enables inter-point interaction within a voxel; Pipeline: Divides point clouds into equally spaced 3D voxels and encodes each voxel with stacked VFE layers; 3D Conv RPN Advantages:This efficient algorithm benefits both from the sparse point structure and efficient parallel processing on the voxel grid....
1. Point Pillar & History paper:PointPillars: Fast Encoders for Object Detection from Point Clouds graph TB PointNet --> Second --> PointPillar PointNet --> VoxelNet-->CenterPoint 2. pipeline (1) A feature encoder network that converts a point cloud to a sparse pseudoimage; (2) a 2D convolutional backbone to process the pseudo-image into high-level representation; (3) a detection head that detects and regresses 3D boxes. graph TB pts(points cloud) --> A[pts to pseudo-image] A --> B[2D CNN Net Backbone] B -->C[SSD Head] 2....
MMCV 1.reinstall mmcv or mmcv-full after run pip uninstall mmcv mmcv-full will not install mmcv, you should use pip install --no-cache-dir --force-reinstall mmcv-full==1.4.0
pypcd install using codes below instead of pip install pypcd which is not well maintained. pip3 install --upgrade git+https://github.com/klintan/pypcd.git 大小汽车 90m 摩托车 70m 三轮车 75m 自行车、行人 60m
my scripts: !kaggle_down pip install kaggle generate kaggle json on the webui set the proxy for kaggle apikaggle config set -n proxy -v http://127.0.0.1:7890/
不需要root即可在android手机上安装linux,从而部署各种系统、博客等。 更进一步的,能够通过linux调用手机上的摄像头等传感器,使手机丰富的传感器组件得到利用。 手机用andronix+termux+vnc安装ubuntu系统 不使用桌面的话可以不安装vnc 电脑连接手机上的termux,使用质感文件管理器可以管理termux中的文件 https://www.jianshu.com/p/2e6c8152a2ba 手机andronix的ubuntu22中安装anaconda https://zhuanlan.zhihu.com/p/608147907 3.手机中ubuntu安装hugo+papermode theme bash sudo apt install hugo hugo new site hugo_themes --format yaml cd hugo_themes cd themes git clone git@github.com:lvsolo/PaperMod.git 项目中有crontab定时代码,可以让手机中的博客自动更新github上的最新推送,从而做到随处编辑都可几乎实时更新博客页面。 4.如何使用安装好的ubuntu系统,调用摄像头等传感器? TODO
How to auto pull the newest master branch from git? use crontab -e to set the periodic task, in this case , it’s the auto_pull_from_git.sh script. The date format? the date format must be ****--, for example 2023-12-9 should be 2023-12-09. update the hugo version to latest: amd64: wget https://github.com/gohugoio/hugo/releases/download/v0.121.2/hugo_extended_0.121.2_linux-amd64.deb sudo dpkg -i hugo_extended_0.121.2_linux-amd64.deb arm64: wget https://github.com/gohugoio/hugo/releases/download/v0.121.2/hugo_extended_0.121.2_linux-arm64.deb sudo dpkg -i hugo_extended_0.121.2_linux-arm64.deb two ways to create the blog website: 4.1 when using ngrok...
1.split() vs split(’ ‘) ' how are you? '.split() #['how', 'are', 'you?'] ' how are you? '.split(' ') #['', 'how', 'are', '', 'you?', '']
requirements python env yolov5 commit id yolov5 requirements.txt pip train code pytorch 转换为 tensorrt engine run pt run engine TODO requirements python env conda 22.9.0 python==3.7.4 yolov5 commit id yolov5 commit id: 3f02fdee1d8f1a6cf18a24be3438096466367d9f yolov5 requirements.txt # Usage: pip install -r requirements.txt # Base ------------------------------------------------------------------------ gitpython #>=3.1.30 matplotlib==3.2.2 #>=3.3 numpy==1.16.5 #>=1.22.2 opencv-python==4.6.0.66 #>=4.1.1 Pillow # >=10.0.1 psutil # system resources PyYAML>=5.3.1 requests>=2.23.0 scipy>=1.4.1 thop>=0.1.1 # FLOPs computation #torch>=1.8.0 # see https://pytorch....
environment building 安装tensorrt-8.6.1环境: 手动下载tensorrt lib8.6.1后上传至服务器安装(https://pypi.nvidia.com/tensorrt-libs/tensorrt_libs-8.6.1-py2.py3-none-manylinux_2_17_x86_64.whl) 安装pycuda前, sudo apt-get install python3.8-dev libxml2-dev libxslt-dev tips pt2onnx 转换生成的如果是static的onnx,那么就无法生成dynamic的engine了 reference TODO dynamic shape model: https://zhuanlan.zhihu.com/p/299845547 training tips 💡 Add –cache ram or –cache disk to speed up training (requires significant RAM/disk resources). experiments TODO 0.如何将dynamic输入的模型调通?使用不加padding的letterbox得到正确结果 1.ultralytics默认选项设置训练出来的模型,对于resize、letterbox的适应性试验; 2.如果适应很好,可以替换letterbox 3.如果适应不好,需要: 1)使用torch重构letterbox; 2)使用cuda memcp的stride格式(存在么?) 使用cuda memcpy可以从torch tensor中拷贝么?或者直接使用torch tensor的cuda显存? 优化目前的myletterbox 5)训练一个真正的dynamic输入的模型 4.如何训练出可以接受resize输入,不需要补齐黑边的模型
experiment condition: python==3.8.0 torch==2.1.0 ultralytics:77fc5ccf02ac0fdf9e7bb1eeb003e9bf3e719702 tensorrt==8.6.1.post1 dynamic static fp16 dynamic_fp16 static_fp16 fp32 static_fp32 另外训练时候的padding模式决定了模型inference时候的前处理形式,进而导致不同的运行时间,在letterbox函数进行 前处理的时候,以下代码都保证了模型的正确输出,但并不能保证此种调用方式是效率最佳的方式,还需要继续优化。 Dynamic_Fp16 inshape from get_binding_shape(0): (1, 3, -1, 640) outshape from get_binding_shape(1): (0) dynamic inshape: (1, 3, 640, 640) dynamicoutshape: (1, 7, 8400) trt_run.py:71: DeprecationWarning: Use set_input_shape instead. context.set_binding_shape(0, image.shape) trt_run.py:72: DeprecationWarning: Use set_input_shape instead. context.set_binding_shape(1, output.shape) [11/23/2023-23:19:05] [TRT] [E] 3: [executionContext.cpp::setBindingDimensions::1511] Error Code 3: API Usage Error (Parameter check failed at: runtime/api/executionContext.cpp::setBindingDimensions::1511, condition: mEngine.bindingIsInput(bindingIndex) ) set binding time: 0....
experiment condition: python==3.8.0 torch==2.1.0 ultralytics:77fc5ccf02ac0fdf9e7bb1eeb003e9bf3e719702 tensorrt==8.6.1.post1 一. pt转onnx 1.ultralytics工程自带的model.export功能 1.1 dynamic input and output 1.2 static input and output 2.torch自带的export功能 2.1 dynamic input and output 2.2 static input and output 二. onnx转tensorrt-engine 1.torch自带的export功能 三.使用ultralytic中的model.export直接pt转为engine 主要是以yolov5模型为例,记录该模型在不同转换工具下的转换方法、转换后模型调用方式、模型调用效率测试。 想要从pt文件转换为tensorrt的engine类型,有两种大路径,其中又可以分化: pt–>onnx–>engine using torch.export to realize pt–>onnx convertion torch.onnx.export(model, input_tensor, model_name, opset_version=11, input_names=['input'], output_names=['output0','output1','output2','output3'], dynamic_axes=None) using model.export in ultralytics to realize pt–>onnx convertion path = model.export(format="onnx", dynamic=True, simplify=True, half=True) pt–>engine using model.export in ultralytics to directly realize pt–>engine convertion model....
auto-update table of contents Headline Headline Headline Headline Headline To-do Lists Code Math Expressions Image Video Table 中文标题 zhongyinghunhe中英混合 table of contents Code Image Video Headline Headline Headline Headline Headline one two three four five To-do Lists [] Task 1 Task 2 [] Task 3 Code def main(a,b): return a+b Math Expressions $$ f(x) = a *x $$ $$ f(x) = a $$ $$\int_{a}^{b} f(x)\ dx$$ inline formula:\(u \cdot x\) inline formula:\(\varphi = \dfrac{1+\sqrt5}{2}= 1....
1.change the source to domestic https://zhuanlan.zhihu.com/p/161390610
Introduction 介绍 This is a code explaination of the IOU3D calculation in the codes.In fact the codes simplified the calculation of 3D iou by projecting 3D bbox to the ground plane and calculating the IOU of the 2D BEV bbox. 这是代码中IOU3D计算的代码解释。实际上,代码通过将3D bbox投影到地面平面并计算2D BEV bbox的IOU来简化了3D iou的计算。 The whole pipeline & pseudo-code 整体流程伪代码 Without concern for the NMS operation, 3D bboxes in codes can be split into modules below which can also be summarized with the pseudo-codes below....