Predicting where you'll look in a 360° video
A neural network that predicts where a viewer will look next in a 360° video, so only that part has to stream in full quality.
I did this as a researcher at UMass Amherst, from May to August 2018. A 360° video needs 4 to 6 times the bandwidth of a normal one, but you only ever see a slice of it, about 120° across and 55° tall. If the player could guess where you'll turn, it could stream that slice in full quality and the rest at lower quality.
I built a model to make that guess, a sequence-to-sequence LSTM in PyTorch. That's a kind of network that reads one sequence and writes another. I first tried two simpler networks, a plain LSTM and a GRU, as a classification problem, then switched to the encoder and decoder design, since it fits a sequence better.
It takes the last 120 frames of where a viewer's head pointed, plus a precomputed saliency map for each frame, which is a heat map of what in the picture draws the eye. Then it guesses the next 120 frames. Each guess names one of 32 tiles in a 4 by 8 grid laid over the video.
The data came from a public head-movement study with 57 participants, and I trained on its rollercoaster video. Head rotations came as quaternions, four numbers that describe a turn in 3D, and I wrote the math that maps them onto a flat video frame by hand. Now and then a point came out as NaN, short for "not a number," which my README from that summer calls "just a math issue."
The first item on the README's to-do list, a core part of the idea that I hadn't built yet, was to give the decoder the saliency maps for the frames it's predicting.
Stack

Text mePaul Mikulskis
(617) 599-0775If this sounds like your situation, tell me what's going on.
This number usually answers in a minute or two, in my voice, and every conversation comes straight to me.
Text (617) 599-0775