『Nvidia Jetson AGX Xavier笔记』Xavier(arrch64架构)搭建second点云目标检测环境!

本文主要是介绍『Nvidia Jetson AGX Xavier笔记』Xavier(arrch64架构)搭建second点云目标检测环境!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Xavier(基于arrch64架构)搭建second点云目标检测环境!

文章目录

    • 一. 事先准备工作
      • 1.1. 安装cmake
      • 1.2. 创建second虚拟环境
      • 1.3. 安装一些依赖包
    • 二. 安装pytorch以及spconv
      • 2.1. 安装pytorch以及torchvision
      • 2.2. 安装spconv
      • 2.3. 安装apex
    • 三. second网络验证性能
      • 3.1. 性能测试
      • 3.2. 报错解决
    • 四. 试用Kitti Viewer Web
    • 五. 补充之Jetson查看CPU、内存以及GPU使用情况
      • 5.1. 安装步骤
      • 5.2. 使用方法
    • 六. Xavier性能及运行状态查询
      • 6.1. Xavier的几种工作模式
      • 6.2. 工作模式切换
    • 七. 附录部分
      • 7.1. all.fhd.config解读
      • 7.2. 环境信息
    • 有问题私聊我!
    • 参考文章

  • 首先声明声明一下,在Xavier上编译各种东西实在是太难了,希望对你有所帮助,中间遇到各种坑!
  • 环境信息参考如下(torch和torchvision使用pip安装),在最后附录下面展示!
  • second点云项目github地址:https://github.com/traveller59/second.pytorch
  • 『NVIDIA Jetson Xavier笔记1』Xavier(arrch64架构)刷机Jetpack4.2!
  • 『NVIDIA Jetson Xavier笔记2』Xavier(arrch64架构)安装anaconda!
  • 『NVIDIA Jetson Xavier笔记3』Xavier(arrch64架构)搭建second点云目标检测环境!
  • 『NVIDIA Jetson Xavier笔记4』Xavier(arrch64架构)挂载SD卡
  • 『NVIDIA Jetson Xavier笔记5』Xavier(arrch64架构)安装Tensorflow,Keras以及编译opencv-python!
  • 此外在使用pip的时候我们可以制定pip的源
# 阿里源
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# 豆瓣
pip install -r requirements.txt -i https://pypi.douban.com/simple/
# 清华大学
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

一. 事先准备工作

1.1. 安装cmake

  • 在给Xavier刷完机之后,首先是安装Cmake,要进行源安装,然后运行./boostrad那个,然后sudo make && make install。最后需要将你的cmake路径添加到环境变量中去。
export PATH=$PATH:/your_camke_path/

1.2. 创建second虚拟环境

-这里参考我之前的博客,使用一个miniforge的软件包,个人感觉相比其它方法,这个方法最棒。 博客链接:『NVIDIA Jetson Xavier笔记』Xavier(基于arrch64架构)安装anaconda!

1.3. 安装一些依赖包

  • 激活进入second虚拟环境之后, 这里我们在安装numba包之前要安装一些依赖:
sudo apt-get install llvm-7
  • 查看llvm的路径(执行下面命令后会在终端显示llvm的安装路径):
which llvm-config-7
  • 执行如下命令:
export LLVM_CONFIG=/usr/bin/llvm-config-7
pip install llvmlite==0.29.0
pip  install numba==0.44.1
  • 到此,如果安装没问题的话,在python环境下看能否import numba成功,可以的话说明已经安装成功,接下来在.bashrc下面添加导出路径。
export NUMBAPRO_CUDA_DRIVER=/usr/lib/aarch64-linux-gnu/libcuda.so   # (set your Xavier cuda lib path)
export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so # set your libnvvm path
export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice

二. 安装pytorch以及spconv

2.1. 安装pytorch以及torchvision

  • Xavier安装pytotrch刚开始不太容易,因为没有直接安装的脚本(需要编译,坑特别多),幸好有这个NVIDIA官方提供了.whl文件,链接为:Welcome to the new NVIDIA Developer Forums!,按照里面的安装步骤就可以,然后就可以按抓给你对应的torchvision版本。
  • 如果下载过程,可以直接用我百度云链接(提取码:679e):https://pan.baidu.com/s/1rsmR2yDHPn6kAX4uu73DcA
