OpenVINS学习2——VIRAL数据集eee01.bag运行

前言

周末休息了两天,接着做上周五那个VIRAL数据集没有运行成功的工作。现在的最新OpenVINS需要重新写配置文件,不像之前那样都写在launch里,因此需要根据数据集情况配置好estimator_config.yaml还有两个标定参数文件。

VIRAL数据集

VIRAL数据集包含雷达、相机、IMU、UWB四种数据,是南洋理工大学在22年发布的。

官网地址:https://ntu-aris.github.io/ntu_viral_dataset/
适配VIRAL的OpenVINS(旧版):https://github.com/brytsknguyen/open_vins.git

VIRAL数据集本身作者对一些常用VIO开源代码做了适配修改,其中就包括OpenVINS,但是这个是更新之前的OpenVINS,现在的使用方式配置和之前有所不同。我刚开始从Euroc的数据集配置改动,只是改VIRAL以前OpenVINS配置的参数,初始化跑不通,如下图所示。
这是VIRAL适配的openvins的配置情况,是通过launch进行配置的。

<launch><param name="/use_sim_time" value="true" /><arg name="publish_clock" default="--clock"/><!-- NTU VIRAL dataset --><!-- EEE --><arg  name="bag_file"   default="/home/merlincs/workspace/dataset/VIRAL/eee_01/eee_01.bag"/><!-- MASTER NODE! --><node name="run_serial_msckf" pkg="ov_msckf" type="run_serial_msckf" output="screen" clear_params="true" required="true"><!-- bag topics --><param name="topic_imu"      type="string" value="/imu/imu" /><param name="topic_camera0"  type="string" value="/right/image_raw" /><param name="topic_camera1"  type="string" value="/left/image_raw" /><rosparam param="stereo_pairs">[0,1]</rosparam><!-- bag parameters --><param name="path_bag"    type="string" value="$(arg bag_file)" /><!-- <param name="path_gt"     type="string" value="$(find ov_data)/euroc_mav/V1_01_easy.csv" /> --><!-- <param name="bag_start"   type="double" value="0" /> --><!-- <param name="bag_durr"    type="int"    value="-1" /> --><!-- world/filter parameters --><param name="use_fej"                type="bool"   value="true" /><param name="use_imuavg"             type="bool"   value="true" /><param name="use_rk4int"             type="bool"   value="true" /><param name="use_stereo"             type="bool"   value="true" /><param name="calib_cam_extrinsics"   type="bool"   value="true" /><param name="calib_cam_intrinsics"   type="bool"   value="true" /><param name="calib_cam_timeoffset"   type="bool"   value="true" /><param name="calib_camimu_dt"        type="double" value="0.0" /><param name="max_clones"             type="int"    value="11" /><param name="max_slam"               type="int"    value="75" /><param name="max_slam_in_update"     type="int"    value="25" /> <!-- 25 seems to work well --><param name="max_msckf_in_update"    type="int"    value="40" /><param name="max_cameras"            type="int"    value="2" /><param name="dt_slam_delay"          type="double" value="3" /><param name="init_window_time"       type="double" value="0.75" /><param name="init_imu_thresh"        type="double" value="0.25" /><rosparam param="gravity">[0.0,0.0,9.81]</rosparam><param name="feat_rep_msckf"         type="string" value="GLOBAL_3D" /><param name="feat_rep_slam"          type="string" value="ANCHORED_FULL_INVERSE_DEPTH" /><param name="feat_rep_aruco"         type="string" value="ANCHORED_FULL_INVERSE_DEPTH" /><!-- zero velocity update parameters --><param name="try_zupt"               type="bool"   value="false" /><param name="zupt_chi2_multipler"    type="int"    value="2" /><param name="zupt_max_velocity"      type="double" value="0.3" /><param name="zupt_noise_multiplier"  type="double" value="50" /><!-- timing statistics recording --><param name="record_timing_information"   type="bool"   value="false" /><param name="record_timing_filepath"      type="string" value="/tmp/timing_stereo.txt" /><!-- tracker/extractor properties --><param name="use_klt"            type="bool"   value="true" /><param name="num_pts"            type="int"    value="250" /><param name="fast_threshold"     type="int"    value="15" /><param name="grid_x"             type="int"    value="5" /><param name="grid_y"             type="int"    value="3" /><param name="min_px_dist"        type="int"    value="5" /><param name="knn_ratio"          type="double" value="0.70" /><param name="downsample_cameras" type="bool"   value="false" /><param name="multi_threading"    type="bool"   value="true" /><!-- aruco tag/mapping properties --><param name="use_aruco"        type="bool"   value="false" /><param name="num_aruco"        type="int"    value="1024" /><param name="downsize_aruco"   type="bool"   value="true" /><!-- sensor noise values / update --><param name="up_msckf_sigma_px"            type="double"   value="1" /><param name="up_msckf_chi2_multipler"      type="double"   value="1" /><param name="up_slam_sigma_px"             type="double"   value="1" /><param name="up_slam_chi2_multipler"       type="double"   value="1" /><param name="up_aruco_sigma_px"            type="double"   value="1" /><param name="up_aruco_chi2_multipler"      type="double"   value="1" /><param name="gyroscope_noise_density"      type="double"   value="5.0e-3" /><param name="gyroscope_random_walk"        type="double"   value="3.0e-6" /><param name="accelerometer_noise_density"  type="double"   value="6.0e-2" /><param name="accelerometer_random_walk"    type="double"   value="8.0e-5" /><!-- camera intrinsics --><rosparam param="cam0_wh">[752, 480]</rosparam><rosparam param="cam1_wh">[752, 480]</rosparam><param name="cam0_is_fisheye" type="bool" value="false" /><param name="cam1_is_fisheye" type="bool" value="false" /><rosparam param="cam0_k">[4.313364265799752e+02, 4.327527965378035e+02, 3.548956286992647e+02, 2.325508916495161e+02]</rosparam><rosparam param="cam0_d">[-0.300267420221178, 0.090544063693053, 3.330220891093334e-05, 8.989607188457415e-05]</rosparam><rosparam param="cam1_k">[4.250258563372763e+02, 4.267976260903337e+02, 3.860151866550880e+02, 2.419130336743440e+02]</rosparam><rosparam param="cam1_d">[-0.288105327549552, 0.074578284234601, 7.784489598138802e-04, -2.277853975035461e-04]</rosparam><!-- camera extrinsics --><rosparam param="T_C0toI">[-0.01916508, -0.01496218,  0.99970437,  0.00519443,0.99974371,  0.01176483,  0.01934191,  0.1347802,-0.01205075,  0.99981884,  0.01473287,  0.01465067,0.00000000,  0.00000000,  0.00000000,  1.00000000]</rosparam><rosparam param="T_C1toI">[0.02183084, -0.01312053,  0.99967558,  0.00552943,0.99975965,  0.00230088, -0.02180248, -0.12431302,-0.00201407,  0.99991127,  0.01316761,  0.01614686, 0.00000000,  0.00000000,  0.00000000,  1.00000000]</rosparam></node><node pkg="rviz" type="rviz" name="ov_msckf_rviz" respawn="true" output="log"args="-d $(find ov_msckf)/launch/ntuviral.rviz" /><!-- <arg name="autorun" default="false"/><node required="$(arg autorun)" pkg="rosbag" type="play" name="rosbag_play"args="$(arg publish_clock) $(arg bag_file) -r 1"/> --></launch>

