ΠΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½Π°Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ K-Fold Ρ Ultralytics
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ K-Fold Cross Validation Π΄Π»Ρ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Ultralytics . ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ YOLO ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Python , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ sklearn, pandas ΠΈ PyYaml, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π²Π°Ρ ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ, ΠΏΡΠΎΡΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ K-Fold ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ .
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
Fruit Detection ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ
, ΡΡΠΎΡ ΡΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ K-Fold Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠΈΡ
ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠΎΠΊΠ° ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ k=5
Π² ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ»Π°Π΄ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ»ΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ³ΡΡΠ·ΠΈΠΌΡΡ!
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
-
ΠΠ°ΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅YOLO detection.
-
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ.
-
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ Fruit Detection.
- ΠΡΠΎΡ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ 8479 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
- ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ 6 ΠΌΠ΅ΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠΊΠ΅ΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ° | Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² |
---|---|
Apple | 7049 |
ΠΠΈΠ½ΠΎΠ³ΡΠ°Π΄ | 7202 |
ΠΠ½Π°Π½Π°Ρ | 1613 |
ΠΡΠ°Π½ΠΆΠ΅Π²ΡΠΉ | 15549 |
ΠΠ°Π½Π°Π½ | 3536 |
ΠΡΠ±ΡΠ· | 1976 |
-
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Python Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ:
ultralytics
sklearn
pandas
pyyaml
-
ΠΡΠΎΡ ΡΡΠ΅Π±Π½ΠΈΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ
k=5
ΡΠΊΠ»Π°Π΄ΠΎΠΊ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ»Π°Π΄ΠΎΠΊ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ . -
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ Python (
venv
) Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅pip
(ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ Π²Π°ΠΌΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²) Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ultralytics :
pip install -U ultralytics
. Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎ. - Scikit-learn, pandas ΠΈ PyYAML:
pip install -U scikit-learn pandas pyyaml
.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ultralytics :
-
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π°ΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡYOLO .
- Π ΡΡΠΎΠΌ ΡΡΠ΅Π±Π½ΠΈΠΊΠ΅ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅
Fruit-Detection/labels
ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
- Π ΡΡΠΎΠΌ ΡΡΠ΅Π±Π½ΠΈΠΊΠ΅ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
-
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ
example.py
Python ΡΠ°ΠΉΠ» Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π³ΠΎΠ². -
ΠΡΠΈΡΡΡΠΏΠ°ΠΉΡΠ΅ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΡΠΎΠΊ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ .
-
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ YAML-ΡΠ°ΠΉΠ»Π° Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ΅ΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ².
-
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΡΡΠΎΠΉ
pandas
DataFrame. -
ΠΠΎΠ΄ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΌΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ.
from collections import Counter for label in labels: lbl_counter = Counter() with open(label, "r") as lf: lines = lf.readlines() for line in lines: # classes for YOLO label uses integer at first position of each line lbl_counter[int(line.split(" ")[0])] += 1 labels_df.loc[label.stem] = lbl_counter labels_df = labels_df.fillna(0.0) # replace `nan` values with `0.0`
-
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ DataFrame:
0 1 2 3 4 5 '0000a16e4b057580_jpg.rf.00ab48988370f64f5ca8ea4...' 0.0 0.0 0.0 0.0 0.0 7.0 '0000a16e4b057580_jpg.rf.7e6dce029fb67f01eb19aa7...' 0.0 0.0 0.0 0.0 0.0 7.0 '0000a16e4b057580_jpg.rf.bc4d31cdcbe229dd022957a...' 0.0 0.0 0.0 0.0 0.0 7.0 '00020ebf74c4881c_jpg.rf.508192a0a97aa6c4a3b6882...' 0.0 0.0 0.0 1.0 0.0 0.0 '00020ebf74c4881c_jpg.rf.5af192a2254c8ecc4188a25...' 0.0 0.0 0.0 1.0 0.0 0.0 ... ... ... ... ... ... ... 'ff4cd45896de38be_jpg.rf.c4b5e967ca10c7ced3b9e97...' 0.0 0.0 0.0 0.0 0.0 2.0 'ff4cd45896de38be_jpg.rf.ea4c1d37d2884b3e3cbce08...' 0.0 0.0 0.0 0.0 0.0 2.0 'ff5fd9c3c624b7dc_jpg.rf.bb519feaa36fc4bf630a033...' 1.0 0.0 0.0 0.0 0.0 0.0 'ff5fd9c3c624b7dc_jpg.rf.f0751c9c3aa4519ea3c9d6a...' 1.0 0.0 0.0 0.0 0.0 0.0 'fffe28b31f2a70d4_jpg.rf.7ea16bd637ba0711c53b540...' 0.0 6.0 0.0 0.0 0.0 0.0
Π‘ΡΡΠΎΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠ΅ΡΠΎΠΊ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π° ΡΡΠΎΠ»Π±ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌ ΠΌΠ΅ΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠ΅Π²Π΄ΠΎ-Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΌΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ K-Fold Cross Validation ΠΊ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ K-Fold
-
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
KFold
ΠΊΠ»Π°ΡΡ ΠΈΠ·sklearn.model_selection
Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡk
ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ°ΡΡΠΈ.- ΠΠ°ΠΆΠ½ΠΎ:
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
shuffle=True
ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π² Π²Π°ΡΠΈΡ ΡΠΏΠ»ΠΈΡΠ°Ρ . - ΠΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅
random_state=M
Π³Π΄Π΅M
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
- ΠΠ°ΠΆΠ½ΠΎ:
-
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π°
k
ΡΠΊΠ»Π°Π΄ΠΊΠΈ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠΈΡΠΎΠΊtrain
ΠΈval
ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠΌ DataFrame. -
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π²ΡΡΠΈΡΠ»ΠΈΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΊΠ»Π°Π΄ΠΊΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π²
val
ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΌ Π²train
.fold_lbl_distrb = pd.DataFrame(index=folds, columns=cls_idx) for n, (train_indices, val_indices) in enumerate(kfolds, start=1): train_totals = labels_df.iloc[train_indices].sum() val_totals = labels_df.iloc[val_indices].sum() # To avoid division by zero, we add a small value (1E-7) to the denominator ratio = val_totals / (train_totals + 1e-7) fold_lbl_distrb.loc[f"split_{n}"] = ratio
ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ Π²Π°ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ .
-
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ YAML-ΡΠ°ΠΉΠ»Ρ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΏΠ»ΠΈΡΠ°.
import datetime supported_extensions = [".jpg", ".jpeg", ".png"] # Initialize an empty list to store image file paths images = [] # Loop through supported extensions and gather image files for ext in supported_extensions: images.extend(sorted((dataset_path / "images").rglob(f"*{ext}"))) # Create the necessary directories and dataset YAML files (unchanged) save_path = Path(dataset_path / f"{datetime.date.today().isoformat()}_{ksplit}-Fold_Cross-val") save_path.mkdir(parents=True, exist_ok=True) ds_yamls = [] for split in folds_df.columns: # Create directories split_dir = save_path / split split_dir.mkdir(parents=True, exist_ok=True) (split_dir / "train" / "images").mkdir(parents=True, exist_ok=True) (split_dir / "train" / "labels").mkdir(parents=True, exist_ok=True) (split_dir / "val" / "images").mkdir(parents=True, exist_ok=True) (split_dir / "val" / "labels").mkdir(parents=True, exist_ok=True) # Create dataset YAML files dataset_yaml = split_dir / f"{split}_dataset.yaml" ds_yamls.append(dataset_yaml) with open(dataset_yaml, "w") as ds_y: yaml.safe_dump( { "path": split_dir.as_posix(), "train": "train", "val": "val", "names": classes, }, ds_y, )
-
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠ΅ΡΠΊΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ("train" ΠΈΠ»ΠΈ "val") Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΈ.
- ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΠΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ.
import shutil for image, label in zip(images, labels): for split, k_split in folds_df.loc[image.stem].items(): # Destination directory img_to_path = save_path / split / k_split / "images" lbl_to_path = save_path / split / k_split / "labels" # Copy image and label files to new directory (SamefileError if file already exists) shutil.copy(image, img_to_path / image.name) shutil.copy(label, lbl_to_path / label.name)
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ)
ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΠΈ K-Fold ΡΠΏΠ»ΠΈΡΠ° ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΈΠΊΠ΅ΡΠΎΠΊ DataFrames Π² Π²ΠΈΠ΄Π΅ CSV-ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
folds_df.to_csv(save_path / "kfold_datasplit.csv")
fold_lbl_distrb.to_csv(save_path / "kfold_label_distribution.csv")
ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ YOLO Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ K-ΠΊΡΠ°ΡΠ½ΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ
-
Π‘Π½Π°ΡΠ°Π»Π° Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ YOLO .
-
ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ YAML-ΡΠ°ΠΉΠ»Π°ΠΌ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ
project
ΠΈname
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ 'exp/runs#', Π³Π΄Π΅ # - ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ.results = {} # Define your additional arguments here batch = 16 project = "kfold_demo" epochs = 100 for k in range(ksplit): dataset_yaml = ds_yamls[k] model = YOLO(weights_path, task="detect") model.train(data=dataset_yaml, epochs=epochs, batch=batch, project=project) # include any train arguments results[k] = model.metrics # save output metrics for further analysis
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ K-Fold Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² YOLO . ΠΡ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π°Ρ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ Π½Π° K ΡΠ°Π·Π΄Π΅Π»ΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ² ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΡΠ΅ΡΠΎΠ² DataFrames Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠΊ ΠΏΠΎ ΡΡΠΈΠΌ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡΠΌ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ².
ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ»ΠΈ Π½Π°ΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠΈ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ Π² ΡΠ°Π±ΠΎΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΏΠ»ΠΈΡ Π² ΡΠΈΠΊΠ»Π΅, ΡΠΎΡ ΡΠ°Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
Π’Π΅Ρ Π½ΠΈΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ K-Fold - ΡΡΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·Π²Π»Π΅ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΏΠΎΠ»ΡΠ·Ρ ΠΈΠ· ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°Ρ Π΄Π°Π½Π½ΡΡ . Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½Π°Ρ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ YOLO , ΡΡΠΈ ΡΠ°Π³ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΡΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠ°Π³ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΡΠΎΡΡ-Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π² ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. Π‘ΡΠ°ΡΡΠ»ΠΈΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°!
Π§ΠΠ‘Π’Π ΠΠΠΠΠΠΠΠΠ«Π ΠΠΠΠ ΠΠ‘Π«
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ K-Fold Cross Validation ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²?
K-Fold Cross Validation - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° "k" ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (ΡΠΊΠ»Π°Π΄ΠΎΠΊ) Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΊΠ»Π°Π΄ΠΊΠ° ΡΠ»ΡΠΆΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ°ΡΡΠΈΠΌΠΈ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ K-Fold Cross Validation ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ultralytics YOLO Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ ΠΈ ΠΎΠ±ΠΎΠ±ΡΠ°Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ K-Fold Cross Validation Ρ Ultralytics YOLO , ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ K-Fold Cross Validation Ρ Ultralytics.
ΠΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ K-Fold Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ultralytics YOLO ?
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ K-Fold Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ultralytics YOLO , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡYOLO .
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Python , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
sklearn
,pandas
, ΠΈpyyaml
. - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²Π΅ΠΊΡΠΎΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ .
- Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ
KFold
Ρ ΡΠ°ΠΉΡΠ°sklearn.model_selection
. - ΠΠ±ΡΡΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ YOLO Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΏΠ»ΠΈΡΠ΅.
ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ K-Fold Dataset Split Π² Π½Π°ΡΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ultralytics YOLO ?
Ultralytics YOLO ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ. ΠΠ½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ Ultralytics HUB, Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π±Π΅Π· ΠΊΠΎΠ΄Π°. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π½Π° Π½Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅Ultralytics YOLO .
ΠΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Ultralytics YOLO ?
ΠΠ°ΡΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ YOLO . Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΠΌΠΊΠΈ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ. Π€ΠΎΡΠΌΠ°Ρ YOLO ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡYOLO .
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ K-Fold Cross Validation Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΡ Fruit Detection?
ΠΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ K-Fold Cross Validation Ρ Π»ΡΠ±ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ , Π΅ΡΠ»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ YOLO . ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΡΠΈ ΠΊ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π° ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ K-Fold Cross Validation. ΠΠ»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ "ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ".