mirror of
https://github.com/huggingface/lerobot.git
synced 2026-06-01 03:11:29 +00:00
* refactor(processors): reorder processor steps for consistency across implementations - Updated the order of processor steps in multiple files to ensure consistency, placing AddBatchDimensionProcessorStep and DeviceProcessorStep before NormalizerProcessorStep. - Adjusted related test assertions to reflect the new order of steps in the preprocessor, enhancing clarity and maintainability. * refactor(normalization): remove dtype specification in tensor conversion for adaptation logic - Updated tensor conversion in the _NormalizationMixin class to remove explicit dtype specification, allowing for automatic adaptation of tensor types. - Adjusted related tests to ensure proper functionality with the new tensor conversion logic, verifying that normalizers adapt correctly to input types.
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
|
|
# Copyright 2024 Tony Z. Zhao and The HuggingFace Inc. team. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
import torch
|
|
|
|
from lerobot.constants import POLICY_POSTPROCESSOR_DEFAULT_NAME, POLICY_PREPROCESSOR_DEFAULT_NAME
|
|
from lerobot.policies.act.configuration_act import ACTConfig
|
|
from lerobot.processor import (
|
|
AddBatchDimensionProcessorStep,
|
|
DeviceProcessorStep,
|
|
NormalizerProcessorStep,
|
|
PolicyProcessorPipeline,
|
|
ProcessorKwargs,
|
|
RenameProcessorStep,
|
|
UnnormalizerProcessorStep,
|
|
)
|
|
|
|
|
|
def make_act_pre_post_processors(
|
|
config: ACTConfig,
|
|
dataset_stats: dict[str, dict[str, torch.Tensor]] | None = None,
|
|
preprocessor_kwargs: ProcessorKwargs | None = None,
|
|
postprocessor_kwargs: ProcessorKwargs | None = None,
|
|
) -> tuple[PolicyProcessorPipeline, PolicyProcessorPipeline]:
|
|
if preprocessor_kwargs is None:
|
|
preprocessor_kwargs = {}
|
|
if postprocessor_kwargs is None:
|
|
postprocessor_kwargs = {}
|
|
|
|
input_steps = [
|
|
RenameProcessorStep(rename_map={}),
|
|
AddBatchDimensionProcessorStep(),
|
|
DeviceProcessorStep(device=config.device),
|
|
NormalizerProcessorStep(
|
|
features={**config.input_features, **config.output_features},
|
|
norm_map=config.normalization_mapping,
|
|
stats=dataset_stats,
|
|
device=config.device,
|
|
),
|
|
]
|
|
output_steps = [
|
|
DeviceProcessorStep(device="cpu"),
|
|
UnnormalizerProcessorStep(
|
|
features=config.output_features, norm_map=config.normalization_mapping, stats=dataset_stats
|
|
),
|
|
]
|
|
|
|
return (
|
|
PolicyProcessorPipeline(
|
|
steps=input_steps,
|
|
name=POLICY_PREPROCESSOR_DEFAULT_NAME,
|
|
**preprocessor_kwargs,
|
|
),
|
|
PolicyProcessorPipeline(
|
|
steps=output_steps,
|
|
name=POLICY_POSTPROCESSOR_DEFAULT_NAME,
|
|
**postprocessor_kwargs,
|
|
),
|
|
)
|