Peatükk 4

Riistvara valik

Riistvara valikul lähtuti etteantud nõuetest, et loodav juhttorni prototüüp toimiks võimalikult veatult ning töökindlalt. Samuti arvestati ka sellega, et juhttorn oleks võimalikult lihtsasti ümber seadistatav erinevatele laevatüüpidele kasutamiseks. Esitatud nõuded süsteemile olid järgnevad:

Tulevikus plaanitakse taolist süsteemi rakendada erinevatel laevatüüpidel, mistõttu on komponendid valitud laialdaselt kasutatavate ning hõlpsasti saadaolevate seadmete hulgast.

Juhtkontroller ehk pardaarvuti

Juhtkontroller on seade, mis tegeleb selle külge ühendatud kaameratelt saadud informatsiooni töötlemisega ning tulemuste edastamisega autopiloodile. Pardaarvuti asetseb laeva juhttornis, ümbritsetuna kolmest kaamerast. Kaameratelt saadava info peal (antud kontekstis reaalajas video) rakendatakse analüütilisi algoritme, mille väljundina saadakse info (tuvastatud objektid ning nende suhteline asukoht kaadris), mis edastatakse autopiloodile, andes lisainfot ümbritseva keskkonna kohta, mille põhjal viimane teeb otsuse, kuidas laevaga käituda.

Antud ülesande lahendamiseks on saadaval mitmeid monoplaatarvuteid (Single-Board Computer, (SBC) [19 ], System on Module (SoM)), populaarseimatena Nvidia Jetson seeria [20 ], mis on tehisintellekti ning masinnägemise ja masinõppe rakendusteks spetsialiseeritud ja Raspberry Pi [21 ]. Antud ülesande lahendamisel välistame Raspberry Pi valikutest kuna juhttorni süsteem hõlmab 4 kaameraga paralleelselt töötamist, (Raspberry Pi’l ainult 1 kaamerasisend). See vajab rohket arvutusvõimsust, kuid antud seadmel pole selle kohast võimekust, ega vajalikku riistvara (seadme protsessoris on küll integreeritud graafikakaart, kuid antud ülesande lahendamiseks jääb see liiga nõrgaks). Seetõttu paralleelsete toimingute jaoks on eelkõige kasulik eraldiseisev graafikakaart (Graphics Processing Unit (GPU) [22 ]) koos spetsialiseeritud graafikatuumadega (CUDA Cores [23 ]), mis on Nvidia Jetson arvutite eeliseks.

Jetsonite seeriasse kuuluvad 4 seadet: Nano, TX2, Xavier NX ning AGX Xavier, mille hulgast viimane kõige võimekam (vt Tabel 1). Nano on kõige algelisem versioon, millega saab lihtsaimaid masinnägemise rakendusi valmistada, TX2 on sellest mõnevõrra võimekam protsessori ning graafikakaardi arvutusvõimsuse kohalt ning Xavier NX ning AGX Xavier on mõeldud tööstuslikkele kasutusaladele ning nende eelisteks on kuue- ja kaheksatuumalised protsessorid ning Volta arhitektuuriga graafikakaardid, mis sisaldavad ka endas maatriksoperatsioonide kiirendeid (Tensor Cores) [24 ], (vt Joonis 5).

Jetson seeria arvutite parameetrid [24 ]
ParametersJetson NanoJetson TX2 Series (NX, TX2i)Jetson Xavier Series (NX, AGX)
AI Performance472 GFLOPs1.33 TFLOPs21/30 TOPs
GPU128-core NVIDIA Maxwell™256-core NVIDIA Pascal™384/512-core NVIDIA Volta™ with 48/64 Tensor Cores
CPUQuad-Core Arm Cortex-A57Dual-Core NVIDIA Denver and Quad-Core Arm Cortex-A576/8-core NVIDIA Carmel Arm
DL Accelerator


2x NVDLA v1
Vision Accelerator


2x PVA v1
Memory

4 GB

64-bit LPDDR4

4/8 GB

128-bit LPDDR4

8/16/32/64 GB

128-bit LPDDR4x

Storage16 GB16/32 GB16/35/64 GB
CSI Camera

Up to 4 cameras

(up to 18 Gbps)

Up to 5/6 cameras (up to 30 Gbps)

Up to 6 cameras

(up to 62 Gbps)

Eeldusel et vaja on analüüsida kolmest kaamerast tulevat infot paralleelselt ning täpselt, oleks kõige mõistlikum kasutada Xavier seeria süsteemi. Seda just seetõttu, et võrreldes teiste seeriatega on Xavier seeria arvutite jõudlus tagatud suurema hulga graafikakaardi tuumadega, uuema arhitektuuriga (Volta [25 ]), mis sisaldab endas maatrikskiirendeid (Tensor Cores, mida vajavad närvivõrgud maatriksarvutustes) ning süvaõppe kiirendeid (Deep Learning Accelerator), mis võimaldavad mitme kaamera sisendiga tõhusamalt operatsioone teha.

