Page MenuHomePhabricator

Cacheta kuvien vertailun tulos
Closed, ResolvedPublic

Description

Cacheta kuvien samanlaisuus vertailun tulokset paikalliseen SQLite tietokantaan jotta kuvien hakemista ei tarvitse tehdä joka kerta kun kuvaa käsitellään.

Tuloksen tallennukseen ja hakemiseen käytetyt arvot

  • url1, url2 = vertailtavien kuvien url-osoitteet
  • hash funktion parametrit jolla arvo on luotu
    • Imagehash:ssa hashin tyyppi ja pituus (ie. phash/dhash ja hashin pituus)
    • open_clip:ssä käytetty malli (modelname ja pretrained)
  • Vertailun tulos

Esimerkkikoodi

Sqlite3:n dokumentaatio

Related Objects

Event Timeline

Zache updated the task description. (Show Details)
Ipr1 changed the task status from Open to In Progress.Oct 2 2023, 10:32 AM

aikaleima

Eli käytännössä on talletettava milloin hashi on laskettu (datetime.now()) ja tarkistettava miten vanha tieto on kyseessä (dt.now() - sql.dt).
Skriptejä voidaan ajaa useita kertoja (päivitetään, korjataan, päivitetään uudestaan) ja se olisi säilöttävä välissä.

Bonuksena voisi tallettaa muita helposti kyseltäviä tietoja (kuvakoko tms. metadataa) josta voidaan myös hoksata että on tarvetta laskea hashit uudelleen.

Aikaleimat pitää tallettaa stringinä (ISO 8601 muoto) koska yhteensopivaa natiivia tyyppiä sqlitellä ja pythonilla ei näytä olevan. Pythonin datetime näyttää sisältävän valmiiksi sopivat funktiot (isoformat(), fromisoformat()) joten tuota ei tarvitse käsin tehdä.

Sqlliten rajapinnassa on "adapteri" (sqlite3.register_adapter(), sqlite3.register_converter()) jolla tuota voineen automatisoida mutta selkeyden vuoksi voi olla parempi ettei käytä noita.

Sqllite näyttää suosivan kursorien käyttöä jota taas lähestulkoon kaikki muut tietokannat suosittelevat välttämään (poislukien Oracle). Tässä tarkoituksessa tuolla ei niin taida olla merkitystä kuitenkaan.

Käytännön huomiona, niin jos tehdään jotain monimutkaisempaa jossa tarvitaan tietokantoja niin käytetään ORM frameworkkinä tulevaisuudessa Djangoa (koska sitä tarvitaan myös muualla, niin sitä on hyödyllistä osata. Se on top3 Python tietokantaframework joka tapauksessa )

Zache triaged this task as Low priority.Oct 9 2023, 7:04 AM

Tehdään tämä Django-projektiin (T348423), niin pistin blockediksi siksi aikaa että saadaan se alkuun, koska jos tehdään kunnollinen tietokanta siitä mitä Commonsissa ja Finnassa on, niin se yksinkertaistaa niiden jäljellä olevien kuvien löytämistä joiden tietoja ei ole vielä tallennettu. Samoin se nopeuttaa sitä, että kun etsitään kuvapareja Commonsin ja Finnan välillä.

Käytännössä varmaan siirrytään Django:lla tehtyyn systeemiin tietojen tallentamisissa, mutta voi olla että niiden skriptien osalta joita meillä on niin voi olla, että käytetään Django-systeemiä pelkästään käsiteltävien kuvien löytämiseen ja itse tietojentallennus tehdään olemassaolevilla skripteillä.