StreamPETR1 / docs /PROJECT_BRIEF.md
Kimhi's picture
Upload StreamPETR EVA-02 source without weights
6a176cb verified
|
Raw
History Blame Contribute Delete
2.48 kB
# Project brief: Temporal Memory Updating for Efficient Camera-only 3D Detection
## Core idea
Camera-only 3D detectors with ViT/EVA-style image backbones repeatedly recompute expensive image features for every timestamp. Existing efficient 3D detection work mostly compresses or prunes current-frame tokens, or propagates sparse object/BEV state. This project instead maintains a dense image-feature memory and updates it between keyframes using partial current-frame computation.
For timestamp `t`:
```text
if keyframe:
M_t = FullEncoder(I_t)
else:
Z_t_l = PartialEncoder(I_t, layer=l)
M_t = MemoryUpdater(M_{t-1}, Z_t_l, ego_motion, optional_metadata)
```
The updated memory `M_t` is then passed to the normal detector neck/head/decoder.
## Intended claim
The intended claim is not simply temporal modeling. The intended claim is:
> Dense multi-view image-token memory can be temporally updated from partial ViT computation, reducing full image-encoder cost while preserving most of the camera-only 3D detection accuracy.
## Baselines
Always compare against:
1. Full detector at every frame.
2. Full detector every `K` frames with naive memory reuse between keyframes.
3. Partial feature only, without previous memory.
4. Proposed memory update.
5. Proposed memory update with feature distillation.
## Supported detectors
This project should work first with RepDETR3D because it already has EVA-02 configurations in the StreamPETR repository. It should be written so the same logic can later be applied to StreamPETR when the desired EVA-02/Vit-L setup is available.
The method should be detector-agnostic at the feature interface level:
```text
images -> backbone/neck features -> detector head/decoder
```
The temporal memory module should intercept the features between backbone/neck and detector head, not rewrite the whole detector.
## Main risks
1. 3D positional encoding may make cached memory geometrically stale after ego-motion.
2. Intermediate ViT features may be too low-level or distribution-shifted for the detector head.
3. The update module may cost enough to erase the speedup.
4. The naive reuse baseline may be surprisingly strong.
5. Freezing most pretrained weights may underfit because the detector receives out-of-distribution mixed features.
## First success criterion
For `K=3` or `K=5`, obtain a better accuracy/latency tradeoff than naive reuse, while retaining a meaningful speedup over full encoding every frame.