Antud seerias on valikus nii NX kui ka AGX Jetsonid, mille hulgast on valitud parimad kandidaadid (vt Tabel 2). Nende hulgast sobilikuim on Jetson AGX Xavier, sest antud seade peab olema võimeline jooksutama mahukat närvivõrku ning tegelema mitme operatsiooniga korraga (kaameratelt info lugemine, info töötlemine närvivõrgus, töödeldud info kujutamine väljundvideol), mis nõuab suurt hulka arvutuslikku ressurssi.

ParametersJetson AGX XavierJetson Xavier NX 16GB
AI Performance32 TOPs21 TOPs
GPU512-core NVIDIA Volta™ GPU with 64 Tensor Cores384-core NVIDIA Volta™ GPU with 48 Tensor Cores
CPU8-core NVIDIA Carmel Arm®v8.2 64-bit CPU 8MB L2 + 4MB L36-core NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3
DL Accelerator2x NVDLA v12x NVDLA v1
Vision Accelerator2x PVA v12x PVA v1
Memory32 GB 256-bit LPDDR4x 136,5 GB/s16 GB 128-bit LPDDR4x 59,7 GB/s
Storage32 GB eMMC 5.116 GB eMMC 5.1
CSI CameraUp to 6 cameras (up to 62 Gbps)Up to 6 cameras (up to 30 Gbps)

Jetson AGX Xavieri ja Xavier NXi parameetrid [24 ]

Joonis 5
Joonis 5.

Valitud arvuti: Jetson AGX Xavier (paremal ilma jahutusplokita) [26 ]

Tensorituumad ja CUDA

Tensorituumade (Tensor Core’ide) puhul on tegemist programmeeritavate maatrikstehete kiirenditega, mis viivad läbi operatsioone CUDA [23 ] tuumadega paralleelselt. Antud tuumad rakendavad uuemat sorti ujukomaarvudega ja täisarvudega teostatavad tehted HMMA (Half-Precision Matrix Multiply and Accumulate) ja IMMA (Integer Matrix Multiply and Accumulate), mille mõjul lineaarsed tehted, signaalitöötlus ning süvaõppeinterferents kiirenevad [27 ] (vt Joonis 6).

Joonis 6
Joonis 6.

Tensor Core, kolmedimensiooniliste 4x4x4 maatriksite korrutamine ning summeerimine [27 ]

CUDA puhul on tegemist paralleelarvutuseks mõeldud platvormi ning programmeerimise mudeliga, mis suurendab tehtavate arvutuste hulka mitmekordselt, kasutades selleks protsessori asemel graafikakaarti [23 ].

CUDA eesmärgiks on kiirendada paralleelarvutusi ning CUDA tuum on analoogne protsessori tuumaga. Ainukeseks erinevuseks on nende ehitus, protsessori tuum on võimeline lahendama kompleksseid arvutusi jadamisi, CUDA tuum lihtsamaid arvutusi graafikakaardis. Eeliseks graafikakaardil protsessori ees on see, et CUDA tuumasid on ühele kiibile paigutatud tuhandeid, mis võimaldab komplekssed arvutused jagada mitmete tuumade vahel ära ning seetõttu ka sooritada arvutused kiiremini, kui protsessor väiksema arvu võimekamate tuumadega. Antud tehnoloogia on integreeritud ning laialdaselt kasutusel masinõppe vallas Nvidia poolt.

Kaamerad

Kaamerate puhul tuleb arvestada mitmete parameetritega, et tagada süsteemi nõuetekohasus ning edukas toimimine. Kuna antud ülesandes asetseb masinnägemissüsteem juhttornis, mis kinnitub laeva mastile, tuleb kindlasti arvestada sellega et kaamerad või seade kuhu nad asetatakse, peavad võimelised töötama laialdastes temperatuurivahemikes ning muutlikes ilmastikuoludes. Samuti tuleks kaamera tarkvara puhul eelistada üldjuhul värskeimat ja selgelt dokumenteeritud materjali ning arvestada selle ühilduvust juhtarvutiga. See tagab parema kaamera konfigureerimise ning võimaldab ka seeläbi rakendatavat masinnägemistarkvara hõlpsamini hallata.

Kaamerate valikul arvestati järgnevate parameetritega:

Suurema resolutsiooni korral paraneb seega tuvastustäpsus kuid väheneb interferentsi kiirus, sest sisendandmete hulk suureneb. Suure resolutsiooniga fotol on rohkem informatsiooni, mis omakorda võimaldab närvivõrgul kindlamaid ennustusi anda.