对应把上面参数写入新建的config/viral中三个配置文件后跑不通:
在这里插入图片描述
在这里插入图片描述
主要原因是因为静态初始化运动检测的原因,具体原理我也还不是很清楚,下一次博客对于初始化这块做详细的学习。因此除了抄viral适配openvins中的配置外,还需要对配置文件进行一些改动,下面介绍一下配置文件各个参数含义。

配置文件详解

config文件夹内有三个配置文件:
estimator_config.yaml,kalibr_imucam_chain.yaml,kalibr_imu_chain.yaml。
第一个是针对不同数据集对估计器的配置,第二个第三个是相机和IMU的标定参数。
下面是针对viral数据集进行修改过的配置文件。(目前还只是对eee01.bag这一个数据包初始化有效)

1、estimator_config.yaml

%YAML:1.0 # need to specify the file type at the top!verbosity: "INFO" # ALL, DEBUG, INFO, WARNING, ERROR, SILENTuse_fej: true # if first-estimate Jacobians should be used (enable for good consistency)
integration: "rk4" # discrete, rk4, analytical (if rk4 or analytical used then analytical covariance propagation is used)
use_stereo: true # if we have more than 1 camera, if we should try to track stereo constraints between pairs
max_cameras: 2 # how many cameras we have 1 = mono, 2 = stereo, >2 = binocular (all mono tracking)calib_cam_extrinsics: true # if the transform between camera and IMU should be optimized R_ItoC, p_CinI
calib_cam_intrinsics: true # if camera intrinsics should be optimized (focal, center, distortion)
calib_cam_timeoffset: true # if timeoffset between camera and IMU should be optimized
calib_imu_intrinsics: false # if imu intrinsics should be calibrated (rotation and skew-scale matrix)
calib_imu_g_sensitivity: false # if gyroscope gravity sensitivity (Tg) should be calibratedmax_clones: 11 # how many clones in the sliding window
max_slam: 75 # number of features in our state vector
max_slam_in_update: 25 # update can be split into sequential updates of batches, how many in a batch
max_msckf_in_update: 40 # how many MSCKF features to use in the update
dt_slam_delay: 3 # delay before initializing (helps with stability from bad initialization...)gravity_mag: 9.81 # magnitude of gravity in this locationfeat_rep_msckf: "GLOBAL_3D"
feat_rep_slam: "ANCHORED_FULL_INVERSE_DEPTH"
feat_rep_aruco: "ANCHORED_FULL_INVERSE_DEPTH"# zero velocity update parameters we can use
# we support either IMU-based or disparity detection.
try_zupt: false
zupt_chi2_multipler: 2 # set to 0 for only disp-based
zupt_max_velocity: 0.3
zupt_noise_multiplier: 50
zupt_max_disparity: 0.5 # set to 0 for only imu-based
zupt_only_at_beginning: false# ==================================================================
# ==================================================================init_window_time: 0.75 # how many seconds to collect initialization information
init_imu_thresh: 0.25 # threshold for variance of the accelerometer to detect a "jerk" in motion
init_max_disparity: 1.0 # max disparity to consider the platform stationary (dependent on resolution)
init_max_features: 20 # how many features to track during initialization (saves on computation)init_dyn_use: false # if dynamic initialization should be used
init_dyn_mle_opt_calib: false # if we should optimize calibration during intialization (not recommended)
init_dyn_mle_max_iter: 50 # how many iterations the MLE refinement should use (zero to skip the MLE)
init_dyn_mle_max_time: 0.05 # how many seconds the MLE should be completed in
init_dyn_mle_max_threads: 6 # how many threads the MLE should use
init_dyn_num_pose: 6 # number of poses to use within our window time (evenly spaced)
init_dyn_min_deg: 10.0 # orientation change needed to try to initinit_dyn_inflation_ori: 10 # what to inflate the recovered q_GtoI covariance by
init_dyn_inflation_vel: 100 # what to inflate the recovered v_IinG covariance by
init_dyn_inflation_bg: 10 # what to inflate the recovered bias_g covariance by
init_dyn_inflation_ba: 100 # what to inflate the recovered bias_a covariance by
init_dyn_min_rec_cond: 1e-12 # reciprocal condition number thresh for info inversioninit_dyn_bias_g: [ 0.0, 0.0, 0.0 ] # initial gyroscope bias guess
init_dyn_bias_a: [ 0.0, 0.0, 0.0 ] # initial accelerometer bias guess# ==================================================================
# ==================================================================record_timing_information: false # if we want to record timing information of the method
record_timing_filepath: "/tmp/traj_timing.txt" # https://docs.openvins.com/eval-timing.html#eval-ov-timing-flame# if we want to save the simulation state and its diagional covariance
# use this with rosrun ov_eval error_simulation
save_total_state: false
filepath_est: "/tmp/ov_estimate.txt"
filepath_std: "/tmp/ov_estimate_std.txt"
filepath_gt: "/tmp/ov_groundtruth.txt"# ==================================================================
# ==================================================================# our front-end feature tracking parameters
# we have a KLT and descriptor based (KLT is better implemented...)
use_klt: true # if true we will use KLT, otherwise use a ORB descriptor + robust matching
num_pts: 250 # number of points (per camera) we will extract and try to track
fast_threshold: 15 # threshold for fast extraction (warning: lower threshs can be expensive)
grid_x: 5 # extraction sub-grid count for horizontal direction (uniform tracking)
grid_y: 3 # extraction sub-grid count for vertical direction (uniform tracking)
min_px_dist: 5 # distance between features (features near each other provide less information)
knn_ratio: 0.70 # descriptor knn threshold for the top two descriptor matches
track_frequency: 11.0 # frequency we will perform feature tracking at (in frames per second / hertz)
downsample_cameras: false # will downsample image in half if true
num_opencv_threads: -1 # -1: auto, 0-1: serial, >1: number of threads
histogram_method: "HISTOGRAM" # NONE, HISTOGRAM, CLAHE# aruco tag tracker for the system
# DICT_6X6_1000 from https://chev.me/arucogen/
use_aruco: false
num_aruco: 1024
downsize_aruco: true# ==================================================================
# ==================================================================# camera noises and chi-squared threshold multipliers
up_msckf_sigma_px: 1
up_msckf_chi2_multipler: 1
up_slam_sigma_px: 1
up_slam_chi2_multipler: 1
up_aruco_sigma_px: 1
up_aruco_chi2_multipler: 1# masks for our images
use_mask: false# imu and camera spacial-temporal
# imu config should also have the correct noise values
relative_config_imu: "kalibr_imu_chain.yaml"
relative_config_imucam: "kalibr_imucam_chain.yaml"

2、kalibr_imucam_chain.yaml

%YAML:1.0cam0:T_imu_cam: #rotation from camera to IMU R_CtoI, position of camera in IMU p_CinI- [-0.01916508, -0.01496218,  0.99970437,  0.00519443]- [0.99974371,  0.01176483,  0.01934191,  0.1347802]- [-0.01205075,  0.99981884,  0.01473287,  0.01465067]- [0.0, 0.0, 0.0, 1.0]cam_overlaps: [1]camera_model: pinhole#相机模型distortion_coeffs: [-0.300267420221178, 0.090544063693053, 3.330220891093334e-05, 8.989607188457415e-05]#畸变参数distortion_model: radtan#畸变模型intrinsics: [4.313364265799752e+02, 4.327527965378035e+02, 3.548956286992647e+02, 2.325508916495161e+02] #fu, fv, cu, cvresolution: [752, 480]#分辨率rostopic: /right/image_raw
cam1:T_imu_cam: #rotation from camera to IMU R_CtoI, position of camera in IMU p_CinI- [0.02183084, -0.01312053,  0.99967558,  0.00552943]- [0.99975965,  0.00230088, -0.02180248, -0.12431302]- [-0.00201407,  0.99991127,  0.01316761,  0.01614686]- [0.0, 0.0, 0.0, 1.0]cam_overlaps: [0]camera_model: pinholedistortion_coeffs: [-0.288105327549552, 0.074578284234601, 7.784489598138802e-04, -2.277853975035461e-04]distortion_model: radtanintrinsics: [4.250258563372763e+02, 4.267976260903337e+02, 3.860151866550880e+02, 2.419130336743440e+02] #fu, fv, cu, cvresolution: [752, 480]rostopic: /left/image_raw

