当前位置: 首页 > news >正文

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境:
https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022
habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。

文档一开始会很不完善,会慢慢的补齐。

1、如何使用配置文件初始化环境

主要使用 habitat.Env类进行初始化。传一个config参数,该参数可以通过habitat.get_config()得到,该函数需要指定一个配置文件的路径,举例如下:

import habitat
env = habitat.Env(config=habitat.get_config("/home/yons/LK/habitat-challenge/habitat-lab/configs/datasets/pointnav/habitat_test.yaml")    

配置环境的过程会打印很多信息如下:

# 2024-03-04 21:17:09,546 Initializing dataset PointNav-v1
# 2024-03-04 21:17:09,708 initializing sim Sim-v0
# [21:17:09:715104]:[Metadata] AttributesManagerBase.h(380)::createFromJsonOrDefaultInternal : <Dataset>: Proposing JSON name : default.scene_dataset_config.json from original name : default| This file does not exist.
# [21:17:09:715197]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (capsule3DSolid:capsule3DSolid_hemiRings_4_cylRings_1_segments_12_halfLen_0.75_useTexCoords_false_useTangents_false) created and registered.
# [21:17:09:715224]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (capsule3DWireframe:capsule3DWireframe_hemiRings_8_cylRings_1_segments_16_halfLen_1) created and registered.
# [21:17:09:715242]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (coneSolid:coneSolid_segments_12_halfLen_1.25_rings_1_useTexCoords_false_useTangents_false_capEnd_true) created and registered.
# [21:17:09:715258]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (coneWireframe:coneWireframe_segments_32_halfLen_1.25) created and registered.
# [21:17:09:715270]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (cubeSolid:cubeSolid) created and registered.
# [21:17:09:715282]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (cubeWireframe:cubeWireframe) created and registered.
# [21:17:09:715299]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (cylinderSolid:cylinderSolid_rings_1_segments_12_halfLen_1_useTexCoords_false_useTangents_false_capEnds_true) created and registered.
# [21:17:09:715314]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (cylinderWireframe:cylinderWireframe_rings_1_segments_32_halfLen_1) created and registered.
# [21:17:09:715326]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (icosphereSolid:icosphereSolid_subdivs_1) created and registered.
# [21:17:09:715369]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (icosphereWireframe:icosphereWireframe_subdivs_1) created and registered.
# [21:17:09:715397]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (uvSphereSolid:uvSphereSolid_rings_8_segments_16_useTexCoords_false_useTangents_false) created and registered.
# [21:17:09:715429]:[Metadata] AssetAttributesManager.cpp(121)::createObject : Asset attributes (uvSphereWireframe:uvSphereWireframe_rings_16_segments_32) created and registered.
# [21:17:09:715438]:[Metadata] AssetAttributesManager.cpp(110)::AssetAttributesManager : Built default primitive asset templates : 12
# [21:17:09:715778]:[Metadata] SceneDatasetAttributesManager.cpp(35)::createObject : File (default) not found, so new default dataset attributes created  and registered.
# [21:17:09:715787]:[Metadata] MetadataMediator.cpp(120)::createSceneDataset : Dataset default successfully created.
# [21:17:09:715798]:[Metadata] AttributesManagerBase.h(380)::createFromJsonOrDefaultInternal : <Physics Manager>: Proposing JSON name : ./data/default.physics_config.json from original name : ./data/default.physics_config.json| This file exists.
# [21:17:09:715881]:[Metadata] PhysicsAttributesManager.cpp(26)::createObject : JSON Configuration File (./data/default.physics_config.json) based physics manager attributes created and registered.
# [21:17:09:715890]:[Metadata] MetadataMediator.cpp(203)::setActiveSceneDatasetName : Previous active dataset  changed to default successfully.
# [21:17:09:715896]:[Metadata] MetadataMediator.cpp(175)::setCurrPhysicsAttributesHandle : Old physics manager attributes  changed to ./data/default.physics_config.json successfully.
# [21:17:09:715902]:[Metadata] MetadataMediator.cpp(66)::setSimulatorConfiguration : Set new simulator config for scene/stage : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb and dataset : default which is currently active dataset.
# Renderer: NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2 by NVIDIA Corporation
# OpenGL version: 4.6.0 NVIDIA 510.108.03
# Using optional features:
#     GL_ARB_vertex_array_object
#     GL_ARB_ES2_compatibility
#     GL_ARB_separate_shader_objects
#     GL_ARB_robustness
#     GL_ARB_texture_storage
#     GL_ARB_invalidate_subdata
#     GL_ARB_texture_storage_multisample
#     GL_ARB_multi_bind
#     GL_ARB_direct_state_access
#     GL_ARB_get_texture_sub_image
#     GL_ARB_texture_filter_anisotropic
#     GL_KHR_debug
# Using driver workarounds:
#     no-forward-compatible-core-context
#     no-layout-qualifiers-on-old-glsl
#     nv-zero-context-profile-mask
#     nv-implementation-color-read-format-dsa-broken
#     nv-cubemap-inconsistent-compressed-image-size
#     nv-cubemap-broken-full-compressed-image-query
#     nv-compressed-block-size-in-bits
# [21:17:09:817318]:[Metadata] MetadataMediator.cpp(297)::getSceneInstanceAttributesByName : Dataset : default has no preloaded SceneInstanceAttributes or StageAttributes named : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb so loading/creating a new StageAttributes with this name, and then creating a SceneInstanceAttributes with the same name that references this stage.
# [21:17:09:817339]:[Metadata] AttributesManagerBase.h(380)::createFromJsonOrDefaultInternal : <Stage Template>: Proposing JSON name : data/scene_datasets/habitat-test-scenes/skokloster-castle.stage_config.json from original name : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb| This file does not exist.
# [21:17:09:817384]:[Metadata] AbstractObjectAttributesManagerBase.h(184)::createObject : File (data/scene_datasets/habitat-test-scenes/skokloster-castle.glb) exists but is not a recognized config filename extension, so new default Stage Template attributes created and registered.
# [21:17:09:817412]:[Metadata] SceneDatasetAttributes.cpp(47)::addNewSceneInstanceToDataset : Dataset : 'default' : Stage Attributes 'data/scene_datasets/habitat-test-scenes/skokloster-castle.glb' specified in Scene Attributes exists in dataset library.
# [21:17:09:817418]:[Metadata] SceneDatasetAttributes.cpp(84)::addNewSceneInstanceToDataset : Dataset : 'default' : Lighting Layout Attributes 'no_lights' specified in Scene Attributes but does not exist in dataset, so creating.
# [21:17:09:817426]:[Metadata] AttributesManagerBase.h(380)::createFromJsonOrDefaultInternal : <Lighting Layout>: Proposing JSON name : no_lights.lighting_config.json from original name : no_lights| This file does not exist.
# [21:17:09:817437]:[Metadata] LightLayoutAttributesManager.cpp(36)::createObject : File (no_lights) not found, so new default light layout attributes created and registered.
# [21:17:09:817445]:[Sim] Simulator.cpp(237)::createSceneInstance : Navmesh file location in scene instance : data/scene_datasets/habitat-test-scenes/skokloster-castle.navmesh
# [21:17:09:817455]:[Sim] Simulator.cpp(242)::createSceneInstance : Loading navmesh from data/scene_datasets/habitat-test-scenes/skokloster-castle.navmesh
# [21:17:09:817468]:[Nav] PathFinder.cpp(852)::loadNavMesh : NavMeshSettings aren't present, guessing that they are the default
# [21:17:09:817532]:[Sim] Simulator.cpp(244)::createSceneInstance : Navmesh Loaded.
# [21:17:09:817545]:[Scene] SceneGraph.h(85)::createDrawableGroup : Created DrawableGroup: 
# [21:17:09:817552]:[Assets] ResourceManager.cpp(297)::loadSemanticSceneDescriptor : SceneInstance : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb proposed Semantic Scene Descriptor filename : data/scene_datasets/habitat-test-scenes/skokloster-castle.scn
# [21:17:09:817560]:[Assets] ResourceManager.cpp(344)::loadSemanticSceneDescriptor : SSD File Naming Issue! Neither SceneInstanceAttributes-provided name : data/scene_datasets/habitat-test-scenes/skokloster-castle.scn  nor constructed filename : data/scene_datasets/habitat-test-scenes/info_semantic.json exist on disk.
# [21:17:09:817579]:[Assets] ResourceManager.cpp(1652)::ConfigureImporterManagerGLExtensions : Importing Basis files as BC7.
# [21:17:09:817696]:[Sim] Simulator.cpp(302)::createSceneInstance : Using scene instance-specified Light key : - no_lights -
# [21:17:09:817708]:[Metadata] MetadataMediator.cpp(66)::setSimulatorConfiguration : Set new simulator config for scene/stage : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb and dataset : default which is currently active dataset.
# [21:17:09:817723]:[Sim] Simulator.cpp(412)::instanceStageForSceneAttributes : Start to load stage named : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb with render asset : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb and collision asset : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
# [21:17:09:817752]:[Assets] ResourceManager.cpp(691)::createStageAssetInfosFromAttributes : Frame :{"up":[0,0,1],"front":[0,1,0],"origin":[0,0,0]} for render mesh named : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb|{"up":[0,0,1],"front":[0,1,0],"origin":[0,0,0]} for semantic mesh named :  with type specified as semantic|Semantic Txtrs : False
# [21:17:09:817760]:[Assets] ResourceManager.cpp(507)::loadStage : Start load render asset data/scene_datasets/habitat-test-scenes/skokloster-castle.glb .
# [21:17:09:817765]:[Assets] ResourceManager.cpp(973)::loadStageInternal : Attempting to load stage data/scene_datasets/habitat-test-scenes/skokloster-castle.glb 
# [21:17:09:817779]:[Assets] ResourceManager.cpp(855)::loadRenderAsset : Loading general asset named: data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
# [21:17:09:817785]:[Assets] ResourceManager.cpp(1652)::ConfigureImporterManagerGLExtensions : Importing Basis files as BC7.
# [21:17:10:458713]:[Assets] ResourceManager.cpp(2089)::loadMaterials : Building 2 materials for asset named 'skokloster-castle.glb' : 
# [21:17:10:458752]:[Assets] ResourceManager.cpp(2194)::loadMaterials : Idx 00:Flat.
# [21:17:10:458766]:[Assets] ResourceManager.cpp(2194)::loadMaterials : Idx 01:Flat.
# [21:17:10:516568]:[Sim] Simulator.cpp(439)::instanceStageForSceneAttributes : Successfully loaded stage named : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb
# [21:17:10:516599]:[Sim] Simulator.cpp(471)::instanceStageForSceneAttributes : 
# ---
# The active scene does not contain semantic annotations : activeSemanticSceneID_ = 0  
# ---
# [21:17:10:516615]:[Sim] Simulator.cpp(205)::reconfigure : CreateSceneInstance success == true for active scene name : data/scene_datasets/habitat-test-scenes/skokloster-castle.glb  with renderer.
# 2024-03-04 21:17:10,517 Initializing task Nav-v0    

这其中有很多子问题如下:

1.1 如何设置配置文件中要配置的参数

办法一:直接在yaml配置文件中修改

该方法简单直接不需要举例

办法二:在代码中修改

通过habitat.get_config()获取到config变量后,通过config.defrost()之后便可以在代码中设置一些变量,设置完后通过config.freeze()冻结配置参数

config=habitat.get_config("/home/yons/LK/habitat-challenge/habitat-lab/configs/datasets/pointnav/habitat_test.yaml"
config.defrost()
config.DATASET.SPLIT = "val"
config.freeze()

1.2 habitat.get_config在哪里定义

在…/habitat-challenge/habitat-lab/habitat/config/default.py中定义。该文件中定义了:
1) get_config()方法
2)所有配置变量的默认值

