ⴰⵏⵥⴰⵔ Nowcasting ⵙ ⵓⵍⵎⴰⴷ ⵏ ⵜⵎⴰⵛⵉⵏⵉⵏ

ML
DL
CNN
Asenqed ⵏ ⵜⴻⴳⵏⴰⵡⵜ
UNet
ⴰⵏⵥⴰⵔ Nowcasting ⵙ ⵓⵍⵎⴰⴷ ⵏ ⵜⵎⴰⵛⵉⵏⵉⵏ cover image

ⵉⵎⵉⵔⴰ, ⵉⵎⵓⵙⵏⴰⵡⴻⵏ ⵏ ⵜⵎⴻⵥⴷⵉⵢⵉⵏ ⵜⵜⵡⴰⵍⵉⵏ ⴷⴰⴽⴽⴻⵏ 90% ⵙⴻⴳ ⵢⵉⵙⴰⵍⴰⵏ ⵏ ⵜⵎⴻⵥⴷⵉⵢⵉⵏ ⵜⵜⵡⴰⵃⴻⵙⴱⴻⵏ ⴷ ⵜⵉⴷⴻⵜ ⴷⴻⴳ ⵢⵉⵡⴻⵏ ⵏ ⵡⴰⴽⵓⴷ ⵏ 5 ⵏ ⵡⵓⵙⵙⴰⵏ. ⵜⵉⴳⵏⴰⵜⵉⵏ ⵢⴻⵜⵜⵡⴰⵅⴻⴷⵎⴻⵏ ⵙ ⵓⵎⴰⵜⴰ ⵜⵜⵡⴰⴱⵏⴰⵏⵜ ⵖⴻⴼ ⵙⵏⴰⵜ ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵢⴻⵎⴳⴰⵔⴰⴷⴻⵏ :

  1. Tignatin ⵏ ⵜⴼⵉⵣⵉⴽⵜ : Tignatina ⵙⵙⴻⵇⴷⴰⵛⴻⵏⵜ ⵉⵎⵓⴷⴻⵍ (modèles) ⴰⵢ ⴷⵢⴻⵙⴷⵓⴽⴽⵍⴻⵏ ⵜⵉⵖⴰⵡⵙⵉⵡⵉⵏ ⴰⵢ ⵉⵣⴻⵎⵔⴻⵏ ⴰⴷ ⵜⵜⵡⴰⵇⴻⴱⵍⴻⵏ ⴰⵎ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ, ⴰⵃⵔⵉⵛ ⵏ ⵢⵉⴳⴻⵏⵏⵉ, ⵜⵉⴳⵏⴰⵜⵉⵏ ⵏ ⵢⵉⴳⴻⵏⵏⵉ... Tiwwura ⴰⵎ ⵜⵉⴳⵉ ⵍⵀⴰⵏ ⴷⴻⴳ ⵓⵙⵙⴻⴼⵇⴻⴷ ⵏ ⵜⴻⴳⵏⵉⵜ ⵏ ⵜⴻⴳⵏⴰⵡⵜ ⴷⴻⴳ ⵡⵓⵙⵙⴰⵏ ⵏⴻⵖ ⴷⴻⴳ ⴷⴷⵓⵕⵜ ⴰⵢ ⴷⵢⴻⵜⵜⴻⴷⴷⵓⵏ.

  2. Tignatin ⵓⵔ ⵏⴻⵙⵄⵉ ⴰⵔⴰ ⵜⴰⴼⵉⵣⵉⴽⵜ (ⴷⴰⵜⴰⴱⴰⵙⴻⴷ) : Tignatina ⵙⵙⴻⵇⴷⴰⵛⴻⵏⵜ ⵉⵙⴻⴼⴽⴰ ⵏ ⵓⵎⴻⵣⵔⵓⵢ ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵙⵏⵓⵍⴼⵓⵏⵜ ⵉⵎⵓⴷⴻⵍ ⵉⵣⴻⵎⵔⴻⵏ ⴰⴷ ⴷⴳⴻⵏ ⵜⵉⴳⵏⴰⵜⵉⵏ ⵏ ⵜⵎⵓⵖⵍⵉ. ⵉⵎⴻⵏⵣⴰⵢⴻⵏ ⴰⵎ ⵡⵉ ⵙⵙⴻⴽⵏⴻⵏⴷ ⵉⴳⵎⴰⴹ ⵢⴻⵍⵀⴰⵏ ⴷⴻⴳ ⵓⵙⴽⴰⵙⵉ ⵏ ⵜⴻⴳⵏⵉⵜ ⵏ ⵜⴻⴳⵏⴰⵡⵜ ⴰⵍⴰⵎⵎⴰ ⴷ 6 ⵏ ⵜⵙⴰⵄⵜⵉⵏ ⵏⴻⵖ ⴰⵢⴻⵏ ⵓⵎⵉ ⵇⵇⴰⵔⴻⵏ ⵡⴻⴰⵜⵀⴻⵔ nowcasting.

ⴷⴻⴳ ⵓⵎⴰⴳⵔⴰⴷⴰ, ⴰⴷ ⴷⵏⴻⵎⵎⴻⵙⵍⴰⵢ ⵖⴻⴼ ⵜⵖⴰⵡⵙⴰ ⵜⵉⵙ ⵙⵏⴰⵜ ⵏ ⵜⵎⵓⵖⵍⵉⵡⵉⵏ. ⴰⴷ ⴷⵏⴻⵎⵎⴻⵙⵍⴰⵢ ⵖⴻⴼ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵢⴻⵎⴳⴻⵔⵔⴰⴷⴻⵏ ⵏ ⵢⵉⵙⴻⴼⴽⴰ ⵏ ⵜⴻⴳⵏⵉⵜ, ⴰⵎⴻⴽ ⴰⵔⴰ ⵢⴻⵜⵜⵡⴰⵙⵙⴻⵇⴷⴻⵛ ⵓⵍⵎⴰⴷ ⵏ ⵜⵎⴰⵛⵉⵏⵉⵏ ⴰⴽⴽⴻⵏ ⴰⴷ ⵢⴻⵅⴷⴻⵎ ⵡⴻⴰⵜⵀⴻⵔ nowcasting, ⴷ ⵡⴰⵎⴻⴽ ⴰⵢ ⵣⴻⵎⵔⴻⵏⵜ ⵜⵎⴻⵚⴽⵉⵡⵉⵏ ⴰⵢ ⴷⵢⴻⵜⵜⵡⴰⵙⵏⵓⵍⴼⴰⵏ ⴰⴷ ⵉⵍⵉⵏⵜ ⴷ ⵜⵉⵏ ⴰⵢ ⴷⵢⴻⵜⵜⴰⵡⵉⵏ ⵍⴼⴰⵢⴷⴰ ⵉ ⵜⵉⴼⵔⴰⵜ ⵏ ⵡⵓⴳⵓⵔ ⴰⵎ ⵡⵉ.

ⵉⵙⴻⴼⴽⴰ ⵉ ⵓⵄⴻⵢⵢⴻⵏ ⵏ ⵓⵏⴻⵣⵡⵓ

ⵉⵎⵉ ⵜⵉⴳⵏⴰⵜⵉⵏ ⵓⵔ ⵏⴻⵙⵄⵉ ⴰⵔⴰ ⵜⴰⴼⵉⵣⵉⴽⵜ ⵙⵙⴻⵇⴷⴰⵛⴻⵏⵜ ⵉⵙⴻⴼⴽⴰ ⵏ ⵓⵎⴻⵣⵔⵓⵢ, ⴰⴷ ⵏⴻⴱⴷⵓ ⵙ ⵜⵎⵓⵖⵍⵉ ⴷⴻⴳ ⵢⵉⵙⴻⴼⴽⴰ ⵢⴻⵍⵍⴰⵏ.

ⴰⴷ ⵏⴻⵙⵙⴻⵅⴷⴻⵎ ⵙⵉⵏ ⵏ ⵢⵉⵖⴱⵓⵍⴰ ⵉⴳⴻⵊⴷⴰⵏⴻⵏ ⵏ ⵢⵉⵙⴻⴼⴽⴰ:

  1. Isefka ⵏ ⵜⵓⴳⵏⴰ : Isefkaa ⵜⵜⴰⵡⵉⵏⴷ ⵜⴰⵍⵖⴰ ⵏ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵏ ⵔⵔⴰⴷⴰⵔ ⵏⴻⵖ ⵏ ⵓⴳⴻⵏⵙⴰ ⵏ ⵢⵉⵡⴻⵜ ⵏ ⵜⴻⵎⵏⴰⴹⵜ ⵜⴰⵊⵓⵖⵔⴰⴼⵉⵜ ⵢⴻⵜⵜⵡⴰⵙⵏⴻⵏ. ⵢⴻⵜⵜⵡⴰⵙⴻⵇⴷⴰⵛ ⵉ ⵓⵄⴻⵢⵢⴻⵏ ⵏ ⵓⴳⴻⴼⴼⵓⵔ, ⴰⵎⵓⵙⵙⵓ ⵏ ⵡⴰⴹⵓ ⵏⴻⵖ ⵏ ⵜⵎⴻⵥⵥⵓⵖⵜ.

Satellite Image

  1. Isefka ⵏ ⵜⴼⴻⵍⵡⵉⵜ : Isefkaa ⵜⵜⴰⵡⵉⵏⴷ ⵜⴰⵍⵖⴰ ⵏ ⵢⵉⴹⵔⵉⵙⴻⵏ ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵉⵣⴻⵎⵔⴻⵏ ⴰⴷ ⵜⵜⵡⴰⵇⴻⴱⵍⴻⵏ ⴰⵎ ⵜⵎⴻⵙ, ⵍⵃⴻⵎⵍⴰ ⵏⴻⵖ ⵜⴰⵣⵎⴻⵔⵜ ⵏ ⵡⴰⴹⵓ.

Tabular Data

ⵎⴰ ⵢⴻⵍⵍⴰ ⵙⵉⵏⴰ ⵏ ⵢⵉⵖⴱⵓⵍⴰ ⵏ ⵢⵉⵙⴻⴼⴽⴰ ⵙⵄⴰⵏ ⴰⵣⴰⵍ ⵉ ⵍⴻⴱⵏⵉ ⵏ ⵢⵉⵎⵓⴽⴰⵏ ⵉⵊⴻⵀⴷⴻⵏ, ⴰⴷ ⵏⴻⴱⴷⴻⵔ ⵖⴻⴼ ⵡⵉⴷ ⵉⵎⴻⵣⵡⵓⵔⴰ (ⵉⵙⴻⴼⴽⴰ ⵏ ⵜⵓⴳⵏⴰ ⴰⵢ ⴷⵢⴻⵜⵜⵡⴰⵊⴻⵎⵄⴻⵏ ⵙⴻⴳ ⵢⵉⵔⴰⴷⴰⵔⴻⵏ ⵏⴻⵖ ⵙⴻⴳ ⵢⵉⴳⴻⵏⵙⴰⵜⴻⵏ) ⵖⴻⴼ ⵙⵙⴻⴱⴱⴰⵜ ⵏ ⵜⴼⴻⵀⵍⵉⵜ. ⵉⵎⴻⵏⵣⴰⵢⴻⵏ ⵢⴻⵜⵜⵡⴰⵙⵇⴻⴷⵛⴻⵏ ⵙ ⵡⴰⵟⴰⵙ ⵙ ⵢⵉⵙⴻⴼⴽⴰ ⵏ ⵜⵓⴳⵏⴰ ⴷ ⵉⵥⴻⴹⵡⴰⵏ ⵏ ⵢⵉⵥⵓⵔⴰⵏ ⵉⵎⴻⵥⵥⵢⴰⵏⴻⵏ.

ⵖⴻⴼ ⵍⴻⵃⵙⴰⴱ ⵏ [ⵓⵅⴻⴷⴷⵉⵎ]-ⴰ (ⴰⵙⴻⵇⴷⴻⵛ ⵏ ⵓⵍⵎⴰⴷ ⵏ ⵜⵎⴰⵛⵉⵏⵉⵏ ⵖⴻⵔ ⵓⵙⵎⴻⵍ ⵏ ⵜⵓⵔⴰ.ⵀⵜⵎⵍ), ⴰⴷ ⵏⴻⵙⵙⴻⵎⵔⴻⵙ ⵜⴰⵙⴻⴳⴷⴰ ⵏ UNet ⴰⴽⴽⴻⵏ ⴰⴷ ⵏⴻⴱⵏⵓ ⴰⵎⴹⵉⵇⵏⵏⴻⵖ ⵏ ⵓⵙⵎⴻⵍ ⵏ ⵜⵓⵔⴰ.

ⵜⴰⵙⴻⴳⴷⴰ

ⴰⴷ ⵜⴻⴱⴷⵓⴹ ⵙⴻⴳ ⵜⵎⴻⵚⴽⵉⵡⵜ ⵢⴻⵍⵍⴰⵏ ⵢⴰⴽⴰⵏ, ⴷ ⵜⵉⵏ ⵉ ⴷⵢⴻⵜⵜⴰⵡⵉⵏ ⵍⴼⴰⵢⴷⴰ ⵖⴻⴼ ⵡⴰⵟⴰⵙ ⵏ ⵙⵙⴻⴱⴱⴰⵜ, ⴳⴰⵔⴰⵙⴻⵏⵜ:

ⴰⵔⵛⵀⵉⵜⴻⵛⵜⵓⵔⴻⵙ ⵜⵜⵡⴰⵅⴻⴷⵎⴻⵏⵜ ⴷ ⵜⵜⴰⵡⵉⵍⴰⵜ ⵏ ⵓⵙⵏⵓⵍⴼⵓ ⵏ ⵢⵉⵎⵓⴽⴰⵏ ⵉⵎⴰⵢⵏⵓⵜⴻⵏ. ⵉⵎⴷⴰⵏⴻⵏ ⴰⵢ ⴷⵢⴻⵙⵏⵓⵍⴼⵓⵢⴻⵏ ⵜⵉⴳⴻⵎⵎⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ ⵜⵜⵇⴰⴷⴰⵔⴻⵏ ⴰⴱⵔⵉⴷ ⵏ ⵜⵖⵓⵔⵉ ⴷ ⵜⵓⵛⵛⴹⴰ ⴰⴽⴽⴻⵏ ⴰⴷ ⴰⵡⴹⴻⵏ ⵖⴻⵔ ⵢⵉⴳⵎⴰⴹⵏⵙⴻⵏ ⵉⵏⴻⴳⴳⵓⵔⴰ. ⵙ ⵓⵙⴻⵇⴷⴻⵛ ⵏ ⵢⵉⴳⴻⵎⵎⴰⴹⵏⵙⴻⵏ ⵉⵏⴻⴳⴳⵓⵔⴰ, ⵏⴻⵣⵎⴻⵔ ⴰⴷ ⵏⴻⵙⵙⴻⵎⵖⴻⵔ ⴰⵟⴰⵙ ⵏ ⵡⴰⴽⵓⴷ.

ⵉⵎⵣⵓⵏⴻⵏ ⵢⴻⵜⵜⵡⴰⵙⵍⴻⵖⵎⴻⵏ ⵓⵇⴱⴻⵍ ⵙ ⵓⵎⴰⵜⴰ ⵍⵍⴰⵏ ⵉ ⵓⵙⴻⵇⴷⴻⵛ ⵙ ⵜⵖⴰⵡⵍⴰ. ⵎⵉ ⴰⵔⴰ ⴷⵙⵙⵓⴼⴼⵖⴻⵏ ⵢⵉⵏⴰⴳⵎⴰⵢⴻⵏ ⵜⵉⴳⴻⵎⵎⵉⵡⵉⵏⵏⵙⴻⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ, ⵙ ⵓⵎⴰⵜⴰ ⵙⵙⵓⴼⴼⵓⵖⴻⵏⴷ ⵓⵍⴰ ⴷ ⵉⴼⴻⵔⴷⵉⵙⴻⵏ ⵢⴻⵜⵜⵡⴰⵙⵍⴻⵖⵎⴻⵏ, ⴰⴽⴽⴻⵏ ⵉⵙⴻⵇⴷⴰⵛⴻⵏ ⵓⵔ ⵜⵜⵄⴻⴷⴷⴰⵢⴻⵏ ⴰⵔⴰ ⵖⴻⴼ ⵡⵓⴳⵓⵔⴻⵏ ⵏ ⵓⵙⵙⵉⵍⴻⵖ/ⴰⵙⵏⴻⵔⵏⵉ ⵙⴻⴳ ⵍⵇⴰⵄⴰ. ⴰⵢⴰ ⴷ ⴰⵢⴻⵏ ⵉ ⴷⵢⴻⵜⵜⴰⵡⵉⵏ ⵏⵏⴼⴻⵄ ⵍⴰⴷⵖⴰ ⵉ [ⵉⵎⴷⴰⵏⴻⵏ ⵉⵎⴻⵇⵔⴰⵏⴻⵏ ⴰⵟⴰⵙ, ⵉⵃⴻⵎⵎⵍⴻⵏ ⵜⵜⴰⵡⵉⵍⴰⵜ].

ⴰⵎⴻⴷⵢⴰ ⵏ ⵜⵎⴻⵚⴽⵉⵡⵜ ⵏ ⵜⵎⵓⵖⵍⵉ ⵢⴻⵜⵜⵡⴰⵙⵙⵏⴻⵏ ⴷⴻⴳⵙⴻⵏⵜ:

  • ⵍⴻⵏⴻⵜ (60k ⵏ ⵢⵉⴼⴻⵔⴷⵉⵙⴻⵏ)

LeNet

  • ⴰⵍⴻⴽⵙNet (60 ⵏ ⵢⵉⵎⵉⵜⵔⴻⵏ ⵏ ⵢⵉⵙⵓⴹⴰⴼ)

AlexNet

  • VGG16 (138 ⵏ ⵢⵉⵙⵓⴹⴰⴼ)

VGG-16

ⵓⵏⴻⵟ

ⵓⵏⴻⵜ ⴷ ⵜⴰⵙⴻⴳⴷⴰ ⵉ ⴷⵢⴻⵙⴱⴻⴷⴷⴻⵏ ⴰⵥⴻⴹⴹⴰ ⵏ ⵓⵙⵎⴻⵍ ⵙ ⵍⴻⴽⵎⴰⵍⵉⵙ, ⴰⵏⴰⵎⴻⴽⵉⵙ ⵓⵔ ⵜⴻⵙⵄⵉ ⴰⵔⴰ ⴽⵔⴰ ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵉⵛⵓⴷⴷⴻⵏ ⵙ ⵍⴻⴽⵎⴰⵍⵏⵙⴻⵏⵜ. ⵜⴻⵜⵜⵡⴰⵙⵇⴻⴷⵛⴻⵎ ⵜⵉⴽⴽⴻⵍⵜ ⵜⴰⵎⴻⵣⵡⴰⵔⵓⵜ ⵉ ⵢⵉⵡⴻⵏ ⵏ ⵓⵎⴰⵀⵉⵍ ⵏ ⵓⵙⵙⴻⵎⵔⴻⵙ ⵏ ⵜⵓⴳⵏⴰ ⵜⴰⵙⵏⴰⵊⵢⴰⵏⵜ. ⵉⴳⵎⴰⴹⴰ ⵙⵙⴰⵡⴹⴻⵏ ⴰⴷ ⵙⵇⴻⴷⵛⴻⵏ ⵉⵏⴰⴳⵎⴰⵢⴻⵏ ⴰⴽⴽⴻⵏ ⴰⴷ ⵜⵙⵏⴻⵔⵏⵉⵏ ⵖⴻⵔ ⵍⴻⵛⵖⴰⵍ ⵏⵉⴹⴻⵏ ⴷⴻⴳ ⵜⵎⵓⵖⵍⵉ ⵏ ⵓⵙⴻⵍⴽⵉⵎ.

ⴷⴻⴳ 2019, Google ⵢⴻⵙⵙⴻⵇⴷⴻⵛ ⵜⴰⵙⴻⴳⴷⴰ [ⵢⴻⴱⵏⴰⵏ ⵖⴻⴼ UNet] ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵢⴻⵙⵏⵓⵍⴼⵓ ⴰⵎⵣⵓⵏ ⵏ ⵓⵙⵏⵓⵍⴼⵓ ⵏ ⵓⴳⴻⴼⴼⵓⵔ.

ⵉⵙⴻⵎ ⵏ “UNet” ⵢⴻⴽⴽⴰⴷ ⵙⴻⴳ ⵜⴰⵍⵖⴰ ⵏ “U” ⵏ ⵜⵎⴻⵚⴽⵉⵡⵜⵉⵙ.

U-net Architecture

ⵏⴻⵙⴱⴰⵏⴷ ⴽⵔⴰⴹ ⵏ ⵢⵉⴼⴻⵔⴷⵉⵙⴻⵏ ⵉⴳⴻⵊⴷⴰⵏⴻⵏ:

  1. Contracting / Encoder: Asemres ⵏ ⵜⴼⴻⵍⵡⵉⵢⵉⵏ ⵏ ⵜⵎⴻⵥⵥⵓⵖⵜ/ⵜⵎⴻⵥⵥⵓⵖⵜ ⵉ ⵢⴻⵜⵜⵃⴻⵜⵜⵉⵎⴻⵏ ⵜⵓⴳⵏⴰ ⵏ ⵓⵙⵎⴻⵍ ⴷⴻⴳ ⵢⵉⵡⴻⵏ ⵏ ⵓⵙⵎⴻⵍ ⵏ ⵜⵎⴻⵥⵥⵓⵖⵜ ⵜⴰⵎⴻⵛⵟⵓⵃⵜ.

  2. ⴱⵔⵉⴷⴳⴻ / Bottleneck : ⴰⵃⵔⵉⵛ ⵏ ⴷⴷⴰⵡ ⵏ “ⵓ” ⵢⴻⵇⵇⴻⵏ ⴰⵙⴻⴽⴽⵉⵍ ⵖⴻⵔ ⵓⵙⴻⴽⴽⵉⵍ. ⵢⴻⵜⵜⵡⴰⵅⴷⴻⵎ ⵙ ⵜⵎⴻⵥⵔⵉ ⵏ ⵜⵎⴻⵥⵔⵉⵡⵉⵏ ⵏ ⵜⵎⴻⵥⵔⵉ.

  3. Decontracting / Decoder : Asemres ⵏ ⵜⴼⴻⵍⵡⵉⵢⵉⵏ ⵏ ⵜⴼⴻⵍⵡⵉⵜ ⴷ ⵜⴼⴻⵍⵡⵉⵜ ⵏ ⵜⴼⴻⵍⵡⵉⵜ, ⵉ “ⵢⴻⵙⴼⴻⴹⴹⴻⵏ” ⴰⵙⴻⵏⴼⴰⵔ ⵏ ⵜⴼⴻⵍⵡⵉⵜ ⵏ ⵜⴼⴻⵍⵡⵉⵜ.

ⴰⵔⵛⵀⵉⵜⴻⵛⵜⵓⵔⴻ ⵏ UNet ⵜⴱⴰⵏⴷ ⴰⵎ ⵜⵎⴻⵥⴷⵉⵜ ⵏ ⵜⵎⴻⵥⴷⵉⵜ ⴰⵔ ⴰⵙⵙⴰ. ⵎⴰⵛⴰ, ⴰⵎⴳⵉⵔⴻⴷ ⵢⴻⵍⵍⴰ ⴷⴻⴳ ⵢⵉⵙⴰⵍⵍⴻⵏ ⵢⴻⵜⵜⵄⴻⴷⴷⴰⵢⴻⵏ ⴳⴰⵔ ⵓⵎⵙⴻⴹⵔⵓ ⴷ ⵓⵎⵙⴻⴹⵔⵓ. ⵉⵙⴰⵍⴰⵏⴰ ⵜⵜⵡⴰⵄⴻⴷⴷⴰⵢⴻⵏ ⵙ ⵓⵙⴷⵓⴽⴽⴻⵍ ⵏ ⵢⵉⴳⴻⵎⵎⴰⴹ ⵏ ⵜⵎⴻⵥⵔⵉⵡⵉⵏ ⵙⴻⴳ ⵓⵙⵏⵉⵍⴻⵙ ⴰⴽⴽⴻⴷ ⵜⵉⵏ ⵏ ⵜⵎⴻⵥⵔⵉⵡⵉⵏ ⵏ ⵓⵙⵏⵉⵍⴻⵙ. ⴰⴱⴻⴷⴷⴻⵍⴰ ⵢⴻⵙⵏⴻⵔⵏⴰⵢ ⵜⵉⴼⵔⴰⵜ, ⵢⴻⵔⵏⴰ ⵢⴻⵜⵜⴰⴵⴵⴰ ⴰⵎⴹⴰⵏ ⴰⴷ ⴷⵢⴻⵙⵙⵓⴼⴼⴻⵖ ⴰⵙⴻⵏⴼⴰⵔ ⵙ ⵜⵖⴰⵡⵍⴰ ⵓⴳⴰⵔ ⴷⴻⴳ ⵓⵎⴹⵉⵇ (ⴰⵎⴽⴰⵏ ⵏ yipixel ⴷⴻⴳ ⵓⵙⴻⴽⵛⴻⵎ ⴰⴷ ⵢⵉⵍⵉ ⴷ ⴰⵢⴻⵏ ⵉⴳⴻⵔⵔⵣⴻⵏ ⵓⴳⴰⵔ, ⴰⴷ ⵢⴻⴼⵔⵓ ⵓⴳⵓⵔ ⵉ ⴷⵢⴻⴹⵔⴰⵏ ⴷⴻⴳ ⵢⵉⵎⵓⴽⴰⵏ ⵓⵔ ⵏⴻⵙⵄⵉ ⴰⵔⴰ ⴰⵙⴻⵎⵔⴻⵙ). ⵜⴰⵙⴻⵎⵍⵉⵍⵜ ⵜⴻⵜⵜⵡⴰⵅⴷⴻⵎ ⵙ ⵜⵎⴻⵥⵔⵉ (symétrie).

Lebni ⵏ Umyag ⵏ UNet ⵉ ⵓⵙⴽⴰⵙⵉ ⵏ ⵡⴰⵙⵙⴰ ⵏ ⵓⴳⴻⴼⴼⵓⵔ

ⴷⴻⴳ ⵓⵃⵔⵉⵛⴰ, ⴰⴷ ⵏⴻⴱⵏⵓ ⴰⵎⵣⵓⵏ ⵏ UNet ⵉ ⵡⴰⴽⴽⴻⵏ ⴰⴷ ⵏⵡⴰⵍⵉ ⵍⵃⴰⵍⴰ ⵏ ⵜⴻⴳⵏⴰⵡⵜ ⵙⴻⴳ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵏ ⵢⵉⴳⴻⵏⵙⴰⵜⴻⵏ. ⴰⴷ ⵏⴻⵙⵙⴻⵎⵔⴻⵙ ⴰⵎⴹⵉⵇ ⵢⴻⵜⵜⵡⴰⵙⵍⴻⵖⵎⴻⵏ ⵓⵇⴱⴻⵍ ⵙ ⵢⵉⵙⴻⵎ ⵏ [RainNet].

ⴰⴽⴰⵔⴰⵎⴰ ⴷⴷⴰⵡⴰ ⵢⴻⵍⵍⴰ ⴷⴻⴳ [colab]agi (ⴰⵃⵔⵉⵛ).

ⵏⴻⵙⴱⴻⴷⴷⴷ ⴷⵉ ⵜⴰⵣⵡⴰⵔⴰ ⵡⵔⴰⴷⵍⵉⴱ, ⴷ ⵜⴰⵎⴽⴻⵔⴹⵉⵜ ⵏ ⵓⵖⴱⴰⵍⵓ ⵢⴻⵍⴷⵉⵏ ⵉ ⵓⵙⴻⵇⴷⴻⵛ ⵏ ⵢⵉⵙⴻⴼⴽⴰ ⵏ ⵔⴰⴷⴰⵔ ⵏ ⵜⴻⴳⵏⴰⵡⵜ

!pip install wradlib
import wradlib as wrl

ⵙⵢⵉⵏ, ⵏⴻⵜⵜⴰⵔⵓ ⵙⵏⴰⵜ ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵏ ⵜⵎⴻⵥⵍⴰ (utilité) ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵏⴻⵙⵙⴻⴽⵛⴻⵎ ⵉⵙⴻⴼⴽⴰ ⵏ ⵜⵎⴻⵥⴷⵉⵜ ⵙⴻⴳ ⴰⵇⴻⴷⴷⴰⵛ ⵏ ⵢⵉⵙⴻⴼⴽⴰ ⵢⴻⵍⴷⵉⵏ ⵏ DWD


import urllib.request
import io
import numpy as np
import datetime

def download_and_read_RY(RY_timestamp):
   url = f"https://opendata.dwd.de/weather/radar/radolan/ry/raa01-ry_10000-{RY_timestamp}-dwd---bin"
   data_binary = urllib.request.urlopen(url).read()
   data, attr = wrl.io.read_radolan_composite(io.BytesIO(data_binary), missing = 0)
   data = data.astype("float32")
   return data,attr

def download_data():
   latest_scan, latest_attr = download_and_read_RY("latest")
   latest_datetime = latest_attr["datetime"]
   list_for_downloading = [ts.strftime("%y%m%d%H%M") for ts in
       [latest_datetime - datetime.timedelta(minutes=t) for t in [15, 10, 5]]]
   previous_scans = np.array([download_and_read_RY(ts)[0] for ts in list_for_downloading])
   print(list_for_downloading)
   scans = np.concatenate([previous_scans, latest_scan[np.newaxis, ::, ::]], axis = 0)

   return scans, latest_datetime

ⵜⵉⵙⵏⴰⵜⵡⵉⵍⵉⵏⴰ ⵜⵜⴰⴵⴵⴰⵏⵜⴰⵖ ⴰⴷ ⴷⵏⴻⵙⵙⴻⴽⵛⴻⵎ 4 ⵏ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ ⵏ ⵢⵉⴳⴻⵏⵙⴰⵜⴻⵏ, ⴷ ⴰⵎⴹⴰⵏ ⵏ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵏ ⵢⵉⴳⴻⵏⵙⴰⵜⴻⵏ ⴰⵢ ⵢⴻⵙⵙⴻⴼⴽ ⴰⴷ ⵜⴻⵏⵜⵏⴻⵅⴷⴻⵎ ⴰⴽⴽⴻⵏ ⴰⴷ ⵏⴻⵅⴷⴻⵎ ⵜⵉⴳⵏⴰⵜⵉⵏ ⵙ ⵍⴻⵎⵜⴻⵍⵏⵏⴻⵖ ⴰⵢ ⴷⵏⴻⵙⵙⴻⵍⵎⴻⴷ ⵓⵇⴱⴻⵍ.

ⵏⴻⵣⵎⴻⵔ ⴰⴷ ⵏⴻⵙⵙⴻⵅⴷⴻⵎ ⵜⵉⵖⴱⵓⵍⴰ ⵢⴻⵜⵜⵡⴰⵅⴻⵍⵇⴻⵏ ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵏⴰⵡⵉ 4 ⵏ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ


RY_latest, RY_latest_timestep = download_data()

ⵎⵉ ⴰⵔⴰ ⴷⵏⴰⵡⵉ ⵜⵓⴳⵏⵉⵡⵉⵏ, ⵏⴻⵙⵙⴻⵅⴷⴰⵎ ⵜⴰⵔⵔⴰⵢⵜ ⵏ ⵡⵔⴰⴷⵍⵉⴱ [vis.plot_ppi.ⵀⵜⵎⵍ) ​​ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵏⴻⵙⵙⴻⴽⵛⴻⵎ ⵉⵙⴻⴼⴽⴰ .

for i in range(RY_latest.shape[0]):
   wrl.vis.plot_ppi(RY_latest[i])

VIS Radar

ⵏⴻⵙⵙⴻⴽⵛⴻⵎⴷ ⵜⵓⵔⴰ ⵉⵙⴻⴼⴽⴰⵏⵏⴻⵖ. ⴰⴷ n’err l’modèle ⵉ ⴷⵉⵜⴻⴷⴷⵓⵏ.

ⵏⴻⴱⴷⴰ ⵙ ⵓⵙⵙⴻⴽⵛⴻⵎ ⵏ ⵢⵉⵖⴻⵔⴱⴰⵣⴻⵏ ⵉⵛⵓⴷⴷⴻⵏ ⵖⴻⵔ ⵡⴰⵢⴰ. ⴰⴷ ⵏⴻⵙⵙⴻⵅⴷⴻⵎ TensorFlow ⴷⴻⴳ ⵓⵎⴰⴳⵔⴰⴷⴰ.

ⵙⴻⴳ tensorflow.ⴽⴻⵔⴰⵙ.ⵍⴰⵢⴻⵔⵙ ⵙⵙⴻⴽⵛⴻⵎⴷ ⴰⵙⴻⴽⵛⴻⵎ, Conv2D, ⴰⵙⴻⴽⵛⴻⵎ, ⴰⵙⴷⵓⴽⴽⴻⵍ, ⴰⵙⴻⵏⵇⴻⴷ ⵏ Conv2D, MaxPool2D

ⵙⴻⴳ tensorflow.ⴽⴻⵔⴰⵙ.ⵉⵎⵓⴷⴻⵍ ⵏ ⵓⵙⴻⴽⵛⴻⵎ ⵏ ⵓⵎⵓⴷⴻⵍ

ⴰⴷ ⵏⴻⴱⵏⵓ 3 ⵏ ⵜⵖⴰⵡⵙⵉⵡⵉⵏ ⵏ ⵍⴻⴱⵏⵉ ⵜⵉⵎⴻⵣⵡⵓⵔⴰ. "ⵉⴼⴻⵔⴷⵉⵙⴻⵏⴰ ⵏ ⵍⴻⴱⵏⵉ" ⴰⴷ ⵜⵜⵡⴰⵙⴻⵇⴷⴰⵛⴻⵏ ⵉ ⵓⵙⵙⴻⴹⵔⵓ ⵏ ⵜⵎⴻⵚⴽⵉⵡⵜ ⴰⴽⴽ, ⵙ [ⴰⵙⴻⴹⵔⵓ]-ⴰ.

ⴰⵃⵔⵉⵛ ⴰⵎⴻⵣⵡⴰⵔⵓ ⵢⴻⵜⵜⴻⵎⵛⴰⴱⵉ ⵖⴻⵔ ⵜⵎⴻⵥⵥⵓⵖⵜ ⵏ ⵜⴻⵙⴼⵉⴼⵉⵏ ⵏ ⵜⵎⴻⵥⵥⵓⵖⵜ, ⵏⴻⵙⵙⴰⵡⴰⵍⴰⵙ "conv_block".

def conv_block(input, num_filters):
   x = Conv2D(num_filters, 3, padding ="same", kernel_initializer="he_normal"(input))
   x = Activation("relu")(x)
   x = Conv2D(num_filters, 3, padding ="same", kernel_initializer="he_normal"(x))
   x = Activation("relu")(x)
   return x

Blok ⵡⵉⵙ ⵙⵉⵏ ⵢⴻⵜⵜⵡⴰⵙⴻⵇⴷⴻⵛ ⵉ ⵍⴻⴱⵏⵉ ⵏ ⵙⴻⴳ ⵓⵃⵔⵉⵛ ⵏ ⵓⵙⴻⴽⵍⴻⵙ (blok ⵏ ⵜⵎⴻⵥⴷⵉⵜ + ⵎⴰⵅ pooling). ⵏⴻⵙⵙⴰⵡⴰⵍⴰⵙ “aḥbas_n usekles”

def encoder_block(input, num_filters):
   x = conv_block(input, num_filters)
   p = MaxPool2D((2,2))(x)
   return x,p

ⴰⵃⵔⵉⵛ ⵡⵉⵙ ⴽⵔⴰⴹ ⴷ ⴰⵏⴻⴳⴳⴰⵔⵓ ⴷ “decoder_block” (ⴰⵙⴻⵏⵇⴻⴷ + ⵓⵙⴷⵓⴽⴽⴻⵍ + ⴰⵙⵏⴻⴼⵍⵉ).

def decoder_block(input, skip_features, num_filters):
   x = Conv2DTranspose(num_filters, (2,2), strides=2, padding="same", kernel_initializer="he_normal")
   x = Concatenate()([x, skip_features])
   x = conv_block(x, num_filters)
   return x

ⵏⴻⵙⴷⵓⴽⴽⴻⵍ ⵉⵃⵔⵉⵛⴻⵏⴰⴳⵉ ⵏ ⵍⴻⴱⵏⵉ ⴰⴽⴽⴻⵏ ⴰⴷ ⵏⴻⴱⵏⵓ ⴰⵎⵣⵓⵏ ⵏ UNet

def build_unet(input_shape = (928, 928, 4)):

   inputs = Input(input_shape)
   e1, p1 = encoder_bock(inputs, 64)
   e2, p2 = encoder_bock(p1, 128)
   e3, p3 = encoder_bock(p2, 256)
   e4, p4 = encoder_bock(p3, 512)

   b1 = conv_block(p4, 1024)

   d1 = decoder_block(b1, e4, 512)
   d2 = decoder_block(d1, e3, 256)
   d3 = decoder_block(d2, e2, 128)
   d4 = decoder_block(d3, e1, 64)

   outputs = Conv2D(1, 1, padding="same", activation="linear")(d4)

   unet = Model(inputs, outputs, name="U-Net")

   return unet

ⵃⵓⵍⴼⵓⴷ ⵙ ⵍⵃⵉⵔ ⴰⴷ ⵜⵓⵔⴰⵔⴻⴹ ⵙ ⵓⵙⴻⴹⵔⵓ, ⴰⴷ ⵜⵜⴻⵙⵙⴻⵍⵀⵓⴹ ⵏⴻⵖ ⴰⴷ ⵜⵜⴻⵙⵙⴻⵎⵍⵉⵍⴹ ⵙ ⵜⵖⴰⵡⵙⵉⵡⵉⵏⵉⴽ ⵎⴰ ⵜⴻⴱⵖⵉⴹ ⴰⴷ ⵜⵜⴻⵙⵇⴻⴷⵛⴻⴹ ⵉ ⵡⴰⵢⴻⵏ ⵏⵏⵉⴹⴻⵏ.

ⴰⵙⵍⴻⵖⵎⵓ ⵏ ⵍⴻⵎⵜⴻⵍⴰ ⵢⴻⵣⵎⴻⵔ ⴰⴷ ⵢⴻⵟⵟⴻⴼ ⴰⵟⴰⵙ ⵏ ⵡⴰⴽⵓⴷ. ⵙ ⵍⵅⵉⵔ, ⵢⴻⵍⵍⴰ ⵢⵉⵡⴻⵏ ⵏ ⵍⴻⵎⵜⴻⵍ ⵓⵎⵉ ⵙⴻⵎⵎⴰⵏ RainNet, ⴰⵢ ⴷⵢⴻⵜⵜⵡⴰⵅⴻⵍⵇⴻⵏ ⵙ ⵍⵙⴰⵙ ⵏ ⵜⵎⴻⵚⴽⵉⵡⵜ ⵏ UNet, ⵢⴻⵔⵏⴰ ⵢⴻⵜⵜⵡⴰⵙⵙⴻⵏ ⴷⴻⴳ ⵓⵙⵙⴻⴼⵇⴻⴷ ⵏ ⵜⵎⴻⵥⴷⵉⵢⵉⵏ (nowcasting) ⵏ ⵜⵎⴻⵥⴷⵉⵢⵉⵏ.

ⴰⴷ ⵏⵙⵏⵓⵍⴼⵓ ⴰⵖⴻⵔⴱⴰⵣⵉⵙ ⵏ GitHub

! git clone https://github.com/hydrogo/rainnet.git

ⵙⵙⵉⵏ ⴰⴽⵉⵏ ⴰⴷ ⴷⵏⴻⵙⵙⵓⴼⴻⵖ ⵜⵉⵥⴻⴹⵡⴰ ⵢⴻⵜⵜⵡⴰⵙⵍⴻⵖⵎⴻⵏ ⵓⵇⴱⴻⵍ ⵉ ⵍⴻⵎⵜⴻⵍⴰ

!wget -O /content/rainnet/rainnet_weights.h5 https://zenodo.org/record/3630429/files/rainnet_weights.h5

ⴰⴹⵔⵉⵙ ⵉ ⴷⵉⵜⴻⴷⴷⵓⵏ ⴷ ⴰⵙⴻⵏⴼⴰⵔ ⵏ ⵓⵎⴹⴰⵏ ⵙ ⵍⵙⴰⵙ ⵏ ⵜⵎⴻⵚⴽⵉⵡⵜ ⵉ ⴷⵢⴻⵜⵜⵡⴰⴼⴽⴰⵏ ⴷⴻⴳ ⵓⵙⵎⴻⵍ ⵙⵢⴻⵏ ⴰⴷ ⵜⵉⴷⵜⴻⵙⵙⵓⴼⵖⴻⴹ ⵙ ⵍⵇⵉⴷⴰⵔ ⵉ ⴷⵢⴻⵜⵜⵡⴰⵙⵏⴻⵇⵙⴻⵏ ⴷⴻⴳ ⵓⵎⴹⴰⵏⴰ .

import sys
from rainnet import rainnet
model = rainnet.rainnet()
model.load_weights('/content/rainnet/rainnet_weights.h5')
model.summary()

ⵜⵓⴳⵏⵉⵡⵉⵏ ⵉ ⴷⵏⴻⵙⵙⵓⴼⴻⵖ ⵙⵄⴰⵏⵜ ⴰⵣⴰⵍ ⵏ 900*900 ⵏ ⵢⵉⴼⴻⵔⴷⵉⵙⴻⵏ. ⴰⴷ ⵏⴱⴻⴷⴷⴻⵍ ⵜⵓⴳⵏⵉⵡⵉⵏⴰ ⴰⴽⴽⴻⵏ ⴰⴷ ⵎⵇⴰⴱⴰⵍⴻⵏⵜ ⴷ ⵓⵙⴻⴽⵛⴻⵎ ⵢⴻⵜⵜⵡⴰⵕⴵⴰⵏ ⵏ RainNet .

def Scaler(array):
   return np.log(array+0.01)


def invScaler(array):
   return np.exp(array) - 0.01


def pad_to_shape(array, from_shape=900, to_shape=928, how="mirror"):
   # calculate how much to pad in respect with native resolution
   padding = int( (to_shape - from_shape) / 2)
   # for input shape as (batch, W, H, channels)
   if how == "zero":
       array_padded = np.pad(array, ((0,0),(padding,padding),(padding,padding),(0,0)), mode="constant", constant_values=0)
   elif how == "mirror":
       array_padded = np.pad(array, ((0,0),(padding,padding),(padding,padding),(0,0)), mode="reflect")
   return array_padded


def pred_to_rad(pred, from_shape=928, to_shape=900):
   # pred shape 12,928,928
   padding = int( (from_shape - to_shape) / 2)
   return pred[::, padding:padding+to_shape, padding:padding+to_shape].copy()

'''
the spatial extent of input data has to be a multiple of 2n+1
where n is the number of max pooling layers
'''

def data_preprocessing(X):

   # 0. Right shape for batch
   X = np.moveaxis(X, 0, -1)
   X = X[np.newaxis, ::, ::, ::]
   # 1. To log scale
   '''
   We use a log scale to respond to skewness towards large values
   '''
   X = Scaler(X)
   # 2. from 900x900 to 928x928
   X = pad_to_shape(X)

   return X


def data_postprocessing(nwcst):

   # 0. Squeeze empty dimensions
   nwcst = np.squeeze(np.array(nwcst))
   # 1. Convert back to rainfall depth
   nwcst = invScaler(nwcst)
   # 2. Convert from 928x928 back to 900x900
   nwcst = pred_to_rad(nwcst)
   # 3. Return only positive values
   nwcst = np.where(nwcst>0, nwcst, 0)
   return nwcst

ⵏⴻⵙⵏⵓⵍⴼⴰⴷ ⵙⵢⵉⵏ ⵜⴰⵖⵓⵍⵜ ⵉ ⴷⵢⴻⵜⵜⴰⵡⵉⵏ ⵜⵉⴳⵏⴰⵜⵉⵏ.

def prediction(model_instance, input_data, lead_time=24):

   input_data = data_preprocessing(input_data)
   nwcst = []

   for _ in range(lead_time):
       pred = model_instance.predict(input_data)
       nwcst.append(pred)
       input_data = np.concatenate([input_data[::, ::, ::, 1:], pred], axis = -1)

   nwcst = data_postprocessing(nwcst)

   return nwcst

ⵙⵙⵉⵏ ⴰⴽⵉⵏ ⴰⴷ ⵏⴻⵙⵙⴰⵡⴻⵍ ⵉ ⵜⴻⵖⵍⵉⴼⵜⴰ ⵖⴻⴼ ⵢⵉⵙⴻⴼⴽⴰ ⴰⵢ ⴷⵏⴻⵙⵙⵓⴼⴻⵖ ⵣⵉⴽ

Y_pred = prediction(model, RY_latest)

ⵏⴻⵣⵎⴻⵔ ⴰⴷ ⵏⴻⵙⵙⴻⵎⵔⴻⵙ ⵜⵉⴳⵏⴰⵜⵉⵏ, ⵢⴻⵔⵏⴰ ⴰⴷ ⵜⴻⵏⵜⵏⴻⵃⵔⴻⵣ ⴰⴽⴽⴻⵏ ⴰⴷ ⵏⴻⵙⵙⴻⵅⴷⴻⵎ ⵉⴳⵎⴰⴹ ⵢⴻⵜⵜⵡⴰⵃⴻⵔⵣⴻⵏ ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵏⴻⵙⵏⵓⵍⴼⵓ ⵜⵓⴳⵏⴰ ⵏ ⴳⵉⴼ ⴰⵔⴰ ⴰⵖⵢⴻⴵⴵⴻⵏ ⴰⴷ ⵏⵡⴰⵍⵉ ⵜⵉⴳⵏⴰⵜⵉⵏ .

import matplotlib.pyplot as plt
names = []
for i in range(0, 19):
   im = wrl.vis.plot_ppi(Y_pred[i])
   name = '/content/image'+str(i)+'.png'
   names.append(name)
   plt.savefig(name)

import imageio
from google.colab import files

imgs = []

for name in names:
   imgs.append(imageio.imread(name))

imageio.mimsave('/content/pred.gif', imgs, fps=4)
files.download('/content/pred.gif')

Resuts

ⴰⵢⵓⵣ ⵉⵎⵉ ⵜⵉⴷⵜⴻⵡⵡⵉⴹ ⴰⵔⵎⵉ ⴷ ⴰⴽⴽⴰ! ⵜⵣⴻⵎⵔⴻⴹ ⵜⵓⵔⴰ ⴰⴷ ⵜⴻⵙⵇⴻⴷⵛⴻⴹ RainNet ⴰⴽⴽⴻⵏ ⴰⴷ ⵜⴳⴻⴹ ⵜⵉⴳⵏⴰⵜⵉⵏ ⵏ ⵜⵎⵓⵖⵍⵉ ⵢⴻⵔⵏⴰ ⴰⴷ ⵜⴻⵏⵜⵡⴰⵍⵉⴹ.

ⵜⴰⴳⴳⴰⵔⴰ

ⴷⴻⴳ ⵓⵎⴰⴳⵔⴰⴷⴰ, ⵏⴻⵙⵙⴻⵅⴷⴻⵎ ⴰⵎⵓⴷ ⵏ ⵓⵍⵎⴰⴷ ⵏ ⵜⵎⴰⵛⵉⵏⵉⵏ (RainNet) ⴰⴽⴽⴻⵏ ⴰⴷ ⵏⴻⵅⴷⴻⵎ ⴰⵙⴻⵏⵇⴻⴷ ⵏ ⵜⵎⴻⵥⴷⵉⵢⵉⵏ ⵏ ⵡⴰⵙⵙⴰ. ⵏⴻⵙⵙⴻⵇⴷⴻⵛ ⵜⴰⵙⴻⴳⴷⴰ ⵏ UNet, ⵉ ⵏⴻⴱⵏⴰ ⵙ ⵓⵙⴻⵇⴷⴻⵛ ⵏ TensorFlow. ⵏⴻⵙⴱⴻⴷⴷⴷ ⵢⵉⵡⴻⵏ ⵏ ⵍⴻⵎⵜⴻⵍ ⵢⴻⵜⵜⵡⴰⵙⵍⴻⵖⵎⴻⵏ ⵓⵇⴱⴻⵍ ⴰⴽⴽⴻⵏ ⴰⴷ ⴷⵏⴻⴱⴷⴻⵔ ⵜⵓⴳⵏⵉⵡⵉⵏ ⵏ ⵓⴳⴻⵏⵙⴰ.

ⴰⵙⴻⴹⵔⵓⴰ ⵢⴻⵣⵎⴻⵔ ⴰⴷ ⵢⴻⵜⵜⵡⴰⵙⵏⴻⵔⵏⵉ ⵙ ⵡⴰⵟⴰⵙ ⵏ ⵢⵉⴱⴻⵔⴷⴰⵏ. ⴰⵎⴻⴷⵢⴰ:

  1. Ssnefli ⵍⴻⵎⵜⴻⵍ ⴷⴻⴳ ⵜⵎⴻⵣⴳⵓⵏⵜⵉⴽ ⵏ ⵢⵉⵙⴻⴼⴽⴰ

  2. Seqdec ⴰⴼⴻⵔⴷⵉⵙ ⵏ ⵜⵎⵓⵖⵍⵉ, ⴰⵎ CBAM (Aferdis ⵏ ⵜⵎⵓⵖⵍⵉ ⵏ ⵓⴱⵔⵉⴷ ⵏ ⵜⵎⵓⵖⵍⵉ) ⴷⴻⴳ ⵜⵎⴻⵚⴽⵉⵡⵜ.

ⵜⵉⵙⵖⵓⵏⵉⵏ

ⴰⵙⴷ ⵖⴻⵔ ⵢⵉⵡⴻⵏ ⵙⴻⴳ ⵢⵉⵅⴻⴷⴷⵉⵎⴻⵏⵏⵏⴻⵖ ⵉⵍⴻⵍⵍⵉⵢⴻⵏ!

ⴱⴷⵓ ⵛⵛⵖⴻⵍⵉⴽ ⴷ ⴰⵎⵓⵙⵏⴰⵡ ⵏ ⵢⵉⵙⴻⴼⴽⴰ ⵙ ⵜⵉⵖⴰⵡⵙⵉⵡⵉⵏⵏⵏⴻⵖ ⵜⵉⵍⴻⵍⵍⵉⵢⵉⵏ, ⴰⵢ ⴷⵢⴻⵍⵍⴰⵏ ⵙ ⵍⵙⴰⵙ ⵏ ⵡⴰⵀⵉⵍ ⵏ ⵓⵙⴻⵍⵎⴻⴷ ⴰⵢ ⵉⵣⴻⵎⵔⴻⵏ ⴰⴷ ⵢⴻⵜⵜⵡⴰⵙⵏⴻⴼⵍⵉ ⵢⴻⵔⵏⴰ ⵜⵜⵡⴰⴹⴻⴼⵔⴻⵏ ⵙⵖⵓⵔ ⵢⵉⵎⴰⵣⵣⴰⵢⴻⵏ ⵏ ⵜⴻⵎⴳⵓⵔⵉ.


Career Services background pattern

ⵉⵎⴻⵥⵍⴰ ⵏ ⵜⵎⵓⵙⵏⵉ

Contact Section background image

ⴰⴷ ⵏⴻⵇⵇⵉⵎ ⴷⴻⴳ ⵓⵙⵉⵡⴰⴹ

Code Labs Academy © 2024 ⵉⵣⴻⵔⴼⴰⵏ ⴰⴽⴽ ⵜⵜⵡⴰⵃⴻⵔⵣⴻⵏ.