diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.jpg new file mode 100644 index 0000000..eb79b37 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.jpg new file mode 100644 index 0000000..b0c2b25 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.jpg new file mode 100644 index 0000000..d38bfeb Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.jpg new file mode 100644 index 0000000..c4b3068 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.jpg new file mode 100644 index 0000000..904b5ac Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.jpg new file mode 100644 index 0000000..abbf28a Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.jpg new file mode 100644 index 0000000..f3b26d2 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.jpg new file mode 100644 index 0000000..d5f946b Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.jpg new file mode 100644 index 0000000..f14d813 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.jpg new file mode 100644 index 0000000..94fa447 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.jpg new file mode 100644 index 0000000..a079227 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.jpg new file mode 100644 index 0000000..8c97f8b Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.jpg new file mode 100644 index 0000000..48741fb Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.jpg new file mode 100644 index 0000000..e46d655 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.jpg new file mode 100644 index 0000000..2d62fc9 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.jpg new file mode 100644 index 0000000..35d8086 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.jpg new file mode 100644 index 0000000..362cc05 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.jpg new file mode 100644 index 0000000..9fbcaff Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.jpg b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.jpg new file mode 100644 index 0000000..9e7134b Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.jpg b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.jpg new file mode 100644 index 0000000..23b4a6f Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.jpg b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.jpg new file mode 100644 index 0000000..2d227d8 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.jpg b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.jpg new file mode 100644 index 0000000..0987636 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.jpg b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.jpg new file mode 100644 index 0000000..2a8de14 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.jpg new file mode 100644 index 0000000..a3e58b4 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.jpg new file mode 100644 index 0000000..1192c57 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.jpg new file mode 100644 index 0000000..319587e Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.jpg new file mode 100644 index 0000000..1026a91 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.jpg new file mode 100644 index 0000000..1821885 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.jpg new file mode 100644 index 0000000..528ef46 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.jpg new file mode 100644 index 0000000..0fd32f3 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.jpg new file mode 100644 index 0000000..18854f2 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.jpg new file mode 100644 index 0000000..a8328de Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.jpg new file mode 100644 index 0000000..46d0eff Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.jpg new file mode 100644 index 0000000..be1ca2c Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.jpg new file mode 100644 index 0000000..d1e6a9a Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.jpg new file mode 100644 index 0000000..4f5370c Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.jpg new file mode 100644 index 0000000..1e6d41a Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.jpg new file mode 100644 index 0000000..0a767f3 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.jpg new file mode 100644 index 0000000..94d13fb Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.jpg new file mode 100644 index 0000000..59a9837 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.jpg new file mode 100644 index 0000000..e7c646e Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.jpg new file mode 100644 index 0000000..ea67871 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.jpg new file mode 100644 index 0000000..4e8e4b9 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.jpg new file mode 100644 index 0000000..886c616 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8464.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8464.jpg new file mode 100644 index 0000000..67d7733 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8464.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.jpg new file mode 100644 index 0000000..26cc2d8 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.jpg b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.jpg new file mode 100644 index 0000000..fd2cde2 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.jpg new file mode 100644 index 0000000..45bada0 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.jpg new file mode 100644 index 0000000..a6df4e3 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.jpg new file mode 100644 index 0000000..1271696 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2666.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2666.jpg new file mode 100644 index 0000000..fcbef7a Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2666.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2686.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2686.jpg new file mode 100644 index 0000000..cd05ed8 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2686.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2711.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2711.jpg new file mode 100644 index 0000000..8ca4f6f Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2711.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.jpg new file mode 100644 index 0000000..c638471 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.jpg new file mode 100644 index 0000000..74eae42 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.jpg new file mode 100644 index 0000000..bd7f368 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3130.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3130.jpg new file mode 100644 index 0000000..35eed49 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3130.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3150.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3150.jpg new file mode 100644 index 0000000..b9dccb7 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3150.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.jpg new file mode 100644 index 0000000..9b0b462 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.jpg new file mode 100644 index 0000000..a1f7440 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.jpg new file mode 100644 index 0000000..9e98e28 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.jpg b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.jpg new file mode 100644 index 0000000..7ce90ab Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.jpg new file mode 100644 index 0000000..83492af Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.jpg new file mode 100644 index 0000000..334c6a9 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.jpg new file mode 100644 index 0000000..4e43620 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.jpg new file mode 100644 index 0000000..cb174e3 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.jpg new file mode 100644 index 0000000..a292423 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.jpg new file mode 100644 index 0000000..ec7dae3 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.jpg new file mode 100644 index 0000000..930fb9b Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.jpg new file mode 100644 index 0000000..1a76086 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_739.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_739.jpg new file mode 100644 index 0000000..c807d21 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_739.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_783.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_783.jpg new file mode 100644 index 0000000..b818fb2 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_783.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_871.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_871.jpg new file mode 100644 index 0000000..e4fd28f Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_871.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_888.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_888.jpg new file mode 100644 index 0000000..dbe9718 Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_888.jpg differ diff --git a/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_895.jpg b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_895.jpg new file mode 100644 index 0000000..ab26c5e Binary files /dev/null and b/dataset_v5/images/Screen_Recording_20260710_142109_Hades' Star_frame_895.jpg differ diff --git a/dataset_v5/labels.cache b/dataset_v5/labels.cache index b111768..96c8f62 100644 Binary files a/dataset_v5/labels.cache and b/dataset_v5/labels.cache differ diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.txt new file mode 100644 index 0000000..a9c476b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1039_crop_85_359_196_618.txt @@ -0,0 +1,6 @@ +0 0.828829 0.851351 0.252252 0.111969 +0 0.792793 0.803089 0.216216 0.100386 +1 0.576577 0.144788 0.288288 0.173745 +2 0.463964 0.457529 0.225225 0.104247 +2 0.671171 0.808880 0.225225 0.111969 +2 0.734234 0.849421 0.189189 0.100386 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.txt new file mode 100644 index 0000000..ba36ea0 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1109_crop_317_321_396_422.txt @@ -0,0 +1,2 @@ +2 0.537975 0.415842 0.341772 0.316832 +3 0.544304 0.707921 0.354430 0.445545 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.txt new file mode 100644 index 0000000..f929e97 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_239_242_415_482.txt @@ -0,0 +1,5 @@ +0 0.517045 0.712500 0.125000 0.158333 +1 0.247159 0.172917 0.153409 0.220833 +2 0.241477 0.395833 0.107955 0.125000 +2 0.411932 0.675000 0.142045 0.125000 +2 0.454545 0.725000 0.136364 0.083333 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.txt new file mode 100644 index 0000000..78214f9 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1139_crop_360_261_518_305.txt @@ -0,0 +1 @@ +3 0.645570 0.465909 0.177215 0.931818 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.txt new file mode 100644 index 0000000..3faf4bd --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_212_567_255_627.txt @@ -0,0 +1 @@ +3 0.465116 0.433333 0.511628 0.733333 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.txt new file mode 100644 index 0000000..760732e --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_11878_crop_222_667_402_777.txt @@ -0,0 +1,3 @@ +0 0.177778 0.322727 0.111111 0.354545 +2 0.622222 0.790909 0.188889 0.236364 +0 0.441667 0.863636 0.127778 0.254545 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.txt new file mode 100644 index 0000000..c585198 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1878_crop_127_409_226_513.txt @@ -0,0 +1 @@ +1 0.601010 0.370192 0.272727 0.567308 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.txt new file mode 100644 index 0000000..e831cc8 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_107_440_268_647.txt @@ -0,0 +1,2 @@ +1 0.419255 0.217391 0.192547 0.231884 +4 0.381988 0.855072 0.428571 0.183575 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.txt new file mode 100644 index 0000000..5ba8410 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_1934_crop_236_172_285_251.txt @@ -0,0 +1 @@ +1 0.448980 0.500000 0.612245 0.544304 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.txt new file mode 100644 index 0000000..e7907b1 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_20_685_516_863.txt @@ -0,0 +1,2 @@ +0 0.266129 0.480337 0.080645 0.207865 +0 0.269153 0.615169 0.062500 0.207865 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.txt new file mode 100644 index 0000000..5a5e5c0 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_2387_crop_28_481_239_671.txt @@ -0,0 +1 @@ +1 0.459716 0.552632 0.227488 0.326316 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.txt new file mode 100644 index 0000000..d98749b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_0_840_514_994.txt @@ -0,0 +1,4 @@ +2 0.085603 0.538961 0.054475 0.233766 +2 0.068093 0.327922 0.023346 0.201299 +2 0.045720 0.233766 0.044747 0.272727 +2 0.033074 0.175325 0.050584 0.259740 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.txt new file mode 100644 index 0000000..ff443da --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_4679_crop_128_165_477_344.txt @@ -0,0 +1 @@ +4 0.507163 0.382682 0.240688 0.318436 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.txt new file mode 100644 index 0000000..3560ae0 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_124_365_399_585.txt @@ -0,0 +1,5 @@ +0 0.745455 0.227273 0.123636 0.127273 +0 0.189091 0.465909 0.145455 0.086364 +2 0.318182 0.386364 0.127273 0.100000 +2 0.190909 0.529545 0.112727 0.113636 +2 0.743636 0.727273 0.112727 0.127273 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.txt new file mode 100644 index 0000000..51d2f01 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_5265_crop_4_338_64_375.txt @@ -0,0 +1 @@ +3 0.525000 0.513514 0.783333 0.432432 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.txt new file mode 100644 index 0000000..3dd08db --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_749_crop_124_684_355_809.txt @@ -0,0 +1,2 @@ +2 0.346320 0.332000 0.103896 0.264000 +3 0.101732 0.236000 0.168831 0.232000 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.txt new file mode 100644 index 0000000..25e53f6 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_750_crop_127_682_259_757.txt @@ -0,0 +1,2 @@ +2 0.594697 0.513333 0.174242 0.466667 +3 0.166667 0.366667 0.303030 0.386667 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.txt new file mode 100644 index 0000000..0188134 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_796_crop_129_559_336_760.txt @@ -0,0 +1,2 @@ +3 0.154589 0.696517 0.183575 0.149254 +2 0.388889 0.761194 0.101449 0.169154 diff --git a/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.txt b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.txt new file mode 100644 index 0000000..4dc0c44 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_084027_Hades' Star_1_frame_980_crop_143_512_245_623.txt @@ -0,0 +1,4 @@ +0 0.622549 0.481982 0.303922 0.297297 +0 0.553922 0.369369 0.303922 0.270270 +2 0.475490 0.337838 0.245098 0.207207 +2 0.549020 0.441441 0.215686 0.216216 diff --git a/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.txt b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.txt new file mode 100644 index 0000000..833b9b4 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_211_462_294_516.txt @@ -0,0 +1 @@ +3 0.373494 0.472222 0.409639 0.277778 diff --git a/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.txt b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.txt new file mode 100644 index 0000000..a2dd05b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_3034_crop_249_379_301_442.txt @@ -0,0 +1 @@ +3 0.557692 0.500000 0.461538 0.428571 diff --git a/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.txt b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.txt new file mode 100644 index 0000000..53c1bb3 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_4102_crop_311_421_436_551.txt @@ -0,0 +1,2 @@ +2 0.372000 0.403846 0.152000 0.284615 +2 0.628000 0.623077 0.200000 0.307692 diff --git a/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.txt b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.txt new file mode 100644 index 0000000..6c12116 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_105358_Hades' Star_frame_5432_crop_54_390_221_578.txt @@ -0,0 +1,7 @@ +1 0.859281 0.207447 0.185629 0.265957 +2 0.431138 0.327128 0.119760 0.122340 +2 0.517964 0.311170 0.161677 0.122340 +2 0.577844 0.348404 0.125749 0.069149 +2 0.476048 0.417553 0.125749 0.111702 +3 0.392216 0.561170 0.089820 0.164894 +4 0.296407 0.742021 0.401198 0.175532 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.txt new file mode 100644 index 0000000..c5f95d9 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_10073_crop_77_642_274_842.txt @@ -0,0 +1 @@ +0 0.312183 0.367500 0.167513 0.225000 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.txt new file mode 100644 index 0000000..51ae968 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_2564_crop_188_232_306_353.txt @@ -0,0 +1 @@ +1 0.559322 0.500000 0.237288 0.504132 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.txt new file mode 100644 index 0000000..5a1b0e1 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_3940_crop_192_562_502_932.txt @@ -0,0 +1,2 @@ +1 0.250000 0.206757 0.138710 0.148649 +4 0.775806 0.560811 0.151613 0.191892 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.txt new file mode 100644 index 0000000..a50dc54 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_137_692_233_770.txt @@ -0,0 +1 @@ +4 0.505208 0.512821 0.677083 0.692308 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.txt new file mode 100644 index 0000000..57e8b0c --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_244_404_322_457.txt @@ -0,0 +1 @@ +3 0.653846 0.528302 0.487179 0.415094 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.txt new file mode 100644 index 0000000..9c1dc99 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5368_crop_319_819_378_900.txt @@ -0,0 +1 @@ +2 0.694915 0.475309 0.338983 0.481481 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.txt new file mode 100644 index 0000000..5e42b3e --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5391_crop_126_333_247_405.txt @@ -0,0 +1 @@ +3 0.785124 0.520833 0.280992 0.208333 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.txt new file mode 100644 index 0000000..4d61592 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_155_328_225_370.txt @@ -0,0 +1 @@ +3 0.685714 0.559524 0.600000 0.404762 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.txt new file mode 100644 index 0000000..736bd6b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5421_crop_209_714_377_822.txt @@ -0,0 +1,2 @@ +2 0.586310 0.694444 0.136905 0.351852 +2 0.413690 0.504630 0.125000 0.342593 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.txt new file mode 100644 index 0000000..b6eb908 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5431_crop_123_319_233_399.txt @@ -0,0 +1 @@ +3 0.700000 0.393750 0.436364 0.237500 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.txt new file mode 100644 index 0000000..ff4c6dd --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_5441_crop_143_724_340_854.txt @@ -0,0 +1,2 @@ +2 0.598985 0.384615 0.111675 0.307692 +2 0.781726 0.588462 0.131980 0.284615 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.txt new file mode 100644 index 0000000..5e3b478 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_6546_crop_32_790_221_969.txt @@ -0,0 +1 @@ +0 0.791005 0.513966 0.185185 0.234637 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.txt new file mode 100644 index 0000000..817dd71 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_177_768_301_850.txt @@ -0,0 +1,2 @@ +0 0.282258 0.347561 0.322581 0.353659 +0 0.467742 0.469512 0.274194 0.378049 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.txt new file mode 100644 index 0000000..0d7cc13 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7507_crop_192_481_397_649.txt @@ -0,0 +1,3 @@ +0 0.451220 0.172619 0.151220 0.226190 +2 0.443902 0.476190 0.156098 0.166667 +2 0.304878 0.877976 0.151220 0.172619 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.txt new file mode 100644 index 0000000..b4b648b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_7684_crop_223_388_498_697.txt @@ -0,0 +1,4 @@ +0 0.396364 0.122977 0.109091 0.129450 +0 0.587273 0.378641 0.112727 0.142395 +2 0.434545 0.883495 0.112727 0.110032 +4 0.750909 0.708738 0.163636 0.135922 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.txt new file mode 100644 index 0000000..0741001 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8035_crop_12_522_431_748.txt @@ -0,0 +1 @@ +3 0.279236 0.165929 0.038186 0.163717 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.txt new file mode 100644 index 0000000..ca2e68f --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8045_crop_60_519_169_620.txt @@ -0,0 +1 @@ +3 0.651376 0.391089 0.165138 0.465347 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.txt new file mode 100644 index 0000000..868f1e5 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8055_crop_59_511_163_618.txt @@ -0,0 +1 @@ +3 0.692308 0.411215 0.134615 0.429907 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.txt new file mode 100644 index 0000000..def53b9 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8065_crop_92_518_187_602.txt @@ -0,0 +1 @@ +3 0.431579 0.369048 0.168421 0.547619 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.txt new file mode 100644 index 0000000..dff0c58 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8075_crop_86_515_196_604.txt @@ -0,0 +1 @@ +3 0.440909 0.320225 0.136364 0.505618 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.txt new file mode 100644 index 0000000..24566b0 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8085_crop_109_501_174_586.txt @@ -0,0 +1 @@ +3 0.407692 0.452941 0.261538 0.529412 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8464.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8464.txt new file mode 100644 index 0000000..f6fcd80 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8464.txt @@ -0,0 +1,2 @@ +0 0.318519 0.342735 0.074074 0.044444 +4 0.448148 0.384188 0.144444 0.058974 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.txt new file mode 100644 index 0000000..a2cbcbf --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_8614_crop_48_591_148_688.txt @@ -0,0 +1 @@ +2 0.450000 0.412371 0.180000 0.350515 diff --git a/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.txt b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.txt new file mode 100644 index 0000000..700e9dd --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_110910_Hades' Star_frame_9913_crop_106_294_284_661.txt @@ -0,0 +1,2 @@ +0 0.679775 0.888283 0.191011 0.125341 +2 0.418539 0.307902 0.196629 0.059946 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.txt new file mode 100644 index 0000000..dfea329 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2586_crop_210_537_466_802.txt @@ -0,0 +1,11 @@ +0 0.326172 0.345283 0.128906 0.124528 +0 0.400391 0.394340 0.105469 0.109434 +0 0.421875 0.675472 0.156250 0.105660 +0 0.734375 0.484906 0.085938 0.147170 +0 0.617188 0.330189 0.085938 0.147170 +2 0.152344 0.624528 0.125000 0.094340 +2 0.505859 0.505660 0.105469 0.098113 +2 0.628906 0.233962 0.101562 0.083019 +2 0.728516 0.352830 0.097656 0.124528 +2 0.689453 0.354717 0.050781 0.128302 +0 0.724609 0.400000 0.089844 0.105660 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.txt new file mode 100644 index 0000000..3f41f7b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2606_crop_211_533_458_830.txt @@ -0,0 +1,11 @@ +0 0.483806 0.624579 0.165992 0.104377 +0 0.350202 0.340067 0.141700 0.134680 +0 0.439271 0.395623 0.101215 0.084175 +0 0.637652 0.345118 0.109312 0.144781 +0 0.734818 0.479798 0.093117 0.117845 +0 0.746964 0.414141 0.085020 0.101010 +2 0.212551 0.557239 0.149798 0.057239 +2 0.548583 0.478114 0.125506 0.101010 +2 0.649798 0.220539 0.085020 0.097643 +2 0.744939 0.355219 0.080972 0.111111 +2 0.716599 0.348485 0.072874 0.097643 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.txt new file mode 100644 index 0000000..b10c425 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2646_crop_111_562_322_777.txt @@ -0,0 +1,9 @@ +0 0.566351 0.686047 0.213270 0.144186 +0 0.398104 0.346512 0.180095 0.172093 +0 0.478673 0.420930 0.151659 0.153488 +0 0.658768 0.388372 0.142180 0.209302 +0 0.777251 0.462791 0.075829 0.237209 +2 0.691943 0.183721 0.123223 0.162791 +2 0.215640 0.560465 0.175355 0.088372 +2 0.803318 0.379070 0.118483 0.172093 +2 0.781991 0.376744 0.094787 0.148837 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2666.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2666.txt new file mode 100644 index 0000000..9cee12c --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2666.txt @@ -0,0 +1,6 @@ +0 0.350926 0.523932 0.072222 0.034188 +0 0.416667 0.545299 0.059259 0.034188 +0 0.642593 0.576496 0.055556 0.043590 +0 0.547222 0.552991 0.053704 0.041026 +2 0.568519 0.466667 0.051852 0.032479 +2 0.214815 0.589744 0.085185 0.020513 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2686.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2686.txt new file mode 100644 index 0000000..3269de7 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2686.txt @@ -0,0 +1,4 @@ +0 0.450000 0.567949 0.074074 0.038462 +0 0.506481 0.591453 0.053704 0.029060 +2 0.629630 0.517949 0.066667 0.037607 +2 0.337963 0.604274 0.109259 0.023932 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2711.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2711.txt new file mode 100644 index 0000000..2d17bdf --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2711.txt @@ -0,0 +1 @@ +0 0.423148 0.610684 0.083333 0.041880 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.txt new file mode 100644 index 0000000..983a6eb --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2927_crop_312_401_438_527.txt @@ -0,0 +1,2 @@ +0 0.519841 0.333333 0.182540 0.365079 +0 0.408730 0.500000 0.214286 0.333333 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.txt new file mode 100644 index 0000000..8f06f65 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_2976_crop_190_399_286_563.txt @@ -0,0 +1 @@ +0 0.630208 0.314024 0.322917 0.262195 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.txt new file mode 100644 index 0000000..8f84389 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3110_crop_13_461_507_847.txt @@ -0,0 +1,7 @@ +0 0.596154 0.093264 0.091093 0.088083 +0 0.693320 0.172280 0.095142 0.075130 +0 0.647773 0.854922 0.076923 0.103627 +2 0.839069 0.116580 0.078947 0.062176 +2 0.914980 0.097150 0.076923 0.054404 +2 0.721660 0.922280 0.058704 0.072539 +2 0.599190 0.709845 0.064777 0.082902 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3130.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3130.txt new file mode 100644 index 0000000..4e55160 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3130.txt @@ -0,0 +1,8 @@ +0 0.504630 0.470085 0.083333 0.023932 +0 0.430556 0.466239 0.079630 0.024786 +0 0.492593 0.637179 0.077778 0.031624 +2 0.298148 0.400855 0.055556 0.032479 +2 0.596296 0.348291 0.055556 0.026496 +2 0.653704 0.447436 0.074074 0.024786 +2 0.718519 0.435470 0.077778 0.024786 +2 0.591667 0.655983 0.064815 0.029915 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3150.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3150.txt new file mode 100644 index 0000000..f1ca163 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3150.txt @@ -0,0 +1,6 @@ +0 0.384259 0.600855 0.083333 0.035897 +0 0.374074 0.482906 0.096296 0.025641 +2 0.610185 0.446581 0.079630 0.017949 +2 0.539815 0.457692 0.068519 0.017949 +2 0.499074 0.378205 0.053704 0.029915 +2 0.505556 0.619658 0.051852 0.027350 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.txt new file mode 100644 index 0000000..079bb0b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3536_crop_227_654_372_791.txt @@ -0,0 +1 @@ +0 0.337931 0.302920 0.275862 0.328467 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3672.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3672.txt index 8c70882..c21744f 100644 --- a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3672.txt +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3672.txt @@ -1,16 +1,17 @@ 0 0.188889 0.509402 0.062963 0.027350 0 0.603704 0.214103 0.070370 0.029915 -0 0.149074 0.541880 0.057407 0.025641 -0 0.237963 0.536325 0.042593 0.021368 -0 0.760185 0.523504 0.061111 0.028205 -0 0.698148 0.473504 0.044444 0.020513 -0 0.658333 0.505983 0.053704 0.017094 -2 0.262963 0.642735 0.059259 0.023932 -2 0.310185 0.644017 0.061111 0.021368 +0 0.148148 0.541026 0.055556 0.025641 +0 0.237037 0.535897 0.044444 0.022222 +0 0.758333 0.522650 0.061111 0.028205 +0 0.697222 0.472650 0.042593 0.020513 +0 0.656481 0.505983 0.053704 0.017094 +2 0.262037 0.642308 0.057407 0.024786 +2 0.308333 0.643590 0.061111 0.022222 2 0.189815 0.553419 0.053704 0.023077 -2 0.680556 0.576923 0.057407 0.018803 -2 0.675000 0.534188 0.042593 0.020513 -2 0.709259 0.519658 0.040741 0.017094 -2 0.723148 0.489744 0.050000 0.023932 -2 0.671296 0.491026 0.046296 0.017949 -2 0.643519 0.480769 0.053704 0.021368 +2 0.680556 0.576496 0.057407 0.017949 +2 0.674074 0.533761 0.044444 0.021368 +2 0.707407 0.518803 0.040741 0.017094 +2 0.721296 0.489744 0.050000 0.023932 +2 0.669444 0.491026 0.046296 0.017949 +2 0.643519 0.480342 0.053704 0.022222 +0 0.216667 0.181624 0.062963 0.023077 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.txt new file mode 100644 index 0000000..cdc7932 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_3735_crop_47_781_149_866.txt @@ -0,0 +1,2 @@ +3 0.352941 0.482353 0.196078 0.423529 +4 0.352941 0.500000 0.568627 0.623529 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.txt new file mode 100644 index 0000000..61ca343 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_4282_crop_151_303_360_476.txt @@ -0,0 +1,2 @@ +3 0.430622 0.395954 0.191388 0.167630 +4 0.325359 0.317919 0.267943 0.277457 diff --git a/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.txt b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.txt new file mode 100644 index 0000000..d7178ba --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_141945_Hades' Star_frame_5047_crop_135_522_223_599.txt @@ -0,0 +1 @@ +1 0.556818 0.558442 0.568182 0.415584 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.txt new file mode 100644 index 0000000..469c249 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1583_crop_220_603_329_693.txt @@ -0,0 +1 @@ +1 0.555046 0.533333 0.394495 0.533333 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.txt new file mode 100644 index 0000000..71f8860 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1587_crop_234_608_309_704.txt @@ -0,0 +1 @@ +1 0.553333 0.500000 0.600000 0.500000 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.txt new file mode 100644 index 0000000..a0ef164 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1723_crop_121_455_221_564.txt @@ -0,0 +1 @@ +0 0.405000 0.669725 0.410000 0.293578 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.txt new file mode 100644 index 0000000..cc7182b --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_241_431_385_558.txt @@ -0,0 +1 @@ +4 0.465278 0.507874 0.402778 0.448819 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.txt new file mode 100644 index 0000000..ece2a8f --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_1834_crop_445_322_539_410.txt @@ -0,0 +1 @@ +0 0.760638 0.511364 0.265957 0.340909 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.txt new file mode 100644 index 0000000..3310068 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2088_crop_147_810_370_910.txt @@ -0,0 +1,2 @@ +2 0.475336 0.600000 0.161435 0.140000 +2 0.475336 0.450000 0.161435 0.140000 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.txt new file mode 100644 index 0000000..ad81f89 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2254_crop_23_703_127_822.txt @@ -0,0 +1 @@ +0 0.495192 0.394958 0.298077 0.235294 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.txt new file mode 100644 index 0000000..b9e338c --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_2423_crop_470_734_539_848.txt @@ -0,0 +1 @@ +2 0.797101 0.491228 0.376812 0.245614 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_739.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_739.txt new file mode 100644 index 0000000..0bd1f03 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_739.txt @@ -0,0 +1,11 @@ +0 0.455556 0.471368 0.048148 0.040171 +1 0.783333 0.665812 0.088889 0.035897 +2 0.436111 0.434188 0.050000 0.025641 +2 0.979630 0.181624 0.037037 0.021368 +4 0.553704 0.530342 0.092593 0.040171 +4 0.541667 0.497863 0.087037 0.040171 +0 0.876852 0.308120 0.038889 0.016239 +0 0.479630 0.366239 0.077778 0.031624 +0 0.506481 0.481624 0.038889 0.014530 +2 0.545370 0.509402 0.042593 0.017094 +2 0.496296 0.497863 0.037037 0.019658 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_783.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_783.txt new file mode 100644 index 0000000..0d8b16e --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_783.txt @@ -0,0 +1,7 @@ +0 0.494444 0.385897 0.059259 0.043590 +1 0.948148 0.523077 0.088889 0.042735 +2 0.988889 0.121795 0.018519 0.023077 +2 0.979630 0.231624 0.029630 0.023932 +2 0.570370 0.449145 0.055556 0.021368 +4 0.550000 0.476496 0.077778 0.057265 +4 0.513889 0.432051 0.120370 0.041880 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_871.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_871.txt new file mode 100644 index 0000000..4bc4b04 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_871.txt @@ -0,0 +1,13 @@ +0 0.417593 0.277350 0.061111 0.041880 +0 0.945370 0.395299 0.057407 0.031624 +0 0.862037 0.259402 0.057407 0.026496 +0 0.745370 0.771368 0.061111 0.029915 +0 0.890741 0.820513 0.066667 0.025641 +0 0.983333 0.812821 0.029630 0.025641 +1 0.972222 0.319231 0.051852 0.035043 +2 0.796296 0.217094 0.051852 0.020513 +2 0.956481 0.261111 0.057407 0.019658 +2 0.763889 0.216239 0.042593 0.022222 +2 0.224074 0.837607 0.059259 0.029060 +4 0.412963 0.345299 0.114815 0.039316 +4 0.419444 0.368376 0.075926 0.027350 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_888.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_888.txt new file mode 100644 index 0000000..6726eb1 --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_888.txt @@ -0,0 +1,13 @@ +0 0.402778 0.262821 0.061111 0.038462 +0 0.855556 0.259829 0.059259 0.020513 +0 0.945370 0.396154 0.053704 0.031624 +0 0.744444 0.773932 0.074074 0.029915 +0 0.887963 0.820940 0.057407 0.026496 +0 0.979630 0.811538 0.037037 0.014530 +2 0.966667 0.258974 0.040741 0.020513 +2 0.797222 0.216667 0.046296 0.016239 +2 0.760185 0.214957 0.050000 0.021368 +2 0.225000 0.835897 0.050000 0.025641 +4 0.407407 0.343162 0.114815 0.033333 +4 0.437963 0.362393 0.101852 0.032479 +0 0.732407 0.228205 0.038889 0.015385 diff --git a/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_895.txt b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_895.txt new file mode 100644 index 0000000..b019ddb --- /dev/null +++ b/dataset_v5/labels/Screen_Recording_20260710_142109_Hades' Star_frame_895.txt @@ -0,0 +1,12 @@ +0 0.384259 0.238889 0.079630 0.038462 +0 0.716667 0.210684 0.029630 0.016239 +0 0.837037 0.237607 0.055556 0.029060 +0 0.925000 0.374359 0.061111 0.025641 +0 0.724074 0.750855 0.066667 0.029915 +0 0.872222 0.803419 0.070370 0.030769 +0 0.970370 0.787179 0.055556 0.018803 +1 0.985185 0.271368 0.025926 0.029915 +2 0.771296 0.194017 0.061111 0.023932 +2 0.741667 0.194017 0.053704 0.020513 +2 0.203704 0.816667 0.051852 0.028205 +4 0.412963 0.344872 0.074074 0.031624 diff --git a/label_v5.py b/label_v5.py index 33d5ea5..d04c61a 100644 --- a/label_v5.py +++ b/label_v5.py @@ -1,6 +1,7 @@ # Label_v5.py # --------------------- -# Upgraded with Multi-Class Tagging, Spacebar Cycling, and Transparent Box Blending +# Upgraded with Dedicated Header Bar, Dynamic View Scaling for Small Crops, +# Enforced Minimum Window Sizes, Interactive Zoom, and Multi-Class Tagging. import glob import os @@ -10,7 +11,14 @@ import cv2 # --- CONFIGURATION --- OUTPUT_DIRECTORY = "dataset_v5" FRAMES_TO_EXTRACT = 20 # Number of random anchor frames to find targets -SCALE_FACTOR = 0.5 # Resize video to 1/2 size for easier viewing +SCALE_FACTOR = 0.5 # Resize initial video to 1/2 size for easier viewing +RANDOM_CROP_SIZE_RATIO = 0.5 # Random crop takes 50% width x 50% height of the frame + +# UI Display Constraints (Prevents tiny windows & makes small crops easy to see) +MIN_WINDOW_WIDTH = 800 +MIN_WINDOW_HEIGHT = 600 +MAX_VIEW_SCALE = 10.0 # Maximum zoom multiplier for visual display +HUD_HEIGHT = 40 # Height of the dedicated header bar above the image # Defined classification options (YOLO maps these to IDs: 0, 1, 2, 3...) CLASSIFICATION_OPTIONS = [ @@ -55,10 +63,19 @@ def get_dataset_counts(): return counts -def load_existing_annotations(param): - """Loads existing YOLO annotations from disk when landing on a frame.""" +def get_current_filename_base(param): + """Generates a unique filename base, appending crop coordinates if zoomed in.""" video_base = os.path.splitext(os.path.basename(param["video_name"]))[0] - filename_base = f"{video_base}_frame_{param['frame_idx']}" + base = f"{video_base}_frame_{param['frame_idx']}" + if param["crop_box"] is not None: + cx1, cy1, cx2, cy2 = param["crop_box"] + base += f"_crop_{cx1}_{cy1}_{cx2}_{cy2}" + return base + + +def load_existing_annotations(param): + """Loads existing YOLO annotations from disk for the current frame/crop view.""" + filename_base = get_current_filename_base(param) label_path = os.path.join(param["labels_dir"], f"{filename_base}.txt") param["annotations"] = [] @@ -95,95 +112,157 @@ def load_existing_annotations(param): print(f" Could not load existing annotations: {e}") -def draw_hud(frame, param): - """Draws an informative status banner at the top of the screen.""" +def apply_crop(param, crop_coords=None): + """Updates the working frame to either a cropped sub-region or the full screenshot.""" + if crop_coords is None: + param["crop_box"] = None + param["frame"] = param["full_frame"].copy() + else: + cx1, cy1, cx2, cy2 = crop_coords + h, w = param["full_frame"].shape[:2] + cx1, cx2 = max(0, min(cx1, w - 1)), max(0, min(cx2, w)) + cy1, cy2 = max(0, min(cy1, h - 1)), max(0, min(cy2, h)) + + if (cx2 - cx1) < 15 or (cy2 - cy1) < 15: + print(" Crop area too small! Aborting zoom.") + return + + param["crop_box"] = (cx1, cy1, cx2, cy2) + param["frame"] = param["full_frame"][cy1:cy2, cx1:cx2].copy() + + param["drawing"] = False + param["zooming"] = False + load_existing_annotations(param) + redraw_frame(param) + + +def win_to_frame_coords(win_x, win_y, param): + """Converts UI window mouse coordinates back to native working frame coordinates.""" + # Subtract the dedicated header bar height from y + adj_y = max(0, win_y - HUD_HEIGHT) + scale = param.get("view_scale", 1.0) + frame_x = int(win_x / scale) + frame_y = int(adj_y / scale) + + # Clamp to actual working frame dimensions + h, w = param["frame"].shape[:2] + frame_x = max(0, min(frame_x, w - 1)) + frame_y = max(0, min(frame_y, h - 1)) + return frame_x, frame_y + + +def draw_hud(frame, param, view_scale): + """Draws an informative status banner in the dedicated top header area.""" color = CLASS_COLORS[param["class_id"] % len(CLASS_COLORS)] mode_str = "ALL-IN-ONE" if param["multi_mode"] else "SINGLE-CLASS" - label_str = f"MODE: {mode_str} | ACTIVE TAG: [{param['class_id']}] {param['session_label'].upper()} | Press [SPACE] to cycle class" + zoom_str = "FULL" if param["crop_box"] is None else f"CROP ({view_scale:.1f}x VIEW)" + label_str = f"[{zoom_str}] | ACTIVE: [{param['class_id']}] {param['session_label'].upper()} | [SPACE] Class | [R] Rand Crop | [X] Reset Zoom" - # Banner background - cv2.rectangle(frame, (0, 0), (frame.shape[1], 30), (30, 30, 30), -1) - # Active color indicator block - cv2.rectangle(frame, (0, 0), (12, 30), color, -1) - # HUD Text + # Active color indicator block on the left edge of the banner + cv2.rectangle(frame, (0, 0), (14, HUD_HEIGHT), color, -1) + + # Draw a subtle separator line between HUD and image + cv2.line(frame, (0, HUD_HEIGHT - 1), (frame.shape[1], HUD_HEIGHT - 1), (70, 70, 70), 1) + + # HUD Text centered vertically in the 40px banner cv2.putText( frame, label_str, - (22, 20), + (24, 25), cv2.FONT_HERSHEY_SIMPLEX, - 0.5, + 0.45, (255, 255, 255), 1, cv2.LINE_AA, ) -def redraw_frame(param, display_tags = True): - """Regenerates the display frame using semi-transparent boxes and color coding.""" - display_frame = param["frame"].copy() +def redraw_frame(param, display_tags=True): + """Regenerates the display frame using dynamic view scaling and transparent box overlays.""" + h_frame, w_frame = param["frame"].shape[:2] - # 1. Create overlay layers for transparent fills and borders - fill_overlay = display_frame.copy() - border_overlay = display_frame.copy() - text_frame = display_frame.copy() + # --- DYNAMIC VIEW SCALING --- + # Calculate scale needed to meet minimum comfortable window viewing size + scale_w = MIN_WINDOW_WIDTH / float(w_frame) + scale_h = MIN_WINDOW_HEIGHT / float(h_frame) + view_scale = max(1.0, min(scale_w, scale_h)) + view_scale = min(MAX_VIEW_SCALE, view_scale) # Cap extreme zooms + param["view_scale"] = view_scale + + # Scale up the working frame ONLY for display purposes + disp_w = int(w_frame * view_scale) + disp_h = int(h_frame * view_scale) + display_img = cv2.resize(param["frame"], (disp_w, disp_h), interpolation=cv2.INTER_LINEAR) + + # --- OVERLAY LAYERS --- + fill_overlay = display_img.copy() + border_overlay = display_img.copy() + text_frame = display_img.copy() for ann in param["annotations"]: class_id, label, x1, y1, x2, y2 = ann color = CLASS_COLORS[class_id % len(CLASS_COLORS)] - # Faint fill inside the box - cv2.rectangle(fill_overlay, (x1, y1), (x2, y2), color, -1) - # Thicker border line - cv2.rectangle(border_overlay, (x1, y1), (x2, y2), color, 3) + # Map working frame box coordinates to the scaled display dimensions + dx1, dy1 = int(x1 * view_scale), int(y1 * view_scale) + dx2, dy2 = int(x2 * view_scale), int(y2 * view_scale) + cv2.rectangle(fill_overlay, (dx1, dy1), (dx2, dy2), color, -1) + cv2.rectangle(border_overlay, (dx1, dy1), (dx2, dy2), color, 3) text_size, _ = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.45, 1) bg_width = text_size[0] + 6 bg_height = text_size[1] + 6 - # Add text label cv2.rectangle( text_frame, - (x1, max(0, y1 - bg_height)), - (x1 + bg_width, max(0, y1)), + (dx1, max(0, dy1 - bg_height)), + (dx1 + bg_width, max(0, dy1)), color, -1, ) cv2.putText( text_frame, label, - (x1 + 3, max(12, y1 - 4)), + (dx1 + 3, max(12, dy1 - 4)), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 0), 1, cv2.LINE_AA, ) - - # 2. Blend overlays with the base frame (15% opacity fill, 55% opacity borders) if display_tags: - cv2.addWeighted(fill_overlay, 0.15, display_frame, 0.85, 0, display_frame) - cv2.addWeighted(border_overlay, 0.55, display_frame, 0.45, 0, display_frame) - cv2.addWeighted(text_frame, 0.25, display_frame, 0.75, 0, display_frame) + cv2.addWeighted(fill_overlay, 0.15, display_img, 0.85, 0, display_img) + cv2.addWeighted(border_overlay, 0.55, display_img, 0.45, 0, display_img) + cv2.addWeighted(text_frame, 0.25, display_img, 0.75, 0, display_img) + # --- DEDICATED HEADER BAR --- + # Add top border padding for the HUD banner so it NEVER covers the image + final_display = cv2.copyMakeBorder( + display_img, + HUD_HEIGHT, + 0, + 0, + 0, + cv2.BORDER_CONSTANT, + value=(30, 30, 30), + ) - # Draw status HUD - draw_hud(display_frame, param) + # Draw status HUD in the top padded area + draw_hud(final_display, param, view_scale) - param["display_frame"] = display_frame - cv2.imshow(param["window_name"], display_frame) + param["display_frame"] = final_display + cv2.imshow(param["window_name"], final_display) def save_annotations_to_file(param): - """Overwrites the YOLO text file and updates the image file on disk.""" - video_base = os.path.splitext(os.path.basename(param["video_name"]))[0] - filename_base = f"{video_base}_frame_{param['frame_idx']}" + """Overwrites the YOLO text file and saves the un-scaled image patch to disk.""" + filename_base = get_current_filename_base(param) image_save_path = os.path.join(param["images_dir"], f"{filename_base}.jpg") label_save_path = os.path.join(param["labels_dir"], f"{filename_base}.txt") - # If all annotations were undone, delete the files if len(param["annotations"]) == 0: if os.path.exists(label_save_path): os.remove(label_save_path) @@ -192,10 +271,10 @@ def save_annotations_to_file(param): print(f" Removed empty annotation files for {filename_base}") param["box_drawn"] = False else: - # Save the clean untouched frame image + # Save the ORIGINAL un-scaled working frame (keeps dataset images small & standard) cv2.imwrite(image_save_path, param["frame"]) - # Write/Overwrite the text file + # Write YOLO coordinates normalized against the working frame dimensions img_h, img_w = param["frame"].shape[0], param["frame"].shape[1] with open(label_save_path, "w") as f: for ann in param["annotations"]: @@ -214,18 +293,17 @@ def save_annotations_to_file(param): f.write( f"{class_id} {x_center_norm:.6f} {y_center_norm:.6f} {width_norm:.6f} {height_norm:.6f}\n" ) - print(f" Updated dataset files for {filename_base} ({len(param['annotations'])} boxes)") + print(f" Updated dataset files for {filename_base} ({len(param['annotations'])} boxes | Saved at {img_w}x{img_h}px)") param["box_drawn"] = True def mouse_click_callback(event, x, y, flags, param): - """Handles click-and-drag bounding box creation and right-click undo actions.""" + """Handles labeling drags, zoom dragging, and undo actions in native UI window coordinates.""" if param["session_label"] == "background": if event == cv2.EVENT_LBUTTONDOWN: print(" Info: In background mode, do not click targets. Just press ENTER to save frame.") return - frame = param["frame"] display_frame = param["display_frame"] window_name = param["window_name"] @@ -240,42 +318,67 @@ def mouse_click_callback(event, x, y, flags, param): print(" No boxes left to undo on this frame!") return - # --- Left Click Down: Start Dragging --- + # --- Middle Click OR Shift + Left Click: Start Zoom/Crop Box --- + is_shift_click = (event == cv2.EVENT_LBUTTONDOWN) and (flags & cv2.EVENT_FLAG_SHIFTKEY) + if event == cv2.EVENT_MBUTTONDOWN or is_shift_click: + param["zooming"] = True + param["win_ix"], param["win_iy"] = x, y + return + + # --- Standard Left Click Down: Start Label Box Dragging --- if event == cv2.EVENT_LBUTTONDOWN: param["drawing"] = True - param["ix"], param["iy"] = x, y + param["win_ix"], param["win_iy"] = x, y - # --- Mouse Move: Live Semi-Transparent Drag Preview --- + # --- Mouse Move: Live Preview in UI Space --- elif event == cv2.EVENT_MOUSEMOVE: - if param["drawing"]: + if param["drawing"] or param["zooming"]: temp_frame = display_frame.copy() overlay = temp_frame.copy() - color = CLASS_COLORS[param["class_id"] % len(CLASS_COLORS)] - - cv2.rectangle(overlay, (param["ix"], param["iy"]), (x, y), color, 3) + + color = (255, 255, 255) if param["zooming"] else CLASS_COLORS[param["class_id"] % len(CLASS_COLORS)] + cv2.rectangle(overlay, (param["win_ix"], param["win_iy"]), (x, y), color, 2 if param["zooming"] else 3) cv2.addWeighted(overlay, 0.55, temp_frame, 0.45, 0, temp_frame) cv2.imshow(window_name, temp_frame) - # --- Left Click Release: Lock Box & Save --- - elif event == cv2.EVENT_LBUTTONUP: - param["drawing"] = False - ix, iy = param["ix"], param["iy"] + # --- Middle Click OR Shift + Left Click Release: Apply Zoom Crop --- + elif event == cv2.EVENT_MBUTTONUP or (event == cv2.EVENT_LBUTTONUP and param["zooming"]): + param["zooming"] = False + + # Convert UI window coordinates back to native working frame coordinates + x1, y1 = win_to_frame_coords(param["win_ix"], param["win_iy"], param) + x2, y2 = win_to_frame_coords(x, y, param) + x1, x2 = min(x1, x2), max(x1, x2) + y1, y2 = min(y1, y2), max(y1, y2) - x1, x2 = min(ix, x), max(ix, x) - y1, y2 = min(iy, y), max(iy, y) - - # Ignore tiny accidental micro-clicks - if (x2 - x1) < 5 or (y2 - y1) < 5: + if (x2 - x1) < 10 or (y2 - y1) < 10: cv2.imshow(window_name, display_frame) return - img_h, img_w = frame.shape[0], frame.shape[1] - x1 = max(0, min(x1, img_w - 1)) - y1 = max(0, min(y1, img_h - 1)) - x2 = max(0, min(x2, img_w - 1)) - y2 = max(0, min(y2, img_h - 1)) + # If already cropped, translate local coordinates back to full_frame coordinates + if param["crop_box"] is not None: + offset_x, offset_y = param["crop_box"][0], param["crop_box"][1] + x1, x2 = x1 + offset_x, x2 + offset_x + y1, y2 = y1 + offset_y, y2 + offset_y + + print(f" Zooming into region: X({x1}->{x2}), Y({y1}->{y2})") + apply_crop(param, (x1, y1, x2, y2)) + + # --- Left Click Release: Lock Label Box & Save --- + elif event == cv2.EVENT_LBUTTONUP and param["drawing"]: + param["drawing"] = False + + # Ignore tiny accidental micro-clicks in UI window space + if abs(x - param["win_ix"]) < 5 or abs(y - param["win_iy"]) < 5: + cv2.imshow(window_name, display_frame) + return + + # Convert UI window coordinates back to native working frame coordinates + x1, y1 = win_to_frame_coords(param["win_ix"], param["win_iy"], param) + x2, y2 = win_to_frame_coords(x, y, param) + x1, x2 = min(x1, x2), max(x1, x2) + y1, y2 = min(y1, y2), max(y1, y2) - # Append using the CURRENTLY ACTIVE class_id and label param["annotations"].append( (param["class_id"], param["session_label"], x1, y1, x2, y2) ) @@ -353,21 +456,28 @@ def label_video_session(): os.makedirs(images_dir, exist_ok=True) os.makedirs(labels_dir, exist_ok=True) - print("\n" + "=" * 50) - print(" HOW TO LABEL") - print("=" * 50) + print("\n" + "=" * 60) + print(" HOW TO LABEL & ZOOM") + print("=" * 60) print(f"• MODE: {'ALL-IN-ONE (Multi-Class)' if multi_mode else session_label.upper()}") print(f"• SESSION SCOPE: {num_frames} random search zones in '{selected_video}'") - print("-" * 50) - print("► CONTROLS:") - print(" [Click & Drag] - Draw a custom box around the target (auto-saves).") - print(" [Right-Click] - Undo / delete the last drawn box on the current frame.") - print(" [SPACEBAR] - SWITCH TARGET CLASS (Cycles through options live).") - print(" [ENTER Key] - JUMP to the NEXT random video search spot.") - print(" [Right Arrow] - Move FORWARD 10 frames (sequential tracking, no save).") - print(" [Left Arrow] - Move BACKWARD 10 frames (sequential tracking, no save).") - print(" [Q Key] - Quit and save all progress up to this point.") - print("=" * 50) + print("-" * 60) + print("► LABELING CONTROLS:") + print(" [Left-Click & Drag] - Draw box around target (auto-saves to active view).") + print(" [Right-Click] - Undo / delete last box on the current view.") + print(" [SPACEBAR] - SWITCH TARGET CLASS (Cycles through options live).") + print("-" * 60) + print("► ZOOM & CROP CONTROLS (Isolate moving targets from default clutter!):") + print(" [Shift + Click & Drag] - Draw a custom zoom box to isolate an area.") + print(" [Middle-Click & Drag] - Alternative shortcut to draw a custom zoom box.") + print(" [R Key] - Jump to a Random 50x50% sub-crop of the screen.") + print(" [X Key] - Reset zoom back to the full screenshot view.") + print("-" * 60) + print("► NAVIGATION CONTROLS:") + print(" [ENTER Key] - JUMP to NEXT random anchor (resets zoom).") + print(" [Right Arrow] / [Left] - Step FORWARD/BACKWARD 10 frames (resets zoom).") + print(" [Q Key] - Quit and save all progress.") + print("=" * 60) input("\nPress ENTER when you are ready to begin...") LEFT_KEYS = [81, 2, 2424832, 65361, 63234] @@ -376,6 +486,11 @@ def label_video_session(): i = 0 current_frame = frame_indices[i] + # Create window once outside loop so user can drag & resize it freely + window_name = "YOLO Labeler v5 | Active Session" + cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE) + cv2.moveWindow(window_name, 20, 20) + while i < len(frame_indices): cap.set(cv2.CAP_PROP_POS_FRAMES, current_frame) ret, frame = cap.read() @@ -389,12 +504,14 @@ def label_video_session(): frame_resized = cv2.resize(frame, (0, 0), fx=SCALE_FACTOR, fy=SCALE_FACTOR) frame_display = frame_resized.copy() - window_name = f"YOLO Labeler v5 | Spot {i+1}/{num_frames} (Frame {current_frame})" - cv2.namedWindow(window_name) + cv2.setWindowTitle(window_name, f"YOLO Labeler v5 | Spot {i+1}/{num_frames} (Frame {current_frame})") session_state = { - "frame": frame_resized, + "full_frame": frame_resized, # Stores original uncropped frame + "frame": frame_resized.copy(), # Current working frame (full or cropped) "display_frame": frame_display, + "crop_box": None, # Tuple (x1, y1, x2, y2) if currently zoomed + "view_scale": 1.0, # Multiplier for display upscaling "images_dir": images_dir, "labels_dir": labels_dir, "frame_idx": current_frame, @@ -405,19 +522,17 @@ def label_video_session(): "multi_mode": multi_mode, "box_drawn": False, "drawing": False, - "ix": -1, - "iy": -1, + "zooming": False, + "win_ix": -1, + "win_iy": -1, "annotations": [], } - # Load any existing boxes for this frame so you don't overwrite previous work load_existing_annotations(session_state) redraw_frame(session_state) - cv2.setMouseCallback(window_name, mouse_click_callback, session_state) while True: - cv2.moveWindow(window_name, 0, 0) key = cv2.waitKeyEx(1) # --- SPACEBAR (32): Cycle through classes --- @@ -428,19 +543,36 @@ def label_video_session(): redraw_frame(session_state) continue - # --- TAB: Hide the labels temporarialy. --- + # --- R KEY: Generate a Random Sub-Crop --- + elif key == ord("r") or key == ord("R"): + h, w = session_state["full_frame"].shape[:2] + crop_w = int(w * RANDOM_CROP_SIZE_RATIO) + crop_h = int(h * RANDOM_CROP_SIZE_RATIO) + rx1 = random.randint(0, w - crop_w) + ry1 = random.randint(0, h - crop_h) + print(f" Applying random sub-crop at X({rx1}), Y({ry1})") + apply_crop(session_state, (rx1, ry1, rx1 + crop_w, ry1 + crop_h)) + continue + + # --- X KEY: Reset Zoom / Return to Full Frame --- + elif key == ord("x") or key == ord("X"): + if session_state["crop_box"] is not None: + print(" Resetting zoom back to full screenshot.") + apply_crop(session_state, None) + continue + + # --- TAB: Hide the labels temporarily --- elif key == ord("\t"): - redraw_frame(session_state, display_tags = False) - + redraw_frame(session_state, display_tags=False) + # --- ENTER (13 or 10): Next Frame / Save --- elif key in [13, 10]: if session_label == "background": - video_base = os.path.splitext(os.path.basename(selected_video))[0] - filename_base = f"{video_base}_frame_{current_frame}" + filename_base = get_current_filename_base(session_state) image_save_path = os.path.join(images_dir, f"{filename_base}.jpg") label_save_path = os.path.join(labels_dir, f"{filename_base}.txt") - cv2.imwrite(image_save_path, frame_resized) + cv2.imwrite(image_save_path, session_state["frame"]) open(label_save_path, "a").close() print(f" Registered negative background frame: {filename_base}") @@ -474,8 +606,6 @@ def label_video_session(): cv2.destroyAllWindows() return - cv2.destroyWindow(window_name) - cap.release() cv2.destroyAllWindows() print(f"\nSession finished! Dataset updated successfully inside '{OUTPUT_DIRECTORY}'.")