From 2769928f0e0751bb13e59d20d3bf1c018cfa011f Mon Sep 17 00:00:00 2001 From: lion Date: Thu, 16 May 2024 17:28:45 +0800 Subject: [PATCH 1/8] Update base_tracker.py error return value, change final_mask to probs --- tracker/base_tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracker/base_tracker.py b/tracker/base_tracker.py index 8c4ee02..1bd1d8c 100644 --- a/tracker/base_tracker.py +++ b/tracker/base_tracker.py @@ -103,7 +103,7 @@ def track(self, frame, first_frame_annotation=None): # print(f'max memory allocated: {torch.cuda.max_memory_allocated()/(2**20)} MB') - return final_mask, final_mask, painted_image + return final_mask, probs, painted_image @torch.no_grad() def sam_refinement(self, frame, logits, ti): From e051ba7aa03b095e5a10721a3b55886398585a73 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Tue, 21 May 2024 15:23:00 +0800 Subject: [PATCH 2/8] add support to apple M2 version --- app.py | 20 ++++++++-------- tools/base_segmenter.py | 4 ++-- track_anything.py | 8 +++---- tracker/__init__.py | 0 tracker/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 157 bytes .../__pycache__/base_tracker.cpython-311.pyc | Bin 0 -> 10143 bytes tracker/base_tracker.py | 22 ++++++++++++++---- .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 167 bytes .../inference_core.cpython-311.pyc | Bin 0 -> 6114 bytes .../kv_memory_store.cpython-311.pyc | Bin 0 -> 11902 bytes .../memory_manager.cpython-311.pyc | Bin 0 -> 14439 bytes tracker/inference/inference_core.py | 7 +++--- tracker/inference/memory_manager.py | 4 ++-- .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 163 bytes .../__pycache__/aggregate.cpython-311.pyc | Bin 0 -> 916 bytes .../model/__pycache__/cbam.cpython-311.pyc | Bin 0 -> 7002 bytes .../__pycache__/group_modules.cpython-311.pyc | Bin 0 -> 5345 bytes .../__pycache__/memory_util.cpython-311.pyc | Bin 0 -> 3606 bytes .../model/__pycache__/modules.cpython-311.pyc | Bin 0 -> 15775 bytes .../model/__pycache__/network.cpython-311.pyc | Bin 0 -> 10651 bytes .../model/__pycache__/resnet.cpython-311.pyc | Bin 0 -> 9812 bytes tracker/model/modules.py | 8 ++++--- tracker/model/network.py | 7 +++--- .../util/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 162 bytes .../__pycache__/mask_mapper.cpython-311.pyc | Bin 0 -> 4552 bytes .../range_transform.cpython-311.pyc | Bin 0 -> 615 bytes .../__pycache__/tensor_util.cpython-311.pyc | Bin 0 -> 2966 bytes 27 files changed, 48 insertions(+), 32 deletions(-) create mode 100644 tracker/__init__.py create mode 100644 tracker/__pycache__/__init__.cpython-311.pyc create mode 100644 tracker/__pycache__/base_tracker.cpython-311.pyc create mode 100644 tracker/inference/__pycache__/__init__.cpython-311.pyc create mode 100644 tracker/inference/__pycache__/inference_core.cpython-311.pyc create mode 100644 tracker/inference/__pycache__/kv_memory_store.cpython-311.pyc create mode 100644 tracker/inference/__pycache__/memory_manager.cpython-311.pyc create mode 100644 tracker/model/__pycache__/__init__.cpython-311.pyc create mode 100644 tracker/model/__pycache__/aggregate.cpython-311.pyc create mode 100644 tracker/model/__pycache__/cbam.cpython-311.pyc create mode 100644 tracker/model/__pycache__/group_modules.cpython-311.pyc create mode 100644 tracker/model/__pycache__/memory_util.cpython-311.pyc create mode 100644 tracker/model/__pycache__/modules.cpython-311.pyc create mode 100644 tracker/model/__pycache__/network.cpython-311.pyc create mode 100644 tracker/model/__pycache__/resnet.cpython-311.pyc create mode 100644 tracker/util/__pycache__/__init__.cpython-311.pyc create mode 100644 tracker/util/__pycache__/mask_mapper.cpython-311.pyc create mode 100644 tracker/util/__pycache__/range_transform.cpython-311.pyc create mode 100644 tracker/util/__pycache__/tensor_util.cpython-311.pyc diff --git a/app.py b/app.py index 870fae0..d321515 100644 --- a/app.py +++ b/app.py @@ -378,7 +378,7 @@ def generate_video_from_frames(frames, output_path, fps=30): xmem_checkpoint = download_checkpoint(xmem_checkpoint_url, folder, xmem_checkpoint) e2fgvi_checkpoint = download_checkpoint_from_google_drive(e2fgvi_checkpoint_id, folder, e2fgvi_checkpoint) args.port = 12212 -args.device = "cuda:3" +args.device = "mps" # args.mask_save = True # initialize sam, xmem, e2fgvi models @@ -428,8 +428,8 @@ def generate_video_from_frames(frames, output_path, fps=30): # for user video input with gr.Column(): - with gr.Row(scale=0.4): - video_input = gr.Video(autosize=True) + with gr.Row():#scale=0.4 + video_input = gr.Video()#autosize=True with gr.Column(): video_info = gr.Textbox(label="Video Info") resize_info = gr.Textbox(value="If you want to use the inpaint function, it is best to git clone the repo and use a machine with more VRAM locally. \ @@ -454,16 +454,17 @@ def generate_video_from_frames(frames, output_path, fps=30): interactive=True, visible=False) remove_mask_button = gr.Button(value="Remove mask", interactive=True, visible=False) - clear_button_click = gr.Button(value="Clear clicks", interactive=True, visible=False).style(height=160) + #clear_button_click = gr.Button(value="Clear clicks", interactive=True, visible=False).style(height=160) + clear_button_click = gr.Button(value="Clear clicks", interactive=True, visible=False) Add_mask_button = gr.Button(value="Add mask", interactive=True, visible=False) - template_frame = gr.Image(type="pil",interactive=True, elem_id="template_frame", visible=False).style(height=360) + template_frame = gr.Image(type="pil",interactive=True, elem_id="template_frame", visible=False) image_selection_slider = gr.Slider(minimum=1, maximum=100, step=1, value=1, label="Track start frame", visible=False) track_pause_number_slider = gr.Slider(minimum=1, maximum=100, step=1, value=1, label="Track end frame", visible=False) with gr.Column(): run_status = gr.HighlightedText(value=[("Text","Error"),("to be","Label 2"),("highlighted","Label 3")], visible=False) mask_dropdown = gr.Dropdown(multiselect=True, value=[], label="Mask selection", info=".", visible=False) - video_output = gr.Video(autosize=True, visible=False).style(height=360) + video_output = gr.Video(autoplay=True, visible=False) with gr.Row(): tracking_video_predict_button = gr.Button(value="Tracking", visible=False) inpaint_video_predict_button = gr.Button(value="Inpainting", visible=False) @@ -583,7 +584,7 @@ def generate_video_from_frames(frames, output_path, fps=30): clear_button_click.click( fn = clear_click, inputs = [video_state, click_state,], - outputs = [template_frame,click_state, run_status], + outputs = [template_frame,click_state, run_status] ) # set example gr.Markdown("## Examples") @@ -597,6 +598,5 @@ def generate_video_from_frames(frames, output_path, fps=30): outputs=[video_input], # cache_examples=True, ) -iface.queue(concurrency_count=1) -iface.launch(debug=True, enable_queue=True, server_port=args.port, server_name="0.0.0.0") -# iface.launch(debug=True, enable_queue=True) \ No newline at end of file + +iface.launch(debug=True, server_port=args.port, server_name="0.0.0.0",max_threads=1,share=True) diff --git a/tools/base_segmenter.py b/tools/base_segmenter.py index 2b975bb..7ac4615 100644 --- a/tools/base_segmenter.py +++ b/tools/base_segmenter.py @@ -11,7 +11,7 @@ class BaseSegmenter: - def __init__(self, SAM_checkpoint, model_type, device='cuda:0'): + def __init__(self, SAM_checkpoint, model_type, device='mps'): """ device: model device SAM_checkpoint: path of SAM checkpoint @@ -85,7 +85,7 @@ def predict(self, prompts, mode, multimask=True): # initialise BaseSegmenter SAM_checkpoint= '/ssd1/gaomingqi/checkpoints/sam_vit_h_4b8939.pth' model_type = 'vit_h' - device = "cuda:4" + device = "mps" base_segmenter = BaseSegmenter(SAM_checkpoint=SAM_checkpoint, model_type=model_type, device=device) # image embedding (once embedded, multiple prompts can be applied) diff --git a/track_anything.py b/track_anything.py index 5275252..81bb251 100644 --- a/track_anything.py +++ b/track_anything.py @@ -61,7 +61,7 @@ def generator(self, images: list, template_mask:np.ndarray): def parse_augment(): parser = argparse.ArgumentParser() - parser.add_argument('--device', type=str, default="cuda:0") + parser.add_argument('--device', type=str, default="mps") parser.add_argument('--sam_model_type', type=str, default="vit_h") parser.add_argument('--port', type=int, default=6080, help="only useful when running gradio applications") parser.add_argument('--debug', action="store_true") @@ -78,7 +78,7 @@ def parse_augment(): logits = None painted_images = None images = [] - image = np.array(PIL.Image.open('/hhd3/gaoshang/truck.jpg')) + image = np.array(PIL.Image.open('./img/dogs.jpg')) args = parse_augment() # images.append(np.ones((20,20,3)).astype('uint8')) # images.append(np.ones((20,20,3)).astype('uint8')) @@ -87,10 +87,10 @@ def parse_augment(): mask = np.zeros_like(image)[:,:,0] mask[0,0]= 1 - trackany = TrackingAnything('/ssd1/gaomingqi/checkpoints/sam_vit_h_4b8939.pth','/ssd1/gaomingqi/checkpoints/XMem-s012.pth', args) + trackany = TrackingAnything('./checkpoints/sam_vit_h_4b8939.pth','./checkpoints/XMem-s012.pth', './checkpoints/E2FGVI-HQ-CVPR22.pth', args) masks, logits ,painted_images= trackany.generator(images, mask) - \ No newline at end of file + diff --git a/tracker/__init__.py b/tracker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tracker/__pycache__/__init__.cpython-311.pyc b/tracker/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e357cf71d27ea816bbe2efa5f47ba39327f3741 GIT binary patch literal 157 zcmZ3^%ge<81P*#WX(0MBh=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09t%RoQ0IJKx) zKP59QF)v*|q$n{tTh}qKvLquD$SnbJQ;YQD<1_OzOXB183Mzkb*yQG?l;)(`6|n*h X09jGY4!&kZ9J literal 0 HcmV?d00001 diff --git a/tracker/__pycache__/base_tracker.cpython-311.pyc b/tracker/__pycache__/base_tracker.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81739c409ce0ccecd1d4abc9075b6b71a437281f GIT binary patch literal 10143 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 A9{>OV literal 0 HcmV?d00001 diff --git a/tracker/base_tracker.py b/tracker/base_tracker.py index 8c4ee02..e8f0e92 100644 --- a/tracker/base_tracker.py +++ b/tracker/base_tracker.py @@ -7,8 +7,9 @@ import torch import yaml import torch.nn.functional as F +from tracker.inference.inference_core import InferenceCore from tracker.model.network import XMem -from inference.inference_core import InferenceCore + from tracker.util.mask_mapper import MaskMapper from torchvision import transforms from tracker.util.range_transform import im_normalization @@ -25,6 +26,11 @@ def __init__(self, xmem_checkpoint, device, sam_model=None, model_type=None) -> device: model device xmem_checkpoint: checkpoint of XMem model """ + if device is None: + if torch.backends.mps.is_available(): + device = torch.device("mps") + else: + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # load configurations with open("tracker/config/config.yaml", 'r') as stream: config = yaml.safe_load(stream) @@ -126,8 +132,11 @@ def sam_refinement(self, frame, logits, ti): def clear_memory(self): self.tracker.clear_memory() self.mapper.clear_labels() - torch.cuda.empty_cache() - + if self.device == "cuda": + torch.cuda.empty_cache() + if self.device == "mps": + torch.mps.empty_cache() + ## how to use: ## 1/3) prepare device and xmem_checkpoint @@ -155,7 +164,7 @@ def clear_memory(self): # how to use # ------------------------------------------------------------------------------------ # 1/4: set checkpoint and device - device = 'cuda:2' + device = 'mps' XMEM_checkpoint = '/ssd1/gaomingqi/checkpoints/XMem-s012.pth' # SAM_checkpoint= '/ssd1/gaomingqi/checkpoints/sam_vit_h_4b8939.pth' # model_type = 'vit_h' @@ -179,7 +188,10 @@ def clear_memory(self): # ---------------------------------------------- # end # ---------------------------------------------- - print(f'max memory allocated: {torch.cuda.max_memory_allocated()/(2**20)} MB') + if device == "cuda": + print(f'max memory allocated: {torch.cuda.max_memory_allocated()/(2**20)} MB') + if device == "mps": + print(f'max memory allocated: {torch.mps.driver_allocated_memory()/(2**20)} MB') # set saving path save_path = '/ssd1/gaomingqi/results/TAM/blackswan' if not os.path.exists(save_path): diff --git a/tracker/inference/__pycache__/__init__.cpython-311.pyc b/tracker/inference/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34ecfdfd517ffd104db4eaaf998acbd178f10de4 GIT binary patch literal 167 zcmZ3^%ge<81m)Wu(?IlN5CH>>P{wCAAY(d13PUi1CZpdc_`t=4F<|$LkeT{^GF7 h%}*)KNwq6t1sVmite782d|+l|WcrN}&x9Cd)@EYh>r@eKaO;JHg_~Yd zwY|qjh7iS3_l$lcXShfBO`H*69cImM<}4h2kMz@A9k5id+TMwU zc!7@v`O|TMSIseAx)T?cf`*!f@H)8t`mfqLG9?piWmqPmMV6Z~tlnO35HM2ak$@3O zH&R&vMhv=;P0pEgf+s7F3yFgbxTTECm)<>jRMp8wt$u5z%Wtz9YO18d&76JAWdy*q7H+V?}fA>XqH?LDUSjHiqWy)*CbLwk-Y?lIhQ zZPpRJeM-;h^PXJKF|DUSGaGb!j&9G=oeJHF=+1lxCTUN>?=>t%1S@U=4J<7Fzy1{f zh&Sv;P%9P=yI2Jq+@Rt{qOH~`tk|#>caf~+`2=>IifgPJo&v3BHT3k(;5AOa`ZtuK zg-HP$0}O2rCIo?%!m2eA5G8CvXb6oks99WX*1Bsg4#QX^jeuHLw7HiQV5=cSyt-T1 zfrpy_taj)PQ|l&9j6VSYjN@$AtkMZKQs}n4y;-q)HVM-5R(|h(W$y{J=R|5!VLUHe zcdZSrA49F9+162|brdF9Q}7cotzboa(5UEr4H}OKncNbv&|54pq7T@r{>Uu>TcHnH zuVB>#EM8M9FkZ1%x)R3aQT&!ky{&NYUM2(vhP-uK!mVfv7YwPkQtTFE(@SYO*X$r- z=G-OCcSC)(Q?Gg5%$O?n(D$X|Fjj`#eV69bX zK+;%45KF%{0CU90;d)7{iAFe7hy)p@WFtc)O|`Q*!;MB&>{50nExl zq4&gEtovK|ThgRR*1>G7Gpz`eY+CNF?O}+xvz8O6TguoaIq<%$m7*La{>^$SqCqwT zt)gr+j8*o%G>(&P1-sN@MaE@Pu9Hpc#;3sZvx@d-!NN&PvOZ}|GD%yqL1tu|+z>J( z?Q)&)CCtZ%oL18Kq}x_xi)__f`wcDY(D9GA-fcy;%NVQ50p5eR75$+v)0}C&?kRY~ zvx;xbg0#uTWK*(PZm!+Iv^HFwKCRjBk}YzR4yOs)TXA;Cw9ujB3~%k*irlF8B$9~H z97IyG1^&(OZ%XcvsZYMuMGst;^!n7Ihf21}EuSpPR2uIA+sf9s;mk!}PdYh++yeJl zkWqGqsBxGHH1LkIt;j8UZj;n~!zY6&Lx_ZnBQ5n;C&(>}t>sp&uJrRK3B6^KZE}m; zR&(K_XrD1eaRXFPhPj` z>4O$@du;VyC7Xpl-KuZsWN!x0;%)RHe%3xJz5!~N0LVcNTsR7^hOo%i+;4HF3MmU8l)~|tw@bjz zC&0Nus0K()RZAi!ew5((RbJ@CBiQ3qLxhiMcbDR2tqTum`4T?q)OtufcUcg3Cn}Y(66T2clD@xE%nbOjr^8^ox8ON0t6!5O$?a*$Jswo_W99=a=1LBf! z024FtF-~PbF*qLx34th((wwHmrf?8rIRGIR7ovekDXUZsAS0-6K?ui|aN0kp5ep5D zs8r|({D;(*Xd)toSrH7$vmxL(A@HKwP)s9O5P`#9SXYv|d07BYjl}1}lE~f(OAFwb zYNOVNDD=$0tteMt?Y{wy` zOQAo(n ziOQUqJ13@?f~`@p^&;Ehv<$hHEkfoScPNd0$Og|MiT0#`tTaHHUaDOc+xX# zO^=g^?t&K6wn^A60W$CEd2(aJHJoz|XM)d<4Ddmo2mv1$W|^_n z6l&RnyknS$Lzy1MJ%kune&;}j%upFh*?Bm1q0l>=2`Ifs5YwG^AI_Z0Ok^e$_bA{M z?A=(O19?ZwZ><}SzMP{keLL&$DGncU_&Y-i`v49R_?SvdR zJ-ODKZ9Sm09=QK@YVu)E!M+pO_hDXke?k9|UTge=^>gc5Fy|h8$m9M(1^X1JEw#aXHzpyJO-$z$JP)=UUj$K#Au0wCu zcSixFmj1%fX*7958Jc}KiP{flTLxdcy=$J#DdZl>x*cu<4-(dQ4O#h!w zXN+Ijv-?jf`%k{um1U+BW(qM=SR}BS#d0Ly<$m(+M%QqzYdFI{zx=}Um;Q~3Yq^PQ z*$KZg;m>mU;W?f2oPKdC>zPtKQ|JR84CERC`?%(@eE{BnFLmbONP%(S z<$H5XFZhckGYs)DkU#d8a_l1V`Pag0VRY3Gb8Wj|u5A|21&9qZOBT9!J(2Mjg|33# zwMkI6BR_AeeE-1u_(P-O*jupfMAp8S&26ZC-`eE**=+N$(mb4zQ1daw9Q)Un{;w10 z_(e2xRhjW;M{g*jH&F8p#M~&JJBI1$DX#^8yo$lL%Cc%b%SPi|0=7fgpjh^!L?BWe z5%8T}z?V<$V~T+DdZ7n{4=~t=0sit){N92u9s&mVFUkP!R(_k5)ztl1+9cq$6?B+P zM>dHHXfT`hZ4wpGM45JjhRT3`hcsa={?AvDG0e&|e1CP9KIi$u<y}6otL~Ry-xtSz_%A4$ GTK@w{yp0h6 literal 0 HcmV?d00001 diff --git a/tracker/inference/__pycache__/kv_memory_store.cpython-311.pyc b/tracker/inference/__pycache__/kv_memory_store.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26d6ee8941553677026a8586c1accb2743074569 GIT binary patch literal 11902 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 VHoaq{q0!Ru52XArd(;vx{}*E}CGr3O literal 0 HcmV?d00001 diff --git a/tracker/inference/__pycache__/memory_manager.cpython-311.pyc b/tracker/inference/__pycache__/memory_manager.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..988b65f4f4ecf6a3163de957be70ec6d834b6c19 GIT binary patch literal 14439 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 H47vXWF}{}T literal 0 HcmV?d00001 diff --git a/tracker/inference/inference_core.py b/tracker/inference/inference_core.py index e77f080..0b88e64 100644 --- a/tracker/inference/inference_core.py +++ b/tracker/inference/inference_core.py @@ -1,7 +1,8 @@ -from inference.memory_manager import MemoryManager -from model.network import XMem -from model.aggregate import aggregate +from tracker.inference.memory_manager import MemoryManager + +from tracker.model.aggregate import aggregate +from tracker.model.network import XMem from tracker.util.tensor_util import pad_divide_by, unpad diff --git a/tracker/inference/memory_manager.py b/tracker/inference/memory_manager.py index d47d96e..32bc107 100644 --- a/tracker/inference/memory_manager.py +++ b/tracker/inference/memory_manager.py @@ -1,8 +1,8 @@ import torch import warnings -from inference.kv_memory_store import KeyValueMemoryStore -from model.memory_util import * +from tracker.model.memory_util import * +from tracker.inference.kv_memory_store import KeyValueMemoryStore class MemoryManager: diff --git a/tracker/model/__pycache__/__init__.cpython-311.pyc b/tracker/model/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e0d52138da7211453ca2ecbcf415fe5b242a7fe GIT binary patch literal 163 zcmZ3^%ge<81m)Wu(?IlN5CH>>P{wCAAY(d13PUi1CZpd=4gdfE literal 0 HcmV?d00001 diff --git a/tracker/model/__pycache__/aggregate.cpython-311.pyc b/tracker/model/__pycache__/aggregate.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..798d6ef5f0a6ffd266cab7370939d2a08f25b4f2 GIT binary patch literal 916 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 QXJ&u;9LHa5Fv+a=AMx>b{Qv*} literal 0 HcmV?d00001 diff --git a/tracker/model/__pycache__/memory_util.cpython-311.pyc b/tracker/model/__pycache__/memory_util.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..747c5b5ba11fd7ba03ab758eb8c2b7348604c0cb GIT binary patch literal 3606 zcmb7GT}&I<6`ube+u$EC217C4Bn2ZJL}62b(keJx%5Ejn-O#j)va%-3kU02{nK21y zrgEfx@S;eVhzh5wRIkLQUcmzom72$W?4t*bgf&tmq-r1XhLpE`>bXN~Fa(Lc_MEwM z?z!ilbMCp{J^yNHabVD%{AY3@2)+NIk9wotci!ED&K4$OBA&$Nj^FqkVSkfzB)o|v zm7?cp923c}u{lQMMOvaIwyUlQTOdT{YkH0oSs3R<4yZ%K?_v?hTO>0R!7c7iR!wBm zLUO*oE*hcXA>n!F0=k81*ki=Cn~0z2*C`Dvc9FObL2 z%9n}L`s#g=Xx5s>MNG#v;sUMbtspe=S%*emR^HZ6!kjF4iXw8Zi8$B1a0QoV8vfS3ypvMMA?guxu6LjyUM8Ga3ngT}ls*T6bzmp)@3tIUd35zeBOM?zMz*oCB^s#4nG zb7^HMCrPW4#jCQAROR^f_Eh4oDk75x^@LrNE;`Sdb zN{A~<7Nb7N#DxbI^#FZ2lte0#6y$`uqVQl*U%mY_KKv&|l9gdGu^^-$4$sQM{9<%6 zy`nx!z$aKRzbMJWsf;Kkhf`82Bd^4BY9e_(yJEFIl+^f%V!0a>qfjcV;CUW9YQ-F` z=bgpy^X`1C#yi)8Yr&FG2pW8!$@c+kWOT2$;A>_d@PqsOU}ePMqb47%^3fk=KRo&B zFUvD$Cs+Bt*Hk`s$nyEW9x+&}XZ`-#{ZhE}xzQ3bTS5h*=J9PYFPP%e2EWOdVjHam zs^;|-ACzKc-^<@`qz&)20s}(DFShQzxL2Co_;T~hjn)JAm3{Y>@?=G=x~~}SG1EN; z^8(#PsWi2bERPu-{RKzC0V{fZ>&t7)Md6#3=PT>_nhq9x~lS z?-$)lzDSlw%7W1`V0H{ter0q-4exbWzplC9usx~yL*Jr z{h{x!ZbvGyZ=>5$!#@lhr@u=1-@z7OQx>gevhl?xv}RzyM(d9tD*>(XXJxg4yBPMk z(Fc^lMSPcd1=2eWG`kP8bV{c+>cgk@6{z1qi`xxwiD}Z_(4#ScHsmhVtbMi9#xg=4 zx(H#K^^)}UC}O~abc{N?q6&M%sDp5O@F#pgW~=~Fi%*EEwm zu}0$%(l*kq2Mpt8WOP|X2n%1d zNE^EdxequpvR6jXCZjk;aGMKw1W6~)13W?QEn1ZHG#i&&LBOI{B{>tfIAtE8oE*0t zh@r%jiA4anlKNl3yCz~n?-{<;PW;=4w$JxJWmj>PYxpW4lxr~G7BmQ%Ok*uz@zjY0~d#J zEmgMjO)&J2!SdYR$FGHI@Rkw0Wd?73<1R2o_R!O@<$U4XXxVHj&^4~*Z~o1$(#K_C zuf6KMVR&ztK)D+*OFAv@4Nadc;(l7zcXADrfZ_= zny3ZBh3UfdkAWUD&|h&Ffl)IsdJwp|AGrDY^B>s%`i;OHGjPY2@%RD11}ovc*{Wy4 z@JyJViPs~h=QjoV&GAqf7md1^? zs|Bv+>nN~?Y}*lr)6tqcQ0n|=&)<70;Zl#$HDq=TRoz2XZs^e2mcJwSK%71dD$_8s zg`G}o1S6mOoXs6l;h1|WG`r!eTcLn(vFCo zEZ3o@pe#JT(vEl6g|4Q0M#y6@dK-!L1Ic4QdP8NR9IFtOnBg5Zy~Fv>-nhF;gNFN> z>AsequAMlFQoP>K8p!Z>{|184^Q6|j5646&bP}N>;NAtbD++~1X*8-opsE7ej8i(R zqT}|yJ#GXE&MtPQGUGJv!*RD_pN zAfcF8w(uC#5%(;7*21SP{LjG4z!{ZN&6UG(pjlZG#7s_=Z^7(O;ZeQx}Y z)(6%GiX(70qx;(tG997(?L%j4{xdrTBjn7~RKzK}VKs|R=TcCQ5b5l(LyWqTh3Z8{ z5ww%YA`@xV&Lle*Y-7L2Y(=&kKXEsq!pSA2-^x=k2i=3p29P5X$MG8G%-g>j=Bw8K zHO!T_e>JST+WbFa`tXh;tU*4(JMs1-3`lvPGP)hLyJyK5g=8AU#p3QG>^!ke{yzw2 B_?7?w literal 0 HcmV?d00001 diff --git a/tracker/model/__pycache__/modules.cpython-311.pyc b/tracker/model/__pycache__/modules.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c555c2177416c17b6ec54c2181af89f90a2cb45 GIT binary patch literal 15775 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 kcxf>6tBJx3<_N97VDd$Ch?uD}HE`OeoG!qQ!?Y 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 W!0pG!`Dbq&{R-E8{R9X+w*Li&Tq1A) literal 0 HcmV?d00001 diff --git a/tracker/model/__pycache__/resnet.cpython-311.pyc b/tracker/model/__pycache__/resnet.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c7e2f291725aea40edb59444dbde87a05cd6557c GIT binary patch literal 9812 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 literal 0 HcmV?d00001 diff --git a/tracker/util/__pycache__/mask_mapper.cpython-311.pyc b/tracker/util/__pycache__/mask_mapper.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dae279be0537e4be419e70e12ba489b5d3b83259 GIT binary patch literal 4552 zcmcH+ZEO?Sao6_RjuT^y^F{dDgb;87&INijq+GbD0m|h_+DqEIhNF8M?=#uN*$r>k z2MLZYI`P9u`2kfb(yEnG2`C7V_<>X^^&~3s<0{=r-e{{>D^W$NsKh^4v}$#~I`3_~ z_6Dd>)jr$f_c1eX-pst2dA|vVLkzSFzwJv6LGLeQP-?#Q&Wpp)xz0$8#HN{1mi~K2 zJ(A}#GwSs)CmG3mnUQ?AJPdOees&x6N$fBa=bn?{VA7d~Q2>5k_`UcuOZe&lOD)Sx zIHOz8yX%Z3c9QbI!#Y>OW|#@Whc*`%)=gWB-KkEVe`v;#B6JcVz=fs%LNiWV?oTSf8qje(6H3C64;&(Y=0V#EPV7cZRzl}ON*D5kKY)0z}^^qaQxxG zWA@?T0Vx2st+GO= zL3O98=EQ%3bwfn;Bjd8hC)1*)@zBX=NaA&sPpZnN2#~wjGq9r~$w{P@ zNXJEu*Dt92lqw;uht3iayApgqN{N}Yp5TX+^bAiOioYQ1mljG-S54VSUy1WN1&F6ZE=n!PpE z4F4A0RsnsqjDeS)!)iv6TK4l}8JLk&Wv@=v(2@u_J0DE&$1jeH8BLczMG5|c*D(b} zX|jYcn52?-S*YV+qZwWU#ikKIEnh@wV#5kDIQ$smTj^NMS;3?_4q_|%9oF(`D4o&> z6CT$R#GoL^imVI5Y^>~$iPGdYK+$#pm}d(0jXB>!b)jiH{6&g>X6p{oe zI|pt8c9?99cLJ!CwkDZIA{Ok}HQP`japgh_p(6AfrCw_!!k1+}ktE74H7B+H6=vP3 zwVYTtrhsL~1SK})U#}RH)2ut#&v~=(fz(W8C@0Eg5-?wCw_xV3Gdt(4OiOy$SzxkW z_b#qAW`dlNHaFHRlrQcXNN66dU5}RV8Axw#4A%oWh zve7_-Huz>W~?%6#40aeL)*g~yiZ-99+S0>40tlvvy#t*&PG z4y7gD4l9s!AZI|XqUjMise$G}Op2rv@hzA*n&r-X;swYLA;9) z`AD|4LS?bm<2_{F^{{BMGA38dijp~6nn~+R8WDpe9n$RhU$b6Y0HQYOj;MCgK^OJ` zo%SW9jd|u-G`6^P>08%!E$&*4?p=xQz3;gfG@@N*v@7Q?L>rd;%j_?zpu$>>##f?o zBidm`J97SKbz6V6dnxtvj$d}%_ulTmH(>1RHurTKP2EP_5wq?{E>wtYg?g;&Ec-N8 ze|7fSvBhIIlegP`J$YktCDxUG#`4t7gJ>N9F~79z2QIoK`Swj6yG;-lzFb5Fjx zr@-&I>RSx|YpuGj$oQ+q*r)uSW$}LO_Q<_6M*N5wKk~)yM-#v6{C%epKlNp^5g#!4 z_f7u&e9aE{uGzbI!((irHId)k4Buz1@%y`POZO&?_8zmn=TVo@e)Nmv17v_{8Y_#Ap@GRuM?of;9`(tHGv~VAE2M5o|MqZTVo^(@3ou z*>y8~TYAv{5Vn8Ud3-7#9JE+v4-5hvsm5YJIl33tj&zI<${IU#>Ju4+W1Os z+^Fp^YdZ)gd2v*=th*=QocrF@5qNNXXi!fnL>h7tYLme@dmjf*`3$LBKr7gh|nZ4-)Wg0CyP5jUE#>l34;sY}H6XIq!Umo)8x- zG6d9f+>RpSfK5I!bU@8EZf}usgQG#NvBdrv5W*v+)e;_6xuQo1DECe zCV137X)o@D1yZDHX8;tvEXx*{E&0;7z|_psPtjM!ZYnYks6WPnJTHU4k-5LWVu5b{ EZ;3YE_W%F@ literal 0 HcmV?d00001 diff --git a/tracker/util/__pycache__/range_transform.cpython-311.pyc b/tracker/util/__pycache__/range_transform.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a1fa4667601a8d213917bffcc4d2ba1c8fef8b7 GIT binary patch literal 615 zcmZ3^%ge<81m)Wu(<&Jm7#@Q-Fu)3Be9i+hrZc24q%h_%62 z5)hFABs7`RxvnoRu;sdMpMJ7z-+U?kyY}hRoV#D3Uo|D05uUL6hy4SV?|Sazu*uC&Da}c> zD-r}628>dM;z}U#ftit!@dktT1yuBaOR|Cefw1}nt1H6lHzf5gfYA*J-3ws!ft6WA z=pzG=_yQs>FbI6$Vh~X2sJgSO_<^@w6|6B&3>@r_Ak5r1$SrB-MQipEV}~*cURHfl{r^( zHs{{D_4$hESr$D7(OVR~E23{%^cBQIMe$JP)SA$$?aK?^Jm=j6k*F?URFfI7L73b@ z%C;a-SKo(#KCA`!OPHmZG`LK{)4;E?<@Yq4InAjYIFSjCe*5QR{jcAaP6n`POMoX9 z;3W_=L~In;0T^sFkxKF~qaHj+Xp$N&&wC@0B71;9iOFsN8MNBgwK%lYQfTWhw)Gdd z*37wFX9)~ER1m!S+l&44Ckl?<%+Q+9l=+Z|u%*sgdJxlE4_HFe^9n4KhlC~cHFKbf zqAgn?g<+q>T&2E3M1+JXTTkCWnTF$~Ihj!z@BzDno36mVD#hgHftyY93O!3@sGQ1B zn#59X-iJ6mti|F*e6Qwskt9>QHEpSr$gAwGG*|cNMLL$g($}SsKu+ z^|T0=b|^H@D&tDc=aAoy`ut7{s-QZ|X21p4|9JFw1LL8@S8QI=;E*V(MN^e!D8=Vp<^)1WCs89KG)vdr?aiMTfg&bm+u~# zJ96)+PUep-9Q$!-iFt75hco%+{><4`hcMHbvuO5$!&h|pGD9VyDQC}~%yS2J);aAp zG|rplICY)fZ?jOI)QFbg1;B34Nms8|@QnToGCj+<4xYIS6f&K$pf?dCPjwQOz6TiYOq zvlBD#JCc&kdsrxD zFtThows5i!+-=@E%zJ~`H_b3SfbTXX(VN6m+lhEWO2xt_3BC8yP$we*Hdu^t3AN{6 i^4qX*xP1fFfXLxJ6s>@!J-BTH)qu}Q2|Iy#j(-4do_lBj literal 0 HcmV?d00001 From c72be6d2990d0de4173674c7a9175ce45b217b6c Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Tue, 21 May 2024 15:37:59 +0800 Subject: [PATCH 3/8] 1 errors for return probs, and set save mask true --- track_anything.py | 3 ++- tracker/base_tracker.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/track_anything.py b/track_anything.py index 81bb251..34c80c9 100644 --- a/track_anything.py +++ b/track_anything.py @@ -65,7 +65,7 @@ def parse_augment(): parser.add_argument('--sam_model_type', type=str, default="vit_h") parser.add_argument('--port', type=int, default=6080, help="only useful when running gradio applications") parser.add_argument('--debug', action="store_true") - parser.add_argument('--mask_save', default=False) + parser.add_argument('--mask_save', default=True) args = parser.parse_args() if args.debug: @@ -89,6 +89,7 @@ def parse_augment(): mask[0,0]= 1 trackany = TrackingAnything('./checkpoints/sam_vit_h_4b8939.pth','./checkpoints/XMem-s012.pth', './checkpoints/E2FGVI-HQ-CVPR22.pth', args) masks, logits ,painted_images= trackany.generator(images, mask) + diff --git a/tracker/base_tracker.py b/tracker/base_tracker.py index e8f0e92..4fb08a8 100644 --- a/tracker/base_tracker.py +++ b/tracker/base_tracker.py @@ -109,7 +109,7 @@ def track(self, frame, first_frame_annotation=None): # print(f'max memory allocated: {torch.cuda.max_memory_allocated()/(2**20)} MB') - return final_mask, final_mask, painted_image + return final_mask, probs, painted_image @torch.no_grad() def sam_refinement(self, frame, logits, ti): From c088996fcafceddf96ef48ce9f3eee4d9c09b6b8 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Fri, 24 May 2024 10:27:37 +0800 Subject: [PATCH 4/8] support apple OS gradio --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index d321515..d8b1eda 100644 --- a/app.py +++ b/app.py @@ -599,4 +599,4 @@ def generate_video_from_frames(frames, output_path, fps=30): # cache_examples=True, ) -iface.launch(debug=True, server_port=args.port, server_name="0.0.0.0",max_threads=1,share=True) +iface.launch(debug=True, server_port=args.port, server_name="127.0.0.1",max_threads=1,share=True) From 7cb07af67bd512e5209a8a13ee1ad1027cd9e456 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Fri, 24 May 2024 10:28:41 +0800 Subject: [PATCH 5/8] build files --- .../__pycache__/base_tracker.cpython-311.pyc | Bin 10143 -> 10143 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tracker/__pycache__/base_tracker.cpython-311.pyc b/tracker/__pycache__/base_tracker.cpython-311.pyc index 81739c409ce0ccecd1d4abc9075b6b71a437281f..79c048a5f72a3ff7c72746ec6f45cc6c9ea6c671 100644 GIT binary patch delta 73 zcmbR5Ki{8sIWI340}ycg`=n`XwgrA From 9dd9ed225bbaf3f2ce90b4988c5f6b968d591351 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Tue, 28 May 2024 16:40:17 +0800 Subject: [PATCH 6/8] package trackingAnything --- app.py | 4 ++-- setup.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 setup.py diff --git a/app.py b/app.py index d8b1eda..6687ac4 100644 --- a/app.py +++ b/app.py @@ -377,7 +377,7 @@ def generate_video_from_frames(frames, output_path, fps=30): SAM_checkpoint = download_checkpoint(sam_checkpoint_url, folder, sam_checkpoint) xmem_checkpoint = download_checkpoint(xmem_checkpoint_url, folder, xmem_checkpoint) e2fgvi_checkpoint = download_checkpoint_from_google_drive(e2fgvi_checkpoint_id, folder, e2fgvi_checkpoint) -args.port = 12212 +args.port = 7860 args.device = "mps" # args.mask_save = True @@ -590,7 +590,7 @@ def generate_video_from_frames(frames, output_path, fps=30): gr.Markdown("## Examples") gr.Examples( examples=[os.path.join(os.path.dirname(__file__), "./test_sample/", test_sample) for test_sample in ["test-sample8.mp4","test-sample4.mp4", \ - "test-sample2.mp4","test-sample13.mp4"]], + "test-sample2.mp4","test-sample13.mp4", "RGB_video.mp4"]], fn=run_example, inputs=[ video_input diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..8078c88 --- /dev/null +++ b/setup.py @@ -0,0 +1,20 @@ +from setuptools import setup, find_packages + +setup( + name="tracker", + version="0.2.1", + packages=find_packages(), + install_requires=[], + author="zhaifang", + author_email="zhaifang@tsinghua.edu.cn", + description="xmem tracking for 3 sensor short long-term memory", + long_description=open('README.md').read(), + long_description_content_type='text/markdown', + url="git@github.com:bingxinhu/Track-Anything.git", + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + python_requires='>=3.11', +) From 58445e703a247bc50070ff6fd90974d55bae5cc5 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Wed, 29 May 2024 16:10:53 +0800 Subject: [PATCH 7/8] mp4 video for Good --- app.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index 6687ac4..a6aef87 100644 --- a/app.py +++ b/app.py @@ -114,6 +114,7 @@ def get_frames_from_video(video_input, video_state): video_info = "Video Name: {}, FPS: {}, Total Frames: {}, Image Size:{}".format(video_state["video_name"], video_state["fps"], len(frames), image_size) model.samcontroler.sam_controler.reset_image() model.samcontroler.sam_controler.set_image(video_state["origin_images"][0]) + print(video_info) return video_state, video_info, video_state["origin_images"][0], gr.update(visible=True, maximum=len(frames), value=1), gr.update(visible=True, maximum=len(frames), value=len(frames)), \ gr.update(visible=True),\ gr.update(visible=True), gr.update(visible=True), \ @@ -336,18 +337,24 @@ def generate_video_from_frames(frames, output_path, fps=30): output_path (str): The path to save the generated video. fps (int, optional): The frame rate of the output video. Defaults to 30. """ - # height, width, layers = frames[0].shape - # fourcc = cv2.VideoWriter_fourcc(*"mp4v") - # video = cv2.VideoWriter(output_path, fourcc, fps, (width, height)) - # print(output_path) - # for frame in frames: - # video.write(frame) - + height, width, layers = frames[0].shape + print(f"Video width: {width}, height: {height}") + fourcc = cv2.VideoWriter_fourcc(*"mp4v") + video = cv2.VideoWriter(output_path, fourcc, fps, (width, height)) + print(output_path) + for frame in frames: + frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) + video.write(frame) + # zhaifang add + ''' + height, width, layers = frames[0].shape + print(f"Video width: {width}, height: {height}") # video.release() frames = torch.from_numpy(np.asarray(frames)) if not os.path.exists(os.path.dirname(output_path)): os.makedirs(os.path.dirname(output_path)) torchvision.io.write_video(output_path, frames, fps=fps, video_codec="libx264") + ''' return output_path From 62685b6a250b5cefff7cf8eb583ade477e80dac7 Mon Sep 17 00:00:00 2001 From: bingxinhu Date: Fri, 31 May 2024 09:12:55 +0800 Subject: [PATCH 8/8] modify Readme --- README.md | 3 +++ .../__pycache__/base_tracker.cpython-311.pyc | Bin 10143 -> 10136 bytes 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index e364ce4..695deb9 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,9 @@ pip install -r requirements.txt # Run the Track-Anything gradio demo. python app.py --device cuda:0 + +# If your platform AppleM2 use +python app.py --device mps # python app.py --device cuda:0 --sam_model_type vit_b # for lower memory usage ``` diff --git a/tracker/__pycache__/base_tracker.cpython-311.pyc b/tracker/__pycache__/base_tracker.cpython-311.pyc index 79c048a5f72a3ff7c72746ec6f45cc6c9ea6c671..bf325446262f63ae9338fa8fe6baa747cc627b94 100644 GIT binary patch delta 48 zcmbR5Kf|AUIWI340}%8&gl^>K<`&b{4=qkDD%MZQOiRp5*DonbOwLX%+HB07BLe_K C4h~QN delta 55 zcmbQ?Ki{8wIWI340}ycg`)uUq=9V?l4=qkDD%MZQOiRp5*AFR5OwQJI%&RQP$jnRM Jtizon0|1?+5K{mE