--- title: Cels emoji: πŸŒ– colorFrom: blue colorTo: purple sdk: streamlit sdk_version: 1.42.1 app_file: app.py pinned: false --- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference # Cross Attention Classifier НиТС тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСн Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ модСль. Π’ самой послСднСй сСкции "ОписаниС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ²" ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описано, ΠΊΠ°ΠΊ я ΠΏΡ€ΠΈΡˆΠ»Π° ΠΊ этому ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»Π°ΡΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ описаны Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ€Π΅ΡˆΠΈΠ»Π° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ (Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈ-эссС, Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ). ## ОписаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ self-supervised ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ (BYOL) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Cross Attention. - **train_byol.py** β€” скрипт для обучСния ΠΌΠΎΠ΄Π΅Π»ΠΈ-энкодСра ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ BYOL. - **train_cross_classifier.py** β€” скрипт для обучСния классификатора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ энкодСр ΠΈ Cross Attention. - **app.py** β€” Streamlit-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для инфСрСнса ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ прСдсказаний (гСнСрация случайных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ). ## Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСпозитория ``` . β”œβ”€β”€ src β”‚ β”œβ”€β”€ dataset.py # РСализация датасСтов (RandomAugmentedDataset ΠΈ RandomPairDataset) β”‚ β”œβ”€β”€ inference.py # Класс для инфСрСнса (CrossAttentionInference) ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β”‚ └── models.py # ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ (BYOL, VGGLikeEncode, CrossAttentionClassifier) β”œβ”€β”€ train_byol.py # Π‘ΠΊΡ€ΠΈΠΏΡ‚ обучСния ΠΌΠΎΠ΄Π΅Π»ΠΈ BYOL β”œβ”€β”€ train_cross_classifier.py # Π‘ΠΊΡ€ΠΈΠΏΡ‚ обучСния Cross Attention Classifier (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ энкодСр) β”œβ”€β”€ app.py # Streamlit-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для инфСрСнса β”œβ”€β”€ requirements.txt # Бписок Python-зависимостСй (pip install -r requirements.txt) └── pyproject.toml / poetry.lock # Π€Π°ΠΉΠ» для установки зависимостСй Ρ‡Π΅Ρ€Π΅Π· Poetry ``` ## Установка зависимостСй МоТно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости двумя способами: 1. **Π§Π΅Ρ€Π΅Π· `pip` ΠΈ `requirements.txt`:** ```bash pip install -r requirements.txt ``` 2. **Π§Π΅Ρ€Π΅Π· Poetry:** ```bash poetry install ``` ## Как ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ модСль ### 1. ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ энкодСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BYOL НуТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ: ```bash python train_byol.py ``` - Π­Ρ‚ΠΎΡ‚ скрипт ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚ модСль энкодСра (`VGGLikeEncode`) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ BYOL Π½Π° Π΄Π°Π½Π½Ρ‹Ρ…, сгСнСрированных `RandomAugmentedDataset`. - ПослС обучСния Π»ΡƒΡ‡ΡˆΠ°Ρ модСль (с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ `val_loss`) сохраняСтся Π² `best_byol.pth`. ### 2. ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Cross Attention Classifier `best_byol.pth` (вСса энкодСра) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ). Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ: ```bash python train_cross_classifier.py ``` - Π­Ρ‚ΠΎΡ‚ скрипт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ энкодСр ΠΈ ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚ классификатор для опрСдСлСния, содСрТат Π»ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. - По ΠΈΡ‚ΠΎΠ³Π°ΠΌ сохранит вСса ΠΌΠΎΠ΄Π΅Π»ΠΈ-классификатора Π² `best_attention_classifier.pth`. ## Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ инфСрСнс ### Запуск Ρ‡Π΅Ρ€Π΅Π· Streamlit-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. Π€Π°ΠΉΠ» вСсов `best_attention_classifier.pth` Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ 2. НуТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Streamlit-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ```bash streamlit run app.py ``` 3. Π”Π°Π»ΡŒΡˆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выдаст Streamlit (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ [http://localhost:8501](http://localhost:8501)). 4. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ **Β«Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния»**. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сгСнСрируСт ΠΏΠ°Ρ€Ρƒ случайных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ модСлью ΠΌΠ΅Ρ‚ΠΊΡƒ. ### ИспользованиС класса инфСрСнса Π² ΠΊΠΎΠ΄Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ модСль Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Π±Π΅Π· интСрфСйса Streamlit), ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ класс ΠΈΠ· `src/inference.py`, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ вСсам ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ прСдсказания. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ```python import torch from src.inference import CrossAttentionInference device = torch.device("cuda" if torch.cuda.is_available() else "cpu") inference = CrossAttentionInference( model_path="best_attention_classifier.pth", device=device ) pred_label, (img1, img2) = inference.predict_random_pair() print(f"ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ ΠΌΠ΅Ρ‚ΠΊΠ°: {pred_label}") ``` --- ## ОписаниС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ### BYOL + Cross-attention (Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄) Когда я ΠΎΠ±Π΄ΡƒΠΌΡ‹Π²Π°Π»Π° Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, я поняла, Ρ‡Ρ‚ΠΎ Ρƒ крСативности Π½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»Π°, поэтому ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ обосновано Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Ρ€Π°Π·ΠΎΠΉ "ΠΏΡ€ΠΈΠΊΠΎΠ»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ", Π½ΠΎ ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хочСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ. И я Ρ€Π΅ΡˆΠΈΠ»Π° ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с отсутствиСм Π΄Π°Π½Π½Ρ‹Ρ… Π² мСдицинской сфСрС. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅Ρ‚, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ для всСх Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΉΠ±Π». Но Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ, Ссли Ρƒ нас Π½Π΅Ρ‚ возмоТности ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ? Или Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ 100ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 10000 ΠΈΠ· Π½ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹? НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π±Π°Π½ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ опухолями, Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 10% ΠΈΠ· Π½ΠΈΡ…. Как ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π΄Π°Π½Π½Ρ‹Π΅ для обучСния ΠΌΠΎΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ изобраТСния? Π‘Π°ΠΌΡƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ пСрСнСсти Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ Π²ΠΈΠ΄Π° "ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ прогрСссирования заболСвания" ΠΈΠ»ΠΈ "сравнСниС ΠΏΠ°Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠΉ". ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ self-supervised ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ модСль Π½Π° Π½Π΅Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° нСбольшом датасСтС с Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ. #### BYOL BYOL [Bootstrap Your Own Latent](https://arxiv.org/pdf/2006.07733) β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ self-supervised обучСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ модСль Π½Π° Π½Π΅Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠ°Ρ€ для обучСния, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ contrastive ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ BYOL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π° Π½Π° основС Π΄Π²ΡƒΡ… views (Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΉ) ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния. НС ΡΡ…Π»Π°ΠΏΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ симмСтрична, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ‚ΠΎΠΊ добавляСтся MLP ΠΏΡ€Π΅Π΄ΠΈΠΊΡ‚ΠΎΡ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ stop gradient опСрация. Π’ ΠΈΡ‚ΠΎΠ³Π΅ модСль учится ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ ΠΈΠ· изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для дообучСния Π½Π° мСньшСм датасСтС. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС я использовала энкодСр с ΠΏΠΎΡ…ΠΎΠΆΠ΅ΠΉ Π½Π° `VGG` Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ. Π’Ρ‹Π±Ρ€Π°Π»Π° VGG я ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ResNet со skip-connection Π½Π΅Ρ‚ смысла, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ всСго Π»ΠΈ 32x32, ΠΈ Ρ‡Π΅Ρ€Π΅Π· нСсколько слоСв feature ΠΌΠ°ΠΏΠ° Π±Ρ‹Π»Π° ΡƒΠΆΠ΅ 8x8. Π’ Ρ†Π΅Π»ΠΎΠΌ сама Π·Π°Π΄Π°Ρ‡Π° заставляСт Π±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ слоТными ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ модСль Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ датасСтС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ (ΠΏΠΎΡ‡Ρ‚ΠΈ) Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ датасСтС достаточно Π»Π΅Π³ΠΊΠΎ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² датасСт для прСдобучСния Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ (Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΈ Ρ‚Π΄), Π½ΠΎ сами эти Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ нСсколько пиксСлСй, ΠΈ Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡ… сильно ΠΈΡΠΊΠ°ΠΆΠ°ΡŽΡ‚. Π’ Ρ†Π΅Π»ΠΎΠΌ Π½Π° Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… изобраТСниях ΠΏΠΎΡ‡Ρ‚ΠΈ всС Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ становятся агрСссивными. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ Π½Π° Π΄Π²ΡƒΡ… Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ…, Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° Π² Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ рСвСрс Ρ†Π²Π΅Ρ‚Π°, ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Ρ‹, сдвигы, гауссовский ΡˆΡƒΠΌ ΠΈ Ρ‚Π΄. #### Cross Attention ЧСстно скаТу, ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ мСня Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»Π° Π·Π°Π΄Π°Ρ‡Π° с собСсСдования, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° снимка ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ области. Π― нашла ΡΡ‚Π°Ρ‚ΡŒΡŽ - [An Adaptive Remote Sensing Image-Matching Network Based on Cross Attention and Deformable Convolution](https://www.researchgate.net/publication/388063503_An_Adaptive_Remote_Sensing_Image-Matching_Network_Based_on_Cross_Attention_and_Deformable_Convolution) Π³Π΄Π΅ Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ (ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ кстати ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ VGG), Π½ΠΎ для Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (сопоставлСниС Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ со спутника). Π― помню Π² Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° cross-attention - Ρƒ Π½Π΅Π³ΠΎ квадратичная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΈ Ссли ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 512x512, Ρ‚ΠΎ это ΡƒΠΆΠ΅ становится ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π·Π°Π΄Π°Ρ‡Π΅ изобраТСния 32x32, я Ρ€Π΅ΡˆΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ умСстно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ (Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… дальшС я ΠΎΠΏΠΈΡˆΡƒ, ΠΊΠ°ΠΊ Π±Ρ‹ Ρ€Π΅ΡˆΠ°Π»Π° Π·Π°Π΄Π°Ρ‡Ρƒ, Ссли Π±Ρ‹ изобраТСния Π±Ρ‹Π»ΠΈ большС). Π’Π°ΠΊΠΆΠ΅, я Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° position эмбСддинги, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ cross-attention информация ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ тСряСтся. ΠŸΠΎΡ‡Π΅ΠΌΡƒ cross-attention? Он позволяСт ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ пиксСлю (Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠ°Ρ‚Ρ‡Ρƒ) Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ "ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ" Π½Π° всС ΠΏΠ°Ρ‚Ρ‡ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ находятся Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… ΡƒΠ³Π»Π°Ρ…, модСль это ΡƒΡ‡Ρ‚Π΅Ρ‚. Ну ΠΈ плюс Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈ послСдних Π»Π΅Ρ‚ - Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. #### Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π‘Π°ΠΌΠ° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° прСдставляСт собой Π΄Π²Π° VGGLike энкодСра с shared вСсами, ΠΏΡ€Π΅Π΄ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BYOL, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄Π΅Ρ‚ слой MultiheadAttention, Π° Π·Π°Ρ‚Π΅ΠΌ классификационная Π³ΠΎΠ»ΠΎΠ²Π°. Π’ΠΎ врСмя прСдобучСния VGGLike энкодСра послСдним слоСм Π±Ρ‹Π» AdaptiveAvgPool2d. Π­Ρ‚ΠΎΡ‚ слой Π½Π΅ использовался Π²ΠΎ врСмя обучСния классфикатора, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π²Ρ…ΠΎΠ΄ MultiheadAttention Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ информативная ΠΊΠ°Ρ€Ρ‚Π° ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² (я использовала 8x8). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π° Π²Ρ…ΠΎΠ΄ поступаСт Π΄Π²Π° изобраТСния, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· энкодСр, послС Ρ‡Π΅Π³ΠΎ происходит cross-attention ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ получаСтся Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ изобраТСния содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π­Ρ‚ΠΎ Π½Π΅ самый слоТный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Π½ΠΎ ΠΎΠ½ позволяСт Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΠ³Π»ΠΎΠΌ - Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρƒ нас Π½Π΅Ρ‚ датасСта с Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ количСством Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ. ### ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π’ΠΎΡ‚ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² wandb: - [ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ BYOL](https://wandb.ai/alexandraroze/contrastive_learning_byol/reports/-BYOL--VmlldzoxMTQzMjA1Mw?accessToken=nh0kzpepsr0faflptx63n91kljc5wl6mt3wi3ay4wxpjmua55bf32nm36qjby0ai) - [ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ cross-attention классификатора](https://api.wandb.ai/links/alexandraroze/hmtnzhv9) ## Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ### Swin transformer 1. КаТдоС 32Γ—32 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ дСлится Π½Π° ΠΏΠ°Ρ‚Ρ‡ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4Γ—4, это Π΄Π°Ρ‘Ρ‚ 64 ΠΏΠ°Ρ‚Ρ‡Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ выпрямляСтся ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ слой для получСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ прСдставлСния. 2. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ early fusion (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ссли ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ late fusion, Π½Π°ΠΌ придСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ cross-attention, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ). ПослС извлСчСния ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ просто ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡ… ΠΏΠΎ оси ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, получая 128 Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ². 3. Π’ window multi-head attention ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ эту ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° ΠΎΠΊΠ½Π° фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Допустим, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 16 Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² подряд. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π°, находящаяся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ, Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ локально вмСстС со смСТными ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ self-attention ΠΈ Π·Π°Ρ‚Π΅ΠΌ сдвигаСм ΠΎΠΊΠ½Π° (Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² swin blockΠ΅). Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄Π΅Ρ‚ patch merging, ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ 16 ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 32 ΠΏΠ°Ρ‚Ρ‡Π° Π½Π° Π΄Π²Π° изобраТСния). Достаточно Π΅Ρ‰Π΅ Π΄Π²ΡƒΡ… Ρ‚Π°ΠΊΠΈΡ… слоСв (16 -> 4 -> 1), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ нас остался ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ‚Ρ‡ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. 4. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ global average pooling, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²Ρƒ. #### ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π½Π΅ стала Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Swin transformer Ρ…ΠΎΡ€ΠΎΡˆΠΎ сработаСт Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… изобраТСниях с ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ дСталями, Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ спустя всСго 3 слоя ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ слоС локальноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сразу для Π΄Π²ΡƒΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ слоС остаСтся ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ…. ### Siamese Network с Triplet Loss ВмСсто простой классификации ΠΌΡ‹ ΠΎΠ±ΡƒΡ‡Π°Π΅ΠΌ энкодСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ изобраТСния Π² эмбСддинги Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ изобраТСния (ΠΊΡ€ΡƒΠ³-ΠΊΡ€ΡƒΠ³, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚) Π±Ρ‹Π»ΠΈ Π±Π»ΠΈΠΆΠ΅ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ, Π° Ρ€Π°Π·Π½Ρ‹Π΅ изобраТСния (ΠΊΡ€ΡƒΠ³-ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚) Π±Ρ‹Π»ΠΈ дальшС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Triplet Loss, Π³Π΄Π΅ Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚Ρ€ΠΈ изобраТСния: - Anchor – ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚). - Positive – Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. - Negative – ΠΊΡ€ΡƒΠ³. МодСль ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ anchor ΠΈ positive ΠΈ максимизируСт Π΅Π³ΠΎ для negative. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Ρ‹Π»ΠΎ слоТнСС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ hard negatives. НапримСр, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ характСристиками, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Ρ†Π²Π΅Ρ‚, Π±Π»ΡŽΡ€, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»Π΅Π³ΠΊΠΈΠΉ shared CNN энкодСр. Π­Π½ΠΊΠΎΠ΄Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ изобраТСния нСзависимо, Π½ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ эмбСддинги ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· triplet loss. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ эмбСддинга Π±Ρ‹Π»Π° достаточно Π½ΠΈΠ·ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° простой структурС. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ эмбСддинги Π΄Π²ΡƒΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, считаСм Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²ΠΎ расстояниС. Если мСньшС ΠΏΠΎΡ€ΠΎΠ³Π° - Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅, ΠΈΠ½Π°Ρ‡Π΅ Ρ€Π°Π·Π½Ρ‹Π΅. #### ΠŸΠΎΡ‡Π΅ΠΌΡƒ я Π½Π΅ стала Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π― ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π»Π° это Π½Π° своСй Ρ€Π°Π±ΠΎΡ‚Π΅, поэтому Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½ΠΎΠ²ΠΎΠ΅ :) ### ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ 1. Π’Π½Π°Ρ‡Π°Π»Π΅ я Ρ€Π΅ΡˆΠΈΠ»Π° Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ всю Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (энкодСр + cross-attention классификатор), Π½ΠΎ сразу ΠΆΠ΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ модСль просто Π½Π΅ ΠΎΠ±ΡƒΡ‡Π°Π»Π°ΡΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΎΡ‚Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ, я Ρ€Π΅ΡˆΠΈΠ»Π° Π½Π°Ρ‡Π°Ρ‚ΡŒ с ΠΌΠ°Π»ΠΎΠ³ΠΎ - создала простой датасСт ΠΈ Π½Π°ΡƒΡ‡ΠΈΠ»Π° ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ CNN ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΡƒ для Π΄Π²ΡƒΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ сразу. Π”Π°Π»ΡŒΡˆΠ΅, я добавляла ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½ΠΈΠ΅ Π² энкодСр, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ мониторя количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ количСство сэмплов ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ для обучСния. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, я дошла Π΄ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. 2. Π£ мСня всС Π΅Ρ‰Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΠ»ΠΈΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎ врСмя обучСния (ΡΠ΅Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡƒΡ‡Π°Π»Π°ΡΡŒ). ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½ΠΎΡ€ΠΌΡ‹ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ вСсов ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСса ΠΈΠ·-Π·Π° attention просто Π·Π°Π½ΡƒΠ»ΡΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° AdamW ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ΠΌ learning rate. 3. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ self-supervised обучСния (Π² сравнСнии с ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ с нуля), Π½ΠΎ ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ ΠΏΡ€ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ самых условиях ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… случаях. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ изобраТСния Π±Ρ‹Π»ΠΈ слишком малСнькими ΠΈ простыми, ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ Π±Π΅Π· прСдобучСния Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ большого количСства Π΄Π°Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ self-supervised ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ сработал (особСнно Π±Π΅Π· Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²), Π½ΡƒΠΆΠ½Ρ‹ слоТныС Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π² этом ΠΆΠ΅ случаС слоТныС Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ сильно искаТали изобраТСния. 4. Будя ΠΏΠΎ ΠΊΡ€ΠΈΠ²ΠΎΠΉ обучСния, ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ классификатор ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя находился Π½Π° ΠΏΠ»Π°Ρ‚ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 7-8 эпох ΠΈΠ· 10 лосс Π½Π΅ ΠΏΠ°Π΄Π°Π», Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ 50%. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ малСнькиС ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΡƒΠΌΠ½Ρ‹Π΅. Π’Π°ΠΊΠΆΠ΅, всС зависит ΠΎΡ‚ исходной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ ΠΏΡ€ΠΈ малСньком датасСтС это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ накапливаСтся нСдостаточно сигналов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сойти с ΠΏΠ»Π°Ρ‚ΠΎ. ## Π§Ρ‚ΠΎ Π±Ρ‹ я Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ стала Π΄Π΅Π»Π°Ρ‚ΡŒ Π—Π΄Π΅ΡΡŒ я ΠΎΠΏΠΈΡˆΡƒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сразу ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΌΠ½Π΅ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ стала Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Ρƒ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, я ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π»Π°ΡΡŒ ΠΎΡ‚ пСрСноса Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. 1. БвСрточная ΡΠ΅Ρ‚ΡŒ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ для Π½Π΅Π³ΠΎ класс (ΠΊΡ€ΡƒΠ³ ΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚). БоотвСтствСнно, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² прСдсказания для Π΄Π²ΡƒΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Ρ‚ΠΎΠΌ, содСрТат Π»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ простой, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ Π² Π»ΠΎΠ±, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ пСрСносС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ кСйсы Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ ΠΊΡ€Π°Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‡Π΅Ρ‚ΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… класса (Π΄Π° ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ классов, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой). 2. ДСтСкция + классификация. МоТно Π±Ρ‹Π»ΠΎ достаточно просто ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ» Π±Ρ‹ ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ класс (ΠΊΡ€ΡƒΠ³ ΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚), Ρ‚Π°ΠΊ ΠΈ просто "Ρ„ΠΈΠ³ΡƒΡ€Ρƒ" Π±Π΅Π· класса (казалось Π±Ρ‹, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹). Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΆΠ΅ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ 1) это дорогостоящая Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, 2) Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡˆΠΈΠ±Π°Ρ‚ΡŒΡΡ (ΠΈ для Ρ‚Π°ΠΊΠΈΡ… кСйсов ΠΌΡ‹ Π±Ρ‹ Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠ³Π»ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ), 3) Π·Π°Π΄Π°Ρ‡Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ Π² сравнСнии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Π° Π½Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΡƒΡ…ΠΎΠ»Π΅ΠΉ). Π’ΠΎ ΠΆΠ΅ само касаСтся ΠΈ сСгмСнтации. Π—Π΄Π΅ΡΡŒ стоит ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΏΠΎΠΏΡ€Π°Π²ΠΊΡƒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π³Π΄Π΅ эти ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ нас интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ - Π½Π΅ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ„ΠΎΠ½).