Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - Wasper

Stran: [1]
1
Software / IQA - ohodnocení obrázků
« kdy: 14. 03. 2024, 19:21:48 »
Zdravím,
mám takovou prosbu, můžete mě navést na použitelný projekt (neuronku), který by se dal použít na prvotní selekci mezi hromadou (řádově vyšší desítky tisíc) obrázků? Na starém disku jsem měl jakýsi IQAnevím, který fungoval celkem obstojně, až na to, že disk odešel do křemíkového nebe a nedokážu ho znova najít mezi desítkami podobných.
Pak jsem si ještě zkusil hrál s NIMA, bohužel všechny skončily loni v klasickém Pythoním dependency compatibility pekle, které by asi řešitelné po hodně hodinách za vytrvalého nadávání bylo (s víc zkušenostma asi i po méně hodinách), ale na prosté zkoušení to není.

2
Hardware / Výhody architektury RISC-V
« kdy: 25. 10. 2023, 02:37:43 »
Pro začátek: pokud shledáváte tento dotaz jako trolling, pak prosím neodpovídejte. Rozhodně tak není míněn.

Chtěl bych se zeptat na jednu věc - pokud se někde objeví zmínka o použití RISC-V architektury, tak obvykle sklízí nadšené ovace většiny čitatelů. Takže bych se rád zeptal, jaké jsou ale reálné plusy, v porovnání např. s ARM nebo Wintel?

Ptám se hlavně proto, že mě dorazily dvě RISC-V hračky (LicheeRV D1 dock, 512MB+WiFi), dal jsem na ně Debian, a třeba i v porovnání s RPI zero, na kterou nedám dopustit, mám tak trochu rozporuplné pocity. Spotřeba cca 200mA moc nezávisí na zátěži (malina má v skoro-idle, jen aktualizuje ePaper displej kolem 100mA) a výkonově, no ... ta Malina mi připadne o dost svižnější a mnohem mín žravá.

3
Server / Linuxový souborový systém s línou deduplikací
« kdy: 30. 05. 2023, 15:08:53 »
Zdravim vespolek
Nemate prosim nekdo zkusenost/doporuceni, jestli existuje pod Linuxem pouzitelny filesystem, ktery umi deduplikovat data na nem, a da se realne pouzit/nekdo ho pouzivate?

O co jde - hraju si s neuronkama, prakticky kazdy projekt ma jine requirementy (uz jsem rikal, ze nenavidim ekosystem kolem Pythonu?) a vysledkem je dost pres desitku venv-u, ktere jsou z vetsi casti hodne podobne, a jen mamuti jako pytorch uziraji tretinu disku, coz je dost nemile.

Jako last resort mam programek, co prochazi disk a kdyz se shoduje sha256 tak ze 2 fajlu udela pres hardlink jeden, ale jestli to jde nejak elegantneji, tak se rad priucim a zkusim neco noveho.

4
Software / iOS 16 a non-trusted intermediate CA
« kdy: 12. 05. 2023, 20:25:44 »
Zdravím,
rád bych se zeptal, jestli někdo nemáte zkušenost s následujícím problémem.
Mějme privátní CA, dejme tomu ca.moje.org - ta je importnuta do trust store, a je označena jako trusted root CA (Settings - General - About - Certificate trust setting).
Mějme web, podepsaný touhle CA - řekněme web.moje.org. Ten funguje v Safari perfektně.

A pak mějme nějakou proxy, která přebaluje SSLko. Proxy dostala vlastní CA certifikát, dejme tomu squid.moje.org. Když vlezu odkuďkoli na třeba root.cz, tak je vše v pořádku, trust path je následující:

ca.moje.org -> squid.moje.org -> root.cz

