"Pyyhkäisy- ja napautuseleiden tunnistusalgoritmi B1-, B2-, F8-, K7-, KF1-, L5-, P2-, Q6-, Q8-, T2- ja Y6-lukukynien laiteohjelmistossa, sisältäen mallipohjaisen pisteytyksen, kynnysarvojen hienosäädön ja OEM-hyväksymiskriteerit.

Lähetetty: heinä 13, 2023 - 98 Näyttökerrat

Lukukynän eleiden tunnistusalgoritmi: Miten pyyhkäisyt ja napautukset muuttuvat käyttöliittymäkomennoiksi

Kohderyhmä: Tämä artikkeli on suunnattu laiteohjelmistosuunnittelijoille, käyttökokemussuunnittelijoille ja OEM-tuotepäälliköille, joiden on ymmärrettävä mallien B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 ja Y6 lukulaitteissa toimiva eleentunnistusalgoritmi. Oletuksena on, että suunnittelet mukautettua valikko-käyttöliittymää tai arvioit, miten eleet lisätään olemassa olevaan sanakirjasovellukseen, ja tarvitset tiedot tunnistustarkkuudesta, viiveestä ja suorittimen kuormituksesta.

Lukulaitteen ele on 30 ms – 500 ms aikana kerätty kosketusnäytteiden sarja. Laiteohjelmisto muuntaa näytteet diskreettiksi elekoodiksi (TAP, SWIPE_LEFT, SWIPE_RIGHT, SWIPE_UP, SWIPE_DOWN, LONG_PRESS, DOUBLE_TAP, CIRCLE), jonka sovelluskerros yhdistää käyttöliittymätoimintoon. Muunnos on riittävän kevyt toimiakseen kaikissa 11 mallissa, mutta se on viritetty mallikohtaisesti, koska anturin resoluutio, näytteenottotaajuus ja isäntä-CPU:n varaama budjetti vaihtelevat. Tässä artikkelissa käsitellään algoritmi, viritysluvut ja vikatilat, jotka ostajien on huomioitava.

1. Eleiden sanasto

Kaikissa 11 toimittamassamme mallissa eleiden sanasto on yhdenmukainen:

Ele Näyteikkuna Käytössä malleissa
TAP 30 ms – 250 ms kosketus + irrotus Kaikki 11 mallia (vyöhykorimaidien malleissa painikkein korvattuna)
LONG_PRESS 600 ms – 2000 ms jatkuva kosketus K7, KF1, L5, Q8, T2
DOUBLE_TAP Kaksi napautusta 300 ms sisällä L5, Q8, T2
SWIPE_LEFT / RIGHT 50 ms – 250 ms jatkuva veto, ≥ 8 mm K7, KF1, L5, Q8, T2
SWIPE_UP / DOWN Sama, pystyakon L5, Q8, T2 (ainoastaan)
CIRCLE Suljettu silmukka, ≥ 12 mm ympärysmitta Q8, T2 (premium-ominaisuus)

Yksinkertaisen vyöhykoriman mallit (B1, B2, F8, P2, Q6, Y6) eivät tue eleitä lainkaan, koska niissä ei ole 2D-kosketusanturia. Ne korvaavat sen 4–8 erillisellä painikevyöhykkeellä. Tämä artikkeli keskittyy matriisimalleihin.

2. Algoritmin putki

Eleentunnistusalgoritmi toimii neljässä vaiheessa. Jokaisella vaiheella on kiinteä CPU-budjetti; jos jokin vaihe ylittää budjettinsa, ele hylätään (käskyä ei anneta) väärintunnistuksen sijaan.

Vaihe 1: Näytteenotto. Kosketusohjain ilmoittaa koordinaatit 80 Hz – 120 Hz taajuudella. Isäntä-MCU lukee ne I2C-väylällä 100 kHz – 400 kHz nopeudella malleissa K7/KF1/L5 ja SPI-väylällä 10 MHz nopeudella malleissa Q8/T2. Jokainen näyte on monikko (x, y, t).

Vaihe 2: Värähtelyn vaimennus ja poikkeavien hylkäys. Kaksi 4 mm ja 20 ms sisällä olevaa näytettä yhdistetään yhdeksi. Näyte, joka poikkeaa yli 12 mm juoksevasta keskipisteestä, hylätään poikkeavana. Tämä vaihe kestää 0,4 ms näytettä kohden L5-mallissa.

