Instructions to use yqi19/genie_envisioner with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use yqi19/genie_envisioner with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("yqi19/genie_envisioner", dtype=torch.bfloat16, device_map="cuda") prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k" image = pipe(prompt).images[0] - Notebooks
- Google Colab
- Kaggle
| import os | |
| import numpy as np | |
| import pandas as pd | |
| import tqdm | |
| import json | |
| import argparse | |
| def load_data(data_path, key="action"): | |
| data = pd.read_parquet(data_path) | |
| data = np.stack([data[key][i] for i in range(data[key].shape[0])]) | |
| # data = np.stack([data[key][i][0] for i in range(data[key].shape[0])]) | |
| return data | |
| def cal_statistic(data, _filter=True): | |
| q99 = np.percentile(data, 99, axis=0) | |
| q01 = np.percentile(data, 1, axis=0) | |
| if _filter: | |
| data_mask = (data>=q01) & (data <= q99) | |
| data_mask = data_mask.min(axis=1) | |
| data = data[data_mask, :] | |
| means = np.mean(data, axis=0) | |
| stds = np.std(data, axis=0) | |
| return means, stds, q99, q01 | |
| def get_statistics(data_root, data_name, data_type, save_path, action_key="action", state_key="observation.state", nrnd=50000, _filter=True,): | |
| assert(data_type in ["joint", "eef"]) | |
| data_path_list = os.listdir(data_root) | |
| data_path_list.sort() | |
| if nrnd <= len(data_path_list): | |
| data_path_list = np.random.choice(data_path_list, nrnd) | |
| data_list = [] | |
| state_list = [] | |
| delta_data_list = [] | |
| for data_path in tqdm.tqdm(data_path_list): | |
| data = load_data(os.path.join(data_root, data_path), action_key) | |
| data_list.append(data) | |
| delta_data = data[1:] - data[:-1] | |
| delta_data_list.append(delta_data) | |
| state = load_data(os.path.join(data_root, data_path), state_key) | |
| state_list.append(state) | |
| data_list = np.concatenate(data_list, axis=0) | |
| assert(len(data_list.shape)==2) | |
| means, stds, q99, q01 = cal_statistic(data_list, _filter=_filter) | |
| delta_data_list = np.concatenate(delta_data_list, axis=0) | |
| assert(len(delta_data_list.shape)==2) | |
| delta_means, delta_stds, delta_q99, delta_q01 = cal_statistic(delta_data_list, _filter=_filter) | |
| state_list = np.concatenate(state_list, axis=0) | |
| assert(len(state_list.shape)==2) | |
| state_means, state_stds, state_q99, state_q01 = cal_statistic(state_list, _filter=_filter) | |
| ### example: | |
| ### data_name=agibotworld, data_type="joint"/"eef" | |
| ### | |
| ### StatisticInfo = { | |
| ### "agibotworld_joint": { | |
| ### "mean": [ | |
| ### ... | |
| ### ] | |
| ### "std": [ | |
| ### ... | |
| ### ] | |
| ### "agibotworld_delta_joint": { | |
| ### "mean": [ | |
| ### ... | |
| ### ] | |
| ### "std": [ | |
| ### ... | |
| ### ] | |
| ### } | |
| ### "agibotworld_state_joint": { | |
| ### "mean": [ | |
| ### ... | |
| ### ] | |
| ### "std": [ | |
| ### ... | |
| ### ] | |
| ### } | |
| statistics_info = dict({ | |
| data_name+"_"+data_type:dict({ | |
| "mean": means.tolist(), | |
| "std": stds.tolist(), | |
| "q99": q99.tolist(), | |
| "q01": q01.tolist(), | |
| }), | |
| data_name+"_delta_"+data_type:dict({ | |
| "mean": delta_means.tolist(), | |
| "std": delta_stds.tolist(), | |
| "q99": delta_q99.tolist(), | |
| "q01": delta_q01.tolist(), | |
| }), | |
| data_name+"_state_"+data_type:dict({ | |
| "mean": state_means.tolist(), | |
| "std": state_stds.tolist(), | |
| "q99": state_q99.tolist(), | |
| "q01": state_q01.tolist(), | |
| }), | |
| }) | |
| # if os.path.exists(save_path): | |
| # with open(save_path, "r") as f: | |
| # exist_info = json.load(f) | |
| # else: | |
| # exist_info = dict() | |
| # for k in statistics_info.keys(): | |
| # assert k not in exist_info | |
| exist_info = dict() | |
| exist_info.update(statistics_info) | |
| with open(save_path, "w") as f: | |
| json.dump(exist_info, f, indent=4) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('--data_root', default="PATH/TO/YOUR/DATASET") | |
| parser.add_argument('--data_name', default="YOUR_CUSTOM_DATASET") | |
| parser.add_argument('--data_type', default="joints") | |
| parser.add_argument('--action_key', default="action") | |
| parser.add_argument('--state_key', default="observation.state") | |
| parser.add_argument('--save_path', default="PATH/OF/JSON/FILE") | |
| args = parser.parse_args() | |
| get_statistics( | |
| args.data_root, args.data_name, args.data_type, args.save_path, action_key=args.action_key, state_key=args.state_key | |
| ) | |