Giter Site home page Giter Site logo

bt_challenge's Introduction

Introduction

E3PO is an Open Platform for 360° video streaming simulation and Evaluation. E3PO is designed to support the simulation of a variety of 360° video streaming approaches that have been proposed so far, including projection based, tile based, or transcoding based. Particularly, E3PO allows users to convert 360° video into standard or customized projections, segment video into equal or adaptive sizes, implement customized motion prediction algorithms, apply different streaming strategies, and evaluate using any user-specific metrics. Most importantly, E3PO generates the actual visual sequences that will display on the user screen for each simulation.

Therefore, E3PO provides a perfect solution to objectively compare the performance of different 360° video streaming approaches, using the same video content and same motion trace.

Framework

The framework of E3PO is illustrated as the following figure, which consists of three principal modules, i.e., the video pre-processor, the streaming simulator and the system evaluator.

To simulate a streaming approach, the video pre-processor first segments the 360° panoramic video into small video tile chunks according to users’ specific projection and tiling parameters. Then the streaming simulator reads the provided head motion trace, and simulates the detailed streaming actions which include when and which video chunk is transmitted. Last, the system evaluator synthesizes the video sequence that is displayed on the user screen and calculates various metrics.

Quick Start

Code & Dataset

  1. Download E3PO code
git clone https://github.com/bytedance/E3PO.git
  1. Video Source
    Prepare a 360° video (which is not included in E3PO repo), rename and place it at /e3po/source/video/[sample].mp4. Note that the file name and video attributions should match the configurations listed in e3po/e3po.yml. We have provided a sample video for particpants of 2024 MMSys Grand Challenge.

  2. Motion Trace
    Prepare a motion trace file and place it at /e3po/source/motion_trace/[motion_trace].log. Note that E3PO has provided a sample file. If you want to use a different one, you can generate one similarly to that from 360VidStr.

Execute commands

To simulate the streaming process, three terminal commands need to be executed sequentially. For example, with the sample simulation E1 we have provided in the project, the following commands should be executed. Note that the approach name as well as the approach type (on_demand or transcoding) should be specified.

  1. Run the make_preprocessing.py script (video pre-processor module)
python ./e3po/make_preprocessing.py -approach_name erp -approach_type on_demand

Corresponding results can be found at

|---e3po
    |---source
        |---video
            |---[group_*]
                |---[video_*]
                    |---[erp]
                        |---video_size.json
                        |---dst_video_folder
                            |---chunk_***_tile_***.mp4
    |---log
        |---[group_*]
            |---[video_*]
                |---erp_make_preprocessing.log
  1. Run the make_decision.py script (streaming simulator module)
python ./e3po/make_decision.py -approach_name erp -approach_type on_demand

Corresponding results can be found at

|---e3po
    |---result
        |---[group_*]
            |---[video_*]
                |---[erp]
                    |---decision.json
    |---log
        |---[group_*]
            |---[video_*]
                |---erp_make_decision.log
  1. Run the make_evaluation.py script (system evaluator module)
python ./e3po/make_evaluation.py -approach_name erp -approach_type on_demand

Corresponding results can be found at

|---e3po
    |---result
        |---[group_*]
            |---[video_*]
                |---[erp]
                    |---evaluation.json
                    |---output_frames
                        |---xxx.png
                        |---output.mp4
    |---log
        |---[group_*]
            |---[video_*]
                |---erp_make_evaluation.log

Examples

We have implemented eight simple but typical approaches, with their detailed descriptions shown in the following table.

Name Projection Background Stream Tiling Resolution
E1 ERP w/o 6x6 -
C1 CMP w/o 6x6 -
C2 CMP w/ 6x6 -
C3 CMP w/ 6x12 -
A1 EAC w/ 6x12 -
F1 (Freedom) ERP w/o 1x1 1680x1120
F2 (Freedom) ERP w/o 1x1 2400x2176
Full ERP w/o 1x1 -

The visual comparison results of these eight approaches are illustrated as the following figure.

For more details, please refer to Tutorial.md.

Contributes

We welcome researchers to simulate their own streaming systems using E3PO and submit their implementation back to this project, so that the community can better compare the performance of different solutions. Users making contributions to E3PO shall meet the following two requirements:

  • The submitted code should be reviewed by the E3PO group.
  • The submitted code should follow the GPL 2.0 License adopted by E3PO.

License

GPL 2.0 License

bt_challenge's People

Contributors

bytedance-e3po avatar honey-e3po avatar zhangtian-ztzt avatar jiu2021 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.