pip install torch-1.1.0-cp36-cp36m-linux_aarch64.whl
  • 下面是安装torchvision,参考nvidia官方里的issues的答案:
sudo apt-get install libjpeg-dev zlib1g-dev
git clone --branch v0.3.0 https://github.com/pytorch/vision torchvision
cd torchvision
sudo python setup.py install
cd ../ # attempting to load torchvision from build dir will result in import error
  • 不同版本的torch所对应的torchvision:
PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2

2.2. 安装spconv

  • 在这部分花的时间也不少,因为编译不过。这里使用的是Spconv 1.1。
git clone https://github.com/traveller59/spconv  --recursive
  • 记得要检查一下,third-party里面的pybind11 是否下载完整,否则容易出错。编译完成后会在dist文件夹下有 spconv 1.1的whl 文件,然后 pip3 install 安装就可以。这里为了方便我百度云直接提供了编译好的.whl文件,只需要直接pip一下。 百度云链接:提取码:o03n
pip install spconv-1.1-cp36-cp36m-linux_aarch64.whl

2.3. 安装apex

git clone https://github.com/NVIDIA/apex.git
cd apex
python setup.py install --cpp_ext --cuda_ext

三. second网络验证性能

3.1. 性能测试

(second) sl@sl-xavier:~/zhang/second.pytorch/second$ export PYTHONPATH=/home/zhang/second.pytorch/
(second) sl@sl-xavier:~/zhang/second.pytorch/second$ python  ./pytorch/train.py evaluate --config_path=./configs/all.fhd.config --model_dir=./model_dirb --measure_time=True --batch_size=1
......
......
[  41  800 1104]
Restoring parameters from /home/sl/zhang/second.pytorch/second/model_dirb/voxelnet-63550.pt
feature_map_size [1, 100, 138]
remain number of infos: 3769
Generate output labels...
[100.0%][===================>][4.22it/s][16:16>00:00]      
generate label finished(3.84/s). start eval:
==========================================================================================
avg example to torch time: 21.604 ms
avg prep time: 16.747 ms
avg voxel_feature_extractor time = 2.204 ms
avg middle forward time = 166.750 ms
avg rpn forward time = 26.099 ms
avg predict time = 24.597 ms
all_time : 258.001 ms
  • 注意: 程序运行过程中,难免会遇到各种各样的问题,我遇到的问题是opencv-python安装不了,后来考虑到只是简单的测试,就把cv2包注销掉了。

3.2. 报错解决

  File "<__array_function__ internals>", line 6, in linspaceFile "/home/sl/miniforge-pypy3/envs/second/lib/python3.6/site-packages/numpy/core/function_base.py", line 121, in linspace.format(type(num)))
TypeError: object of type <class 'numpy.float64'> cannot be safely interpreted as an integer.
  • 参加github官网issues:To solve it, you can either downgrade your numpy, or modify utils/eval.py, line 704:
for i in range(overlap_ranges.shape[1]):  for j in range(overlap_ranges.shape[2]):a, b, c = overlap_ranges[:, i, j] #extracting the three numbersmin_overlaps[:, i, j] = np.linspace(a, b, int(c)) #casting to integer#min_overlaps[:, i, j] = np.linspace(*overlap_ranges[:, i, j])

四. 试用Kitti Viewer Web

  • 1、运行之前,先安装以下依赖库(可能不全,大家可以在运行程序的时候缺啥自己安装啥就行):
pip install fire -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flask_cors -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 2、输入以下命令启动服务
python ./kittiviewer/backend/main.py main
  • 3、如果出现以下信息说明正常,如有警告提示可以忽略
* Serving Flask app "second" (lazy loading)
* Environment: productionWARNING: This is a development server. Do not use it in a production deployment.Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:16666/ (Press CTRL+C to quit)
  • 4、输入下面命令启动本地服务
cd ./kittiviewer/frontend
python -m http.server
  • 5、出现下面的信息,说明启动正常 ,如有警告提示可以忽略
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
  • 6、打开浏览器输入网址:http://0.0.0.0:8000/;打开界面之后,在右侧参数栏里面输入自己文件所对应的路径,下面是我的路径,其中…/为省略的路径信息,需要根据自己的路径补全。