3、kalibr_imu_chain.yaml

%YAML:1.0imu0:T_i_b:- [1.0, 0.0, 0.0, 0.0]- [0.0, 1.0, 0.0, 0.0]- [0.0, 0.0, 1.0, 0.0]- [0.0, 0.0, 0.0, 1.0]accelerometer_noise_density: 6.0e-2  # [ m / s^2 / sqrt(Hz) ]   ( accel "white noise" )accelerometer_random_walk: 8.0e-5    # [ m / s^3 / sqrt(Hz) ].  ( accel bias diffusion )gyroscope_noise_density: 5.0e-3    # [ rad / s / sqrt(Hz) ]   ( gyro "white noise" )gyroscope_random_walk: 3.0e-6       # [ rad / s^2 / sqrt(Hz) ] ( gyro bias diffusion )rostopic: /imu/imutime_offset: 0.0update_rate: 385.0#IMU更新频率# three different modes supported:# "calibrated" (same as "kalibr"), "kalibr", "rpng"model: "kalibr"# how to get from Kalibr imu.yaml result file:#   - Tw is imu0:gyroscopes:M:#   - R_IMUtoGYRO: is imu0:gyroscopes:C_gyro_i:#   - Ta is imu0:accelerometers:M:#   - R_IMUtoACC not used by Kalibr#   - Tg is imu0:gyroscopes:A:Tw:- [ 1.0, 0.0, 0.0 ]- [ 0.0, 1.0, 0.0 ]- [ 0.0, 0.0, 1.0 ]R_IMUtoGYRO:- [ 1.0, 0.0, 0.0 ]- [ 0.0, 1.0, 0.0 ]- [ 0.0, 0.0, 1.0 ]Ta:- [ 1.0, 0.0, 0.0 ]- [ 0.0, 1.0, 0.0 ]- [ 0.0, 0.0, 1.0 ]R_IMUtoACC:- [ 1.0, 0.0, 0.0 ]- [ 0.0, 1.0, 0.0 ]- [ 0.0, 0.0, 1.0 ]Tg:- [ 0.0, 0.0, 0.0 ]- [ 0.0, 0.0, 0.0 ]- [ 0.0, 0.0, 0.0 ]