Vaihe 3: Piirteiden erotus. Puhdistetusta näytevirrasta lasketaan 7 piirrettä: kokonaispoikkeama, kokonaispolun pituus, keskinopeus, huippunopeus, vallitseva suuntakulma, kaarevuus ja kesto. Nämä ovat luokittelijan syötteitä.

Vaihe 4: Luokittelu. Käytämme mallipohjaista vertailulaskinta 6 suuntapyyhkäisylle ja tilakonetta aikasidonnaisille eleille (TAP, LONG_PRESS, DOUBLE_TAP). Tilakone ja mallivertailulaskin kuluttavat yhteensä 1,6 ms elettä kohden L5-mallissa.

Kokonaisbudjetti elettä kohden L5-mallissa: 0,4 + 1,6 + vaiheen 4 luokittelu = 2,4 ms, minkä lisäksi keskeytyskäsittelyn yleiskustannus, jättää 6 ms marginaalin ennen 8,3 ms kuvien välisen budjetin ylittymistä.

3. Pyyhkäisyjen mallivertailulaskin

Jokaisella 6 suuntapyyhkäisyllä (vasemmalle, oikealle, ylös, alas, sekä kaksi diagonaalia T2-mallissa) on oma malli. Malli on 16 pisteen murtoviiva odotetusta näytetrjektoreista, normalisoituna 12 mm pituuteen ja keskitettynä alan alkuun. Tunnistuksen aikana normalisoimme syötenäytevirran samalla tavalla (siirrämme keskipisteen alkuun, skaalaamme 12 mm:iin, uudelleennäytteistämme 16 pisteeseen) ja laskemme keskänten painottoman euklidisen etäisyyden syötteen ja mallin välillä kussakin pisteessä.

Vastaavuuspisteet ovat 1 - (mean_distance / 12). Pisteet 1,0 tarkoittaa täydellistä vastaavuutta; pisteet 0,0 tarkoittaa kohtisuoraa. Luokittelija palauttaa korkeimman pistemäärän saaneen mallin edellyttäen, että pistemäärä ylittää 0,78. Kaikki alle 0,78 luokitellaan "tuntemattomaksi" ja ohitetaan.

Kynnys 0,78 viritettiin 1 200 eleen aineistolla, joka kerättiin 30 lapselta (4–9-vuotiailta) kahdessa toimipisteessämme. Mittasimme tällä kynnyksellä L5-mallissa todellisen positiivisen osuuden 96,4 % ja väärän positiivisen osuuden 0,6 %. Kiristäminen arvoon 0,82 pudottaa väärät positiiviset 0,2 %:iin mutta pudottaa todelliset positiiviset 91,7 %:iin; löysentäminen arvoon 0,72 nostaa väärät positiiviset 2,4 %:iin ja todelliset positiiviset 98,6 %:iin.


Gesture Template Matcher — Score Distribution (Q8, 1,200-Gesture Test Set)

4. Aikasidonnaisten eleiden tilakone

TAP, LONG_PRESS ja DOUBLE_TAP ovat aikasidonnaisia, eikä niitä voida luokitella pelkän näytteen muodon perusteella. Käytämme äärellistä tilakonetta, jossa on 5 tilaa:

  • IDLE: kosketusta ei havaittu.
  • TOUCH_DOWN: ensimmäinen näyte vastaanotettu, siirrytään tilaan PRESS.
  • PRESS: kosketus pidetään, käynnistetään pitkänestonimen ajastin.
  • RELEASE: kosketus irrotettu, arvioidaan TAP vs. LONG_PRESS vs. DOUBLE_TAP.
  • WAIT_DOUBLE: irrotettu, odotetaan enintään 300 ms toista napautusta.

Siirtymiä hallitaan 4 kynnyksellä:

  • LONG_PRESS_TIME: 600 ms (konfiguroitavissa 400–2000 ms).
  • DOUBLE_TAP_GAP: 300 ms.
  • TAP_MAX_DURATION: 250 ms.
  • TAP_MAX_DISPLACEMENT: 4 mm.

Tilakone on toteutettu kosketuksen keskeytyskäsittelyssä kytkimenä, ja se vie 0,06 ms siirtymää kohden L5-mallissa. TAP-eleen kokonaistunnistusviive on napautuksen kesto plus yksi näytteiden välinen aika, pahimmillaan 280–320 ms mutta tyypillisesti 130–180 ms.

5. CPU- ja muistikustannus

