diff --git a/.gitattributes b/.gitattributes index 197434b04899ebc4736ce055c90facc180e5d1a1..bfe57651b4d1552bca3992746fb88960423bc699 100644 --- a/.gitattributes +++ b/.gitattributes @@ -548,3 +548,545 @@ runs/tubetoken_phase0/proposals_stride8_n64_bidir/6xzc5Y-78-s_100000_110000.npz runs/tubetoken_phase0/proposals_stride8_n64_bidir/6KT2mbCNxO4_434000_444000.npz filter=lfs diff=lfs merge=lfs -text runs/tubetoken_phase0/proposals_stride8_n64_bidir/z9yGS9HKGsQ_21000_31000.npz filter=lfs diff=lfs merge=lfs -text runs/tubetoken_phase0/proposals_stride8_n64_bidir/zM7QopQ3MgI_499000_509000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-3ABOVeVmpU_136000_146000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-3i2L9kChxg_160000_170000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-8mcyL3kWNQ_316000_326000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-8mcyL3kWNQ_8000_18000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-FfYTvz5tFE_96000_106000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-cLOg0sQ0Zo_420000_430000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-fGFQTGd2nA_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-kr4SUjnm88_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-uD_w-t4T2Q_130000_140000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-uD_w-t4T2Q_230000_240000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-wb3JWo4qTg_380000_390000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/-wb3JWo4qTg_610000_620000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0-vcLH45brE_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0AcFEwUx1IQ_24000_34000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0BsmPd44Bic_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0C3rjPUI99U_55000_65000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0EPK7Pv_lbE_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0EPK7Pv_lbE_45000_55000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0EPK7Pv_lbE_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0J_ukJrRrsk_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0LrcdibGaLI_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0Stq3XQqmYE_13000_23000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0YKDwGCoMkw_115000_125000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0YKDwGCoMkw_212000_222000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0cccxpIx08w_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0iVM2GY3R_c_12000_22000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/0iVM2GY3R_c_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1FclvjVqnJk_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1FclvjVqnJk_320000_330000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1FclvjVqnJk_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1NkxMP5GM0o_238000_248000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1hoqgyCNlZY_147000_157000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1hoqgyCNlZY_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1ikYg55bxIg_120000_130000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1ikYg55bxIg_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1ikYg55bxIg_180000_190000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/1ikYg55bxIg_32000_42000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2B_tR_2Ww6Y_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2D43gPo7CzY_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2GSMIkobu5A_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2QAev97bk0c_75000_85000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2QKv1iBsTJM_190000_200000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2Rs4M5zBQrc_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2VqnoV67t0g_290000_300000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2qbHGI9HbfY_41000_51000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2uOqzDrthyA_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/2wmxck5D9Vw_102000_112000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/36ShTJ5wOnU_170000_180000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/36ShTJ5wOnU_290000_300000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/39lnJvGtsCw_33000_43000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/39lnJvGtsCw_68000_78000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/39xq5AATMp4_42000_52000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/39xq5AATMp4_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3P8y-mw3-RU_45000_55000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3gbLFB-r9Fs_1090000_1100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3gbLFB-r9Fs_1182000_1192000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3gbLFB-r9Fs_1210000_1220000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3mh36Zm0lLM_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3v7QC6Bl_7E_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/3vXBTUpYaVw_323000_333000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/45oaGY3mzlQ_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4DCxlVTWN8g_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4GUrjmIZcIQ_82000_92000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4HXvK9zcoyk_115000_125000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4HXvK9zcoyk_70000_80000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4HlGbrNuyPU_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4YLjVRZHoZI_1750000_1760000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4ZPJ867OBo4_75000_85000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4bg9UqOSeBo_160000_170000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4bg9UqOSeBo_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4ijLeXCmQXg_405000_415000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4k63MOSjOBw_21000_31000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4rerQA8KMzM_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4tASCYb3ySA_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/4tVCIBilaSA_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/50Z4O0mzAXg_150000_160000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/56_Unf49ZyM_27000_37000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/56_Unf49ZyM_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/5FYG_Wtet7U_120000_130000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/5YLQapaxA8o_31000_41000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/5YLQapaxA8o_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/5cTPQn6VMHU_32000_42000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/5mj2JhPAUBg_180000_190000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6985M7cEWSE_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6985M7cEWSE_45000_55000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6KT2mbCNxO4_228000_238000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6KT2mbCNxO4_434000_444000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6WUjWMuoEhM_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6aeLYISKUw8_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6oHMyrDEtmM_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6tTLxIKVtfE_26000_36000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6xzc5Y-78-s_100000_110000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/6yS2h5egiqM_768000_778000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_128000_138000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_232000_242000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_265000_275000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_298000_308000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_353000_363000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_446000_456000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_460000_470000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_68000_78000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/73QQbJIeB3Y_95000_105000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/79T0FclnIDw_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/79w-8fTYazw_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7PGfd8pg86w_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7RHm25E9qro_4000_14000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7XgkLOMvC5Q_13000_23000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7pEu6_bG0Kc_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7pEu6_bG0Kc_123000_133000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7pEu6_bG0Kc_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7pNykt6zACc_275000_285000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7pWa_kcAoMg_49000_59000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/7qeEs3ahSm4_49000_59000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/872Lwp3MOro_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/88gZ0Mx-wkI_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/89IuqwavDU8_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/89wbeFGWzkY_415000_425000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8CNsNi5mmSE_58000_68000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8FbJkBe9dsM_7000_17000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8RAGgYu2LlE_17000_27000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8RAGgYu2LlE_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8cGUDi8c7a4_113000_123000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8cmMa2PUnvQ_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8dayofDFbqQ_113000_123000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/8hr42lVW_gk_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/948s7w-mFs8_457000_467000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/9RjnpAQXLk8_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/9Yc2rdz4tUY_48000_58000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/9ZQ-T83pfWk_65000_75000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/9scT0XNxmVw_330000_340000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/9xp46AwF9BY_38000_48000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/A-e3dr7fTIs_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/A-e3dr7fTIs_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/A-e3dr7fTIs_318000_328000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/A-e3dr7fTIs_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/A0pLvDl2eTw_173000_183000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/AL9pqcOjpGQ_43000_53000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/AYVy1N0Fm0s_41000_51000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/AxjZti5_t94_42000_52000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/AxjZti5_t94_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/BQSVLgKQGM8_17000_27000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/BRAQLY85x5U_75000_85000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/BSkcM4ScyEs_150000_160000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/BY3AYOQL764_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Bq_d0kJRs4k_136000_146000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CAEGMnX65Qw_287000_297000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CCFZT2_TJr0_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CEyVVscBBg8_13000_23000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CPiOGMl59L4_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CVA8LpBW3Sc_76000_86000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CjQmcO_Q5d8_42000_52000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/CpCubAYD3ic_225000_235000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/D7ooQu528mk_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/D8H9mRHTvso_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/DB_SkDdL_cA_180000_190000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/DOe5REXClL8_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/DQ1ipAzV9Gk_380000_390000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/De5YhqX0jdI_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/DvuXNSkGMes_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/DzXVMjsZloE_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/E6Qh3VTmtxU_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/E8zQtjE2Q0M_105000_115000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/E9WRPq3Xtoc_68000_78000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ECTWcijfAzw_595000_605000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ECTWcijfAzw_773000_783000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EDsWcIijZCw_114000_124000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EKM1wu2vXy4_26000_36000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ELt6A2MeO2E_27000_37000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EQWvv8WbU04_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ETmo71vP7tA_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EXjmfFyOAqA_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EZ4COEsxRbs_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EZ4COEsxRbs_110000_120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EZ4COEsxRbs_35000_45000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EnMdx6V5e6A_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ErxyFcNPSms_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EuU2PWB1t2g_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/EzPcuNoSHMM_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/F1x1ck3OySg_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/F3KWGQfJ2HM_26000_36000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FBsYnc6YtWM_190000_200000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FBsYnc6YtWM_361000_371000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FHSoSamzdAY_845000_855000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FLqDjfVyBUg_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FMx1BqhCDIk_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FPngHLY8Yf4_23000_33000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FWb73pA7Xu4_7000_17000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FmLC0htEXVE_152000_162000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FmLC0htEXVE_56000_66000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FqIfYMkw4cU_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FsdA8xRFHsE_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/FzwtRoDcDDk_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/G4ub_r9kYX0_26000_36000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/G8cNVgg0k8Y_26000_36000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/GG-PF_JxeW4_1640000_1650000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/HD_SJOt9sP8_57000_67000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/HZhuIUFjCKo_28000_38000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/HrZNB4Zvheo_1110000_1120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/HtsvslSafoA_541000_551000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Hu2QCqWLFgc_637000_647000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/HuFzVoyayj8_521000_531000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Hz5UToOYqvs_57000_67000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ImtOOKYZtuk_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ImtOOKYZtuk_189000_199000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/J4VeWujsLJg_32000_42000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JAQX39MO6x0_53000_63000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JLpr70M7qnY_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JStvWj9GKhQ_14000_24000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JVjDa0NmfeE_173000_183000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JXlgmoBDgj0_171000_181000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/J_r9nOIoozw_133000_143000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JgkUToh3HeY_49000_59000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JlMeXmoMEEM_35000_45000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/JrpAtKkqQ_A_12000_22000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/K3_JNw7Jqyw_70000_80000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/KQAR_64a35I_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/KXvmc3dLn3E_720000_730000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/K_sv0g6DZe8_37000_47000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/K_wKxULpbgk_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/KhQGo2IdA9s_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/L1ibu6eM2c0_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LFs44HbaTr8_46000_56000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LIUU1ZmIljc_270000_280000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LIUU1ZmIljc_480000_490000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LOFX2UVozf8_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LV0Z0xiAknk_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LdB5pW9c_N4_477000_487000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LitaFzObEEk_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LmVJfPggUzk_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LnhqofnK8j4_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LvdwLp6JWNM_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LxIi6zy5zJ4_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/LxIi6zy5zJ4_110000_120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/M6vnA5H5R1M_85000_95000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MDHqWp129tQ_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MDyjY3uiWp0_273000_283000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MDyjY3uiWp0_297000_307000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MDyjY3uiWp0_354000_364000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MF-gcxj4hNQ_95000_105000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MFHtIjM-Sdo_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/MFn93Sqq23g_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Maa21OL-40Q_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Mivqxr0RS8w_18000_28000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NDq6ZtDNvVY_200000_210000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NF28vE2RTpw_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NjYf4_zryRI_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NwISV0dGIQE_330000_340000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NwUomxbStjs_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NzJp2eh20Kk_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/NzJp2eh20Kk_17000_27000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ODtzRJgFZSU_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OEe6c3KIUB4_45000_55000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OFgcrlxku9g_160000_170000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OGCyzmaM_kE_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OMYuLiqSUxE_180000_190000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OMYuLiqSUxE_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OPVEPq_r-vk_211000_221000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OTWpW5pz_mU_8000_18000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OX6T2z4P9fA_23000_33000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OlZDfX8gWgU_182000_192000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/OlZDfX8gWgU_59000_69000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Oqol-yj-Q90_114000_124000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Oqol-yj-Q90_47000_57000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Oqol-yj-Q90_9000_19000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Oqol-yj-Q90_98000_108000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Ow9uE_v2AEg_28000_38000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PL-qv34uGz4_110000_120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PSoKYh3ea1o_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PYP-r0nvbFk_55000_65000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PcdKAvd51l0_41000_51000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PdHpl04tQV8_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Pe1LuVFTczE_106000_116000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Pe1LuVFTczE_358000_368000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Pg2qk3mNSoc_66000_76000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Pgn_5eHt1Xw_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Pgn_5eHt1Xw_78000_88000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Ptm0GYEf4AI_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PwazdGn6ldc_24000_34000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PxXx1BUtLT4_46000_56000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PxXx1BUtLT4_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/PzmC9b4J1Ck_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QHcG-FDM75Q_113000_123000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QHttrMTur1w_256000_266000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QMj7FbST_v0_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QNiHU290owU_55000_65000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QTe-i0Pcn4s_37000_47000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QfQGMj0Mpes_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QnVzn-1mESU_100000_110000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QnVzn-1mESU_157000_167000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/QnVzn-1mESU_187000_197000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/RHy5nC-gRV8_668000_678000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/RMF6sp6tWHM_100000_110000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Ru7m8PyMlVM_120000_130000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/SFVZ2OklsVM_2715000_2725000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/SFVZ2OklsVM_2765000_2775000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/SS53enMsEZg_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/S_NJKy7Aoto_213000_223000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/S_NJKy7Aoto_266000_276000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/T9K1uy-G5qA_110000_120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/TCcD-vOUtNc_99000_109000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/TXlqhV2cPIQ_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/TZDismkrChU_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Tec5bp90C8k_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/U1dZX1ReD88_48000_58000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/U1pyRmKgnrM_142000_152000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/URUkK0bzULI_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/URZyjoh9lbc_500000_510000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/URZyjoh9lbc_560000_570000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/UViY20HJWaI_140000_150000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/UYUH7Jmfp3g_13000_23000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/UYUH7Jmfp3g_76000_86000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Ul1wG5WbF9s_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/UlYU9z7Y8jY_68000_78000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Um82Xw7oCkc_28000_38000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/V-JvwN3_ASI_92000_102000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/V9KZ5FCtG9A_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/VbEvfbj_IxU_117000_127000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Vhx4xBA0XxA_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/VkcYchOGibc_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/VlPdfLr1FSo_7000_17000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/VvlvMzBQ9E4_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/W5yveLPTD04_211000_221000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/W9BbX72k_X0_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WK5cRnwMdVY_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WOJMjZAMUFk_21000_31000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WPrsmLV6KlE_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WSy8ay1avew_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WhWKY7Yy04o_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WkbCFN97-NM_126000_136000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/WntoBYXpcF8_5000_15000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/X-V2G7R5TSo_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/X6U476H2pWw_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/XwVxujf4Ehc_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Y0t3yM_3ZwE_145000_155000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Y0t3yM_3ZwE_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Y735cxoG5-4_270000_280000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/Y7gRJOkZV-g_745000_755000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/YAW2vMKV9pw_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/YEUTGFYfn34_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZLQy1AM27U4_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZPYqUww_x6k_293000_303000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZR3vnlhJuSE_101000_111000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZU0JSxWk1Po_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZU0JSxWk1Po_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ZqwnEQf0UfQ_44000_54000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/_-apT0tfo6U_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/_JUuv3q0OCM_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/_ta7b5gmhJs_120000_130000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/a1nWlW629TU_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aBmzZJZ_M8Y_9000_19000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aRSfqLxMISU_499000_509000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aReYDB4dqy0_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aReYDB4dqy0_81000_91000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aVrYzMmq5Rs_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/aZenX0O9A7A_91000_101000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/amnXQw15Pzc_335000_345000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/bELyeHxF7eA_42000_52000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/bOk44oZePqw_290000_300000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/bZUIOK81aSI_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/bZUIOK81aSI_34000_44000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/bcGfmy0X-CQ_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/blcLDWUs3Os_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/c36Exjlaxzg_118000_128000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/c36Exjlaxzg_63000_73000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/c3enHqIWN3c_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cIbVu0ixSAo_302000_312000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cLmFz_WDbdw_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cOrw3tdXtTI_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cQeNLjYQgoA_9000_19000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cRT5SWbyA54_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cVQUaecTlpU_163000_173000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/cmNI6jiMKik_46000_56000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dRa7aBGnStU_82000_92000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dUcOkRkz6bA_387000_397000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dVa49WwXzr8_1023000_1033000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dVa49WwXzr8_481000_491000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dh2qX9nQIYI_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dk_xhLkWyDo_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ds3RKnNB-cY_8000_18000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/dz2Rp5bISuE_27000_37000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/e4keL3T9Hz4_39000_49000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/eK12jfQSnRQ_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ehlPuuiNEd8_376000_386000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/f0jKjIOFzAY_225000_235000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/f0jKjIOFzAY_243000_253000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/f170h57Dips_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fHFriMNHizQ_93000_103000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fTobKZBbMos_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fUpQFMEb9po_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fWvQqgSDUPU_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fY0z_ApudeM_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fY0z_ApudeM_93000_103000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fvK8_OlcrCo_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fvK8_OlcrCo_328000_338000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fvK8_OlcrCo_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fvK8_OlcrCo_91000_101000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/fw8wGJY8III_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/g5FVJveyyVM_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/gAf1QWvKNRE_24000_34000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/gAf1QWvKNRE_262000_272000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/gAf1QWvKNRE_335000_345000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/hXf0Jw4EiAg_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/hXsq3VjpQAk_34000_44000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/hYt2Qf438l8_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/hornh-NQBHY_262000_272000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/iSBtK1T10Ew_1065000_1075000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/iSBtK1T10Ew_415000_425000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/icDObrsrNr4_64000_74000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ifGuIUPl1hE_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/iux1NLDSJhU_57000_67000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/iux_t_UEsNU_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/jME9QyhHS_0_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/jME9QyhHS_0_110000_120000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/jME9QyhHS_0_35000_45000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/jME9QyhHS_0_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/jj1UxRTBaNw_210000_220000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_1195000_1205000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_1235000_1245000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_147000_157000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_35000_45000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_700000_710000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_70000_80000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k35blcO8Z7k_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/k7hhqVlTUvM_150000_160000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/kF2y7RIC7-Y_258000_268000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/kF2y7RIC7-Y_385000_395000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/kLuuxnijxa0_432000_442000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/kNVFsDnePrM_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/l5bjljDHFK0_67000_77000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lCTH25Jdk-A_27000_37000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lYwnXP3g050_4000_14000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lcOP60uXMeI_198000_208000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lcOP60uXMeI_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lcOP60uXMeI_396000_406000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/lzzMHoi3r2w_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/mTpBcHOO_Nk_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/mUN93MlvX64_42000_52000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/m_TDmJDVh0o_172000_182000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/m_TDmJDVh0o_307000_317000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/mqB05HNR03g_630000_640000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/n-HtvAtkAjg_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nPMi136tURg_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_123000_133000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_163000_173000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_313000_323000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_435000_445000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/nT0PHpAlvys_65000_75000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oAPd5djYx0c_60000_70000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oN4HOtAKCeM_17000_27000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oP550FUJxUA_16000_26000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oP550FUJxUA_97000_107000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oRSCL3149fI_146000_156000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oRSCL3149fI_87000_97000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oSMvY0tErC4_100000_110000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oSMvY0tErC4_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oVK2QsKq8ak_186000_196000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oYeir4FWq_8_6000_16000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oaYIWYXFMqY_70000_80000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/oyi5pKPwz9Q_3000_13000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/p2u4OJKqMxE_130000_140000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/p5uRwtw7S3E_243000_253000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/p8f-dwURY20_18000_28000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/pG1aSAUbf4I_150000_160000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/pIp-fSFvipo_235000_245000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/pNV8MKNqOkI_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/pf6ZpxTFL1Y_51000_61000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/puugfzdXYz4_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/q3YnhPgt-rM_118000_128000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/q6Vwbg3SOSc_300000_310000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/q6Vwbg3SOSc_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/qYtrnr4chfU_2000_12000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/q_EiqTTmLaI_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/qdjouHZ-HbE_220000_230000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/r4NdM595K5c_40000_50000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/r77M_VroAlc_111000_121000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/r77M_VroAlc_182000_192000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/r77M_VroAlc_195000_205000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rBAoCu5ykvE_177000_187000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rNqsEu5o3q0_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rUuwFzXrrM8_250000_260000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rV7tIQMI02o_71000_81000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rfCUcG6QMwk_305000_315000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rooPPLtK9pg_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rozFJYWrLj0_120000_130000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rsrWBquU8bc_9000_19000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/rzKjN2en0H8_830000_840000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sFAMC_KKp_g_30000_40000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sHyhvtLTCbo_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sMsrz5VqchQ_130000_140000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sPlV3RLV04I_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sV1o5VmL-9g_824000_834000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sfXt8h7KAHM_46000_56000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sfv_msSOYTo_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sjIEiu_ovKc_470000_480000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/sp69Ndnhdbk_98000_108000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/t2k36jTsAFE_14000_24000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/t3z2bY00Cpw_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/tMorLZku6Pc_194000_204000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/tS1_T-Fgjsc_131000_141000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/tZbh1cwwfv0_222000_232000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/topmJqYT-Ts_1000_11000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/uFcZhH_wFbs_119000_129000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/uFcZhH_wFbs_133000_143000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/uFcZhH_wFbs_45000_55000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/uFcZhH_wFbs_94000_104000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/umOS1bOBa1U_1676000_1686000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/uq1V5H4q8mo_198000_208000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vHxVxzzbKP0_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vOj00VJiBuk_10000_20000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vOj00VJiBuk_80000_90000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vVJ-Zhj2HvU_22000_32000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vYMlA0Lpdq4_24000_34000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vYMlA0Lpdq4_77000_87000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vYMlA0Lpdq4_96000_106000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vifFbeL5rOo_9000_19000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vll33KEoCcc_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/vll33KEoCcc_34000_44000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/w7vA5f0vPvQ_15000_25000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wKAngrlBTb4_34000_44000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wdB0tV2egxE_260000_270000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wfkdedUW-dk_50000_60000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wfkdedUW-dk_85000_95000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wrdAEmNvEj4_706000_716000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wrdAEmNvEj4_831000_841000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wzLnvUzvdFY_228000_238000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/wzLnvUzvdFY_43000_53000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/xAjvjVd6Xnk_0_10000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/xUQ9rDswHdw_140000_150000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/xnx3u5YaNuc_402000_412000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/xxoFZkWwsvA_90000_100000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/y6qOctkda3w_153000_163000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/y6qOctkda3w_188000_198000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/ycZ2eEhXTN8_25000_35000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/z3Q_mZgKLrM_20000_30000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/z9yGS9HKGsQ_21000_31000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/zM7QopQ3MgI_319000_329000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/zM7QopQ3MgI_410000_420000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/zM7QopQ3MgI_499000_509000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/zPMUL7f4OOU_420000_430000.npz filter=lfs diff=lfs merge=lfs -text +runs/tubetoken_phase0/proposals_stride8_n128_miss/zstao4nIPmU_250000_260000.npz filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a4a178a6fa6f808a4ef4dd81ae54cdb48df5dc65 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +data/media/ +data/gt_mask/ +data/audio_embed/ +data/image_embed/ +data/text_embed/ diff --git a/.hfignore b/.hfignore new file mode 100644 index 0000000000000000000000000000000000000000..86303c0defee54acf3e43f602c73f2bf0359e5b4 --- /dev/null +++ b/.hfignore @@ -0,0 +1,5 @@ +data/media/* +data/gt_mask/* +data/audio_embed/* +data/image_embed/* +data/text_embed/* \ No newline at end of file diff --git a/ChatUniVi/__pycache__/__init__.cpython-310.pyc b/ChatUniVi/__pycache__/__init__.cpython-310.pyc index 9a5d7abe77c56f9e2a459e89617514b4cb52689a..51dcff13026d9eb39a5da3e3b11dba0e2b8bf851 100644 Binary files a/ChatUniVi/__pycache__/__init__.cpython-310.pyc and b/ChatUniVi/__pycache__/__init__.cpython-310.pyc differ diff --git a/ChatUniVi/__pycache__/constants.cpython-310.pyc b/ChatUniVi/__pycache__/constants.cpython-310.pyc index 077e9e58662a91d4bf732feaeaff8b11912d09f2..1d10e29cc49905dd953f831c0725a7e136f0c826 100644 Binary files a/ChatUniVi/__pycache__/constants.cpython-310.pyc and b/ChatUniVi/__pycache__/constants.cpython-310.pyc differ diff --git a/ChatUniVi/model/__pycache__/__init__.cpython-310.pyc b/ChatUniVi/model/__pycache__/__init__.cpython-310.pyc index 6213cae6f6bed63ccff308e620b22365c5393097..598cdb6c2d369d5f1d3d95b1c272ed34cad45002 100644 Binary files a/ChatUniVi/model/__pycache__/__init__.cpython-310.pyc and b/ChatUniVi/model/__pycache__/__init__.cpython-310.pyc differ diff --git a/ChatUniVi/model/__pycache__/arch.cpython-310.pyc b/ChatUniVi/model/__pycache__/arch.cpython-310.pyc index 2bf34b47f79b36d1098b9b1bd59d2eb575ef0476..0223bad3e60b8511b199e2eb3882c33392337449 100644 Binary files a/ChatUniVi/model/__pycache__/arch.cpython-310.pyc and b/ChatUniVi/model/__pycache__/arch.cpython-310.pyc differ diff --git a/ChatUniVi/model/__pycache__/cluster.cpython-310.pyc b/ChatUniVi/model/__pycache__/cluster.cpython-310.pyc index 74139b4cef3629eb7271f0071199b241a8d33c39..ab4d4e6edca6aefc80fb997977d5818d3ddb717f 100644 Binary files a/ChatUniVi/model/__pycache__/cluster.cpython-310.pyc and b/ChatUniVi/model/__pycache__/cluster.cpython-310.pyc differ diff --git a/ChatUniVi/model/language_model/__pycache__/llama.cpython-310.pyc b/ChatUniVi/model/language_model/__pycache__/llama.cpython-310.pyc index f368dbbed939154f6bc4cce79b6fca3171a90a93..466340d228de29068b0fc95bcf9cbbe1d996c558 100644 Binary files a/ChatUniVi/model/language_model/__pycache__/llama.cpython-310.pyc and b/ChatUniVi/model/language_model/__pycache__/llama.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc index 9b51b4687d2d89cb5407bcedbe6ca0abe215af8f..d6783e2130a86a0141dcf994190f40f7b2ec56b4 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc index 56236f7a5cb38b4230f03e901ed8517c916a4336..95c2103f7f4715836fb1794b5d2f693e18361ed1 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/eva_encoder.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/eva_encoder.cpython-310.pyc index 2ff66f1cbc9c1a7ae31065584421dd8774090291..74eaa396e7d61ccf8438bc225f31988b882e7051 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/eva_encoder.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/eva_encoder.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/eva_vit.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/eva_vit.cpython-310.pyc index 480a55908f787de4019d3428aeb06b609daa0b13..fa340d4941d1f3dad16beb3b330e01d528b7d44f 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/eva_vit.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/eva_vit.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/processor.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/processor.cpython-310.pyc index 7b7d93c1be5bdef8c8a02aea475b0fd5e306ef39..66839aa917e8868854faefaa9f031c92d82e3c77 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/processor.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/processor.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_encoder/__pycache__/utils.cpython-310.pyc b/ChatUniVi/model/multimodal_encoder/__pycache__/utils.cpython-310.pyc index 5a30e4e613bac40104625a70db56b1c7c3a73cb1..cd1e8644eaafa650689ee08bbb8369ac925bcdc4 100644 Binary files a/ChatUniVi/model/multimodal_encoder/__pycache__/utils.cpython-310.pyc and b/ChatUniVi/model/multimodal_encoder/__pycache__/utils.cpython-310.pyc differ diff --git a/ChatUniVi/model/multimodal_projector/__pycache__/builder.cpython-310.pyc b/ChatUniVi/model/multimodal_projector/__pycache__/builder.cpython-310.pyc index 60f8d465aa2bff810567c740cbe872055a622187..ed1057e9e6294bb6ccfb64c7b6905022ae8e4870 100644 Binary files a/ChatUniVi/model/multimodal_projector/__pycache__/builder.cpython-310.pyc and b/ChatUniVi/model/multimodal_projector/__pycache__/builder.cpython-310.pyc differ diff --git a/SimToken_Setup_Upload_Download_Guide.md b/SimToken_Setup_Upload_Download_Guide.md index 089b5f7aa7cdf1c5f6ec0fb6af4c7ce76c13f96b..3d8cf8a9ccc0d4ffe831bdb9aac97510ffdb751e 100644 --- a/SimToken_Setup_Upload_Download_Guide.md +++ b/SimToken_Setup_Upload_Download_Guide.md @@ -154,18 +154,54 @@ tar -xf image_embed.tar ## 5. Upload Repository -Use one full-directory upload command: +The remote repo stores the four large data directories as tar archives (`media.tar`, `image_embed.tar`, etc.). +The local workspace has them extracted as plain directories. +**Do not re-upload these directories**—use `--ignore-patterns` to skip them, otherwise every extracted file would be treated as a new upload. + +### 5a. Pack any new data directories before uploading + +If `data/text_embed/` is new (first upload after running `precompute_text_feats.py`): + +```bash +cd /workspace/SimToken/data +tar -cf text_embed.tar text_embed +``` + +### 5b. Login ```bash cd /workspace/SimToken huggingface-cli login +``` + +### 5c. Upload (excluding extracted data directories) -huggingface-cli upload yfan07/SimToken . . \ +Use the new `hf upload` command (not the deprecated `huggingface-cli upload`). +The deprecated command hashes all files before applying any filter, which is extremely slow with large data directories. +`hf upload` with `--exclude` skips the specified files before hashing. + +```bash +hf upload yfan07/SimToken . . \ --repo-type model \ + --exclude "data/media/**" "data/gt_mask/**" "data/audio_embed/**" "data/image_embed/**" "data/text_embed/**" \ 2>&1 | tee upload.log ``` -This uploads the whole `/workspace/SimToken` directory according to the current local files. +This uploads everything except the four extracted dataset directories and the raw `text_embed/` folder. +The `data/text_embed.tar` file (sitting directly under `data/`) is **not** matched by `data/text_embed/**` and will be uploaded normally. + +### Restore on a new server + +After downloading the repo (Section 2), extract all packed data: + +```bash +cd /workspace/SimToken/data +tar -xf media.tar +tar -xzf gt_mask.tar.gz +tar -xzf audio_embed.tar.gz +tar -xf image_embed.tar +tar -xf text_embed.tar # if present +``` ## 6. Current Experiment Files to Preserve diff --git a/TubeToken_Phase0_Experiment_Log.md b/TubeToken_Phase0_Experiment_Log.md index 7b777f292849fbe4a4726265d34463ec109c5fe7..9613c1eb8b49ec62c46da0bd91556b4848025a3b 100644 --- a/TubeToken_Phase0_Experiment_Log.md +++ b/TubeToken_Phase0_Experiment_Log.md @@ -197,7 +197,194 @@ Main bottleneck: - Proposal recall, especially for `test_s`, small targets, and spatial expressions. - Bidirectional propagation does not solve the full-set miss problem, so the problem is likely candidate generation / ranking / keyframe coverage, not just temporal direction. -## Next Experiment +## Phase 0 Completed Results + +### stride=8, N=128 Full Evaluation (Yellow Light) + +Completed 2026-04-26. Proposal directory: `proposals_stride8_n128_miss` (all 542 test_s+test_u videos, N=128). + +```text +all: n=3944, R@16=0.469, R@32=0.597, R@64=0.754, R@128=0.867, Oracle J&F=0.8407, miss=13.31% +audio_keyword: n=2844, R@16=0.475, R@32=0.610, R@64=0.766, R@128=0.870, Oracle J&F=0.8445, miss=12.97% +small: n=1631, R@16=0.237, R@32=0.392, R@64=0.633, R@128=0.821, Oracle J&F=0.7942, miss=17.90% +spatial_keyword: n=965, R@16=0.331, R@32=0.476, R@64=0.658, R@128=0.804, Oracle J&F=0.7902, miss=19.59% +test_s: n=2288, R@16=0.326, R@32=0.483, R@64=0.657, R@128=0.813, Oracle J&F=0.7941, miss=18.71% +test_u: n=1656, R@16=0.665, R@32=0.755, R@64=0.887, R@128=0.941, Oracle J&F=0.9052, miss=5.86% +``` + +Go/No-Go decision: **Yellow Light (条件绿灯)** + +| 条件 | 阈值 | 当前值 | 状态 | +|------|------|--------|------| +| Oracle Tube J&F (all) | ≥ SimToken均值+5% ≈ 0.8054 | 0.8407 | ✅ | +| test_s Oracle J&F | ≥ SimToken seen 0.7651 | 0.7941 | ✅ | +| test_s R@128 (修订条件) | ≥ 0.75 | 0.813 | ✅ | + +注:R@32 原始条件(≥85%)未达标(0.597),但该条件是为 N=64 语境设计的,在 N=128 运行时以 R@128 替代。13.31% miss 是生成瓶颈,增加 N 无法解决,需 stride=4。 + +额外完成工作: +- 分层评估子集 `eval_subset_150.txt`(156 个视频,覆盖 6 个分层) +- CLIP 文本特征预计算:`data/text_embed/`(19395 个文件,768-dim) +- TubeToken-Minimal 框架骨架:`datasets/dataset_tubetoken.py`, `models/tubetoken_minimal.py`, `train_tubetoken.py`(smoke test 通过) + +## Pending Experiments (Deferred) + +### Experiment B: stride=4, N=128 + +**状态**: 已准备好命令,等待执行。 +**目标**: 验证更密关键帧能否将 test_s miss% 从 18.71% 进一步降低。 +**预期耗时**: 全集生成约 4-5 小时(stride=8 花了 2 小时)。 + +**Step 1: 生成 proposals** + +```bash +cd /workspace/SimToken && conda activate simtoken + +mkdir -p runs/tubetoken_phase0/proposals_stride4_n128 + +python tools/tubetoken/generate_sam2_proposals.py \ + --data_dir /workspace/SimToken/data \ + --out_dir /workspace/SimToken/runs/tubetoken_phase0/proposals_stride4_n128 \ + --splits test_s,test_u \ + --sam2_repo /workspace/sam2 \ + --model_cfg configs/sam2.1/sam2.1_hiera_l.yaml \ + --checkpoint /workspace/sam2/checkpoints/sam2.1_hiera_large.pt \ + --stride 4 --max_tubes 128 \ + --device cuda --amp_dtype bf16 \ + --quiet_sam2 --no_group_by_keyframe \ + 2>&1 | tee runs/tubetoken_phase0/proposals_stride4_n128.log +``` + +**Step 2: 子集快速评估(生成完成后约 5 分钟)** + +```bash +mkdir -p runs/tubetoken_phase0/eval_stride4_n128_subset + +python tools/tubetoken/evaluate_phase0_proposals.py \ + --data_dir /workspace/SimToken/data \ + --proposal_dir /workspace/SimToken/runs/tubetoken_phase0/proposals_stride4_n128 \ + --out_dir /workspace/SimToken/runs/tubetoken_phase0/eval_stride4_n128_subset \ + --audit_csv /workspace/SimToken/runs/tubetoken_phase_minus1/audit_full/audit_samples.csv \ + --splits test_s,test_u \ + --video_list /workspace/SimToken/runs/tubetoken_phase0/eval_subset_150.txt \ + --recall_ns 16,32,64,128 \ + 2>&1 | tee runs/tubetoken_phase0/eval_stride4_n128_subset.log +``` + +**Step 3: 全集评估(子集通过后)** + +```bash +mkdir -p runs/tubetoken_phase0/eval_stride4_n128_full + +python tools/tubetoken/evaluate_phase0_proposals.py \ + --data_dir /workspace/SimToken/data \ + --proposal_dir /workspace/SimToken/runs/tubetoken_phase0/proposals_stride4_n128 \ + --out_dir /workspace/SimToken/runs/tubetoken_phase0/eval_stride4_n128_full \ + --audit_csv /workspace/SimToken/runs/tubetoken_phase_minus1/audit_full/audit_samples.csv \ + --splits test_s,test_u \ + --recall_ns 16,32,64,128 \ + 2>&1 | tee runs/tubetoken_phase0/eval_stride4_n128_full.log +``` + +**决策规则(来自实验建议)**: + +| 子集 test_s Oracle J&F | 含义 | 对 Milestone 2 影响 | +|------------------------|------|---------------------| +| ≥ 0.77 | 绿灯候选,触发全集确认 | 若全集通过,切换 backend 为 stride=4 | +| 0.72–0.77 | 边际改善 | 保持 stride=8,N=128,不调整 | +| < 0.72 | 生成瓶颈深于关键帧密度 | 保持 stride=8,N=128,不再追求绿灯 | + +### EC-SimToken 实验 + +**状态**: 代码已完成,等待运行。 +**目标**: 构建增强版 SimToken baseline,用于: +1. 为 TubeToken 提供竞争性对比基线(而非 weak baseline) +2. 验证音频交换合成 Null 增强策略的有效性 +3. 为后续 CondQFormer 扩展提供基础 + +**已完成工作**: +- `models/ec_simtoken_model.py`: `ECSimtoken_ForCausalLM`,在 `Simtoken_ForCausalLM` 基础上添加 `existence_head = nn.Linear(256, 1)`;mask loss 对 null 样本 gate;BCE existence loss +- `train_ec_simtoken.py`: 训练脚本,含音频交换 null 增强(`--null_aug_prob`)、bf16 加速、DataLoader `pin_memory`/`persistent_workers` +- `configs/config.py`: 改为 `parse_known_args()` 以支持脚本扩展 args(已完成) + +**前置条件**: 有可用的 SimToken 预训练权重(`trained_simtoken.pth`),加载后 fine-tune。 + +**Step 1: 训练(从 SimToken 权重初始化,fine-tune 5 个 epoch)** + +```bash +cd /workspace/SimToken && conda activate simtoken + +python train_ec_simtoken.py \ + --data_dir data \ + --mllm Chat-UniVi/Chat-UniVi-7B-v1.5 \ + --vision_pretrained path/to/sam_vit_h_4b8939.pth \ + --saved_model checkpoints/trained_simtoken.pth \ + --name ec_simtoken_v1 \ + --epochs 5 \ + --batch_size 12 \ + --null_aug_prob 0.25 \ + --exist_loss_weight 1.0 \ + --log_root runs/ec_simtoken \ + --checkpoint_root checkpoints/ec_simtoken \ + 2>&1 | tee runs/ec_simtoken/ec_simtoken_v1.log +``` + +预计耗时(bf16 + batch_size=12):约 1.5–2h/epoch × 5 = 7.5–10h。 +若显存不足,降至 `--batch_size 8`(约 2.5h/epoch)。 + +**Step 2: 评估(seen/unseen/null 三个 split)** + +```bash +python train_ec_simtoken.py --run eval \ + --data_dir data \ + --mllm Chat-UniVi/Chat-UniVi-7B-v1.5 \ + --vision_pretrained path/to/sam_vit_h_4b8939.pth \ + --saved_model checkpoints/ec_simtoken/ec_simtoken_v1.pth \ + --eval_splits test_s,test_u,test_n \ + --exist_threshold 0.5 +``` + +**决策规则**: + +| 指标 | 阈值 | 含义 | +|------|------|------| +| test_s J&F | ≥ 0.7651(SimToken seen 基线) | 基础分割能力不退化 | +| test_u J&F | ≥ 0.7456(SimToken unseen 基线) | 基础分割能力不退化 | +| test_n Null_S | < 0.0100(SimToken 0.0118,越低越好) | Null 检测有效提升 | +| test_n null_tp 率 | ≥ 70%(null_tp / (null_tp + null_fn)) | existence head 实际工作 | + +**调参方向**: +- 若 test_s/test_u J&F 低于基线:降低 `--exist_loss_weight`(试 0.5),减少 existence loss 对分割分支的干扰 +- 若 null_tp 率 < 60%:增大 `--null_aug_prob`(试 0.35)或调低 `--exist_threshold`(试 0.4) +- 若显存 OOM:`--batch_size 8`;若仍 OOM:`--batch_size 6`(回到原始配置) + +**与 TubeToken 的关系**: +EC-SimToken 是论文对比基线,不是 TubeToken 开发的前置条件。可与 TubeToken-Minimal 并行执行。 + +--- + +### TubeToken-Minimal 训练 proposals (Train Split) + +**状态**: 待执行,依赖 stride=4 完成后排队。 +**预计耗时**: 2767 个 train 视频 × ~15s = 约 12 小时。 + +```bash +mkdir -p runs/tubetoken_phase0/proposals_stride8_n128_train + +python tools/tubetoken/generate_sam2_proposals.py \ + --data_dir /workspace/SimToken/data \ + --out_dir /workspace/SimToken/runs/tubetoken_phase0/proposals_stride8_n128_train \ + --splits train \ + --sam2_repo /workspace/sam2 \ + --model_cfg configs/sam2.1/sam2.1_hiera_l.yaml \ + --checkpoint /workspace/sam2/checkpoints/sam2.1_hiera_large.pt \ + --stride 8 --max_tubes 128 \ + --device cuda --amp_dtype bf16 \ + --quiet_sam2 --no_group_by_keyframe \ + 2>&1 | tee runs/tubetoken_phase0/proposals_stride8_n128_train.log +``` + +## Next Experiment (Active) ### Goal diff --git a/configs/__pycache__/__init__.cpython-310.pyc b/configs/__pycache__/__init__.cpython-310.pyc index 2d14010d58fddea9ca9c1907ec46be42603dce4a..0aed42b448fe375fa6465bcc3ba08b2308579a7f 100644 Binary files a/configs/__pycache__/__init__.cpython-310.pyc and b/configs/__pycache__/__init__.cpython-310.pyc differ diff --git a/configs/__pycache__/config.cpython-310.pyc b/configs/__pycache__/config.cpython-310.pyc index b8169959ecc63f57383e792ac689a4c78380acf3..df497405bb840ecdc1e187792bc91daf8d4a4f98 100644 Binary files a/configs/__pycache__/config.cpython-310.pyc and b/configs/__pycache__/config.cpython-310.pyc differ diff --git a/configs/config.py b/configs/config.py index 5495f505a430a2cf32abcce3ab34e1d88f6a0df0..7e1c7dd0a6bae7cd204b8867cf11fa81e16aad60 100644 --- a/configs/config.py +++ b/configs/config.py @@ -76,7 +76,7 @@ parser.add_argument("--text_max_len", type=int, default=25, help="Maximum textua -args = parser.parse_args() +args, _ = parser.parse_known_args() # os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = args.gpu_id diff --git a/data/text_embed.tar b/data/text_embed.tar new file mode 100644 index 0000000000000000000000000000000000000000..093ea8a6c4aad401eee23f7fccdfb8e0388973f6 --- /dev/null +++ b/data/text_embed.tar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58cf24807f71c76e26222eace8e94b460266968e4458b52f44e463e961220e6f +size 30484387840 diff --git a/datasets/__pycache__/__init__.cpython-310.pyc b/datasets/__pycache__/__init__.cpython-310.pyc index fdc35ebd0d7d39fa118c9fbdb50d55ab8374b761..9e79a38d672fe6c7be7a9014c638ba13f4e61609 100644 Binary files a/datasets/__pycache__/__init__.cpython-310.pyc and b/datasets/__pycache__/__init__.cpython-310.pyc differ diff --git a/datasets/__pycache__/dataset_refavs.cpython-310.pyc b/datasets/__pycache__/dataset_refavs.cpython-310.pyc index 8ad105c4604f1bd62f040a7c8c311b3c81ecc899..4ce771a4e18a584ca0835836ebbec1c8e035fa9a 100644 Binary files a/datasets/__pycache__/dataset_refavs.cpython-310.pyc and b/datasets/__pycache__/dataset_refavs.cpython-310.pyc differ diff --git a/datasets/__pycache__/dataset_tubetoken.cpython-310.pyc b/datasets/__pycache__/dataset_tubetoken.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a3e71708272cfaeb4926ad114fc5c17207622dc Binary files /dev/null and b/datasets/__pycache__/dataset_tubetoken.cpython-310.pyc differ diff --git a/datasets/dataset_tubetoken.py b/datasets/dataset_tubetoken.py new file mode 100644 index 0000000000000000000000000000000000000000..16a0baa88074d7482d692409145bd3042bb57a30 --- /dev/null +++ b/datasets/dataset_tubetoken.py @@ -0,0 +1,300 @@ +"""Dataset for TubeToken-Minimal training and evaluation. + +Loads per-sample: SAM2 proposal tubes, pre-computed image/audio/text features, +and GT masks. Computes tube features (mask-pooled SAM image encoder) on-the-fly. +""" + +from __future__ import annotations + +import csv +import random +from pathlib import Path +from typing import Dict, List, Optional + +import numpy as np +import torch +import torch.nn.functional as F +from torch.utils.data import Dataset + + +IGNORE_GT_IDX = -1 # returned when no proposals available for the video + + +def _load_gt_tube(gt_mask_dir: Path, vid: str, fid: str, frames: int = 10) -> torch.Tensor: + """Load GT binary masks for one expression. Returns [T, H, W] float32.""" + masks = [] + for t in range(frames): + path = gt_mask_dir / vid / f"fid_{fid}" / f"0000{t}.png" + from PIL import Image + with Image.open(path) as img: + arr = np.array(img.convert("L")) > 0 + masks.append(torch.as_tensor(arr, dtype=torch.float32)) + return torch.stack(masks, dim=0) # [T, H, W] + + +def _mask_pool_sam_features( + sam_feat: torch.Tensor, # [T, 256, 64, 64] + masks: torch.Tensor, # [N, T, H, W] float +) -> torch.Tensor: + """Mask-pool SAM encoder features for each proposal tube. Returns [N, 256].""" + T, C, fH, fW = sam_feat.shape + N = masks.shape[0] + + # Downsample masks to feature map resolution + masks_small = F.interpolate( + masks.view(N * T, 1, masks.shape[2], masks.shape[3]).float(), + size=(fH, fW), + mode="nearest", + ).view(N, T, fH, fW) # [N, T, fH, fW] + + # Per-timestamp masked average pooling, then temporal mean + tube_feats_per_t = [] + for t in range(T): + sf_t = sam_feat[t].view(C, -1) # [C, fH*fW] + ms_t = masks_small[:, t].view(N, -1) # [N, fH*fW] + mask_sum = ms_t.sum(-1, keepdim=True) + 1e-6 # [N, 1] + ms_norm = ms_t / mask_sum # [N, fH*fW] (sums to 1 per tube) + feat_t = ms_norm @ sf_t.t() # [N, C] + tube_feats_per_t.append(feat_t) + + tube_feats = torch.stack(tube_feats_per_t, dim=1).mean(dim=1) # [N, C] + return tube_feats + + +def _compute_gt_tube_idx( + masks: torch.Tensor, # [N, T, H, W] uint8 or float + gt_tube: torch.Tensor, # [T, H, W] float +) -> int: + """Return index of proposal tube with highest mean-IoU against GT. + + Computes IoU at 64x64 resolution for speed. Returns N (null index) + if all proposals have zero IoU. + """ + N, T, H, W = masks.shape + + gt_small = F.interpolate( + gt_tube.unsqueeze(0).unsqueeze(0).expand(T, 1, H, W).float(), + size=(64, 64), mode="nearest", + ).squeeze(1) # [T, 64, 64] + + pred_small = F.interpolate( + masks.float().view(N * T, 1, H, W), + size=(64, 64), mode="nearest", + ).view(N, T, 64, 64) # [N, T, 64, 64] + + pred_bin = pred_small > 0.5 + gt_bin = gt_small > 0.5 # [T, 64, 64] + + inter = (pred_bin & gt_bin.unsqueeze(0)).float().sum((-1, -2)) # [N, T] + union = (pred_bin | gt_bin.unsqueeze(0)).float().sum((-1, -2)) # [N, T] + iou_per_frame = inter / (union + 1e-6) # [N, T] + + visible = gt_bin.view(T, -1).any(-1) # [T] + if visible.any(): + iou = iou_per_frame[:, visible].mean(-1) # [N] + else: + return N # GT invisible → treat as null + + best = int(iou.argmax().item()) + # Threshold: if best IoU < 0.1, treat as null (GT tube not generated) + if iou[best].item() < 0.1: + return N + return best + + +class TubeTokenDataset(Dataset): + """Dataset for TubeToken-Minimal. + + Args: + split: data split (train / val / test_s / test_u) + data_dir: root data directory (contains metadata.csv, image_embed/, audio_embed/, gt_mask/) + proposal_dir: directory containing per-video .npz proposal files + audit_csv: path to Phase -1 audit CSV (for is_null_split, etc.) + oracle_csv: path to Phase 0 eval sample_metrics CSV (for pre-computed gt_idx) + frames: number of frames per video (default 10) + max_tubes: maximum number of proposal tubes to keep (default 128) + video_list: optional path to a file listing allowed video IDs + seed: random seed for reproducibility + """ + + def __init__( + self, + split: str, + data_dir: str, + proposal_dir: str, + audit_csv: Optional[str] = None, + oracle_csv: Optional[str] = None, + frames: int = 10, + max_tubes: int = 128, + video_list: Optional[str] = None, + seed: int = 42, + ): + self.data_dir = Path(data_dir) + self.proposal_dir = Path(proposal_dir) + self.frames = frames + self.max_tubes = max_tubes + + # Load metadata rows for this split + rows = self._load_metadata(split) + + # Optional video whitelist + if video_list is not None: + allowed = set(Path(video_list).read_text().splitlines()) + rows = [r for r in rows if r["vid"] in allowed] + + # Load audit flags (is_null_split, small_target, etc.) + self.audit: Dict[str, dict] = {} + if audit_csv is not None: + with open(audit_csv, newline="") as f: + for r in csv.DictReader(f): + self.audit[r["uid"]] = r + + # Load pre-computed oracle GT tube indices if available + self.oracle_idx: Dict[str, int] = {} + if oracle_csv is not None: + with open(oracle_csv, newline="") as f: + for r in csv.DictReader(f): + if "best_idx" in r and r["best_idx"] != "": + self.oracle_idx[r["uid"]] = int(r["best_idx"]) + + # Filter to samples that have a proposal file + self.samples = [] + for r in rows: + npz_path = self.proposal_dir / f"{r['vid']}.npz" + if npz_path.exists(): + self.samples.append(r) + + print( + f"[TubeTokenDataset] split={split}, " + f"total rows={len(rows)}, " + f"with proposals={len(self.samples)}" + ) + + def _load_metadata(self, split: str) -> List[dict]: + rows = [] + with (self.data_dir / "metadata.csv").open(newline="") as f: + for r in csv.DictReader(f): + if r["split"] == split: + rows.append(r) + return rows + + def __len__(self) -> int: + return len(self.samples) + + def __getitem__(self, idx: int) -> dict: + row = self.samples[idx] + vid = row["vid"] + uid = row["uid"] + fid = row["fid"] + exp = row["exp"] + + # ── Audit flags ─────────────────────────────────────────────────────── + audit_row = self.audit.get(uid, {}) + is_null = audit_row.get("is_null_split", "False") == "True" + + # ── Load proposals ──────────────────────────────────────────────────── + npz = np.load(self.proposal_dir / f"{vid}.npz") + masks_np = npz["masks"] # [N, T, H, W] uint8 + scores_np = npz["scores"] # [N] + + N_raw = masks_np.shape[0] + N = min(N_raw, self.max_tubes) + masks_np = masks_np[:N] + scores_np = scores_np[:N] + + masks = torch.as_tensor(masks_np, dtype=torch.float32) # [N, T, H, W] + scores = torch.as_tensor(scores_np, dtype=torch.float32) # [N] + + # ── Load SAM image encoder features ────────────────────────────────── + sam_feat = torch.load( + self.data_dir / "image_embed" / f"{vid}.pt", map_location="cpu" + ) # [T, 256, 64, 64] + + # ── Compute tube features via mask-pooling ──────────────────────────── + tube_feats = _mask_pool_sam_features(sam_feat, masks) # [N, 256] + + # ── Load audio features ─────────────────────────────────────────────── + audio_feat = torch.load( + self.data_dir / "audio_embed" / f"{vid}.pt", map_location="cpu" + ) # [T, 128] + audio_feat = audio_feat.mean(dim=0) # [128] + + # ── Load text features (pre-computed) ───────────────────────────────── + text_feat_path = self.data_dir / "text_embed" / f"{uid}.pt" + if text_feat_path.exists(): + text_feat = torch.load(text_feat_path, map_location="cpu") # [768] + else: + # Fallback: zero vector (run precompute_text_feats.py first) + text_feat = torch.zeros(768) + + # ── Load GT masks ───────────────────────────────────────────────────── + gt_tube = _load_gt_tube( + self.data_dir / "gt_mask", vid, fid, self.frames + ) # [T, H, W] + + # ── Determine GT tube index ─────────────────────────────────────────── + if is_null: + gt_idx = N # null tube index + elif uid in self.oracle_idx: + raw_gt = self.oracle_idx[uid] + gt_idx = min(raw_gt, N - 1) if raw_gt < N_raw else N + else: + gt_idx = _compute_gt_tube_idx(masks, gt_tube) + + return { + "vid": vid, + "uid": uid, + "tube_feats": tube_feats, # [N, 256] + "tube_scores": scores, # [N] SAM2 confidence + "audio_feat": audio_feat, # [128] + "text_feat": text_feat, # [768] + "gt_tube_idx": gt_idx, # int in [0, N] where N = null + "gt_tube": gt_tube, # [T, H, W] + "proposal_masks": masks, # [N, T, H, W] (for inference output) + "num_tubes": N, + "is_null": is_null, + } + + +def collate_tubetoken(batch: list) -> dict: + """Collate variable-N-tube samples into a padded batch.""" + max_N = max(s["num_tubes"] for s in batch) + B = len(batch) + C = batch[0]["tube_feats"].shape[-1] # 256 + + tube_feats_pad = torch.zeros(B, max_N, C) + tube_mask = torch.zeros(B, max_N, dtype=torch.bool) # True = valid tube + tube_scores_pad = torch.zeros(B, max_N) + gt_idxs = torch.zeros(B, dtype=torch.long) + audio_feats = torch.stack([s["audio_feat"] for s in batch]) # [B, 128] + text_feats = torch.stack([s["text_feat"] for s in batch]) # [B, 768] + + for i, s in enumerate(batch): + N = s["num_tubes"] + tube_feats_pad[i, :N] = s["tube_feats"] + tube_mask[i, :N] = True + tube_scores_pad[i, :N] = s["tube_scores"] + # Remap gt_idx to padded space (gt_idx==N means null → max_N) + raw = s["gt_tube_idx"] + gt_idxs[i] = raw if raw < N else max_N # max_N = null slot + + # GT masks and proposal masks kept as lists (variable spatial size) + gt_tubes = [s["gt_tube"] for s in batch] + proposal_masks = [s["proposal_masks"] for s in batch] + vids = [s["vid"] for s in batch] + uids = [s["uid"] for s in batch] + num_tubes = [s["num_tubes"] for s in batch] + + return { + "tube_feats": tube_feats_pad, # [B, max_N, 256] + "tube_mask": tube_mask, # [B, max_N] True=valid + "tube_scores": tube_scores_pad, # [B, max_N] + "audio_feat": audio_feats, # [B, 128] + "text_feat": text_feats, # [B, 768] + "gt_tube_idx": gt_idxs, # [B] int, max_N=null + "gt_tubes": gt_tubes, # list[B] of [T, H, W] + "proposal_masks": proposal_masks, # list[B] of [N, T, H, W] + "num_tubes": num_tubes, + "vids": vids, + "uids": uids, + } diff --git a/models/__pycache__/__init__.cpython-310.pyc b/models/__pycache__/__init__.cpython-310.pyc index 644168cb18c853f4b15931f7156b9cfc0b2a476c..470d07a10a08d72ab5a6a985c392dccb7c8c59a1 100644 Binary files a/models/__pycache__/__init__.cpython-310.pyc and b/models/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/__pycache__/__init__.cpython-312.pyc b/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..435dea760e758ed05aedfa3a06a94c05c19d1f9c Binary files /dev/null and b/models/__pycache__/__init__.cpython-312.pyc differ diff --git a/models/__pycache__/avs_model.cpython-310.pyc b/models/__pycache__/avs_model.cpython-310.pyc index d09533632435432604d1bea462d63eac069bae0c..ec1294d0e5cd1ae2ef2ee345b76eb457d16400cd 100644 Binary files a/models/__pycache__/avs_model.cpython-310.pyc and b/models/__pycache__/avs_model.cpython-310.pyc differ diff --git a/models/__pycache__/ec_simtoken_model.cpython-310.pyc b/models/__pycache__/ec_simtoken_model.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09a9c8fc74257be3e03ddf6f606aad4e277f6540 Binary files /dev/null and b/models/__pycache__/ec_simtoken_model.cpython-310.pyc differ diff --git a/models/__pycache__/ec_simtoken_model.cpython-312.pyc b/models/__pycache__/ec_simtoken_model.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9dd69c81daa9a6d03f373cf740e1a1999222a1d3 Binary files /dev/null and b/models/__pycache__/ec_simtoken_model.cpython-312.pyc differ diff --git a/models/__pycache__/tubetoken_minimal.cpython-310.pyc b/models/__pycache__/tubetoken_minimal.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e50f8f97b4c08e110c51584480a72053d24bd42 Binary files /dev/null and b/models/__pycache__/tubetoken_minimal.cpython-310.pyc differ diff --git a/models/ec_simtoken_model.py b/models/ec_simtoken_model.py new file mode 100644 index 0000000000000000000000000000000000000000..af5a915c09ad370bee719566ae705b84dd4b6e7b --- /dev/null +++ b/models/ec_simtoken_model.py @@ -0,0 +1,250 @@ +"""EC-SimToken: SimToken + Existence Head for null detection. + +Architecture additions over Simtoken_ForCausalLM: + - existence_head: Linear(out_dim, 1) → sigmoid → p(object exists) + - BCE existence loss on synthetic null samples (audio-swapped during training) + - Mask loss gated: null-augmented samples skip mask loss + +Null augmentation is done in the training script (audio swap), not here. +This module just accepts an optional `is_null` bool tensor per batch. +""" + +from __future__ import annotations + +from typing import List + +import random +import torch +import torch.nn as nn +import torch.nn.functional as F + +from models.avs_model import ( + Simtoken_ForCausalLM, + dice_loss, + sigmoid_ce_loss, + compute_alignment_loss, +) + + +class ECSimtoken_ForCausalLM(Simtoken_ForCausalLM): + """SimToken with an existence head for null-sample detection. + + Extra kwargs (consumed here, not passed to parent): + exist_loss_weight: float BCE existence loss weight (default 1.0) + """ + + def __init__(self, config, **kwargs): + self.exist_loss_weight = kwargs.pop("exist_loss_weight", 1.0) + super().__init__(config, **kwargs) + out_dim = config.out_dim + self.existence_head = nn.Linear(out_dim, 1) + + # ------------------------------------------------------------------ + # Forward + # ------------------------------------------------------------------ + + def model_forward( + self, + images: torch.FloatTensor, + images_clip: torch.FloatTensor, + audio_features: torch.FloatTensor, + image_features: torch.FloatTensor, + input_ids: torch.LongTensor, + labels: torch.LongTensor, + attention_masks: torch.LongTensor, + masks_list: List[torch.FloatTensor], + resize_list: List[tuple], + orgsize_list: List[tuple], + conversation_list: List[str], + ref_ids: List[torch.LongTensor], + refs_num: List[int], + vids, + fids, + epoch: int = 0, + inference: bool = False, + num_frames: int = 10, + contrast: float = 0.0, + is_null: torch.BoolTensor = None, # [B] True = synthetic null sample + **kwargs, + ): + batch_size = len(images) + image_embeddings = torch.cat(image_features, dim=0) # [BT, 256, 64, 64] + + audio_embeddings = self.audio_feature_layer( + torch.stack(audio_features, dim=0) + ) # [B, T, 4096] + + target_frame = 5 # fixed as in original + + ( + input_ids_mm, + attention_masks_mm, + past_key_values, + inputs_embeds, + labels_mm, + ) = super(Simtoken_ForCausalLM, self).prepare_inputs_labels_for_multimodal( + input_ids, + attention_masks, + past_key_values=None, + labels=labels, + images=images_clip, + audio_features=audio_embeddings, + target_frame=target_frame, + ref_ids=ref_ids, + ) + + output = super(Simtoken_ForCausalLM, self).forward( + input_ids=input_ids_mm, + attention_mask=attention_masks_mm, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + labels=labels_mm, + output_hidden_states=True, + ) + output_hidden_states = output.hidden_states + + seg_token_mask = output.labels[..., 1:] == self.seg_token_idx + seg_token_mask = torch.cat( + [ + seg_token_mask, + torch.zeros( + (seg_token_mask.shape[0], 1), + device=output.labels.device, + dtype=torch.bool, + ), + ], + dim=1, + ) # [B, seq_len] + + seg_embeddings = self.model.text_hidden_fcs[0]( + output_hidden_states[-1][seg_token_mask] + ) # [seg_num, 256] (seg_num == B when refs_num == [1]*B) + + # ── Existence head ──────────────────────────────────────────────── + exist_logit = self.existence_head(seg_embeddings) # [seg_num, 1] + + # ── Memory / contrastive (optional, gated by contrast weight) ──── + fis_flat = [fid[0] for fid in fids] + ct_loss = torch.tensor(0.0, device=seg_embeddings.device) + if not inference and contrast > 0.0: + pos_feats = self.memory.get_positive_features(vids, fis_flat) + neg_feats = self.memory.get_negative_features_same_vid(vids, fis_flat) + for i in range(len(neg_feats)): + for j in range(len(seg_embeddings)): + if j != i: + neg_feats[i].append(seg_embeddings[j].detach().cpu()) + ct_loss = compute_alignment_loss(seg_embeddings, pos_feats, neg_feats) + # Only add non-null samples to memory + valid_vids = [vids[i] for i in range(batch_size) if not (is_null is not None and is_null[i])] + valid_fids = [fis_flat[i] for i in range(batch_size) if not (is_null is not None and is_null[i])] + valid_embs = seg_embeddings[ + [i for i in range(batch_size) if not (is_null is not None and is_null[i])] + ] if valid_vids else seg_embeddings[:0] + if valid_vids: + self.memory.add_batch(valid_vids, valid_fids, valid_embs) + elif not inference: + self.memory.add_batch(vids, fis_flat, seg_embeddings) + + # ── Reorganise seg embeddings per batch item ────────────────────── + pred_embeddings = [] + pred_idx = 0 + for ref_num in refs_num: + pred_embeddings.append(seg_embeddings[pred_idx : pred_idx + ref_num]) + pred_idx += ref_num + + # ── SAM mask decoder ────────────────────────────────────────────── + pred_masks = [] + for i in range(batch_size): + sparse_embeddings, dense_embeddings = self.model.visual_model.prompt_encoder( + points=None, + boxes=None, + masks=None, + text_embeds=pred_embeddings[i].unsqueeze(1), + ) + sparse_embeddings = sparse_embeddings.to(pred_embeddings[i].dtype) + dense_embeddings = dense_embeddings.to(pred_embeddings[i].dtype) + + pred_masks_sample = [] + for prompt_idx in range(len(sparse_embeddings)): + low_res_masks, _ = self.model.visual_model.mask_decoder( + image_embeddings=image_embeddings[i * num_frames : (i + 1) * num_frames], + image_pe=self.model.visual_model.prompt_encoder.get_dense_pe(), + sparse_prompt_embeddings=sparse_embeddings[prompt_idx : prompt_idx + 1], + dense_prompt_embeddings=dense_embeddings[prompt_idx : prompt_idx + 1], + multimask_output=False, + ) + pred_mask = self.model.visual_model.postprocess_masks( + low_res_masks, + input_size=resize_list[i], + original_size=orgsize_list[i], + ) # [T, 1, H, W] + pred_masks_sample.append(pred_mask.squeeze(1)) + pred_masks.append(torch.stack(pred_masks_sample, dim=0)) # [num_seg, T, H, W] + + gt_masks = masks_list + + if inference: + return { + "pred_masks": pred_masks, + "gt_masks": gt_masks, + "exist_logit": exist_logit, # [seg_num, 1] + } + + # ── Losses ──────────────────────────────────────────────────────── + + ce_loss = output.loss * self.ce_loss_weight + + # Mask loss — skip null-augmented samples + mask_bce_loss = 0.0 + mask_dice_loss = 0.0 + num_masks = 0 + for batch_idx in range(batch_size): + if is_null is not None and is_null[batch_idx]: + continue # null sample: no mask loss + gt_mask = gt_masks[batch_idx] + pred_mask = pred_masks[batch_idx] + a, b, c, d = gt_mask.shape + gt_flat = gt_mask.view(a * b, c, d) + pred_flat = pred_mask.view(a * b, c, d) + mask_bce_loss += ( + sigmoid_ce_loss(pred_flat, gt_flat, num_masks=gt_flat.shape[0]) + * gt_flat.shape[0] + ) + mask_dice_loss += ( + dice_loss(pred_flat, gt_flat, num_masks=gt_flat.shape[0]) + * gt_flat.shape[0] + ) + num_masks += gt_flat.shape[0] + + mask_bce_loss = self.bce_loss_weight * mask_bce_loss / (num_masks + 1e-8) + mask_dice_loss = self.dice_loss_weight * mask_dice_loss / (num_masks + 1e-8) + mask_loss = mask_bce_loss + mask_dice_loss + + # Existence loss (BCE) + if is_null is not None: + exist_target = (~is_null).float().to(exist_logit.device) + exist_loss = F.binary_cross_entropy_with_logits( + exist_logit.squeeze(-1), exist_target + ) + else: + exist_loss = torch.tensor(0.0, device=exist_logit.device) + + loss = ( + ce_loss + + mask_loss + + self.exist_loss_weight * exist_loss + + contrast * ct_loss + ) + + return { + "loss": loss, + "ce_loss": ce_loss, + "mask_bce_loss": mask_bce_loss if isinstance(mask_bce_loss, torch.Tensor) else torch.tensor(mask_bce_loss), + "mask_dice_loss": mask_dice_loss if isinstance(mask_dice_loss, torch.Tensor) else torch.tensor(mask_dice_loss), + "mask_loss": mask_loss if isinstance(mask_loss, torch.Tensor) else torch.tensor(mask_loss), + "exist_loss": exist_loss, + "ct_loss": ct_loss, + "pred_masks": pred_masks, + "gt_masks": gt_masks, + "exist_logit": exist_logit, + } diff --git a/models/llava/__pycache__/__init__.cpython-310.pyc b/models/llava/__pycache__/__init__.cpython-310.pyc index e9b69af7a302b287eba49447367316197f86b7f7..9ccc01b970af0a2b73d7eca84d17590ac3be44f3 100644 Binary files a/models/llava/__pycache__/__init__.cpython-310.pyc and b/models/llava/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/llava/__pycache__/conversation.cpython-310.pyc b/models/llava/__pycache__/conversation.cpython-310.pyc index 62e63ebb726d9873c520e7bce2ebc36fca1a7a18..59ee271bcb0b821f6c3746dc498ce63e84e6f3a4 100644 Binary files a/models/llava/__pycache__/conversation.cpython-310.pyc and b/models/llava/__pycache__/conversation.cpython-310.pyc differ diff --git a/models/llava/model/__pycache__/__init__.cpython-310.pyc b/models/llava/model/__pycache__/__init__.cpython-310.pyc index 8b702f5af7e783d48ee1e355b034cd6418e47594..1bb5cbce8a3f5b81bd352b98887aa6cfea273ac1 100644 Binary files a/models/llava/model/__pycache__/__init__.cpython-310.pyc and b/models/llava/model/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/llava/model/__pycache__/llava_arch.cpython-310.pyc b/models/llava/model/__pycache__/llava_arch.cpython-310.pyc index 652c3dd4381f575ee5e1ecfa1415f7ebe04476d8..ffa4a2c5dd1895c0b2b8299367a0be6aee581648 100644 Binary files a/models/llava/model/__pycache__/llava_arch.cpython-310.pyc and b/models/llava/model/__pycache__/llava_arch.cpython-310.pyc differ diff --git a/models/llava/model/language_model/__pycache__/llava_llama.cpython-310.pyc b/models/llava/model/language_model/__pycache__/llava_llama.cpython-310.pyc index 8008acac4e6a5d49ae423e0a01761786d81ac37b..a72e10c8de1943c9d017898a5dd8d0fe640f6ecf 100644 Binary files a/models/llava/model/language_model/__pycache__/llava_llama.cpython-310.pyc and b/models/llava/model/language_model/__pycache__/llava_llama.cpython-310.pyc differ diff --git a/models/llava/model/language_model/__pycache__/llava_mpt.cpython-310.pyc b/models/llava/model/language_model/__pycache__/llava_mpt.cpython-310.pyc index c5193eb3f055ceffb2a78bf95604d379e7d57d63..bee90f7124e8d2b02a7f84350d0e77e09c3ba67d 100644 Binary files a/models/llava/model/language_model/__pycache__/llava_mpt.cpython-310.pyc and b/models/llava/model/language_model/__pycache__/llava_mpt.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/adapt_tokenizer.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/adapt_tokenizer.cpython-310.pyc index b00974484ac69fcca2bde3d7eba856f4415bd276..7ed9f70ffe5d3462ebafc6f7870a89cd6534cdc3 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/adapt_tokenizer.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/adapt_tokenizer.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/attention.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/attention.cpython-310.pyc index fe109ce7d8d58cd34093daafcfae88eea5ac6b41..6f99a03221976606d54eee6590aa07b4949e5a5f 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/attention.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/attention.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/blocks.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/blocks.cpython-310.pyc index 9c4faf3c8fc922ad5878b887e1ff2193ff621477..96042d54db2287b76204841467c3f5c3183e7cae 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/blocks.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/blocks.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/configuration_mpt.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/configuration_mpt.cpython-310.pyc index f0d0c8fd2adb9fbb23033e1f29f9a41bfe8daa86..449c3428d3b925e8caa2586b371278b0aa18ace5 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/configuration_mpt.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/configuration_mpt.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/custom_embedding.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/custom_embedding.cpython-310.pyc index 71a8d1d2d2341666ff8f7de1bb8ad75e6b529d1f..24f3f5a966fc1e90b92eb5c25ffba5ce229b259b 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/custom_embedding.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/custom_embedding.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/flash_attn_triton.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/flash_attn_triton.cpython-310.pyc index 1dd119d19844964e79507960658c17a90c75ebcd..9db4899520a5d0bcf80271a384c38c86aa28809b 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/flash_attn_triton.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/flash_attn_triton.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/hf_prefixlm_converter.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/hf_prefixlm_converter.cpython-310.pyc index 8c027328b406443568d1bbc091ae157586a2427f..d02054cdc5963cf8542c6ad1c854080c0170236d 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/hf_prefixlm_converter.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/hf_prefixlm_converter.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/meta_init_context.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/meta_init_context.cpython-310.pyc index e5a6a37968a4ca2ef8c85963defd1285a6a520b8..4d7829907777b1e6db04de4b007130737066f430 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/meta_init_context.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/meta_init_context.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/modeling_mpt.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/modeling_mpt.cpython-310.pyc index c99a343b10f926a1860e20ea686294c1b872a0be..e695427aff678c67725874614d70b97548da9367 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/modeling_mpt.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/modeling_mpt.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/norm.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/norm.cpython-310.pyc index 1a6c5cb576080b71ad9982d8a6757f817f00d415..b0bd7dcc1eebfa05276b022d849622448ed89536 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/norm.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/norm.cpython-310.pyc differ diff --git a/models/llava/model/language_model/mpt/__pycache__/param_init_fns.cpython-310.pyc b/models/llava/model/language_model/mpt/__pycache__/param_init_fns.cpython-310.pyc index d2189dccf528ee1521a2285dc250420c355657ea..e9965df395a4de5a6e67c7905b23ad17b6a89b55 100644 Binary files a/models/llava/model/language_model/mpt/__pycache__/param_init_fns.cpython-310.pyc and b/models/llava/model/language_model/mpt/__pycache__/param_init_fns.cpython-310.pyc differ diff --git a/models/llava/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc b/models/llava/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc index ce1e7ecdec17206c34c9d50bbd10d35e89286753..80889cf7fafcfe43344898482ece557a89bc35c4 100644 Binary files a/models/llava/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc and b/models/llava/model/multimodal_encoder/__pycache__/builder.cpython-310.pyc differ diff --git a/models/llava/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc b/models/llava/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc index 46d139f250c5bb0deedb168bf25d0929d2556134..69f538b93db1174ea3d1204a9306b607c631e699 100644 Binary files a/models/llava/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc and b/models/llava/model/multimodal_encoder/__pycache__/clip_encoder.cpython-310.pyc differ diff --git a/models/segment_anything/__pycache__/__init__.cpython-310.pyc b/models/segment_anything/__pycache__/__init__.cpython-310.pyc index 16c47c34a050759f1ba2383ecd2d2a631580e705..dfddd12ba42bdcb934d0f17405fde84c6f3c8aa5 100644 Binary files a/models/segment_anything/__pycache__/__init__.cpython-310.pyc and b/models/segment_anything/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/segment_anything/__pycache__/automatic_mask_generator.cpython-310.pyc b/models/segment_anything/__pycache__/automatic_mask_generator.cpython-310.pyc index b62f83c5e32b062b9c66ee8cb3fb06099e6ac0b8..1ab0c7f2981f753ecfb591b85922052527fcb77c 100644 Binary files a/models/segment_anything/__pycache__/automatic_mask_generator.cpython-310.pyc and b/models/segment_anything/__pycache__/automatic_mask_generator.cpython-310.pyc differ diff --git a/models/segment_anything/__pycache__/build_sam.cpython-310.pyc b/models/segment_anything/__pycache__/build_sam.cpython-310.pyc index c4b3b3d4709e62f0183438894dc2de1ef8f5f5f0..63450a630f45e87782cba0f75bab979cf6f0b762 100644 Binary files a/models/segment_anything/__pycache__/build_sam.cpython-310.pyc and b/models/segment_anything/__pycache__/build_sam.cpython-310.pyc differ diff --git a/models/segment_anything/__pycache__/predictor.cpython-310.pyc b/models/segment_anything/__pycache__/predictor.cpython-310.pyc index 301edd62e09c010eccbb660cfe41c07d92320f7d..ff49c4d6f50b0370dd2e2016f64f1577eb3ac5e4 100644 Binary files a/models/segment_anything/__pycache__/predictor.cpython-310.pyc and b/models/segment_anything/__pycache__/predictor.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/__init__.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/__init__.cpython-310.pyc index 1f8cefe302ad5dda9e2c502bcb8937280aef33df..513684f3bc7921ff9e7030e8b7366a758b00860f 100644 Binary files a/models/segment_anything/modeling/__pycache__/__init__.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/common.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/common.cpython-310.pyc index 63978468874a8734913e26867320b4d89ac3cfc0..db0e012a274d56fa0b6ab6845c0a9c9b1b31875d 100644 Binary files a/models/segment_anything/modeling/__pycache__/common.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/common.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/image_encoder.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/image_encoder.cpython-310.pyc index 6cf0250ae98ed5daa37cf5015376e6da2be8c178..36bb723b635cc12eaf736f9fe92add8eb9ee1212 100644 Binary files a/models/segment_anything/modeling/__pycache__/image_encoder.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/image_encoder.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/mask_decoder.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/mask_decoder.cpython-310.pyc index 3e40f5f76baadd0e97c0ab9884de8338484b4467..fa25c943bcdfd4f2a82230a1524ac9319aad6674 100644 Binary files a/models/segment_anything/modeling/__pycache__/mask_decoder.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/mask_decoder.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/prompt_encoder.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/prompt_encoder.cpython-310.pyc index abfa89a80c0cba01952157ce4ce7d363729a6e5c..c3f7048f36b19613d146e62a840999d93b18bdeb 100644 Binary files a/models/segment_anything/modeling/__pycache__/prompt_encoder.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/prompt_encoder.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/sam.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/sam.cpython-310.pyc index b91709bc65440c4a70318eecf10ec93cead1e2e7..b80238e33e2877601b451addc42d013aab5d3b48 100644 Binary files a/models/segment_anything/modeling/__pycache__/sam.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/sam.cpython-310.pyc differ diff --git a/models/segment_anything/modeling/__pycache__/transformer.cpython-310.pyc b/models/segment_anything/modeling/__pycache__/transformer.cpython-310.pyc index 8115a4438ca63521822d2014ae27dcd5668710b1..1c225a1c8022cfd53084566c23ffc7f8e2a2c7ae 100644 Binary files a/models/segment_anything/modeling/__pycache__/transformer.cpython-310.pyc and b/models/segment_anything/modeling/__pycache__/transformer.cpython-310.pyc differ diff --git a/models/segment_anything/utils/__pycache__/__init__.cpython-310.pyc b/models/segment_anything/utils/__pycache__/__init__.cpython-310.pyc index cca3b27fad0123bb73f3eee9a2a23bf58a8207ac..17e373812da72ca496052697abf68c46a26b3fa1 100644 Binary files a/models/segment_anything/utils/__pycache__/__init__.cpython-310.pyc and b/models/segment_anything/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/models/segment_anything/utils/__pycache__/amg.cpython-310.pyc b/models/segment_anything/utils/__pycache__/amg.cpython-310.pyc index 2e5e3b666f44abc82916fbda258ab2b9768ab161..2a031ca428c8882a95e3293ba6860b161b7ab542 100644 Binary files a/models/segment_anything/utils/__pycache__/amg.cpython-310.pyc and b/models/segment_anything/utils/__pycache__/amg.cpython-310.pyc differ diff --git a/models/segment_anything/utils/__pycache__/transforms.cpython-310.pyc b/models/segment_anything/utils/__pycache__/transforms.cpython-310.pyc index c0770dbb8747a96de04b8707eb110360412bde38..6ad6f1bd9f5a48e0aabfdb070249181594ce540a 100644 Binary files a/models/segment_anything/utils/__pycache__/transforms.cpython-310.pyc and b/models/segment_anything/utils/__pycache__/transforms.cpython-310.pyc differ diff --git a/models/tf/__pycache__/modeling_outputs.cpython-310.pyc b/models/tf/__pycache__/modeling_outputs.cpython-310.pyc index 26176021882cdcc7fc6e36ef03a29e87c5d6f8c6..1b7101e06ae0bbb382a39be112cd7789fa74c3fd 100644 Binary files a/models/tf/__pycache__/modeling_outputs.cpython-310.pyc and b/models/tf/__pycache__/modeling_outputs.cpython-310.pyc differ diff --git a/models/tubetoken_minimal.py b/models/tubetoken_minimal.py new file mode 100644 index 0000000000000000000000000000000000000000..c60a9271291767f21c47747ced08d214226ae6f8 --- /dev/null +++ b/models/tubetoken_minimal.py @@ -0,0 +1,157 @@ +"""TubeToken-Minimal: tube selector without CondQFormer or SAM refinement. + +Architecture: + - Text projector: 768 → D + - Audio projector: 128 → D + - q_ref MLP: 2D → D + - Tube projector: 256 → D + - Null tube: learnable [D] + - Scoring: dot product (independent tube scoring variant) + - Output: logits over N+1 candidates (N tubes + 1 null) + +This is the 'independent tube scoring' ablation variant described in the +experiment plan – the fastest path to a working training loop. +""" + +from __future__ import annotations + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class TubeSelectorMinimal(nn.Module): + """Independent tube selector with null tube. + + Args: + tube_dim: dimension of mask-pooled tube features (256 for SAM encoder) + text_dim: CLIP text embedding dimension (768) + audio_dim: audio embedding dimension (128) + hidden_dim: internal projection dimension (default 256) + dropout: dropout rate on projections + """ + + def __init__( + self, + tube_dim: int = 256, + text_dim: int = 768, + audio_dim: int = 128, + hidden_dim: int = 256, + dropout: float = 0.1, + ): + super().__init__() + self.hidden_dim = hidden_dim + + # Reference query construction + self.text_proj = nn.Linear(text_dim, hidden_dim) + self.audio_proj = nn.Linear(audio_dim, hidden_dim) + self.q_ref_mlp = nn.Sequential( + nn.Linear(hidden_dim * 2, hidden_dim * 2), + nn.ReLU(inplace=True), + nn.Dropout(dropout), + nn.Linear(hidden_dim * 2, hidden_dim), + ) + + # Tube feature projection + self.tube_proj = nn.Sequential( + nn.Linear(tube_dim, hidden_dim), + nn.ReLU(inplace=True), + nn.Dropout(dropout), + nn.Linear(hidden_dim, hidden_dim), + ) + + # Learnable null tube embedding + self.null_tube = nn.Parameter(torch.zeros(hidden_dim)) + nn.init.normal_(self.null_tube, std=0.02) + + # Scoring: q_ref · tube_k / sqrt(D) + self.scale = hidden_dim ** 0.5 + + def build_q_ref(self, text_feat: torch.Tensor, audio_feat: torch.Tensor) -> torch.Tensor: + """Encode text + audio into reference query. [B, D]""" + t = F.relu(self.text_proj(text_feat)) # [B, D] + a = F.relu(self.audio_proj(audio_feat)) # [B, D] + return self.q_ref_mlp(torch.cat([t, a], dim=-1)) # [B, D] + + def forward( + self, + tube_feats: torch.Tensor, # [B, N, tube_dim] + text_feat: torch.Tensor, # [B, text_dim] + audio_feat: torch.Tensor, # [B, audio_dim] + tube_mask: torch.Tensor, # [B, N] bool, True = valid tube + ) -> dict: + """ + Returns: + logits: [B, N+1] (last slot = null tube) + q_ref: [B, D] + """ + B, N, _ = tube_feats.shape + + q_ref = self.build_q_ref(text_feat, audio_feat) # [B, D] + + # Project tube features + tube_proj = self.tube_proj(tube_feats) # [B, N, D] + + # Null tube projected to same space + null_proj = self.null_tube.unsqueeze(0).expand(B, -1) # [B, D] + + # Concatenate: [B, N+1, D] + all_feats = torch.cat( + [tube_proj, null_proj.unsqueeze(1)], dim=1 + ) # [B, N+1, D] + + # Scores: dot product with q_ref + scores = (all_feats * q_ref.unsqueeze(1)).sum(-1) / self.scale # [B, N+1] + + # Mask out invalid (padding) tube slots, but keep null slot valid + pad_mask = torch.cat( + [~tube_mask, torch.zeros(B, 1, dtype=torch.bool, device=tube_mask.device)], + dim=1, + ) # [B, N+1], True = pad (should be -inf) + scores = scores.masked_fill(pad_mask, float("-inf")) + + return { + "logits": scores, # [B, N+1] + "q_ref": q_ref, # [B, D] + } + + +def compute_selection_loss( + logits: torch.Tensor, # [B, N+1] + gt_tube_idx: torch.Tensor, # [B] int, N+1-1 = null for null samples + num_tubes: list, # list[B] of actual tube counts +) -> torch.Tensor: + """Cross-entropy loss over tube selection (N+1 classes).""" + B = logits.shape[0] + # Remap gt indices: oracle gt may be N (null slot = last in logits) + # logits shape is [B, max_N+1]; gt_tube_idx is already in [0, max_N] + loss = F.cross_entropy(logits, gt_tube_idx, ignore_index=IGNORE_GT_IDX) + return loss + + +IGNORE_GT_IDX = -1 + + +def select_tube_masks( + logits: torch.Tensor, # [B, N+1] + proposal_masks: list, # list[B] of [N, T, H, W] + num_tubes: list, # list[B] of int +) -> list: + """Pick the highest-scoring proposal mask for each batch element. + + Returns list[B] of [T, H, W] predicted masks (zeros for null selection). + """ + pred_masks = [] + probs = logits.softmax(-1) + for i in range(len(proposal_masks)): + N = num_tubes[i] + # Effective logits: only consider valid tubes + null + best = int(probs[i, :N + 1].argmax().item()) + if best >= N: + # Null selected: output empty mask + T = proposal_masks[i].shape[1] + H, W = proposal_masks[i].shape[2], proposal_masks[i].shape[3] + pred_masks.append(torch.zeros(T, H, W)) + else: + pred_masks.append(proposal_masks[i][best].float()) + return pred_masks diff --git a/runs/tubetoken_phase0/eval_stride8_n128_full.log b/runs/tubetoken_phase0/eval_stride8_n128_full.log new file mode 100644 index 0000000000000000000000000000000000000000..784c69d1414697ef7a04e5738e28c9cc1c5a49fd --- /dev/null +++ b/runs/tubetoken_phase0/eval_stride8_n128_full.log @@ -0,0 +1,13 @@ + Evaluating proposal objects: 0%| | 0/831 [00:00 dict: + for k, v in d.items(): + if isinstance(v, torch.Tensor): + d[k] = v.cuda(non_blocking=True) + elif isinstance(v, list) and v and isinstance(v[0], torch.Tensor): + d[k] = [x.cuda(non_blocking=True) for x in v] + return d + + +# ── Null augmentation ───────────────────────────────────────────────────────── + +def apply_null_augmentation( + audio_feats: list, p_null: float = 0.25 +) -> tuple[list, torch.BoolTensor]: + """Randomly replace some audio features with mismatched ones. + + Returns the (possibly mutated) audio_feats list and a bool tensor + `is_null` where True means the sample's audio was swapped. + """ + B = len(audio_feats) + is_null = torch.zeros(B, dtype=torch.bool) + if B < 2 or p_null <= 0.0: + return audio_feats, is_null + + for i in range(B): + if random.random() < p_null: + candidates = [j for j in range(B) if j != i] + j = random.choice(candidates) + audio_feats[i] = audio_feats[j].clone() + is_null[i] = True + + return audio_feats, is_null + + +# ── Collate (identical to train.py) ────────────────────────────────────────── + +def tokenizer_image_audio_token( + prompt, tokenizer, + image_token_index=IMAGE_TOKEN_INDEX, + audio_token_index=AUDIO_TOKEN_INDEX, + num_frames=10, + return_tensors=None, +): + prompt_chunks = re.split(r'(|