Π‘ΡΡΠ»ΠΊΠ° Π΄Π»Ρ ultralytics/data/split_dota.py
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/data/split_dota .py. ΠΡΠ»ΠΈ ΡΡ Π·Π°ΠΌΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π΅Π΅, ΠΎΡΠΏΡΠ°Π²ΠΈΠ² Pull Request π οΈ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ π!
ultralytics.data.split_dota.bbox_iof(polygon1, bbox2, eps=1e-06)
ΠΡΡΠΈΡΠ»ΠΈ ΠΈΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ bbox1 ΠΈ bbox2.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
ΠΠΌΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
---|---|---|---|
polygon1 |
ndarray
|
ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, (n, 8). |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
bbox2 |
ndarray
|
ΠΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, (n ,4). |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.load_yolo_dota(data_root, split='train')
ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ DOTA.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
ΠΠΌΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
---|---|---|---|
data_root |
str
|
ΠΠΎΡΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ . |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
split |
str
|
Π Π°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ train ΠΈΠ»ΠΈ val. |
'train'
|
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ DOTA: - data_root - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΊΠ° - val - ΠΌΠ΅ΡΠΊΠΈ - ΡΡΠ΅Π½ΠΈΡΡΠΉΡΡ - val
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.get_windows(im_size, crop_sizes=[1024], gaps=[200], im_rate_thr=0.6, eps=0.01)
ΠΠΎΠ»ΡΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΎΠΊΠΎΠ½.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
ΠΠΌΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
---|---|---|---|
im_size |
tuple
|
Π Π°Π·ΠΌΠ΅Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, (h, w). |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
crop_sizes |
List(int
|
ΠΠ±ΡΠ΅ΠΆΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠΎΠ½. |
[1024]
|
gaps |
List(int
|
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ΅Π²Π°ΠΌΠΈ. |
[200]
|
im_rate_thr |
float
|
ΠΠΎΡΠΎΠ³ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΎΠΊΠΎΠ½, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π½Π° ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. |
0.6
|
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.get_window_obj(anno, windows, iof_thr=0.7)
ΠΠΎΠ»ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.crop_and_save(anno, windows, window_objs, im_dir, lb_dir)
ΠΠ±ΡΠ΅Π·Π°ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠΉ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ»ΡΠΊΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
ΠΠΌΡ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ |
---|---|---|---|
anno |
dict
|
ΠΠΈΠΊΡΠ°Π½Ρ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
windows |
list
|
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΠΊΠΎΠ½. |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
window_objs |
list
|
Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ»ΡΠΊΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
im_dir |
str
|
ΠΡΡΡ ΠΊ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ. |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
lb_dir |
str
|
ΠΡΡΡ ΠΊ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΡΠ»ΡΠΊΠΎΠ². |
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ |
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ DOTA: - data_root - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΊΠ° - val - ΠΌΠ΅ΡΠΊΠΈ - ΡΡΠ΅Π½ΠΈΡΡΠΉΡΡ - val
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.split_images_and_labels(data_root, save_dir, split='train', crop_sizes=[1024], gaps=[200])
Π Π°Π·Π΄Π΅Π»ΡΠΉ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΡΡΠ»ΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ DOTA: - data_root - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - ΡΠΏΠ»ΠΈΡ - ΠΌΠ΅ΡΠΊΠΈ - split Π ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ²Π°: - save_dir - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - split - ΡΡΠΈΠΊΠ΅ΡΠΊΠΈ - ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.split_trainval(data_root, save_dir, crop_size=1024, gap=200, rates=[1.0])
Π‘ΠΏΠ»ΠΈΡ-ΠΏΠΎΠ΅Π·Π΄ ΠΈ Π²Π°Π»ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ DOTA.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ DOTA: - data_root - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - ΡΡΠ΅Π½ΠΈΡΠΎΠ²ΠΊΠ° - val - ΠΌΠ΅ΡΠΊΠΈ - ΡΡΠ΅Π½ΠΈΡΡΠΉΡΡ - val Π ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ²Π°: - save_dir - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - train - val - ΠΌΠ΅ΡΠΊΠΈ - ΠΏΠΎΠ΅Π·Π΄ - val
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
ultralytics.data.split_dota.split_test(data_root, save_dir, crop_size=1024, gap=200, rates=[1.0])
ΠΠ°Π±ΠΎΡ Π΄Π»Ρ ΡΠΏΠ»ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ DOTA, Π½Π°ΠΊΠ»Π΅ΠΉΠΊΠΈ Π² ΡΡΠΎΡ Π½Π°Π±ΠΎΡ Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠ½ΡΡΠ°Ρ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ DOTA: - data_root - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - test Π° ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ²Π°: - save_dir - ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ - ΡΠ΅ΡΡ
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ultralytics/data/split_dota.py
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ 2024-01-05, ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ 2024-05-08
ΠΠ²ΡΠΎΡΡ: Burhan-Q (1), glenn-jocher (2)