Koko eleiden putki (pistokone + tilakone + piirteiden erotus) kuluttaa L5-mallissa 1,9 MIPS CPU-tehoa, kun eleiden määrä on 3 elettä sekunnissa. L5-mallin isäntä-SoC:lla on 240 MIPS vapaata äänen ja OCR:n jälkeen, joten eleiden prosessori on käytännössä ilmainen.

Muistikustannus on 4,2 KB koodia (flash-muistissa) ja 1,1 KB työmuistia (16 pisteen mallille ja näytepuskurille). K7- ja KF1-malleissa sama putki vie 5,1 KB koodia ja 1,4 KB RAM-muistia, koska alemman tason MCU kääntää mallit vähemmällä optimoinnilla.

Q8 ja T2 lisäävätähän CIRCLE-eleen luokittelijan, joka käyttää 24 pisteen Hough-muunnoksen kaltaista silmukkaa. Tämä lisää 3,4 KB koodia ja 0,8 KB RAM-muistia ja toimii 4,1 MIPS nopeudella luokittelun aikana. CIRCLE on premium-ominaisuus ja se on oletuksena pois käytöstä Q8-mallissa ja käytössä vain T2-mallissa, ellei OEM-ostaja pyydä sitä Q8-malliin.

6. Viive: napautuksesta toimintoon ja pyyhkäisystä toimintoon

Päästä päähän -viive fyysisen eleen päättymisestä isännän toiminnon antamiseen:

Ele L5 / Q8 / T2 K7 / KF1
TAP 130 ms – 180 ms 180 ms – 240 ms
LONG_PRESS 620 ms – 720 ms 700 ms – 820 ms
DOUBLE_TAP 320 ms – 420 ms 400 ms – 520 ms
SWIPE (mikä tahansa suunta) 55 ms – 65 ms 75 ms – 95 ms
CIRCLE 80 ms – 110 ms (vain T2) n/a

Nämä luvut sisältävät kosketusohjaimen raportointinopeuden, I2C/SPI-siirtoajan, algoritmin suoritusajan sekä isäntäsovelluksen vasteajan.

7. Eri käyttäjäryhmien virittäminen

Oletuskynnykset on viritetty 4–9-vuotiaille lapsille. Aikuiskäyttäjillä (opettajat, vanhemmat) eleet ovat suurempia ja nopeampia, mikä itse asiassa parantaa tunnistustarkkuuden 98,5 %:iin todellisilla positiivisilla samoilla kynnyksillä. Alle 4-vuotiaille lapsille OEM-ostaja voi pyytää pehmeämpää eleprofiilia laiteohjelmiston kautta:

  • LONG_PRESS_TIME nostetaan 600 ms:stä 900 ms:iin.
  • TAP_MAX_DISPLACEMENT nostetaan 4 mm:stä 6 mm:iin.
  • SWIPE_MIN_DISPLACEMENT lasketaan 8 mm:stä 5 mm:iin.

Tätä profiilia kutsutaan nimellä KIDS_PROFILE_V1 ja se on saatavilla kaikissa 11 mallissa laiteohjelmiston build-flag -asetuksella. OEM-ohjelman, joka kohdistuu 2–4-vuotiaiden ikäryhmään, tulisi pyytää tätä profiilia.

8. Hyväksymistesti OEM-ostajille

Suosittelemme seuraavaa 5 testin hyväksymispakettia eleentunnistukseen:

  1. SWIPE_LEFT -tunnistusaste ≥ 96 % 100 yrityksellä 3 eri testaajalta.
  2. SWIPE_RIGHT -tunnistusaste ≥ 96 % 100 yrityksellä.
  3. TAP -väärä positiivinen -aste ≤ 1 % 1 000 ei-kosketussekunnin aikana.
  4. LONG_PRESS -tunnistuslatenssi 600–800 ms.
  5. DOUBLE_TAP -tunnistusaste ≥ 92 % 100 yrityksellä.

Testaajat tulisi valita kohdeikäryhmästä. Vain aikuisten insinöörien testaama näyte antaa liian korkean tarkkuuden, koska aikuisten eleet ovat yhtenäisempiä. Sisäisessä validoinnissamme käytämme 30:tä 4–9-vuotiasta lasta ja 10:aikuista, ja julkaistu 96,4 %:n todellisten positiivisten osuus on vain lapsista mitattu luku.

9. Yleiset vikatilat

OEM-ohjelmissa olemme havainneet seuraavat eleiden integrointivirheet:

  1. Isäntäsovellus kysyy eleitä 50 ms silmukassa keskeytysten sijaan, mikä lisää 50 ms latenssia. Käytä aina ele-keskeytystä, älä kyselyä.
  2. Sovellus ottaa DOUBLE_TAP -eleen käyttöön mutta unohtaa asettaa DOUBLE_TAP_GAP -arvoksi 300 ms, jolloin jokainen napautus luokitellaan kaksoisnapautukseksi.
  3. Sovellus yhdistää CIRCLE-eleen "seuraava sivu" -toimintoon, mutta lasten pyyhkäisyt ovat liian pieniä (5 mm 12 mm:n sijaan) ja algoritmi luokittelee ne kohinaksi. Laske CIRCLE_MIN_CIRCUMFERENCE -arvoa 12 mm:stä 8 mm:iin, jos kohdistat nuorempiin käyttäjiin.
  4. Sovellus poistaa LONG_PRESS -eleen käytöstä mutta jättää ajastimen käyntiin, mikä kuluttaa jatkuvasti 0,04 MIPS CPU-tehoa. Aseta LONG_PRESS_ENABLE = 0 ohittaaksesi ajastimen.

Lisätietoja ele-moottoria syöttävästä kosketusanturista on kohdassa Lukukynän kosketustarkkuus ja jitter-testi. Siitä, miten eleet yhdistetään käyttöliittymätoimintoihin viitesanakirjasovelluksessa, katso Lukukynän sanakirjatiedoston muoto ja versio. Siitä, miten isäntä-SOC-aikatauluttaa ele-tehtävän OCR:ää ja ääntä vasten, katso Lukukynän laiteohjelmistoarkkitehtuuri selitettynä. OEM-spesifikaatioiden kielestä ja hyväksymiskriteereistä katso Lukukynän OEM- ja ODM-spesifikaatiopohja. Jos haluat pyytää ele-testiraporttia 5 testaajan histogrammeilla omasta näyte-erästäsi, katso /request-a-quote.

10. OEM-sopimukseen laitettava spesifikaatiokieli

Puolustettava OEM-spesifikaatio eleentunnistukseen sisältää:

  • Ele-sanaston lista mallikohtaisella saatavuudella.
  • Template matcher -kynnysarvo (oletus 0,78, konfiguroitavissa 0,70–0,85).
  • LONG_PRESS_TIME (oletus 600 ms).
  • DOUBLE_TAP_GAP (oletus 300 ms).
  • TRUE_POSITIVE_RATE ≥ 96 % 1 200 eleen lapsilla testatulla testijoukolla.
  • FALSE_POSITIVE_RATE ≤ 1 % 1 000 sekunnin ei-kosketustestissä.
  • Ele-toiminto-latenssitaulukko eleluokittain.

Toimittaja, joka ei voi sitoutua näihin lukuihin, ei vielä pyöritä algoritmia tuotantolaatuisena. Julkaisemme mallikohtaisen ele-testiraportin jokaisen tuotantoerän yhteydessä ilman lisäkustannuksia.

Gesture Recognition Accuracy by Model

Aiheeseen liittyvää lukemista

Pyydä tarjous — saa nopean tehdaskohtaisen vastauksen

Lisälukemista: elekombinaatiot ja monisormi-sekvenssit

Osiossa 1 luetellun yksittäisten eleiden sanaston lisäksi L5-, Q8- ja T2-laiteohjelmisto tukee pientä joukkoa kahden sormen elekombinaatioita tehokäyttäjille:

  • TWO_FINGER_TAP: vastaa takaisin-painiketta sanakirjasovelluksessa.
  • TWO_FINGER_SWIPE_LEFT: vastaa sivun taakse -komentoa pitkän sisällön lukijoissa.
  • PINCH: lähentää tai loitontaa sanakirjatekstiä 25 % yhtä nipistyskertaa kohti.

Nämä yhdistelmät eivät ole oletussanastossa, ja ne on oletuksena pois käytöstä. OEM-ostajat voivat ottaa ne käyttöön laiteohjelmiston käännösvalitsimella, jolloin koodin koko kasvaa 0,8 KB:lla ja RAM-muistin kulutus 0,3 KB:lla.

Elemoottori tukee myös vähävirtaista "napauta herättääksesi" -tilaa malleissa L5, Q8 ja T2. Tässä tilassa kosketusohjain pyyhkäisee 8 Hz:n taajuudella 120 Hz:n sijaan kuluttaen vain 0,2 mW. Kun napautus havaitaan, ohjain vaihtaa 120 Hz:iin 12 ms:n kuluessa. Tämä tila on oletuksena käytössä Q8- ja T2-malleissa, koska niissä on suurempi akku, ja pois käytöstä L5-mallissa, koska pienempi akku ei kestä herätyslatenssin aiheuttamaa haittaa jokaisella sanakirjahakukerralla.