Problém je, že to funguje odevšuď, z Win, z Linuxu, dokonce včetně star39ho iPhone s iOS15, ale ne v iOS16, ten mě tvrdohlavě tvrdí, že "not trusted" a já nemůžu přijít na to proč (on to nepoví). Standardní hledání po netu nikam nevedlo, odpovědi jako "nastav tomu trusted" moc nepomáhají když to evidentně trusted je (viz ten test s web.moje.org).
Pokud ale vygeneruju pro squid samotnou self-signed CA a tu importnu, tak to ale začne fungovat.

Nemáte prosím někdo s tímhle zkušenost? Nějaký chybějící nebo přebývající attribut/extension?

5
Distribuce / Vhodná distribuce pro hrátky s AI (Real-ESRGAN)
« kdy: 18. 12. 2022, 11:44:49 »
Zdravíčko vespolek,
Po třech dnech částečných neúspěchů přicházím s prosíkem o vynadání do lam a radu, jak to dělat správně.

Začal jsem si hrát s $SUBJ - https://github.com/xinntao/Real-ESRGAN . To, že to nejde na CPU jsem zjistil poměrně rychle, vyřešil jsem to přidáním 250GB SSD do herního kompu, kde mám nVidii 1650, nainstaloval čistý Debian 11, a začal si hrát, a narážím na jeden problém za druhým.
Nainstalovat cuda nebyl problém, pak jsem postupoval přesně podle zadání - Python, Miniconda, Pytorch, git clone ... podle postupu, vše OK.
Tak se těším, že pustím podle návodu, a dostavilo se dependency hell v Pythoním provedení, změna API v TorchVision 0.13., pak bylo potřeba ještě opravit načítání monochromu. To jsem po složitém kachnění nakonec odignoroval (a pak i opravil), ale stejně jsem se dostal k tomu, že polovina "upscalnutých" obrázků byla černých.

Postupně jsem prošel několika reinstalacemi, různými downgrady PyTorch, Pythona i OpenCV, pak už i komplet reinstallem, downgrade na Debian 10 (Python 3.7), pokus na Slackware 15 - v jedné konkrétní konfiguraci s dowgradnutým TorchVision mi to fungovalo na všechny vzorové obrázky, ale už jsem nedokázal zreplikovat, jak se k ní dostat. A když jsem v ní zkusil síť trénovat, tak stejně se to vyhroutilo.

Co se týče černých obrázků, došel jsem až na opencv - Obrázek se na cv2.imread() načetl správně (byly vidět v print(img) nenulové pixely i rozměr), až na to, že na cv2.imshow(img) to opět ukázalo černé okno. Dokachněno že v opencv 4.3.xxx byla podobná chyba, tak jsem zkoušel několik různých verzí, bez jakéhokoli úspěchu, všude černo.

Tak bych se rád zeptal - poradíte linuxovou distribuci, na které Vám to funguje na první dobrou? Případně setkali jste se s podobnými chybami a podařilo se vám je nějak překonat?

6
Zdravím, rád bych se zeptal - je na Arduinu nějaká lepší možnost než zákaz interruptů, jak atomicky přečíst int16_t popř int32_t?
Konkrétní příklad
Kód: [Vybrat]
volatile int msec;

/* interrupt rutina */
msec++; if (msec > 999) msec = 0;

/* main loop */
while (1) {
    ledka(OFF);
    while (msec < 900) ;      // <---- nekonzistence
    ledka(ON);
    while (msec >= 900) ;
    Serial.printf("je cas %i\n", msec);
}
Tenhle fragment zobrazuje casy 0 0 0 768 0 0 0 768 0 768 0.
Důvod je nasnadě, prvně se načítá low byte, pak high, a když se doprostřed trefí interrupt, který (už načtený) lo změní z 255 na 0, ale ještě nenačtený high naincrementuje z 2 na 3, tak v podmínce se porovnává 1023 < 900 a projde to dál.
OK, ale co s tím? jedna možnost je samozřejmě to obalit nějakým
Kód: [Vybrat]
int my_msec;
cli();
my_msec = msec;
sei();
To samozřejmě fungovat bude, jen se mi to moc nelíbí, reálně chci používat interrupty v množství nemalém (na druhou stranu ty 2 takty navíc asi moc nebolí), ale přecejen, není nějaké čistší řešení? Konkrétně u timeru by se to ošklivě dalo řešit tak, že si ten low byte přečtu znova a porovnám, u složitějších věcí nějakým bytem navíc, kde se nastaví dirty apod.
Ale kam směřuju otázkou - neexistuje něco snadnějšího? Koukal jsem na instrukční set a nic použitelného jako load dvou registrů neobjevil, ale je možné, že jsem slepej/blbej/oboje ;-)

