HackGT / photo-style

A hackathon themed photobooth using neural style transfer
2 stars 1 forks source link

Documentation #8

Closed joel99 closed 5 years ago

joel99 commented 5 years ago

Let's make photobooth a more sustainable project. Make a confluence document for architecture and other data flow, config, deployment, notes on future development, etc.

joel99 commented 5 years ago

https://wiki.hack.gt/display/TECH/Photobooth+Dev+Doc :tada:

joel99 commented 5 years ago

Public facing photobooth plans (this project is not under maintenance)

Project Specs:
What is Photobooth?

An attraction for people to come and take photos, apply fun image editing (effects, style transfer, augmented inserts), and receive it (email, text, download)
What currently exists? (End of Spring 19)

Github readme for setup
First iteration at Catalyst 2: Frontend static application that applied some smoke particles and texted via Twilio
Iteration at HackGT5 - Spring 19: Local setup on Joel's laptop, Alicia's DSLR, Paperspace server - hardcoded IPs.
Allowed NFC badge tapping for participants to extract email
Took a photo with DSLR at the booth, participants could style on the localhost on the booth laptop
Cons: Difficult to setup, bottlenecked if many participants wanted to style (shoul style on their own time)
Styling information cycled from backend to frontend and back because full res shouldn't be processed on frontend + any additional styling
Photobooth 1.0

Quick Dev notes/Flow

Flask server/client has a thread listening for photo events and/or capture button on client will trigger camera
Photo gets loaded to client, confirming will send to paperspace server for processing
Paperspace will callback with styled payload, low res
Editor will appear, operating on lowres. Holds mask information as state, with canvas layer hackery
NFC is running the whole time, can tap to load email information at any point
Send to email will post the mask info back to the server, which is still holding the last image's full res info in memory (thus multiple email send is a mess).
Server composes full res image and sends gbucket link to email
Photobooth 1.5
More likely MVP

Use booth laptop to preview photos, people can tap their badges and it automatically slacks them a link to the client
Requires a reworked booth client
Create a server that hosts (in memory?) people's photos, as well as editing metadata (i.e. style transferred versions, masks), and serves client
Create a client that allows people to edit their photos in place (at a specific slack link), then request a fullres photo with their edits
Have booth client showcase taken photos (or have a public endpoint that provides a selected list)
(How should this be implemented?)
Make frontend themable, a little less sparse.
Photobooth 2.0
Take away the booth laptop, attach a RPI to a DSLR.
RPI has the NFC scanner, participants preview their photos on the DSLR. RPI can have an additional trigger that stands for "send slack link". 
Incorporate new style transfer models/different photobooth effects
Arda Pekis (Agency, graduating this semester, contact through Joel or Ehsan) has a fun AdAIN application that could use a slider interface.