Skip to content

Released database/ on Hugging Face contains only 32 entries — retrieval is non-functional with the shipped assets #4

Description

@u7079256

Summary

The database/ directory shipped in the Hugging Face releases (both https://huggingface.co/lycnight/ReMoMask/tree/main/database and https://huggingface.co/AIGeeksGroup/ReMoMask/tree/main/database — identical file sizes) contains exactly 32 entries. The retrieval-augmented pipeline is designed around a database built from every caption of every HumanML3D training motion, which yields tens of thousands of entries when build_rag_database.py is run end to end. As shipped, the database is far too small for the retrieval mechanism to function as described, and it cannot be the corpus that produced the published results.

Affected assets

File sizes as reported by the Hugging Face Hub API (GET /api/models/<repo>?blobs=true), identical across both repos:

file size (bytes)
database/encoded_motions.npy 65,664
database/encoded_texts.npy 65,664
database/all_captions.npy 20,736
database/motion_ids.npy 1,152
database/motion_tokens.npy 6,610
database/tag_lists.npy 640

Expected vs actual behavior

  • Expected: a retrieval database covering the HumanML3D training corpus (tens of thousands of caption-level rows), in the documented format — (N, 1, 512) float32 arrays for encoded_motions.npy / encoded_texts.npy (format description:
    Overview of database files generated after running the script
    File Path Type Description
    database/motion_ids.npy List[str] Names of all motion samples; each item is in the form of motionid_index (e.g., 001_0)
    database/all_captions.npy List[str] Natural language description (caption) corresponding to each motion
    database/encoded_motions.npy np.ndarray (N, 1, D) Vector representation of each motion, obtained from model.encode_motion()
    database/encoded_texts.npy np.ndarray (N, 1, D) Vector representation of each caption, obtained from model.encode_text()
    database/tag_lists.npy List[[float, float]] Optional: Start and end time tags for each motion
    database/motion_tokens.npy Dict[str, np.ndarray] Optional: VQ-VAE token sequence for each motion, used for generation
    '''
    ; array construction and saving:
    motion_embeddings = np.array(motion_embeddings) # (25, 1, 256)
    # motion_embeddings.shape = (25, 1, 256)
    text_embeddings = np.array(text_embeddings) # (25, 1, 256)
    # text_embeddings.shape = (25, 1, 256)
    output_folder = cfg.rag.database_path
    os.makedirs(output_folder, exist_ok=True)
    path = os.path.join(output_folder, "all_captions.npy")
    np.save(path, caption_list)
    path = os.path.join(output_folder, "motion_ids.npy")
    np.save(path, motion_ids)
    path = os.path.join(output_folder, "tag_lists.npy")
    np.save(path, tag_lists)
    path = os.path.join(output_folder, "encoded_motions.npy")
    np.save(path, motion_embeddings)
    print(f"Encoding done, motion latent saved in:\n{path}")
    path = os.path.join(output_folder, "encoded_texts.npy")
    np.save(path, text_embeddings)
    ).
  • Actual: with a 128-byte .npy header, N = (65664 - 128) / (512 * 4) = 32 exactly — the shipped arrays hold 32 rows.

Steps to reproduce

import numpy as np
from huggingface_hub import hf_hub_download
p = hf_hub_download("lycnight/ReMoMask", "database/encoded_motions.npy")
print(np.load(p).shape)   # (32, 1, 512)

Impact

Anyone who downloads the released assets and evaluates the released checkpoints as-is runs retrieval against a 32-entry corpus instead of the intended full training corpus. This silently changes what the retrieval module returns and therefore the resulting generation metrics; it also makes the published numbers non-reproducible from the released assets without first rebuilding the database locally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions