Slik eksperimenterer vi med å lage episodebilder til NRKs Nett-TV

Kategorier: Hackathon, Nett-tv & NRKTV

Slik vurderer Googles datamaskin innholdet i et bilde av David-statuen Illustrasjon: Ståle Grut med bilde fra Gary Bembridge (CC BY 2.0)

Hva er egentlig TV uten bilder? Slik bruker vi roboter til å finne stillbilder fra video. I 2013 inngikk NRK en avtale med rettighetsorganisasjonen Norwaco om å publisere alt innholdet NRK produserte og sendte før 1997. Dermed har vi de siste årene fylt opp tv.nrk.no med godt over 30 000 gamle programmer. For å kunne gjøre dette innholdet tilgjengelig for publikum raskest mulig, har vi tatt alle snarveiene vi kunne. Én snarvei var å bare legge ut videofilene med tittel og kategori. Ingen fyldig beskrivelse, og ikke minst: Ingen representative bilder. Vi ønsker å gjøre noe med de mange programmene som ser slik ut: pastedImage0 At ikke vi har episodebilder er synd. Fra brukerstudier vet vi at veldig mange brukere orienterer seg visuelt når de blar i innholdskatalogen. Bildet er en viktig og rask måte for å forstå om det aktuelle programmet er noe brukeren ønsker å se nærmere på. Det gjør også at tittelen i større grad kan være kort og konsis, da summen av bilde og tittel sier mye (og ofte nok) om innholdet. Å åpne et program, lagre skjermskudd, laste opp, og sette inn mer enn 30.000 bilder, er en stor jobb. Veldig stor jobb. Når vi i etterkant har løftet opp enkeltinnhold redaksjonelt, f.eks. gjennom ukens arkiv, har vi lagt til bilder på serien. Men ofte ikke et eget bilde per episode. Dette førte til at en liten gjeng programmerere ønsket å gjøre noe med det under en av våre interne innovasjonsdager – vi ville prøve å lage en virtuell robotarmé som kan læres opp til å gjøre grovsorteringen.

Motivasjon

Vi vil fortsatt at mennesker velger bildene, fordi resultatet blir bedre enn det maskiner får til på egenhånd.  På innovasjonsdagene denne måneden prøvde vi å skape et Tinder-aktig grensesnitt som viser automatisk genererte potensielle bilder. Den som skal velge et programbilde vil dermed kunne få god assistanse i arbeidet med å gi alle programmer et representativt bilde. Det er tre grunner til at vi ville prøve dette:

    • I NRKs nett-tv har vi veldig mange programmer uten bilde. Vi viser et såkalt boblebilde når vi ikke har det, men dette gir ikke den beste brukeropplevelsen i søket vårt for eksempel:

pastedImage0-1

    • Produksjonen av episodebilder er i dag en manuell prosess. Flinke NRKere spoler i video, finner noe representativt og lagrer så bildet etter noe bildebehandling. Vi ønsker å gjøre denne prosessen vesentlig mer effektiv.
    • Episodebildene dukker opp i mange ulike sammenhenger og kontekster, så vi ønsker å unngå såkalt «eksplisitte» episodebilder. Å unngå nakenhet viste seg å være en interessant reise; la oss starte med å snakke om den:

Hva er et upassende bilde?

      Vi startet med å se hva automatiske tjenester kunne gjøre for oss. Mange av dagens skymakere har begynt å tilby bildegjenkjenningstjenester, inkludert Google. Det fungerer slik at man laster opp et bilde og får metadata tilbake. Metadata kan inkludere objekter (bil, båt), ansikter og informasjon om dette er “egnet” innhold. Men hvor går egentlig grensen mellom et bilde som står fint sammen med NRKs lørdagsunderholdning og “voksent innhold”? Utstyrt med bildesøk (og “inkognito-modus”) startet vi å undersøke… I undersøkelsen har vi brukt webgrensesnittet

Google Cloud Vision

      . Du laster opp et bilde og får forskjellig faner med informasjon. Her har vi prøvd med et bikini-bilde. 
      Bikini Safe Search innsikt

          Bikini Safe Search lest av Google Cloud Vision Foto:

      Yjenith/Wikipedia

          (CC-BY-SA 2.0)
      Under “Safe Search” kan vi se at bildet ikke slår spesielt mye ut i “adult” kategorien; det slår altså ikke ut som pornografisk. Her er bildet med litt annen metadata:
      92 % påkledd, foto: https://no.wikipedia.org/wiki/Bikini_(klesplagg)#/media/File:Bikini_girls.jpg

          92 % påkledd Foto:

      Yjenith/Wikipedia

          (CC-BY-SA 2.0)
      Ting ser ut til å stemme ganske bra – men er de virkelig 92% påkledd?

Vi går videre til nakne statuer i Firenze.

      Michelangelo David, foto: https://pixabay.com/static/uploads/photo/2014/09/12/17/06/rome-443045_960_720.jpg

          Michelangelos David-statue i Firenze Foto:

      Pixabay

        Den klassiske Davidstatuen er også trygg: En tissefant er altså ikke nok til å vippe Google av pinnen. Til slutt gikk turen til å prøve på vårt eget innhold.

    Trekant

        var en serie om sex for ungdom for en tid tilbake i NRKs folkeopplysningsånd.
        Foto: NRK

            Foto: NRK

    Her gikk det verre. Selv om menneskene på dette bildet kanskje er de mest påkledde hittil, er det sannsynligvis noe med arrangeringen av kropper som får transistorene hos Google til å holde seg for øya. Vi har også testet med Microsofts API. De har en fleksibel tilnærming til upassende bilder. APIet har fire felter som sier noe om temaet “voksent innhold”. De er isAdultContent, isRacyContent, adultScore og racyScore. “Racy” oversettes kanskje best med «pikant». Hvis vi prøver bildet fra Trekant, gir Microsoft ut følgende:

    «adult»: {
       «isAdultContent»: false,
       «isRacyContent»: true,
       «adultScore»: 0.43682640790939331,
       «racyScore»: 0.7039603590965271
     },

    De er mye mer liberale enn Google, og sier at det er racy, men ikke adult content. Dette gir oss mer granulær informasjon og vi kan kombinere flere faktorer til å markere upassende bilder. Google synes David-statuen er ok, men Microsoft setter ned foten:

    «adult»: {
       «isAdultContent»: true,
       «isRacyContent»: true,
       «adultScore»: 0.60565650463104248,
       «racyScore»: 0.64149504899978638
     },

    Selv om APIet setter følgende caption på bildet: ”a statue of a man standing in front of a building”, blir bildet av denne klassiske statuen for drøyt for Microsoft Computer Vision.

    Konklusjon på nakenhets-sporet:

    Det er ikke nakenhet som sådan som blir klassifisert som “voksent innhold”, men antydningen om seksuell adferd. Vi får forskjellige konklusjoner om bildene, avhengig av hvem vi spør. Dette sier oss at APIene kan gi verdifull tilleggsinformasjon, men ikke automatisk plukke SFW-bilder for oss.

    Å skape et verktøy

    Så er det den tekniske biten med hvordan vi kan skape et godt verktøy for å effektivisere produksjonen av episodebilder. Vi kom fort fram til at det måtte tre komponenter til:

    • Hente ut kandidatbilder fra video: Heldigvis har vi en komponent basert på Ffmpeg som kan generere bilder fra videoarkivet. Denne ble satt på jobben med å hente ut bilder for de programmene som ennå ikke har episodebilde.

    Illustrasjon av komponent for uthenting av bilder
    Illustrasjon av komponent for uthenting av bilder
    • Analysere kandidatbilder, plukke ut gode forslag: En ny komponent ble laget som tok de genererte stillbildene, lastet dem opp til Azure cognitive services og plukket de fem første bildene med mennesker på. Vi skal nok gjøre utvelgelsen smartere etterhvert, men i første omgang går vi etter feriebildeprinsippet: “ta bilder med folk du kjenner foran de gamle steinene, ikke bare bilder av gammel stein”.

    Komponent for å analysere bilder ved hjelp av nett-skyen
    Komponent for å analysere bilder ved hjelp av nett-skyen
    • Webgrensesnitt for utvelgelse av bilder: Grensesnittet fungerer veldig enkelt ved at man får forslag – både tilfeldig valgte bilder og de som har vært gjennom den automatiske bildeanalysen:

    Fra NRKs Filmmagasinet 1. desember 1966 Foto: NRK
    Fra NRKs Filmmagasinet 1. desember 1966 Foto: NRK
    Hva som er det beste bildet, må arkiv- eller bildeansvarlig avgjøre, men her ser vi både gjest Francois Truffaut og programleder Arne Hestenes. Normalt skal gjesten være fokuspunktet i et intervju og man står da igjen med to reelle kandidater å velge mellom, ettersom de to svarte bildene, programlederen og bildet hvor Truffaut ser ned er mindre egnet. Klikker man et bilde blir det lagret til vår interne bildetjeneste, og en referanse sendes til APIet som ligger bak tv.nrk.no. Sluttresultatet blir slik hos brukeren: pastedImage0-3

    Både det fine nye episodebildet og Intervjuet med Truffaut fra 1966 om hans verker og strømninger innen filmen kan du se i vår Nett-TV.

    Det var alt så langt

    Dette er hva vi fikk til på to innovasjonsdager hos NRK Medieutvikling. Det er mye igjen å gjøre, som muligheten til å velge utsnitt, få det ut i produksjonssystemene osv. Men vi har allerede hatt et møte med kollegaer i arkiv-avdelingen, og de ser absolutt potensialet for at dette verktøyet kan lette arbeidet. Hva synes dere, hvor irriterende er egentlig boblebilder? Og hvilken innholdsinformasjon om arkivprogrammer er viktigst for dere?

    28 kommentarer

    1. Kjetil Bugge Kristoffersen

      Oioi, kult, hva med å trene maskinlæringsalgoritmer med alle episodebildene dere alt har, som er manuelt valgt av redaktører, og se hvordan den algoritmen ville valgt bilder om man tok et bilde hvert halve eller hvert hele minutt?

      Svar på denne kommentaren

      • Kul idé. Det hadde vært morsomt å teste. Jeg ser en umiddelbar utfordring med at datasettet vi sitter på kun har positive data (riktige programbilder). Maskinlæring fungerer best om han har et stort sett med både positive og negative eksempler. Vi kunne selvsagt gjort en jobb med å generere opp mange negative eksempler (dårlige programbilder), og så dytta alt igjennom en treningsjobb.

        Men da har vi fortsatt et problem. Hvordan skal vi vite om vi skal velge bilde av gjesten over programlederen? Kan en maskinlæringsalgoritme se dette? Ikke fra kun bildene.

        Om vi visste hvordan programlederne så ut i utgangspunktet kunne vi kanskje fått det til. Det vet ikke. Kanskje noe vi kan finne ut med en initiell maskinlæringsjobb? Tja. Vi kan jo tenke oss at en person som er med i alle episodene av en serie sannsynligvis er programleder. Og så knyttet alle serie-ider til en (eller flere) programleder-bilder. Og så latt alle bilder som ligner på programleder-bilder telle negativt.

        Men hva så med enkeltstående programmer? Hvem er programleder der? Hehe, det baller fort på seg. Men kanskje det hadde fungert? Mye moro man kan få til med maskinlæring.

        (FYI, jeg var ikke en del av dette prosjektet, men jobber på andre maskinlæringsprosjekter i NRK)

      • bra svar, på ett forholdsvis enkelt spørsmål med eksepsjonellt vanskelige svaralternativer 😉

        men

        »
        Maskinlæring fungerer best om han har et stort sett med både positive og negative eksempler.
        »

        her må jeg si: neppe. og: feil. i hvert fall i en del tilfeller.

        det du da snakker om er «supervised learning». alternativet er «unsupervised».

        ovenstående oppgave kan løses ved bruk av begge. den delen som går på «identifiser faste personer» for eks, kan «lett» gjøres unsupervised, mens «er dette bildet ett bra front-bilde?» er fort litt mer «supervised».

        utrolig bra anvendelse av denne teknologien, og så langt jeg har sett, langt foran mange, som for eks. Telenor Research som internt kun har satt opp noen gamle demo-prosjekter fra MS/Google som ligger åpent på github mfl. for å vise hva man kan få til.

        og Telenor har jo gått all-in med å åpne AI-Research sammen med SINTEF og NTNU. litt for sent, og i beste tilfelle på høyde med en variant av «hvordan kan vi bruke dette?» som demonstrert her.

      • Godt poeng. Veldig unøyaktig formulering av meg der. Kjenner til unsupervised learning, men ikke hvordan man bruker det til klassifiseringsproblemer. Har kun brukt det til clustering selv.

        Kan du forklare hvordan du ville brukt unsupervised learning til å løse dette?

      • «alle» er litt upresise her ja. men «veldig unøyaktig» var det neppe. så streng vil jeg ikke være 😉

        men nei «dette» er ikke noen unsupervised oppgave alene. deler av det kan være dog.

        som jeg skiller forholdsvis tydelig på i opprinnelig innlegg.

        eksemplet med å skille «person» (ansikt/kropp) fra «annet» i bilder er en helt ok unsupervised variant.

        å faktisk identifisere noen, utover å si «dette er samme person jeg så i sted» kan fort være/bli en supervised variant. dog så blir også dette eksemplet noe konstruert siden det er avhengig av data man forer inn.

        det er ikke umulig (i hvert fall teoretisk) å kunne klare å lære navn på personer (fortsatt med deres eksempel på hode-TV), basert på annet kontekstuelt innhold ved siden av selve bildet. tekst/lyd vil kunne indentifisere ved gjentagelser etc, og som sådann være mulig å pinpointe tryne med navn ved unsupervised læring.

        forsøker man ett annet eksempel hvor man ikke har så mye preg av hode-tv så vil selvfølgelig dette feile.

        men i essens er dette ikke en problemstlling for dere, siden dere kjører en «applied» variant, og forsøker ikke bygge egne AIer som er spesialtrent for deres bruk.

        det litt mer interessante er jo hva google, failbook og MS har på kammerset, spesielt mtp. hvilke ressurser de har tilgjengelig, når de slipper slike ting ut i det fri. og nei det er ikke paranoid el. jeg bare sier at denne teknologien er allerede «gammel» når den er sluppet i det fri.

      • Vincent Reilly (svar til Øyvind Holmstad)

        Det har vært lenge rutine å supre navnet første gang en person vises på TV. Ikke like ofte, med også med tittel, som reporter, programsekretær og lignende. Kanskje kunne slikt info supplere? ( ville krevd oftere sampling, f. eks hvert 5. sek, men de uten tekst kunne man filtrere bort?).

      • Erlend Wiig (NRK) (svar til Aksel)

        Vi har sett litt på Tensorflow i et annet relatert prosjekt, men brukte skyløsning i dette tilfellet fordi det er så enkelt og man får ganske gode data tilbake. Tensorflow krever en god del innsats å sette opp, sånn sett er det veldig deilig å bruke et api.

      • jeg tenkte det samme.

        gi folk mulighet til å ta «bilder» av det de ser og «foreslå» det som «front-bilde».

        bruk så AI eller annet til å se nærmere på det faktiske bilde (som dere allerede gjør). tidskode og nærhet i tid for eks. er «samme bilde», og man kunne gitt mange nok forslag nådd en eller annen slags konsensus.

        på den annen side: med så mye programmer og så få folk som det fort kan ha nedslagsfelt på innimellom, så er det vel heller tvilsomt om det gir noe gevinst.

        det som derimot er ett alternativ er å døtte hele jævla shaiten av lyd igjennom en (ja jeg vet de er lugubre) lyd-til-tekst, så en variant over temaet «hva hva essensen i denne teksten», for deretter å repetere denne bilde-deteksjonen og forsøke å identifisere bilder med essensen identifisert i teksten.

        en fordel med siste alternativet er jo at dere med stor sannsynlighet også vil kunne øke søkbarheten i programmene, selv med en lugubur lyd-til-tekst analyse.

      • reerrte (svar til lkjh)

        gjorde en liten test. sånn for moro skyld, dette er basert på 30 sekunder fra ett eller annet radioprogram nylig.

        testen er gjort ved å avspille lyden fra radio på en bærbars høyttaler, og så klikke på «hør etter»-knappen på Googles demo-side.

        dårlig lyd ut, og dårlig lyd inn, med andre ord.

        deres oppgave er basert på denne teksten å identifisere programmet, og innslaget 😉

        »
        Ja nå skal vi snakke om overgrep mot barn voldtekt og abort som reagerer på dette er ditt kan gå til et safe and Save the content som høres det allerede ut på den amerikanske utdanningsinstitusjoner Det er en del av en 300 amerikanske universiteter hvor studenter krever å bli skjermet fra krenkende rasistisk eller tematisere Automatikk og diskusjon og fenomener blitt så omfattende faktisk at
        »

        en til:
        »
        og ansette folk midlertidig i inntil ett år uten at de vikarierer for noen og det førte til protester fra fagbevegelsen som husker også en og en nasjonal streik til flere fagforeninger eksamen for å i samme å legge ned arbeidet med ny lov ble gjennomført og nå ett år etter sitter leder i arbeidsgiverorganisasjonen virke og er ganske så fornøyd Vibeke Hammer Madsen administrerende direktør i virke på fordi at tallene
        «

      • Et lignende eksempel:

        Ved Nasjonalbiblioteket blir eldgamle aviser, dels i gotisk skrift, skannet og sendt gjenom tekst-gjenkjenning («OCR», Optical Character Recognition, selv om det i dag ikke har noe som helst med ‘optisk’ å gjøre!). Med flekkete aviser, merkelige skrifttyper og en ortografi som gjør at ordboka bare gir delvis hjelp, blir feilprosenten svært høy. Men selv om bare 85% av teksten i en artikkel gjenkjennes automatisk, blir det ansett som ‘godt nok’ for fritekst-søkingen i avisarkivet.

        En del av grunnen er at de aller fleste ord brukes flere ganger i løpet av artikkelen, og om et gitt ord ikke ble gjenkjent på linje 3, knaskje det ble gjenkjent på linje 14, slik at et fritekst-søk stadig likevel finner fram til denne artikkelen. Det skal mye uflaks til dersom et ord er uleselig samtlige steder der det brukes!

        Også dette er mer enn godt nok.

        Super-ambisisøse IT-folk (jeg er IT-mann selv :-)) har ofte en ambisjon om å gjøre det perfekte selv der det overhodet ikke er behov for det, eller det bare gir en hel marginal forbedring i nytteverdien.

      • Erlend Wiig (NRK) (svar til lkjh)

        Vi har en annen på avdelingen som har sett litt på tekst-til-lyd med tanke på uthenting av metadata av programmer. Det var litt eksperimentering med Google sitt verktøy som i en del tilfeller ga mye tilbake, i hvert fall godt nok. Den bommet dog helt på nynorsk, men det kommer vel etterhvert.

        Liker tankene dine om en slags «triangulering» av hvor egnet bilde er basert på lyd. En bakdel der er at programmer som «ut i naturen» ikke nødvendigvis best representeres med et bilde av folk.

        Vi har også tenkt å trekke lignende informasjon ut fra undertekstene, men på veldig mye av arkivstoffet vårt har vi ikke dem..

      • altså jeg er mer opptatt av bakdel enn av fordel. men du mente kanskje «ulempe»? 😉

        men jeg var muligens litt uklar…

        det jeg forsøkte å si var omtrent følgende:

        * trekk ut «tekst» av lyd
        * «indekser» tekst (bry dere ikke om skitt, det vil forsvinne uansett)
        * bruk essens av tekst til å finne relevant bilde

        gitt ovenstående så vil man kunne si at ett gitt program handler om X basert på lyd til tekst.

        gitt denne teksten; kan man finne noe bilder blant denne serien av bilder man har dumpet (fra samme program) som inneholder essensen av teksten.

        voila man har funnet en eller flere kandidater til front-bilder.

        som en slapp bonus har man også klart å opparbeide ett fett arkivsøk!

        som dere kan se av «eksemplene» jeg har gitt ovenfor med tekst-til-tale så er det mer enn godt nok til å kunne si noe om det faktiske innholdet og som sådann kunne gi meg søk av typen «gi meg alle programmer hvor man snakker om midlertidige ansettelser siste år».

        nå er jeg så nær å faktisk gjøre en jobb for dere, at om jeg skal være mer nøyaktig, så får dere ringe meg. høsten er snart over 😉

      • Erlend Wiig (NRK) (svar til fasdg)

        Hehe, takk skal du ha, det finnes muligheter for ansettelse hvis du har lyst til å sende en søknad/CV?

    2. Hva med å få litt hjelp av publikum her – la de som ser bestemme hvilket bilde som passer best? Crowdsourcing er tingen 🙂

      Steg 1: La det mest populære bildet etter at 10 brukere har valgt bli et ja/nei valg for en NRK-ansatt. Da har man effektivisert prosessen.
      Steg 2: La det mest populære bildet bli valgt, og legg inn en rapporter-knapp hvis det er upassende.

      Svar på denne kommentaren

    3. Netflix har kanskje litt annet seermønster enn NRK, men de har gjort mye jobb med programbilder. Når det er sagt kunne kanskje en løsning der deres forslag til bilder vises *etter* programmet er ferdig (når typisk rating burde foregå også). Har du et boblebilde og programmet er ferdig? Vis noen genererte bilder på siden og spør «Hvilket bilde oppsummerer det du så?» Velg vinneren, og vips. 🙂

      http://techblog.netflix.com/2016/05/selecting-best-artwork-for-videos.html

      Svar på denne kommentaren

    4. For å svare på nest siste spørsmål direkte, så for meg er boblebilder svært lite interessante og gjør at jeg fort hopper videre til neste program med bilde, for å se om det kan være mer interessant.

      Svar på denne kommentaren

      • Kjartan Michalsen (NRK) (svar til Vegar)

        Og der er du ikke alene, så derfor er dette prosjektet så gøy å gjøre – da vi ser det har effekt på hva folk får lyst til å se. Takk for tilbakemelding, vi setter stor pris på det!

    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.