Polükromaatiline sensor sobib seevastu keskkonda, kus kontrast tausta ja objekti vahel ei ole kuigi suur või objekti tuvastamine nõuab rohkem informatsiooni. Sellisel moel pildi edastamisel esitatakse kolm väärtust maatriksina, RGB (vastavalt Red – punane, Green – roheline, Blue - sinine) värvustena vahemikes (0…255 või 0.0…1.0, näiteks [255, 0, 255]). Taoline edastusviis on andmete hulgalt kolm korda mahukam kui monokromaatilise pildi edastamisel, kuna iga piksli kohta esitatakse kolm väärtust.

Seadmed, mis eelmainitud parameetrile vastaksid on järgnevad (vt Tabel 3):

Parameetritele sobilikud kaamerad
Kaamera nimiResolutsioon(px)Kaadrisagedus (FPS)Töötemperatuur (°C)Liides
SurveilsQUAD - Sony IMX290 System [28 ]1920x1080120-3085CSI
OpenCV AI Kit: OAK—D [29 ]1280x800 (stereo) 4056x3040 (keskmine)

120 (stereo)

60 (keskmine)

N/AN/AUSB-C/PoE
OpenCV AI Kit: OAK—1-PoE [30 ]4056x304060N/AN/AUSB-C/PoE
Atlas IP67 7.1 MP Model [31 ]3208x220074-2055PoE
Atlas IP67 2.8 MP Model [32 ]1936x1464173-2055PoE
Arducam 12MP IMX477 [33 ]4056x304060N/AN/AUSB-C
Arducam Fisheye Camera [34 ]2592×194430N/AN/ACSI ja Ethernet

*N/A – andmed puuduvad

Töö kirjutamise hetkel kasutati algselt SurveilsQUAD kaameraid, kuna need olid antud arvutisüsteemi jaoks eelnevalt ette valmistatud ning projektis olevate osapoolte poolt olid ka Xavierile vastavad tarkvaralised muudatused tehtud arvutisüsteemide instituudis. Lõputöö kirjutamise käigus valmiv projekt oli arendusfaasis, mistõttu oli ka eelarve piiratud ning piirduti esialgu kaameratega, millel oli katsetuste jaoks põhivõimekus olemas. Juhttorni disaini käigus selgus, et valitud kaamerate paigutus oli lühikeste kaablite tõttu piiratud ning tootja ei tarninud seadmetele pikemaid kaableid.

Seetõttu sai valitud Arducam Mini kaamera (vt Joonis 7), mis ühendati raspberry pi külge ning omakorda etherneti kaabliga Ethernet switchi ning sealt lõpuks Jetson Xavieri külge. Sellega lahendus ka kaablite pikkuse probleem ning samuti oli võimalik ka Xavierile installeerida värskeim tarkvara, mida eelmiste kaamerate vananenud draiverid ei toetanud.

Joonis 7
Joonis 7.

Arducam Fisheye kaameraga moodul [34 ]

Juhttorn

Juhttorn asetseb laeva vööris (vt Joonis 9) ning selle ülesanne on laeva juhtimine üle võtta laeva kapteni käsul ning tegeleda sellega autonoomselt võimalikult vähese kapteni sekkumisega. Selleks on tornil olemas aju Jetson AGXi kujul, mis tegeleb kõikidest anduritest ning kaameratest saadava info kogumise, töötlemise ning seejärel juhtimisotsuse edasi saatmisega autopiloodile, mis omakorda saadab signaalid laeva mootoritele ja tüürile. Jetson saab infot oma ümbritseva keskkonna kohta kaameratest, X-band radarist, AISist ning ilmajaamast tuuleanduri kujul. Andmevahetus juhttorni süsteemis toimub läbi etherneti jaoturi ning 4G ruuteri mis võimaldab saata ning vastu võtta andmeid kasutajalt. Samuti on võimalik arendajatel teha tarkvara uuendusi laeva süsteemidele. AIS (Automaatne Identifitseerimise Süsteem) aitab määrata laeva asukoha teiste meresõidukite suhtes, kasutades satelliite, radar tuvastab punktipilvedega lähedasemaid objekte ning kaamerad ja nendel jooksev masinnägemine tuvastab objektide hulgast laevu ja teisi meresõidukeid. AIS, radar ning kaamerad masinnägemisega täiendavad üksteist, aidates laeval enda ümbruskonda tuvastada ning selles orienteeruda. Süsteemi toidab alalisvooluallikas (vt Joonis 8).

Joonis 8
Joonis 8.

Juhttorni lihtsustatud toimimisskeem

Joonis 9
Joonis 9.

Juhttorni asetus patrulllaeval [35 ]