REST API, kur var nosūtīt attēlu un saņemt atpakaļ numura zīmes tekstu un mašīnas virziena informāciju. Vēlāk var pievienot arī citas īpašības kā piemēram automašīnas marku, krāsu, utt. Atpazīšanas uzlabošanai tiek izmantoti ParkExpert dati, nepieciešamības gadījumā dati būtu jāievāc 1-2 mēnešus, bet visticamāk pietiks ar publiskajām datu kopām
Plāns:
Savākt visus marķētos piemērus (kuri nav unknown) no FTP uz asya_5 datu glabātuvi (sagatavot, lai Reinis uzliek) asya_5:/media/storage/data/raw/photo_cars/2024-08-02 (datums, kad savākts)
Klienta FTP (active mode tikai strādā):
xxxxxxxxxx
51FTP
2Host: codeart.lv
3Port: 21
4User: asya
5Pass: df93jSK39a21sk3jd95Jaqje
Atlasīt validācijas kopu, kur vismaz 100 paraugiem ir manuāli pārbaudīts numurs un virziens
Github repo
Izveidot tīras pyhton funkcijas, kuras var izmantot, lai validācijas kopai aprēķinātu
cer_plate uz numura zīmju burtu kļūdu. Input: filename, predicted_plate_str, Output: CER (character error rate) Bez atstarpēm
accuracy_plate uz kopējo pareizi atpazīto numuru skaitu: Tas pats, kas CER, tikai output ir 1 vai 0
accuracy_direction priekš Front/Back classification (pēc paneļiem), input filename, prediction_enum_str (“front”, “back”), output 1 vai 0
mean_cer_plate, mean_accuracy_plate, mean_accuracy_direction. Aprēķina izmantojot iepriekšējās funkcijas uz visu validation set
Metode:
Vispirms segmentējam mašīnu un/vai license plate
Tad atpazīstam numura zīmi no segmentēta apgabala
Segmentēto apgabalu ap mašīnu padodam klasifikatoram front/back vai arī paneļu modelim pēc kura izsecināt vai redzama priekša vai aizmugure mašīnai
Uz dotajiem marķētājiem piemēriem notestēt visas pieejamās metodes
License Plate Recognition LRRNet https://docs.nvidia.com/tao/tao-toolkit/text/character_recognition/lprnet.html
Jāpārbauda uz pretrained Japanese
Un jāatrod arī pretrained USA
Paneļu segmentation vai virziena noteikšanas modeļi - https://datasetninja.com/semantics-car-segmentation (lampas, grill, bonnet, widshield)
Atrast vēl citus modeļus un datu kopas
Open API izveidot funkciju, kas ar 2 atsevišķiem pormpt + bildi nosaka virzienu un plate number:
https://www.perplexity.ai/search/give-python-example-openai-api-QyBaseTqSq.gL2X113T8kA
Prompt: Classify which part car is visible: Front, Back
(varbūt arī Unknown) - apstrādāt output ar regex
Prompt: Extract License Plate Number
- apstrādāt output ar regex
Atrast visas pieejamās numura zīmju datu kopas
Varētu iegūt no SS.LV un ar GPT4 marķēt un pēc tam ar cilvēku pārbaudīt (gan front/back bildes, gan numura zīmes)
Izveidot sintētisko datu ģeneratoru numura zīmēm (segmentētajam apgabalm)
Atrast, kru modeli mēs varētu apmācīt
Līdz galam kāds rezultāts neatceros, bet uz ne crazy sliktām bildēm, standarta numuri bija diezgan ok. izmantoju ctc loss un fiksēta izmēra output. man bija datu ģenerātors priekš fake datiem, tas daudz ko deva. slikti strādāja uz custom un ārvalstu numuriem, bet tas bija datu trūkums
nu nosacīti realistiskas, pēc specenes rāmi, fontu un izmērus sataisīja un random numurus ģenerēja, viss bez ai. pēctam vareja augmentēt uz random foniem un to jau likt modelī. Modelim nāca output no yolo izgriezti numuri. IMG to seq jā, bet uz jau izgriestu numuru
Mēs lietojām 3 detekcijas ssd tīklus - 1:detektē mašinas, 2: detektw numurzimes uz masinu kropiem, 3: detekte burtus uz numurzimem. Tad jau tas burtu kastites var vnk salikt rindina un sanak numurs. Kadus 10k man liekas vismaz vajadzetu.