2 关于动作

…/habitat-lab/habitat/sims/habitat_simulator/actions.py中定义了默认的动作:

class _DefaultHabitatSimActions(Enum):STOP = 0MOVE_FORWARD = 1TURN_LEFT = 2TURN_RIGHT = 3LOOK_UP = 4LOOK_DOWN = 5

要执行动作需要初始化环境,然后通过HabitatSimActions获取动作,然后通过env.step执行动作

from habitat.sims.habitat_simulator.actions import HabitatSimActions
env = habitat.Env( config=habitat.get_config("/home/yons/LK/habitat-challenge/habitat-lab/configs/datasets/pointnav/habitat_test.yaml")
observations = env.reset()
action = HabitatSimActions.MOVE_FORWARD
observations = env.step(action)

一个通过键盘与环境交互的示例代码(quick_start3.py文件)如下:

import habitat
from habitat.sims.habitat_simulator.actions import HabitatSimActions
import cv2FORWARD_KEY="w"
LEFT_KEY="a"
RIGHT_KEY="d"
FINISH="f"
####下面是向上看和向下看的动作,并不是所有的agent都可以向上看和向下看
###一个问题是为什么没有后退的动作?
# LOOKUP_KEY="u"
# LOOKDOWN_KEY="j"def transform_rgb_bgr(image):return image[:, :, [2, 1, 0]]def example():#选择一个配置文件初始化环境(配置文件需要有什么参数?)env = habitat.Env(config=habitat.get_config("/home/yons/LK/habitat-challenge/habitat-lab/configs/datasets/pointnav/habitat_test.yaml"))print("Environment creation successful")observations = env.reset()  #print('type(observations):',type(observations))    #type(observations): <class 'habitat.core.simulator.Observations'>print('observations["rgb"].shape:',observations["rgb"].shape)  #observations["rgb"].shape: (480, 640, 3)# cv2.imshow("RGB", transform_rgb_bgr(observations["rgb"]))cv2.imshow("RGB", observations["rgb"])  ####不知道为啥要转化rgb信号的顺序,经过测试,不转换的确看着不自然。print("Agent stepping around inside environment.")count_steps = 0while not env.episode_over:keystroke = cv2.waitKey(0)  #等待用户输入,操纵agent左右转和前进,与环境进行交互if keystroke == ord(FORWARD_KEY):  #如果是敲击的我们在最上面定义的某个键,做对应的事情,并打印action = HabitatSimActions.MOVE_FORWARDprint("action: FORWARD")elif keystroke == ord(LEFT_KEY):action = HabitatSimActions.TURN_LEFTprint("action: LEFT")elif keystroke == ord(RIGHT_KEY):action = HabitatSimActions.TURN_RIGHTprint("action: RIGHT")elif keystroke == ord(FINISH):action = HabitatSimActions.STOPprint("action: FINISH")else:print("INVALID KEY")continueobservations = env.step(action)####env.step(action)里面的action是HabitatSimActions中定义的动作count_steps += 1# cv2.imshow("RGB", transform_rgb_bgr(observations["rgb"]))cv2.imshow("RGB", observations["rgb"])print("Episode finished after {} steps.".format(count_steps))if (action == HabitatSimActions.STOP# and observations["pointgoal_with_gps_compass"][0] < 0.2):print("you successfully navigated to destination point")else:print("your navigation was unsuccessful")if __name__ == "__main__":example()

3获取habitat-lab路径

通过habitat.utils.gym_definitions.base_dir获取

import habitat.utils.gym_definitions as habitat_gym
print('habitat_gym.base_dir:',habitat_gym.base_dir)

下面是一个例子:

import habitat.utils.gym_definitions as habitat_gym
print('habitat_gym.base_dir:',habitat_gym.base_dir)
import osimport gym
import gym.spaces as spaces
import numpy as npimport habitat
import habitat.utils.gym_definitions as habitat_gym
from habitat.core.embodied_task import Measure
from habitat.core.registry import registry
from habitat.core.simulator import Sensor, SensorTypes
from habitat.tasks.rearrange.rearrange_sensors import RearrangeReward
from habitat.tasks.rearrange.rearrange_task import RearrangeTask
from habitat.utils.render_wrapper import overlay_frame
from habitat.utils.visualizations.utils import observations_to_image
from habitat_sim.utils import viz_utils as vut# Quiet the Habitat simulator logging
os.environ["MAGNUM_LOG"] = "quiet"
os.environ["HABITAT_SIM_LOG"] = "quiet"def insert_render_options(config):# Added settings to make rendering higher resolution for better visualizationconfig.defrost()config.SIMULATOR.THIRD_RGB_SENSOR.WIDTH = 512config.SIMULATOR.THIRD_RGB_SENSOR.HEIGHT = 512config.SIMULATOR.CONCUR_RENDER = Falseconfig.SIMULATOR.AGENT_0.SENSORS.append("THIRD_RGB_SENSOR")config.freeze()return configimport importlib# If the import block fails due to an error like "'PIL.TiffTags' has no attribute
# 'IFD'", then restart the Colab runtime instance and rerun this cell and the previous cell.
import PILimportlib.reload(PIL.TiffTags)  # To potentially avoid PIL problemprint('habitat_gym.base_dir:',habitat_gym.base_dir)##################用habitat自己的方式###########################
with habitat.Env(config=insert_render_options(habitat.get_config(os.path.join(habitat_gym.base_dir,"configs/tasks/rearrange/pick.yaml",)))
) as env:observations = env.reset()  # noqa: F841print("Agent acting inside environment.")count_steps = 0# To save the videovideo_file_path = "data/example_interact.mp4"video_writer = vut.get_fast_video_writer(video_file_path, fps=30)while not env.episode_over:observations = env.step(env.action_space.sample())  # noqa: F841,随机动作info = env.get_metrics()render_obs = observations_to_image(observations, info)render_obs = overlay_frame(render_obs, info)video_writer.append_data(render_obs)count_steps += 1print("Episode finished after {} steps.".format(count_steps))video_writer.close()if vut.is_notebook():#此处并没有播放vut.display_video(video_file_path)

相关文章:

rearrangement-challenge-2022环境使用学习(一)

搭建了rearrangement-challenge-2022的环境&#xff1a; https://github.com/facebookresearch/habitat-challenge/tree/rearrangement-challenge-2022 habitat最大的缺点是对不同的版本非常的敏感。本文只是针对rearrangement-challenge-2022的学习。 文档一开始会很不完善&a…...

[Uniapp]携带参数跳转界面(两种方法)

一、方法1&#xff1a;路由携参 假设现在有两个界面&#xff1a;界面A和界面B。并要由界面A跳转到界面B&#xff0c;则我们可以使用 uni.navigateTo({}) 跳转界面时&#xff0c;将参数附加在URL后&#xff0c…...

Scrapy与分布式开发(2.1.2):python常用网络请求库httpx

Python httpx 模块详细讲解 一、引言 httpx 是一个用于发送 HTTP 请求的 Python 库&#xff0c;它提供了简单易用的 API&#xff0c;支持同步和异步请求&#xff0c;并且具有出色的性能和灵活性。httpx 是 requests 的一个现代替代品&#xff0c;它使用 httpcore 作为底层传输…...

07. Nginx进阶-Nginx负载均衡

简介 负载均衡 什么是负载均衡&#xff1f; 负载均衡&#xff0c;英文名称为Load Balance&#xff0c;其含义就是指将负载&#xff08;工作任务&#xff09;进行平衡、分摊到多个操作单元上进行运行。 Nginx负载均衡 什么是Nginx负载均衡&#xff1f; Nginx负载均衡可以大…...

windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’

问题&#xff1a; 有一个nodejs脚本名为html2word,同目录下还有它对应的package.json&#xff0c;正常在html2word所在目录下执行脚本没问题&#xff0c;但是在其他目录执行时报错&#xff1a;Error: Cannot find module ‘esm’ 原因&#xff1a; 在其他位置执行node脚本时…...

2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。

一、这两天一直纠结一个问题&#xff0c;无论怎么修改&#xff0c;linux 分区老显示满&#xff0c;Use 100%&#xff0c;全部沾满。如下图的oem分区。 二、导致出现上面的原因是&#xff1a;SquashFS文件系统里的空间利用率总是显示为100%。 三、SDK里面也说明SquashFS文件系统…...

蓝桥杯倒计时 41天 - KMP 算法

KMP算法 KMP算法是一种字符串匹配算法&#xff0c;用于匹配模式串P在文本串S中出现的所有位置。 例如S“ababac&#xff0c;P“aba”&#xff0c;那么出现的所有位置是13。 在初学KMP时&#xff0c;我们只需要记住和学会使用模板即可&#xff0c;对其原理只需简单理解&#xff…...

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程&#xff1a;求一 word 型数据的平方主程序中断处理程序执行效果 中断例程&#xff1a;将一个全是字母&#xff0c;以0结尾的字符串&#xff0c;转化为大写主程序中断处理程序…...

深入了解 Golang 条件语句:if、else、else if 和嵌套 if 的实用示例

条件语句 用于根据不同的条件执行不同的操作。Go中的条件可以是真或假。Go支持数学中常见的比较运算符&#xff1a; 小于 < 小于等于 < 大于 > 大于等于 > 等于 不等于 ! 此外&#xff0c;Go还支持常见的逻辑运算符&#xff1a; 逻辑与 && 逻辑或…...

大数据和机器学习在气象预报中的应用-张平文院士

报告链接&#xff1a;张平文院士 -- 大数据和机器学习在气象预报中的应用_哔哩哔哩_bilibili...

C#高级:Winform桌面开发中DataGridView的详解

一、每条数据增加一个按钮&#xff0c;点击输出对应实体 请先确保正确添加实体的名称和文本&#xff1a; private void button6_Click(object sender, EventArgs e) {//SQL查询到数据&#xff0c;存于list中List<InforMessage> list bll.QueryInforMessage();//含有字段…...

java八股文复习-----2024/03/05----基础---反射,动态代理。序列化

来源一 大彬八股文 来源二 2023 20W字八股文 2024秋招八股文 1.Java创建对象有几种方式&#xff1f; Java创建对象有以下几种方式&#xff1a; 用new语句创建对象。使用反射&#xff0c;使用Class.newInstance()创建对象。调用对象的clone()方法。运用反序列化手段&#x…...

【人工智能】Anthropic发布强大的Claude3对齐GPT-4,大模型杂谈个人感想

北京时间3月5日&#xff0c;人工智能创业公司Anthropic宣布&#xff0c;推出其突破性的Claude 3系列模型。Claude 3系列包含三个子模型&#xff0c;分别为Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus&#xff0c;它们提供不同程度的智能、速度和成本选择&#xff0c;以满足…...

基于openKylin与RISC-V的MindSpore AI项目实践

项目目标&#xff1a; 在openKylin系统上安装和配置MindSpore框架。开发一个简单的图像分类模型&#xff0c;并在RISC-V平台上进行训练和推理。根据RISC-V的特性&#xff0c;对MindSpore框架进行必要的优化。 目录 项目目标&#xff1a; 训练模型 编写训练代码&#xff0c;设…...

【牛客】VL64 时钟切换

描述 题目描述&#xff1a; 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频&#xff0c;现在要设计一个切换电路&#xff0c;sel选择时候进行切换&#xff0c;要求没有毛刺。 信号示意图&#xff1a; 波形示意图&#xff1a; 输入描述&#xff1a; clk0 clk1为时…...

Java设计模式——桥连模式

桥接模式简单来说就是通过将抽象部分和具体部分分离&#xff0c;使它们可以独立地变化。如果你的一个类存在多个变化维度&#xff08;如抽象和具体的实现&#xff09;。若使用继承来处理这些变化&#xff0c;将会导致类层次结构的急剧增加&#xff0c;难以管理和维护。并且&…...

数据结构与算法:堆排序和TOP-K问题

朋友们大家好&#xff0c;本节内容来到堆的应用&#xff1a;堆排序和topk问题 堆排序 1.堆排序的实现1.1排序 2.TOP-K问题3.向上调整建堆与向下调整建堆3.1对比两种方法的时间复杂度 我们在c语言中已经见到过几种排序&#xff0c;冒泡排序&#xff0c;快速排序&#xff08;qsor…...

【NR 定位】3GPP NR Positioning 5G定位标准解读(三)

目录 前言 5 NG-RAN UE定位架构 5.1 架构 5.2 UE定位操作 5.3 NG-RAN定位操作 5.3.1 通用NG-RAN定位操作 5.3.2 OTDOA定位支持 5.3.3 广播辅助信息支持 5.3.4 NR RAT相关定位支持 5.4 NG-RAN中与UE定位相关的元素功能描述 5.4.1 用户设备&#xff08;UE&#xff09; …...

文件操作与IO(3) 文件内容的读写——数据流

目录 一、流的概念 二、字节流代码演示 1、InputStream read方法 第一个没有参数的版本&#xff1a; 第二个带有byte数组的版本&#xff1a; 第三个版本 搭配Scanner的使用 2、OutputStream write方法 第一个版本&#xff1a; 第二个写入整个数组版本&#xff1a; …...

《PyTorch深度学习实践》第十一讲卷积神经网络进阶

一、 1、卷积核超参数选择困难&#xff0c;自动找到卷积的最佳组合。 2、1x1卷积核&#xff0c;不同通道的信息融合。使用1x1卷积核虽然参数量增加了&#xff0c;但是能够显著的降低计算量(operations) 3、Inception Moudel由4个分支组成&#xff0c;要分清哪些是在Init里定义…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...