实验结果

按照上面进行配置文件修改,然后运行如下命令

#第一个终端
roscore#第二个终端
source devel/setup.bash
roslaunch ov_msckf subscribe.launch config:=viral#第三个终端
rviz
#然后导入配置ntuviral.rviz(从viral适配的openvins中下载,在ov_msckf/launch中)#数据文件夹下打开第四个终端
rosbag play eee_01.bag

运行结果如图所示
在这里插入图片描述现在还只能在eee01.bag这一个数据包初始化能跑通,同样的配置跑eee02.bag就不行,初始化这块还是要明白原理,才能够更好地进行配置。接下来重点学习一下OpenVINS的初始化原理,看看怎么配置静态初始化和动态初始化(新版本开源的新功能应该很好用)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WooCommerce商城个人微信支付网关 适合个人微信收款

点击获取WooCommerce商城个人微信支付网关 适合个人微信收款原文https://gplwp.eastfu.com/product/woocommerce-ge-ren-wei-xin-zhi-fu-wang-guan-shi-he-ge-ren/ 个人微信支付网关接口&#xff0c;无需提现&#xff0c;100%资金安全&#xff0c;官方清算&#xff0c;金额无限…

XCube——用于超高分辨率 3D 形状和场景的生成模型!

他们的方法在稀疏体素网格的层次结构上训练潜在扩散模型的层次结构。他们在稀疏结构 VAE 的潜在空间上进行扩散&#xff0c;它为层次结构的每个级别学习紧凑的潜在表示。 XCube 是稀疏体素层次上的分层潜在扩散模型&#xff0c;即从粗到细的 3D 稀疏体素网格序列&#xff0c;使…

智能优化算法之粒子群模型(含python案例代码)

粒子群优化模型概述 粒子群优化&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种基于群体智能的优化算法&#xff0c;最早由美国社会心理学家James Kennedy和Russell Eberhart于1995年提出。PSO的灵感来自鸟群和鱼群等自然界群体行为的观察。 PS…

Linux驱动入门——编写第一个驱动

目录 前言 驱动入门知识 1.APP 打开的文件在内核中如何表示 2.打开字符设备节点时&#xff0c;内核中也有对应的 struct file 编写 Hello 驱动程序步骤 1.流程介绍 2.驱动代码&#xff1a; 3.应用层代码&#xff1a; 4.本驱动程序的 Makefile 内容&#xff1a; 5.上机…

4fiddler抓包工具的使用

一、定义 1.1 抓包的定义 说明&#xff1a;客户端向服务器发送请求以及服务器响应客户端的请求&#xff0c;都是以数据包来传递的。 抓包(packet capture)&#xff1a;通过工具拦截客户端与服务器交互的数据包 1.2 fiddler的介绍 Fiddler是一个http协议调试代理工具&#…

市场全局复盘 20231208

一、板块成交额排名&#xff1a; 资金流入前三个板块K 线&#xff1a; 行业成交额排名&#xff1a; 个股资金流入排名&#xff1a; select 成交额排名 ,近日指标提示 ,短线主题 ,涨停分析,CODE,名称,DDE大单净量,现价,量比,连板天,周涨停,月涨停,年涨停天,连涨天,…

【每日一题】—— B. StORage room(Codeforces Round 912 (Div. 2))(位操作符)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

使用阿里云国际CDN加速后网站无法访问的排查步骤