Vuodesta 2023 lähtien toimitettujen yli 47 000 yksikön joukossa eleisiin liittyvät kenttäviat muodostavat 1,1 % kaikista RMA-tapauksista. Hallitseva syy on nesteen pääsyn aiheuttama juuttunut kosketusalue (38 %), seuraavaksi kalvon irtoaminen anturin reunasta (24 %) ja laiteohjelmiston lukkiutuminen (18 %). 1,1 %:n osuus on huomattavasti pienempi kuin 4,2 %:n kosketusvikaosuus, koska eleitä käytetään vain premium-malleissa, joissa on parempi tiivistys ja tiukempi AQL kosketusanturille.

Frequently Asked Questions

Mitkä lukukynämallit tukevat pyyhkäiseleuja?
Pyyhkäiseleut (vasemmalle, oikealle, ylös, alas) ovat tuettuja ainoastaan malleissa K7, KF1, L5, Q8 ja T2, koska ne vaativat 2D-kapasitiivisen kosketusmatriisin. Mallit B1, B2, F8, P2, Q6 ja Y6 käyttävät 4–8 erillistä kapasitiivista vyöhykettä ja perustuvat fyysisiin painikkeisiin eivätkä eleisiin. T2 tukee lisäksi CIRCLE-eleä premium-ominaisuutena, ja Q8 voi ottaa sen käyttöön OEM-pyynnöstä.
Mikä on eleentunnistuksen tarkkuus malleissa L5, Q8 ja T2?
Mallipohjainen tunnistin saavuttaa 96,4 % oikean positiivisen ja 0,6 % väärän positiivisen tuloksen 1 200 eleen testijoukossa, joka kerättiin 30 lapselta iältään 4–9 vuotta. Kynnysarvo on 0,78 asteikolla 0–1. Kynnysarvon nostaminen 0,82:een pudottaa väärät positiiviset 0,2 %:iin mutta laskee oikeat positiiviset 91,7 %:iin. Löysentäminen arvoon 0,72 nostaa väärät positiiviset 2,4 %:iin ja oikeat positiiviset 98,6 %:iin.
Kuinka kauan kynältä kestää pyyhkäisyeon tunnistaminen?
Pyyhkäisyn päästä päähän -viive on 55–65 ms malleissa L5, Q8 ja T2 sekä 75–95 ms malleissa K7 ja KF1. Tämä on aika pyyhkäisyn viimeisen näytteen ja sen välillä, kun isäntälaite vastaanottaa elekoodin keskeytyksen kautta. TAP-ele kestää 130–180 ms, koska algoritmin on odotettava kosketuksen vapautumista. DOUBLE_TAP kestää 320–420 ms, koska algoritmi odottaa toista napautusta.
Voidaanko eleiden kynnysarvoja säätää nuorempia lapsia varten?
Kyllä. KIDS_PROFILE_V1-laiteohjelmistoversio nostaa LONG_PRESS_TIME-arvon 600 ms:sta 900 ms:aan, nostaa TAP_MAX_DISPLACEMENT-arvon 4 mm:stä 6 mm:iin ja laskee SWIPE_MIN_DISPLACEMENT-arvon 8 mm:stä 5 mm:iin. Tätä profiilia suositellaan 2–4-vuotiaiden ikäryhmälle, ja se on saatavilla kaikkiin 11 malliin laiteohjelmiston käännösvalitsimella ilman lisäkustannuksia yli 5 000 yksikön OEM-tilauksille.
Kuinka paljon suoritintehoa ja muistia elemoottori kuluttaa?
Eleiden käsittelyn täysi putki L5-mallissa kuluttaa 1,9 MIPS kolmessa eleessä sekunnissa ja käyttää 4,2 KB flash-muistia sekä 1,1 KB työmuistia. Malleissa K7 ja KF1 sama putki vie 5,1 KB flash-muistia ja 1,4 KB RAM-muistia, koska mallit on käännetty vähemmällä optimoinnilla. Q8 ja T2 lisäävät CIRCLE-luokittelijan, joka kuluttaa 3,4 KB flash-muistia, 0,8 KB RAM-muistia ja 4,1 MIPS luokittelun aikana.
Ostoskorisi
Sivustomme käyttökokemus paranee evästeiden ansiosta. Evästekäytäntö
Chat on WhatsApp