ittiDataset:KittiDataset
backend:http://127.0.0.1:16666
rootPath:../second.pytorch/second/data/KITTI_DATASET_ROOT
infoPath:../second.pytorch/second/data/KITTI_DATASET_ROOT/kitti_infos_val.pkl
load
DetPath:../second.pytorch/second/model_dir/results/step_99040/result.pkl
loadDet
checkpointPath:/../second.pytorch/second/model_dir/voxelnet-99040.tckpt
configPath:../second.pytorch/second/configs/all.fhd.config
buildNet
inferrnce

五. 补充之Jetson查看CPU、内存以及GPU使用情况

  • 官方新推出jtop工具,专门用来查看jetson的CPU、GPU等信息,使用方法也很简单!

5.1. 安装步骤

sudo -H pip install jetson-stats
  • 如果提示没有安装pip,执行如下命令安装pip。安装命令如下:
sudo apt-get install python-pip

5.2. 使用方法

  • 直接在命令行输入:
sudo jtop

六. Xavier性能及运行状态查询

6.1. Xavier的几种工作模式

  • NVIDIA Jetson Xavier是一个更加丰富的计算环境。除了增加4个CPU核外,Xavier还增加了深度学习加速器(DLA)和视觉加速器(VA)。这些新添加的内容也可以使用nvpmodel进行配置!nvpmodel在7种不同模式下定义了4种不同的power envelope。power envelope有10瓦、15瓦、30瓦,还有——
  • nvpmodel介绍了Jetson AGX Xavier上的七种不同的“模式”:
  • 注意表中几个名词:
GPU TPC – GPU Texture/Processor Cluster
DLA – Deep Learning Accelerator
VA – Vision Accelerator

6.2. 工作模式切换

  • 默认模式是15W (MODE_15W, ID:2),你可以通过这个方式看到:
sudo nvpmodel --query
  • 如果我们想换到表格中的0模式,那么我们可以执行:
sudo nvpmodel -m 0
  • 然后再用查询命令看一下是否已经切换到0模式了:

注意:nvpmodel设置更改后,重启后数值会保持。

七. 附录部分

7.1. all.fhd.config解读