使用阿里云国际CDN加速后网站无法访问的排查步骤&#xff0c;下面是一些常见的问题&#xff0c;以&#xff1a;www.c.9he.com为例&#xff0c;如果解决不了来信服务器厂商解决。 检查CDN访问异常是CDN节点的问题还是源站问题 如果是源站访问异常&#xff0c;请直接排查源站服务…

Faster R-CNN

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作推理速度在GPU上达到5fps(包括候选区域的生成)&#xff0c;准确率为网络的backbone&#xff0c;也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。 算法流程 右边这部分和Fa…

算法Day27 身材管理(三维背包)

身材管理&#xff08;三维背包&#xff09; Description Input Output Sample 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt(); // 输入n的值int money sca…

KaiOS 运营商相关文件operator_variant_manager.js代码功能和调试

gaia/apps/system/js/operator_variant_manager.js at master mozilla-b2g/gaia GitHub js文件接口功能 No 接口/常量 功能 1 OperatorVariantManager var OperatorVariantManager function(core) 2 OperatorVariantManager.IMPORTS OperatorVariantManager.I…

搜集怎么绘制三维曲线和曲面?

1、针对函数对象是单一变量、两个函数的情况。用plot3函数&#xff1b;&#xff08;三维曲线&#xff09; 看一下matlab官方的例子&#xff1a; t 0:pi/50:10*pi; st sin(t); ct cos(t); plot3(st,ct,t) 绘制出来的曲线&#xff1a; 几个比较关键的点&#xff1a; &…

【Marp】基于Markdown-Marp快速制作PPT

【Marp】基于Markdown-Marp快速制作PPT 文章目录 【Marp】基于Markdown-Marp快速制作PPT零、参考资料一、Marp基本语法&#xff08;创建分页&#xff0c;排版图片&#xff0c;更换主题&#xff0c;Marp扩展指令修改样式&#xff09;1、创建新的PPT页面2、插入图片 & 排版图…

解决删除文件后 WSL2 磁盘空间不释放的问题

查看 Linux distributions 打开 PowerShell 并执行如下命令&#xff1a; wsl -l -v 搜索并找到 ext4.vhdx 文件 我的 ext4.vhdx 文件如下&#xff1a; C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx 由于…

软件开发流程分析

软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端&#xff1a;自研API&#xff0c;调用第三放API 后端&#xff1a;自研API&#xff0c;第三方API 数据库&#xff1a;Mysql&#xff0c;数据采集&#xff0c;数据迁移 服务器&#xf…

数据结构:第13关:查找两个单词链表共同后缀的起始结点

任务描述编程要求 输入输出测试说明来源 任务描述 本关任务&#xff1a;假定采用带头结点的单链表保存单词&#xff0c;当两个单词有相同的后缀时&#xff0c;则可共享相同的后缀空间。 例如&#xff0c;“loading”和“being”的存储映像如下图所示&#xff1a; 设str1和str2…

【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)

note SFT使用交叉熵损失函数&#xff0c;目标是调整参数使模型输出与标准答案一致&#xff0c;不能从整体把控output质量&#xff0c;RLHF&#xff08;分为奖励模型训练、近端策略优化两个步骤&#xff09;则是将output作为一个整体考虑&#xff0c;优化目标是使模型生成高质量…

火山引擎边缘计算用硬核助力赛事直播

经过一个多月激烈争夺&#xff0c;2023英雄联盟全球总决赛终于在11月19日落下帷幕。精彩的对决和高热话题使得直播平台观赛人数暴增&#xff0c;给直播平台稳定性和资源储备提出了巨大的考验。

推荐3dmax常用15款插件,快来了解一下吧!

推荐3dmax常用15款插件&#xff0c;快来了解一下吧&#xff01; 插件是3ds MAX软件的重要组成部分&#xff0c;提供了太多便利&#xff0c;也提升了建模、渲染和动画的效率&#xff0c;下面就给大家推荐25款常用的3dMax插件。 1&#xff09;DashedShape DashedShape实线转虚线…

3c分支语句和循环语句(非重点)

文章目录 1. 什么是语句&#xff1f;2. 分支语句&#xff08;选择结构&#xff09;2.1 if语句2.1.1 悬空else2.1.2 if书写形式的对比 2.2 switch语句2.2.1 在switch语句中的 break2.2.2 default子句 3. 循环语句3.1 while循环3.1.1 while语句中的break和continue3.2 for循环3.2…