Spaces:
Sleeping
Sleeping
clean
Browse files- Dockerfile_back +0 -103
- LICENSE +22 -0
- app.py +6 -40
- docs/intro.md +6 -1
- main.py +0 -105
- maskrcnn_benchmark/modeling/rpn/inference.py +0 -1
- tools/.DS_Store +0 -0
Dockerfile_back
DELETED
@@ -1,103 +0,0 @@
|
|
1 |
-
ENV PATH=/opt/conda/bin:/opt/cmake-3.14.6-Linux-x86_64/bin/:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin:/opt/tensorrt/bin
|
2 |
-
|
3 |
-
ENV CUDA_VERSION=11.3.1.005
|
4 |
-
|
5 |
-
ENV CUDA_DRIVER_VERSION=465.19.01
|
6 |
-
|
7 |
-
ENV CUDA_CACHE_DISABLE=1
|
8 |
-
|
9 |
-
ENV _CUDA_COMPAT_PATH=/usr/local/cuda/compat
|
10 |
-
|
11 |
-
ENV ENV=/etc/shinit_v2
|
12 |
-
|
13 |
-
ENV BASH_ENV=/etc/bash.bashrc
|
14 |
-
|
15 |
-
ENV NVIDIA_REQUIRE_CUDA=cuda>=9.0
|
16 |
-
|
17 |
-
ENV NCCL_VERSION=2.9.9
|
18 |
-
|
19 |
-
ENV CUBLAS_VERSION=11.5.1.109
|
20 |
-
|
21 |
-
ENV CUFFT_VERSION=10.4.2.109
|
22 |
-
|
23 |
-
ENV CURAND_VERSION=10.2.4.109
|
24 |
-
|
25 |
-
ENV CUSPARSE_VERSION=11.6.0.109
|
26 |
-
|
27 |
-
ENV CUSOLVER_VERSION=11.1.2.109
|
28 |
-
|
29 |
-
ENV NPP_VERSION=11.3.3.95
|
30 |
-
|
31 |
-
ENV NVJPEG_VERSION=11.5.0.109
|
32 |
-
|
33 |
-
ENV CUDNN_VERSION=8.2.1.32
|
34 |
-
|
35 |
-
ENV TRT_VERSION=7.2.3.4+cuda11.1.0.024
|
36 |
-
|
37 |
-
ENV TRTOSS_VERSION=21.06
|
38 |
-
|
39 |
-
ENV NSIGHT_SYSTEMS_VERSION=2021.2.1.58
|
40 |
-
|
41 |
-
ENV NSIGHT_COMPUTE_VERSION=2021.1.1.5
|
42 |
-
|
43 |
-
ENV DALI_VERSION=1.2.0
|
44 |
-
|
45 |
-
ENV DALI_BUILD=2356513
|
46 |
-
|
47 |
-
ENV DLPROF_VERSION=21.06
|
48 |
-
|
49 |
-
ENV LD_LIBRARY_PATH=/opt/hpcx/nccl_rdma_sharp_plugin/lib:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
|
50 |
-
|
51 |
-
ENV NVIDIA_VISIBLE_DEVICES=all
|
52 |
-
|
53 |
-
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video
|
54 |
-
|
55 |
-
ENV GDRCOPY_VERSION=2.2
|
56 |
-
|
57 |
-
ENV HPCX_VERSION=2.8.2rc3
|
58 |
-
|
59 |
-
ENV MOFED_VERSION=5.2-rdmacore32.1
|
60 |
-
|
61 |
-
ENV OPENUCX_VERSION=1.10.1
|
62 |
-
|
63 |
-
ENV OPENMPI_VERSION=4.1.1rc1
|
64 |
-
|
65 |
-
ENV RDMACORE_VERSION=32.1
|
66 |
-
|
67 |
-
ENV LIBRARY_PATH=/usr/local/cuda/lib64/stubs:
|
68 |
-
|
69 |
-
ENV PYTORCH_BUILD_VERSION=1.9.0a0+c3d40fd
|
70 |
-
|
71 |
-
ENV PYTORCH_VERSION=1.9.0a0+c3d40fd
|
72 |
-
|
73 |
-
ENV PYTORCH_BUILD_NUMBER=0
|
74 |
-
|
75 |
-
ENV NVIDIA_PYTORCH_VERSION=21.06
|
76 |
-
|
77 |
-
ENV NVM_DIR=/usr/local/nvm
|
78 |
-
|
79 |
-
ENV JUPYTER_PORT=8888
|
80 |
-
|
81 |
-
ENV TENSORBOARD_PORT=6006
|
82 |
-
|
83 |
-
ENV COCOAPI_VERSION=2.0+nv0.5.1
|
84 |
-
|
85 |
-
ENV PYTHONIOENCODING=utf-8
|
86 |
-
|
87 |
-
ENV LC_ALL=C.UTF-8
|
88 |
-
|
89 |
-
ENV NVIDIA_BUILD_ID=24129275
|
90 |
-
|
91 |
-
ENV NCCL_ASYNC_ERROR_HANDLING=1
|
92 |
-
|
93 |
-
EXPOSE 6006/tcp
|
94 |
-
|
95 |
-
EXPOSE 8888/tcp
|
96 |
-
|
97 |
-
WORKDIR /workspace
|
98 |
-
ENTRYPOINT ["/usr/local/bin/nvidia_entrypoint.sh"]
|
99 |
-
|
100 |
-
|
101 |
-
COPY . .
|
102 |
-
|
103 |
-
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) Liunian Harold Li, Zi-Yi Dou.
|
4 |
+
Copyright (c) Microsoft Corporation.
|
5 |
+
|
6 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7 |
+
of this software and associated documentation files (the "Software"), to deal
|
8 |
+
in the Software without restriction, including without limitation the rights
|
9 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10 |
+
copies of the Software, and to permit persons to whom the Software is
|
11 |
+
furnished to do so, subject to the following conditions:
|
12 |
+
|
13 |
+
The above copyright notice and this permission notice shall be included in all
|
14 |
+
copies or substantial portions of the Software.
|
15 |
+
|
16 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
22 |
+
SOFTWARE
|
app.py
CHANGED
@@ -1,19 +1,4 @@
|
|
1 |
-
|
2 |
-
def update(name):
|
3 |
-
return f"Welcome to Gradio, {name}!"
|
4 |
-
|
5 |
-
with gr.Blocks() as demo:
|
6 |
-
gr.Markdown("Start typing below and then click **Run** to see the output.")
|
7 |
-
with gr.Row():
|
8 |
-
inp = gr.Textbox(placeholder="What is your name?")
|
9 |
-
out = gr.Textbox()
|
10 |
-
btn = gr.Button("Run")
|
11 |
-
btn.click(fn=update, inputs=inp, outputs=out)
|
12 |
-
|
13 |
-
demo.launch()
|
14 |
-
|
15 |
-
|
16 |
-
exit()#'''
|
17 |
|
18 |
import requests
|
19 |
import os
|
@@ -27,27 +12,14 @@ import warnings
|
|
27 |
|
28 |
warnings.filterwarnings("ignore")
|
29 |
|
30 |
-
# os.system(
|
31 |
-
# "pip install einops shapely timm yacs tensorboardX ftfy prettytable pymongo click opencv-python inflect nltk scipy scikit-learn pycocotools")
|
32 |
-
# os.system("pip install transformers")
|
33 |
os.system("python setup.py build develop --user")
|
34 |
|
35 |
from maskrcnn_benchmark.config import cfg
|
36 |
from maskrcnn_benchmark.engine.predictor_glip import GLIPDemo
|
37 |
|
38 |
-
# Use this command for evaluate the GLIP-T model
|
39 |
-
#config_file = "configs/pretrain/glip_Swin_T_O365_GoldG.yaml"
|
40 |
-
#weight_file = "MODEL/glip_tiny_model_o365_goldg_cc_sbu.pth"
|
41 |
-
|
42 |
config_file = "configs/pretrain_new/desco_glip.yaml"
|
43 |
weight_file = "MODEL/desco_glip_tiny.pth"
|
44 |
|
45 |
-
|
46 |
-
# Use this command if you want to try the GLIP-L model
|
47 |
-
# ! wget https://penzhanwu2bbs.blob.core.windows.net/data/GLIPv1_Open/models/glip_large_model.pth -O MODEL/glip_large_model.pth
|
48 |
-
# config_file = "configs/pretrain/glip_Swin_L.yaml"
|
49 |
-
# weight_file = "MODEL/glip_large_model.pth"
|
50 |
-
|
51 |
# update the config options with the config file
|
52 |
# manual override some options
|
53 |
cfg.local_rank = 0
|
@@ -77,11 +49,8 @@ fiber_demo = GLIPDemo(
|
|
77 |
show_mask_heatmaps=False
|
78 |
)
|
79 |
|
80 |
-
def predict(image, text,
|
81 |
-
if
|
82 |
-
specified_tokens = None
|
83 |
-
else:
|
84 |
-
specified_tokens = specified_tokens.strip().split(";")
|
85 |
result, _ = glip_demo.run_on_web_image(deepcopy(image[:, :, [2, 1, 0]]), text, 0.5, specified_tokens)
|
86 |
fiber_result, _ = fiber_demo.run_on_web_image(deepcopy(image[:, :, [2, 1, 0]]), text, 0.5, specified_tokens)
|
87 |
return result[:, :, [2, 1, 0]], fiber_result[:, :, [2, 1, 0]]
|
@@ -90,27 +59,24 @@ def predict(image, text, specified_tokens=""):
|
|
90 |
image = gr.inputs.Image()
|
91 |
|
92 |
gr.Interface(
|
93 |
-
description="Object Recognition with DesCo",
|
94 |
fn=predict,
|
95 |
inputs=["image", "text", "text"],
|
96 |
outputs=[
|
97 |
gr.outputs.Image(
|
98 |
type="pil",
|
99 |
-
|
100 |
),
|
101 |
gr.outputs.Image(
|
102 |
type="pil",
|
103 |
-
|
104 |
),
|
105 |
],
|
106 |
examples=[
|
107 |
-
#["./flickr_9472793441.jpg", "bobble heads on top of the shelf ."],
|
108 |
-
#["./flickr_9472793441.jpg", "sofa . remote . dog . person . car . sky . plane ."],
|
109 |
["./coco_000000281759.jpg", "A green umbrella. A pink striped umbrella. A plain white umbrella.", ""],
|
110 |
["./coco_000000281759.jpg", "a flowery top. A blue dress. An orange shirt .", ""],
|
111 |
["./coco_000000281759.jpg", "a car . An electricity box .", ""],
|
112 |
["./1.jpg", "a train besides sidewalk", "train;sidewalk"],
|
113 |
-
#["./flickr_7520721.jpg", "A woman figure skater in a blue costume holds her leg by the blade of her skate ."]
|
114 |
],
|
115 |
article=Path("docs/intro.md").read_text()
|
116 |
).launch()
|
|
|
1 |
+
# Reference: https://huggingface.co/spaces/haotiz/glip-zeroshot-demo/blob/main/app.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
import requests
|
4 |
import os
|
|
|
12 |
|
13 |
warnings.filterwarnings("ignore")
|
14 |
|
|
|
|
|
|
|
15 |
os.system("python setup.py build develop --user")
|
16 |
|
17 |
from maskrcnn_benchmark.config import cfg
|
18 |
from maskrcnn_benchmark.engine.predictor_glip import GLIPDemo
|
19 |
|
|
|
|
|
|
|
|
|
20 |
config_file = "configs/pretrain_new/desco_glip.yaml"
|
21 |
weight_file = "MODEL/desco_glip_tiny.pth"
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
# update the config options with the config file
|
24 |
# manual override some options
|
25 |
cfg.local_rank = 0
|
|
|
49 |
show_mask_heatmaps=False
|
50 |
)
|
51 |
|
52 |
+
def predict(image, text, ground_tokens=""):
|
53 |
+
ground_tokens = None if ground_tokens.strip() == "" else ground_tokens.strip().split(";")
|
|
|
|
|
|
|
54 |
result, _ = glip_demo.run_on_web_image(deepcopy(image[:, :, [2, 1, 0]]), text, 0.5, specified_tokens)
|
55 |
fiber_result, _ = fiber_demo.run_on_web_image(deepcopy(image[:, :, [2, 1, 0]]), text, 0.5, specified_tokens)
|
56 |
return result[:, :, [2, 1, 0]], fiber_result[:, :, [2, 1, 0]]
|
|
|
59 |
image = gr.inputs.Image()
|
60 |
|
61 |
gr.Interface(
|
62 |
+
description="Object Recognition with DesCo (https://github.com/liunian-harold-li/DesCo)",
|
63 |
fn=predict,
|
64 |
inputs=["image", "text", "text"],
|
65 |
outputs=[
|
66 |
gr.outputs.Image(
|
67 |
type="pil",
|
68 |
+
label="DesCo-GLIP"
|
69 |
),
|
70 |
gr.outputs.Image(
|
71 |
type="pil",
|
72 |
+
label="DesCo-FIBER"
|
73 |
),
|
74 |
],
|
75 |
examples=[
|
|
|
|
|
76 |
["./coco_000000281759.jpg", "A green umbrella. A pink striped umbrella. A plain white umbrella.", ""],
|
77 |
["./coco_000000281759.jpg", "a flowery top. A blue dress. An orange shirt .", ""],
|
78 |
["./coco_000000281759.jpg", "a car . An electricity box .", ""],
|
79 |
["./1.jpg", "a train besides sidewalk", "train;sidewalk"],
|
|
|
80 |
],
|
81 |
article=Path("docs/intro.md").read_text()
|
82 |
).launch()
|
docs/intro.md
CHANGED
@@ -1 +1,6 @@
|
|
1 |
-
DesCo
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# DesCo
|
2 |
+
This is the HuggingFace Gradio Demo for the paper [DesCo: Learning Object Recognition with Rich Language Descriptions (NeurIPS 2023)](https://arxiv.org/pdf/2306.14060.pdf).
|
3 |
+
|
4 |
+
`ground_tokens` specifies which tokens we wish the model to ground to, separated by `;`; if it is not specified, the script will use NLTK to extract noun phrases automatically.
|
5 |
+
|
6 |
+
Code: https://github.com/liunian-harold-li/DesCo
|
main.py
DELETED
@@ -1,105 +0,0 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
import sys
|
3 |
-
import torch
|
4 |
-
import requests
|
5 |
-
import socket
|
6 |
-
from torchvision import transforms
|
7 |
-
import os
|
8 |
-
import asyncio
|
9 |
-
|
10 |
-
torch.hub._validate_not_a_forked_repo=lambda a,b,c: True
|
11 |
-
|
12 |
-
model = torch.hub.load("pytorch/vision:v0.6.0", "resnet18", pretrained=True).eval()
|
13 |
-
response = requests.get("https://git.io/JJkYN")
|
14 |
-
labels = response.text.split("\n")
|
15 |
-
|
16 |
-
|
17 |
-
INITIAL_PORT_VALUE = int(os.getenv("GRADIO_SERVER_PORT", "7860"))
|
18 |
-
TRY_NUM_PORTS = int(os.getenv("GRADIO_NUM_PORTS", "100"))
|
19 |
-
LOCALHOST_NAME = os.getenv("GRADIO_SERVER_NAME", "127.0.0.1")
|
20 |
-
GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request"
|
21 |
-
|
22 |
-
|
23 |
-
if sys.platform == "win32" and hasattr(asyncio, "WindowsSelectorEventLoopPolicy"):
|
24 |
-
# "Any thread" and "selector" should be orthogonal, but there's not a clean
|
25 |
-
# interface for composing policies so pick the right base.
|
26 |
-
_BasePolicy = asyncio.WindowsSelectorEventLoopPolicy # type: ignore
|
27 |
-
else:
|
28 |
-
_BasePolicy = asyncio.DefaultEventLoopPolicy
|
29 |
-
|
30 |
-
|
31 |
-
class AnyThreadEventLoopPolicy(_BasePolicy): # type: ignore
|
32 |
-
"""Event loop policy that allows loop creation on any thread.
|
33 |
-
The default `asyncio` event loop policy only automatically creates
|
34 |
-
event loops in the main threads. Other threads must create event
|
35 |
-
loops explicitly or `asyncio.get_event_loop` (and therefore
|
36 |
-
`.IOLoop.current`) will fail. Installing this policy allows event
|
37 |
-
loops to be created automatically on any thread, matching the
|
38 |
-
behavior of Tornado versions prior to 5.0 (or 5.0 on Python 2).
|
39 |
-
Usage::
|
40 |
-
asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())
|
41 |
-
.. versionadded:: 5.0
|
42 |
-
"""
|
43 |
-
|
44 |
-
def get_event_loop(self) -> asyncio.AbstractEventLoop:
|
45 |
-
try:
|
46 |
-
return super().get_event_loop()
|
47 |
-
except (RuntimeError, AssertionError):
|
48 |
-
# This was an AssertionError in python 3.4.2 (which ships with debian jessie)
|
49 |
-
# and changed to a RuntimeError in 3.4.3.
|
50 |
-
# "There is no current event loop in thread %r"
|
51 |
-
loop = self.new_event_loop()
|
52 |
-
self.set_event_loop(loop)
|
53 |
-
return loop
|
54 |
-
|
55 |
-
|
56 |
-
asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())
|
57 |
-
|
58 |
-
def get_first_available_port(initial: int, final: int) -> int:
|
59 |
-
"""
|
60 |
-
Gets the first open port in a specified range of port numbers
|
61 |
-
Parameters:
|
62 |
-
initial: the initial value in the range of port numbers
|
63 |
-
final: final (exclusive) value in the range of port numbers, should be greater than `initial`
|
64 |
-
Returns:
|
65 |
-
port: the first open port in the range
|
66 |
-
"""
|
67 |
-
for port in range(initial, final):
|
68 |
-
try:
|
69 |
-
s = socket.socket() # create a socket object
|
70 |
-
s.bind((LOCALHOST_NAME, port)) # Bind to the port
|
71 |
-
s.close()
|
72 |
-
return port
|
73 |
-
except OSError:
|
74 |
-
pass
|
75 |
-
raise OSError(
|
76 |
-
"All ports from {} to {} are in use. Please close a port.".format(
|
77 |
-
initial, final
|
78 |
-
)
|
79 |
-
)
|
80 |
-
|
81 |
-
def predict(inp):
|
82 |
-
inp = transforms.ToTensor()(inp).unsqueeze(0)
|
83 |
-
with torch.no_grad():
|
84 |
-
prediction = torch.nn.functional.softmax(model(inp)[0], dim=0)
|
85 |
-
confidences = {labels[i]: float(prediction[i]) for i in range(1000)}
|
86 |
-
return confidences
|
87 |
-
|
88 |
-
|
89 |
-
def run():
|
90 |
-
demo = gr.Interface(
|
91 |
-
fn=predict,
|
92 |
-
inputs=gr.inputs.Image(type="pil"),
|
93 |
-
outputs=gr.outputs.Label(num_top_classes=3),
|
94 |
-
)
|
95 |
-
|
96 |
-
demo.launch() #server_name="0.0.0.0", server_port=7861)
|
97 |
-
#demo.launch(server_name=LOCALHOST_NAME, server_port=get_first_available_port(
|
98 |
-
# INITIAL_PORT_VALUE, INITIAL_PORT_VALUE + TRY_NUM_PORTS
|
99 |
-
# ), share=True)
|
100 |
-
#demo.launch(server_name="0.0.0.0", server_port=7861)
|
101 |
-
|
102 |
-
|
103 |
-
if __name__ == "__main__":
|
104 |
-
run()
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
maskrcnn_benchmark/modeling/rpn/inference.py
CHANGED
@@ -726,7 +726,6 @@ class ATSSPostProcessor(torch.nn.Module):
|
|
726 |
if number_of_detections > self.fpn_post_nms_top_n > 0:
|
727 |
cls_scores = result.get_field("scores")
|
728 |
image_thresh, _ = torch.kthvalue(
|
729 |
-
# TODO: confirm with Pengchuan and Xiyang, torch.kthvalue is not implemented for 'Half'
|
730 |
# cls_scores.cpu(),
|
731 |
cls_scores.cpu().float(),
|
732 |
number_of_detections - self.fpn_post_nms_top_n + 1,
|
|
|
726 |
if number_of_detections > self.fpn_post_nms_top_n > 0:
|
727 |
cls_scores = result.get_field("scores")
|
728 |
image_thresh, _ = torch.kthvalue(
|
|
|
729 |
# cls_scores.cpu(),
|
730 |
cls_scores.cpu().float(),
|
731 |
number_of_detections - self.fpn_post_nms_top_n + 1,
|
tools/.DS_Store
DELETED
Binary file (10.2 kB)
|
|