P.S. To výše je jenom nejjednodušší příklad na osvětlení. Že do toho while je dobré dát __asm__ __volatile__ ("sleep") vím, a že to problém omezí, ale úplně nevyřeší (když přiletí interrupt od seriáku a hned pak od timeru, tak se taky může trefit nedobře) vím taky. A že volatile v interruptu se má načíst do lokální proměnné a pak zase po inkrementaci zapsat zpět taky...

7
Software / 3D: OpenSCAD, seznam dílů
« kdy: 14. 09. 2022, 17:51:05 »
Zdravím,
před letu tu bylo dost pokročilých uživatelů, tak bych se rád zeptal, jestli z těch co zůstali někdo neřešil podobný problém.
Používám OpenSCAD na to si nakreslit nějaký budoucí projekt (reálně jsou to jednodušší konstrukce z kovu, ale pro popis problému to zjednoduším na příkladu).

Jednotlivé prvky jsou v samostatné knihovně jako moduly, např.
Kód: [Vybrat]
module spejle(delka, polomer) {
    cylinder(r=polomer, l=delka);
}
module prkynko(x,y,tloustka) {
    cube([x,y,tlousktka]);
}
....
a samotný projekt je pak nepřehledný mix difference-union--- v modulu (+funkční podcelky v dalších modulech) stylu
Kód: [Vybrat]
module jerab() {
    diference() {
        union() {
             prkynko(30,30,2);
             translate([...]) rotate([...]) spejle();
             ....
        }
        translate([...]) dira(4);     // cylinder
    }
}
No a teď k vlastnímu problému. Těch dílů je reálně víc, a je potřeba je objednat. To je celkem jednoduché, do modulu spejle() se prostě přihodí něco jako echo("Kup spejli ", r=r, l=l);, a v horším případě se to copypastne z console v GUI, v lepším se to spustí z command line s patřičným outputem.

Ale teď je tu problém druhý - potřeboval bych jednotlivé díly vidět (==hodit na papír a vzít do dílny). Fajn, přeparsovat ty echa do .scad je triviální, ale to problém neřeší. Co ve skutečnosti v našem modelovém případu je potřeba dostat "na papír" tu desku, ale včetně díry (opět, v reálu tomu odpovídají věci jako tady navrtat, tady vyříznout závit, tady vypálit do plechu díru, u složitějších tvarů via vytisknout na 3d šablonu, podle které se to objede plasmou). A pokud možno to nedělat ručně (těch dílů tam může být několik desítek. A každý díl může být v nějakém difference, takže prosté oremování by mělo dost nehezké následky).
Zpracovat to přímo z té knihovny nevím jak - tam vím, jak je prvek velkej, ale už nevidím, jak moc je otočený/posunutý, takže udělat intersekci jednoho prvku (který jsem získal tím echem) z celým modelem nepůjde.
Co bohužel taky nepůjde je v knihovně počítat, kolikátý prvek to je (ano, v procedurálním jazyce není nic snadnějšího než něco jako if (displej && displej != global_count++) return; a pouštět to postupně openscad -D displej=$n -output prvek$n.stl ale jak tohle udělat v funkcionálním opravdu netuším).
Napadá mě snad jedině každé součástce přihodit ID jako parametr a pak to projet nějakým preprocesorem, ale to už je čuňárna docela veliká i na mě, i když by to fungovalo.
Nemáte někdo vymyšlené něco jednoduššího?

Stran: [1]