model: {second: {network_class_name: "VoxelNet"                                      ### 网络结构的命名,也是网络结构的类名voxel_generator {# point_cloud_range : [0, -40, -3, 70.4, 40, 1]point_cloud_range : [0, -32.0, -3, 52.8, 32.0, 1]                 ### 相对雷达坐标系,检测的点云范围x(向前为正方向),y(向左为正方向),z范围(向上为正方向)voxel_size : [0.05, 0.05, 0.1]                                    ### 每个体素格在x,y,z三个维度上的最小刻度,单位米,定义了一个体素格的大小max_number_of_points_per_voxel : 5                                ### 一个体素格内最多采样点数,点数的多少会影响预处理和vfe的时间}voxel_feature_extractor: {module_class_name: "SimpleVoxelRadius"                            ### vfe的类名num_filters: [16]                                                 ### 目前没有用到,vfe中各个VFE层(mlp,maxpoling,caoncat)的输出的通道数,列表可以有多个元素,表明用了多层VFE层with_distance: false                                              ### 是否把点的二范数或者说距离雷达坐标系的欧式距离加入到vfe的输入特征中num_input_features: 4                                             ### vfe输出的点的特征维度(一般x,y,z,r)}middle_feature_extractor: {module_class_name: "SpMiddleFHD"                                  ### 中间卷积层的类名# num_filters_down1: [] # protobuf don't support empty list.      ### 简化的稀疏卷积层数比较少,子流几次(控制每个子流的输出通道数),稀疏一次.一般不使用用# num_filters_down2: []                                           ### 类似上面一行:子流几次,稀疏一次.一般不使用用downsample_factor: 8                                              ### 总的3d卷积的所有降采样的比例2*2*2num_input_features: 3                                             ### 中间3d卷积层的输入特征的通道,和vfe层的输出特征通道有关}rpn: {module_class_name: "RPNV2"                                        ### rpn层的类名layer_nums: [5, 5]                                                ### rpn模块中,每个模块的卷积层数,其实每个模块前代码会自动加一个ZeroPad2d层和一个Conv2d层,即实际卷积层数[6,6]layer_strides: [1, 2]                                             ### 两个卷积模块中第一个卷积的对应的步长num_filters: [64, 128]                                            ### 两个卷积模块输出的通道数upsample_strides: [1, 2]                                          ### 两个上采样反卷积的步长num_upsample_filters: [128, 128]                                  ### 两个反卷积的输出通道数use_groupnorm: false                                              ### 是否使用Group_Normalization,不对样本间bn,只在单个样本特征在通道分组Normalizenum_groups: 32                                                    ### 若使用Group_Normalization,每组多少个通道num_input_features: 128                                           ### 这一点与3d卷积输出dense后的通道一致}loss: {                                                             ### 在second_builder中被使用,用于losses = losses_builder.build(model_cfg.loss)classification_loss: {weighted_sigmoid_focal: {                                       ### 加权focal_loss分类使用了focal_loss,FL(p_t) = −αlpha*(1 − p_t)^gamma*log(p_t)alpha: 0.25gamma: 2.0anchorwise_output: true                                       ### 不再使用}}localization_loss: {weighted_smooth_l1: {                                           ### 1/2*(code_weight*abs_diff*sigma)**2 if code_weight*abs_diff<=1/(sigma**2) else (code_weight*abs_diff - 0.5 / (self._sigma**2))sigma: 3.0                                                    ### 参看上句的损失函数code_weight: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]              ### 对于要回归的7个值对应的损失分配的权重,直接与abs_diff相乘}}classification_weight: 1.0                                        ### 用于加权分类损失的权重localization_weight: 2.0                                          ### 用于加权回归损失的权重}num_point_features: 4                                               ### model's num point feature should be independent of dataset,模型输入的# Outputsuse_sigmoid_score: true                                             ### 分类得分以sigmoid处理encode_background_as_zeros: true                                    ### 背景类全编码为0encode_rad_error_by_sin: true                                       ### 是否使用sin函数编码弧度误差的回归sin_error_factor: 1.0                                               ### 计算sin(sin_error_factor * pred_rot -sin_error_factor *target_rot)时用use_direction_classifier: true                                      ### this can help for orientation benchmark使用方向分类direction_loss_weight: 0.2                                          ### enough.方向分类损失的加权系数num_direction_bins: 2                                               ### 两个方向direction_limit_offset: 1# Losspos_class_weight: 1.0                                               ### 正负样本的加权系数neg_class_weight: 1.0                                               ### 正负样本的加权系数loss_norm_type: NormByNumPositives                                  ### 根据正样本的数量对损失进行归一化,即乘以1/NumPositives# Postprocesspost_center_limit_range: [0, -40, -2.2, 70.4, 40, 0.8]              ### 预测结果的中心在此范围之外的会被丢弃,需根据检测范围point_cloud_range进行相应更改nms_class_agnostic: false                                           ### only valid in multi-class nms只有在multi-class nms中用到,是否采用类别无关的方式,若类别无关只根据预测的类别进行nms(8),反之只采用标签和预测类别相同时进行nms(2),后者在nms之前就已经确定了检测类别box_coder: {ground_box3d_coder: {linear_dim: false                                               ### 若为True,对whl回归使用gt和anchor的商后减1作为回归的标签,否则使用商取对数作为回归的目标encode_angle_vector: false                                      ### True是将角度的正弦差和余弦差参与标签编码,否则将角度差加入编码increase aos performance, decrease other performance}}target_assigner: {class_settings: {anchor_generator_range: {sizes: [1.6, 3.9, 1.56]                                       ### wlh对应车类别的anchor的宽长高# anchor_ranges: [0, -40.0, -1.00, 70.4, 40.0, -1.00]         ### carefully set z centeranchor_ranges: [0, -32.0, -1.00, 52.8, 32.0, -1.00]           ### carefully set z center,anchor的范围,注意z轴是不变的,一般根据类别标签的平均值求得,同时x和y的范围要根据检测范围进行调整rotations: [0, 1.57]                                          ### DON'T modify this unless you are very familiar with my code.两个姿态的anchor,水平和垂直各一个}matched_threshold : 0.6                                         ### iou大于该值为正样本unmatched_threshold : 0.45                                      ### iou小于该值为负样本class_name: "Car"                                               ### 类别名use_rotate_nms: true                                            ### 是否使用rotate_nmsuse_multi_class_nms: false                                      ### 是否使用multi-class nmsnms_pre_max_size: 1000                                          ### nms之前,最多保留得分scores降序排列的的top前nms_pre_max_size的bounding boxnms_post_max_size: 100                                          ### nms之后,最多保留nms_post_max_size个bounding boxnms_score_threshold: 0.3                                        ### nms前的筛选nms_iou_threshold: 0.1                                          ### 进行nms时iou大于nms_iou_threshold被剔除region_similarity_calculator: {nearest_iou_similarity: {}}}class_settings: {anchor_generator_range: {sizes: [0.6, 1.76, 1.73]                                      ### wlh# anchor_ranges: [0, -40.0, -1.00, 70.4, 40.0, -1.00]         ### carefully set z centeranchor_ranges: [0, -32.0, -0.6, 52.8, 32.0, -0.6]             ### carefully set z centerrotations: [0, 1.57]                                          ### DON'T modify this unless you are very familiar with my code.}matched_threshold : 0.35unmatched_threshold : 0.2class_name: "Cyclist"use_rotate_nms: trueuse_multi_class_nms: falsenms_pre_max_size: 1000nms_post_max_size: 100nms_score_threshold: 0.3nms_iou_threshold: 0.1region_similarity_calculator: {nearest_iou_similarity: {}}}class_settings: {anchor_generator_range: {sizes: [0.6, 0.8, 1.73] # wlh# anchor_ranges: [0, -40.0, -1.00, 70.4, 40.0, -1.00]         ### carefully set z centeranchor_ranges: [0, -32.0, -0.6, 52.8, 32.0, -0.6]             ### carefully set z centerrotations: [0, 1.57]                                          ### DON'T modify this unless you are very familiar with my code.}matched_threshold : 0.35unmatched_threshold : 0.2class_name: "Pedestrian"use_rotate_nms: trueuse_multi_class_nms: falsenms_pre_max_size: 1000nms_post_max_size: 100nms_score_threshold: 0.3nms_iou_threshold: 0.1region_similarity_calculator: {nearest_iou_similarity: {}}}class_settings: {anchor_generator_range: {sizes: [1.87103749, 5.02808195, 2.20964255]                   ### wlh# anchor_ranges: [0, -40.0, -1.00, 70.4, 40.0, -1.00]         ### carefully set z centeranchor_ranges: [0, -32.0, -1.41, 52.8, 32.0, -1.41]           ### carefully set z centerrotations: [0, 1.57]                                          ### DON'T modify this unless you are very familiar with my code.}matched_threshold : 0.6unmatched_threshold : 0.45class_name: "Van"use_rotate_nms: trueuse_multi_class_nms: falsenms_pre_max_size: 1000nms_post_max_size: 100nms_score_threshold: 0.3nms_iou_threshold: 0.1region_similarity_calculator: {nearest_iou_similarity: {}}}sample_positive_fraction : -1                                     ### 正样本的采样比例,尽量均衡,不够时用负样本填充sample_size : 512                                                 ### 标签采样正负样本总数assign_per_class: true                                            ### assign target individally for each class.recommend for multi-class network,单个类别的也可以用assign_all}}
}########################################################################################################################train_input_reader: {dataset: {dataset_class_name: "KittiDataset"#kitti_info_path: "/media/yy/960evo/datasets/kitti/kitti_infos_train.pkl"       ### 存放训练信息的数据,由creat_data获得#kitti_root_path: "/media/yy/960evo/datasets/kitti"                             ### 存放training和testing的文件夹路径}batch_size: 1                                                                     ### 训练时的batch_sizepreprocess: {num_workers: 3                                                                  ### 线程shuffle_points: true                                                            ### 体素格编码前是否打乱点云max_number_of_voxels: 30000                                                     ### 训练时的最多保留max_number_of_voxels个体素格groundtruth_localization_noise_std: [1.0, 1.0, 0.5]                             ### 中心点的位置随机平移的标准差# groundtruth_rotation_uniform_noise: [-0.3141592654, 0.3141592654]groundtruth_rotation_uniform_noise: [-0.78539816, 0.78539816]                   ### gt随机旋转范围-pi/4, pi/4global_rotation_uniform_noise: [-0.78539816, 0.78539816]                        ### 全局随机旋转范围-pi/4, pi/4global_scaling_uniform_noise: [0.95, 1.05]                                      ### 全局随机缩放范围global_random_rotation_range_per_object: [0, 0]                                 ### pi/4~3pi/4 分别减去np.arctan2(gt_boxes[:, 0], gt_boxes[:, 1])后作为每个gt box随机旋转的范围global_translate_noise_std: [0, 0, 0]                                           ### 全局随机平移的在三个维度上以均值为0,标准差为该参数设定的随机平移anchor_area_threshold: -1                                                       ### very slow if enable when using FHD map (1600x1200x40).#小于0为不使用,高分辨率是会很慢,作者建议永远不要使用remove_points_after_sample: true                                                ### 采样后是否移除gt box外的点云groundtruth_points_drop_percentage: 0.0                                         ### 实际代码中未使用groundtruth_drop_max_keep_points: 15                                            ### 实际代码中未使用remove_unknown_examples: false                                                  ### 是否移除未打标签的数据sample_importance: 1.0                                                          ### 采样重要度,会分配给正负样本的损失权重random_flip_x: false                                                            ### 随机翻转x维前后random_flip_y: true                                                             ### 是否随机翻转y维,左右remove_environment: false                                                       ### 是否移除背景点云,即只保留gt boxes内的点云database_sampler {                                                              ### 指定一帧中某一类别的最大采样标签数量database_info_path: "/home/gyh/workcode/SECOND/second.pytorch_local/kitti_data/kitti_dbinfos_train.pkl"sample_groups {name_to_max_num {key: "Car"value: 11                                                                 ### 一帧中至多采样11个gt boxes}}sample_groups {name_to_max_num {key: "Pedestrian"value: 6}}sample_groups {name_to_max_num {key: "Cyclist"value: 6}}sample_groups {name_to_max_num {key: "Van"value: 4}}database_prep_steps {                                                        ### 每个类别标签的过滤,gt box中若少于一定点数则将该gt box丢弃不参与训练filter_by_min_num_points {min_num_point_pairs {key: "Car"value: 5                                                               ### 少于该点数则将该gt box丢弃不参与训练}min_num_point_pairs {key: "Pedestrian"value: 10}min_num_point_pairs {key: "Cyclist"value: 10}min_num_point_pairs {key: "Van"value: 8}}}database_prep_steps {filter_by_difficulty {removed_difficulties: [-1]                                                ### 若是-1即过滤掉gt中困难的box(比如完全遮挡等等)}}global_random_rotation_range_per_object: [0, 0]                               ### 分别减去np.arctan2(gt_boxes[:, 0], gt_boxes[:, 1])后作为每个gt box随机旋转的范围rate: 1.0                                                                     ### rate*(每个类别的最大采样gtbox数 - 当前帧含有的该类别的gtbox个数)}}}########################################################################################################################
#优化共分为两个阶段,在第一阶段学习率从lr_max/div_factor线性增长到max_lr,momentum线性地从moms[0]降到moms[1];
#第二阶段学习率以余弦形式从lr_max降为0,momentum也同样按余弦形式从moms[1]增长到moms[0]。第一阶段的迭代次数占总迭代次数的比例为pct_starttrain_config: {optimizer: {adam_optimizer: {learning_rate: {one_cycle: {lr_max: 3e-3moms: [0.95, 0.85]div_factor: 10.0pct_start: 0.4}}weight_decay: 0.001                                                           ### 权重衰减率}fixed_weight_decay: true                                                        ### 是否固定权重衰减率use_moving_average: false                                                       ### 是否在训练时使用滑动平均}steps: 99040                                                                      ### 928*80训练的总steps数目steps_per_eval: 6190                                                              ### 1238*5#多少step保存一次模型save_checkpoints_secs : 1800                                                      ### half hour #checkpoints半小时更新一次save_summary_steps : 10                                                           ### 每save_summary_steps个step汇总一次损失,准确率,学习率等等信息,用于可视化enable_mixed_precision: false                                                     ### 是否使用混合精度训练loss_scale_factor: -1                                                             ### 设置损失的尺度因子clear_metrics_every_epoch: true                                                   ### 是否每一epoch都要评估,true是不是每一epoch都要评估
}eval_input_reader: {dataset: {dataset_class_name: "KittiDataset"kitti_info_path: "/home/gyh/workcode/SECOND/second.pytorch_local/kitti_data/kitti_infos_val.pkl"  ### 验证集信息路径,由creat_dataset生成# kitti_info_path: "/home/gyh/workcode/SECOND/second.pytorch_local/kitti_data/kitti_infos_test.pkl"kitti_root_path: "/home/gyh/workcode/SECOND/second.pytorch_local/kitti_data"    ### 包含训练集目录的父目录}batch_size: 1                                                                     ### 验证时的batch_sizepreprocess: {max_number_of_voxels: 60000                                                     ### 验证时最多保留max_number_of_voxels这么多体素格shuffle_points: false                                                           ### 是否打乱数据num_workers: 3                                                                  ### 线程数anchor_area_threshold: -1                                                       ### 小于0为不使用,高分辨率是会很慢,作者建议永远不要使用remove_environment: false                                                       ### 是否移除背景点云,即只保留gt boxes内的点云}
}

7.2. 环境信息

(second) sl@sl-xavier:~$ conda list
# packages in environment at /home/sl/miniforge-pypy3/envs/second:
#
# Name                    Version                   Build  Channel
_openmp_mutex             4.5                       0_gnu    conda-forge
blosc                     1.19.0               he1b5a44_0    conda-forge
brotli                    1.0.7             he1b5a44_1002    conda-forge
bzip2                     1.0.8                h516909a_2    conda-forge
ca-certificates           2020.4.5.2           hecda079_0    conda-forge
certifi                   2020.4.5.2       py36h9f0ad1d_0    conda-forge
charls                    2.1.0                he1b5a44_2    conda-forge
cloudpickle               1.4.1                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
cycler                    0.10.0                     py_2    conda-forge
cytoolz                   0.10.1           py36h516909a_0    conda-forge
dask-core                 2.17.2                     py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
decorator                 4.4.2                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
fire                      0.3.1                    pypi_0    pypi
freetype                  2.10.2               he06d7ca_0    conda-forge
giflib                    5.2.1                h516909a_2    conda-forge
icu                       64.2                 h4c5d2ac_1    conda-forge
imagecodecs               2020.5.30        py36hcd4facd_1    conda-forge
imageio                   2.8.0                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
jpeg                      9d                   h6dd45c4_0    conda-forge
jxrlib                    1.1                  h516909a_2    conda-forge
kiwisolver                1.2.0            py36hdb11119_0    conda-forge
lcms2                     2.9                  hbd6801e_2    conda-forge
ld_impl_linux-aarch64     2.34                 h326052a_5    conda-forge
libaec                    1.0.4                he1b5a44_1    conda-forge
libblas                   3.8.0               10_openblas    conda-forge
libcblas                  3.8.0               10_openblas    conda-forge
libffi                    3.2.1             h4c5d2ac_1007    conda-forge
libgcc-ng                 7.5.0                h8e86211_6    conda-forge
libgfortran-ng            7.5.0                hca8aa85_6    conda-forge
libgomp                   7.5.0                h8e86211_6    conda-forge
liblapack                 3.8.0               10_openblas    conda-forge
libpng                    1.6.37               hed695b0_1    conda-forge
libprotobuf               3.12.3               h8b12597_0    conda-forge
libstdcxx-ng              7.5.0                hca8aa85_6    conda-forge
libtiff                   4.1.0                h6fdbc6b_6    conda-forge
libwebp-base              1.1.0                h516909a_3    conda-forge
libzopfli                 1.0.3                he1b5a44_0    conda-forge
llvmlite                  0.29.0                   pypi_0    pypi
lz4-c                     1.9.2                he1b5a44_1    conda-forge
matplotlib                3.2.1                         0    conda-forge
matplotlib-base           3.2.1            py36h0f30586_0    conda-forge
ncurses                   6.1               hf484d3e_1002    conda-forge
networkx                  2.4                        py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
numba                     0.44.1                   pypi_0    pypi
numpy                     1.18.5           py36h3849536_0    conda-forge
olefile                   0.46                       py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
openblas                  0.3.6                h6e990d7_2    conda-forge
openjpeg                  2.3.1                h981e76c_3    conda-forge
openssl                   1.1.1g               h516909a_0    conda-forge
pandas                    1.0.4            py36h7c3b610_0    conda-forge
pillow                    7.1.2            py36h8328e55_0    conda-forge
pip                       20.1.1                     py_1    conda-forge
protobuf                  3.12.2                   pypi_0    pypi
psutil                    5.7.0                    pypi_0    pypi
pyparsing                 2.4.7                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
python                    3.6.10          h8356626_1011_cpython    conda-forge
python-dateutil           2.8.1                      py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
python_abi                3.6                     1_cp36m    conda-forge
pytz                      2020.1                     py_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
pywavelets                1.1.1            py36h68bb277_1    conda-forge
pyyaml                    5.3.1            py36h8c4c3a4_0    conda-forge
readline                  8.0                  h75b48e3_0    conda-forge
scikit-image              0.17.2           py36h7c3b610_1    conda-forge
scipy                     1.4.1            py36h3a855aa_3    conda-forge
seaborn                   0.10.1                     py_0    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
setuptools                47.1.1           py36h9f0ad1d_0    conda-forge
six                       1.15.0                   pypi_0    pypi
snappy                    1.1.8                he1b5a44_1    conda-forge
spconv                    1.1                      pypi_0    pypi
sqlite                    3.30.1               h283c62a_0    conda-forge
tensorboardx              2.0                        py_0    conda-forge
termcolor                 1.1.0                    pypi_0    pypi
tifffile                  2020.6.3                   py_1    conda-forge
tk                        8.6.10               hed695b0_0    conda-forge
toolz                     0.10.0                     py_0    https://mirrors.ustc.edu.cn/anaconda/pkgs/main
torch                     1.1.0                    pypi_0    pypi
tornado                   6.0.4            py36h8c4c3a4_1    conda-forge
wheel                     0.34.2                     py_1    conda-forge
xz                        5.2.5                h6dd45c4_0    conda-forge
yaml                      0.2.5                h516909a_0    conda-forge
zlib                      1.2.11            h516909a_1006    conda-forge
zstd                      1.4.4                h6597ccf_3    conda-forge
(second) sl@sl-xavier:~$ pip list
Package         Version
--------------- -------------------
certifi         2020.4.5.2
cloudpickle     1.4.1
cycler          0.10.0
cytoolz         0.10.1
dask            2.17.2
decorator       4.4.2
fire            0.3.1
imagecodecs     2020.5.30
imageio         2.8.0
kiwisolver      1.2.0
llvmlite        0.29.0
matplotlib      3.2.1
networkx        2.4
numba           0.44.1
numpy           1.18.5
olefile         0.46
pandas          1.0.4
Pillow          7.1.2
pip             20.1.1
protobuf        3.12.3
psutil          5.7.0
pyparsing       2.4.7
python-dateutil 2.8.1
pytz            2020.1
PyWavelets      1.1.1
PyYAML          5.3.1
scikit-image    0.17.2
scipy           1.4.1
seaborn         0.10.1
setuptools      47.1.1.post20200529
six             1.15.0
spconv          1.1
tensorboardX    2.0
termcolor       1.1.0
tifffile        2020.6.3
toolz           0.10.0
torch           1.1.0
torchvision     0.3.0
tornado         6.0.4
wheel           0.34.2

有问题私聊我!

  • 方式1:CSDN私信我!
  • 方式2:QQ邮箱:1115291605@qq.com或者直接加我QQ!

参考文章

RPN的理解可以参考2个大佬:

  • 一文读懂Faster RCNN!
  • Faster RCNN之RPN理解!
  • 在jetson nano中配opencv环境(python通用)
  • 玩转NVIDIA Jetson AGX Xavier(11)— JetPack4.2安装TensorFlow
  • 官网. Installing TensorFlow
  • Jetson 查看CPU、内存、GPU使用情况
  • NVIDIA_Jetson_Xavier安装second.pytorch环境
  • Xavier 运行 SECOND点云目标检测网络(一)
  • second.pytorch环境配置及训练运行折腾史
  • 让NVIDIA Jetson AGX Xavier火力全开的秘密
  • jetson平台实用命令

这篇关于『Nvidia Jetson AGX Xavier笔记』Xavier(arrch64架构)搭建second点云目标检测环境!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308861

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识