<div class="index">
<div class="banner text-center">
  <h2 class="subtitle">
    Scanner is a distributed system for building <b>efficient</b> video processing applications that <b>scale.</b>
  </h2>
  <a href="/guide.html" class="btn btn-primary outline btn-lg">
    Get started
  </a>
  <!-- <a href="/overview.html" class="btn btn-primary outline btn-lg">
       Explain it to me
       </a> -->
</div>

<h3>
  Standard library of video processing functions
</h3>
<div class="row">
  <div class="col-md-4 col-sm-12">
    <h4>Face Detection</h4>
    <a href="/api/scannertools.html#face-detection">
      <img src="_static/face_detection.jpg" class="round-border-img float-left img-fluid" alt="...">
    </a>
  </div>
  <div class="col-md-4 col-sm-12">
    <h4>Pose Detection</h4>
    <a href="/api/scannertools.html#pose-detection">
      <img src="_static/pose_detection.jpg" class="round-border-img float-left img-fluid" alt="...">
    </a>
  </div>
  <div class="col-md-4 col-sm-12">
    <h4>Object Detection</h4>
    <a href="/api/scannertools.html#object-detection">
      <img src="_static/object_detection.jpg" class="round-border-img float-left img-fluid" alt="...">
    </a>
  </div>
</div>

<div style="margin-top: 10px; margin-bottom: 20px;">
  <a href="/api.html#scannertools-the-scanner-standard-library" class="btn btn-primary outline btn-sm">
    And more, with scannertools
  </a>
</div>

<div class="row">
  <div class="col-md-6 col-sm-12">
    <h3>
      Simple Python API
    </h3>
    <div class="code-container">
      <table>
        <tbody>
          <tr>
            <td>
              <pre class="hljs"><code class="python">import scannerpy as sp
import scannertools.face_detection
import scannertools.vis

def main():
  # Compute face bounding boxes and draw them on a sample video
  with sp.util.sample_video() as video_path:
    cl = sp.Client()
    video = sp.NamedVideoStream(cl, 'example', path=video_path)
    frames = cl.io.Input([video])
    faces = cl.ops.MTCNNDetectFaces(frame=frames)
    drawn_faces = cl.ops.DrawBboxes(frame=frames, bboxes=faces)
    output_video = sp.NamedVideoStream(cl, 'example_faces')
    output_op = cl.io.Output(drawn_faces, [output_video])
    cl.run(output_op, sp.PerfParams.estimate())
    output_video.save_mp4('example_faces')
    # output video is saved to 'example_faces.mp4'

if __name__ == "__main__":
    main()
</code></pre>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>

  <div class="col-md-6 col-sm-12">
    <h3>
      Designed for Performance
    </h3>
    <div>
      <h4>
        1. Never convert your videos into images again
      </h4>
      <p>
      Scanner provides native compressed video support, which enables directly accessing compressed videos to keep your storage and bandwidth costs low.
      </p>
    </div>
    <div>
      <h4>
        2. First-class support for GPUs
      </h4>
      <p>
        Scanner supports machines with CPUs and GPUs out of the box so that you can make the most out of your hardware.
      </p>
    </div>
    <div>
      <h4>
        3. Cloud & cluster ready
      </h4>
      <p>
        Scanner is integrated with Kubernetes, Google Cloud Platform, and AWS to make it easy to spin up machines to get your results back faster.
      </p>
    </div>
  </div>
</div>


<div style="margin-bottom: 20px;">
  <a href="/guide.html" class="btn btn-primary outline btn-sm">
    Check out this example and more
  </a>
</div>


<h3>
  Scanner in Production
</h3>

<div class="row">
  <div class="col-md-6 col-xs-12">
    <h4>
     Analyzing 200,000 hours of TV news
    </h4>
    <p>
      Scanner makes it much easier to analyze large video datasets to extract trends and statistics that rely on the content of the videos, instead of just the metadata. For example, we have been able to use Scanner to analyze every cable TV news show aired for a decade to understand representation in the media.
    </p>
    <img src="_static/tvnews_host_narcissism.jpg" />
  </div>

  <div class="col-md-6 col-xs-12">
    <h4>
      Facebook's Manifold VR Camera
    </h4>
    <p>
      Scanner is currently being used as the compute engine behind the <a href="https://facebook360.fb.com/2018/09/26/film-the-future-with-red-and-facebook-360/">Manifold</a> 360 video camera from Facebook and RED. Scanner has also been integrated into the open-source version of the previous generation Surround 360 system on <a href="https://github.com/scanner-research/Surround360">GitHub</a>.
    </p>
    <div class="homepage-video">
      <iframe style="position: absolute; top: 0; left: 0;" src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FFacebook360%2Fvideos%2F370097893531240%2F%3Ft%3D0&&show_text=false" width="100%" height="100%" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media" allowFullScreen="true"></iframe>
    </div>
  </div>
</div>
</div>
