mingyang91 commited on
Commit
c973a85
·
verified ·
1 Parent(s): 06a2085
Files changed (3) hide show
  1. .idea/workspace.xml +12 -7
  2. demo.py +11 -7
  3. evaluator.py +9 -5
.idea/workspace.xml CHANGED
@@ -6,11 +6,8 @@
6
  <component name="ChangeListManager">
7
  <list default="true" id="d7806539-b6d6-42e7-bb45-1565f5d54891" name="Changes" comment="Update UI">
8
  <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/Dockerfile" beforeDir="false" afterPath="$PROJECT_DIR$/Dockerfile" afterDir="false" />
10
  <change beforePath="$PROJECT_DIR$/demo.py" beforeDir="false" afterPath="$PROJECT_DIR$/demo.py" afterDir="false" />
11
  <change beforePath="$PROJECT_DIR$/evaluator.py" beforeDir="false" afterPath="$PROJECT_DIR$/evaluator.py" afterDir="false" />
12
- <change beforePath="$PROJECT_DIR$/tests/coco8.zip" beforeDir="false" afterPath="$PROJECT_DIR$/tests/coco8.zip" afterDir="false" />
13
- <change beforePath="$PROJECT_DIR$/yolo_dataset.py" beforeDir="false" afterPath="$PROJECT_DIR$/yolo_dataset.py" afterDir="false" />
14
  </list>
15
  <option name="SHOW_DIALOG" value="false" />
16
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -236,7 +233,7 @@
236
  <workItem from="1705812482464" duration="711000" />
237
  <workItem from="1705845330999" duration="11089000" />
238
  <workItem from="1706104589422" duration="517000" />
239
- <workItem from="1706105118954" duration="3764000" />
240
  </task>
241
  <task id="LOCAL-00001" summary="init commit">
242
  <option name="closed" value="true" />
@@ -422,7 +419,15 @@
422
  <option name="project" value="LOCAL" />
423
  <updated>1705850745341</updated>
424
  </task>
425
- <option name="localTasksCounter" value="24" />
 
 
 
 
 
 
 
 
426
  <servers />
427
  </component>
428
  <component name="TypeScriptGeneratedFilesManager">
@@ -478,7 +483,7 @@
478
  </line-breakpoint>
479
  <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
480
  <url>file://$PROJECT_DIR$/evaluator.py</url>
481
- <line>77</line>
482
  <option name="timeStamp" value="17" />
483
  </line-breakpoint>
484
  </breakpoints>
@@ -488,7 +493,7 @@
488
  <SUITE FILE_PATH="coverage/detector$yolo_dataset.coverage" NAME="yolo_dataset Coverage Results" MODIFIED="1705852113469" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
489
  <SUITE FILE_PATH="coverage/detector$evaluator.coverage" NAME="evaluator Coverage Results" MODIFIED="1706107083258" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
490
  <SUITE FILE_PATH="coverage/detector$demo.coverage" NAME="demo Coverage Results" MODIFIED="1706108414052" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
491
- <SUITE FILE_PATH="coverage/detector$streamlit.coverage" NAME="streamlit Coverage Results" MODIFIED="1706108547026" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
492
  <SUITE FILE_PATH="coverage/detector$extract.coverage" NAME="yolo_dataset Coverage Results" MODIFIED="1705764465837" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
493
  </component>
494
  </project>
 
6
  <component name="ChangeListManager">
7
  <list default="true" id="d7806539-b6d6-42e7-bb45-1565f5d54891" name="Changes" comment="Update UI">
8
  <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
 
9
  <change beforePath="$PROJECT_DIR$/demo.py" beforeDir="false" afterPath="$PROJECT_DIR$/demo.py" afterDir="false" />
10
  <change beforePath="$PROJECT_DIR$/evaluator.py" beforeDir="false" afterPath="$PROJECT_DIR$/evaluator.py" afterDir="false" />
 
 
11
  </list>
12
  <option name="SHOW_DIALOG" value="false" />
13
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
 
233
  <workItem from="1705812482464" duration="711000" />
234
  <workItem from="1705845330999" duration="11089000" />
235
  <workItem from="1706104589422" duration="517000" />
236
+ <workItem from="1706105118954" duration="5313000" />
237
  </task>
238
  <task id="LOCAL-00001" summary="init commit">
239
  <option name="closed" value="true" />
 
419
  <option name="project" value="LOCAL" />
420
  <updated>1705850745341</updated>
421
  </task>
422
+ <task id="LOCAL-00024" summary="Update UI">
423
+ <option name="closed" value="true" />
424
+ <created>1706108912066</created>
425
+ <option name="number" value="00024" />
426
+ <option name="presentableId" value="LOCAL-00024" />
427
+ <option name="project" value="LOCAL" />
428
+ <updated>1706108912066</updated>
429
+ </task>
430
+ <option name="localTasksCounter" value="25" />
431
  <servers />
432
  </component>
433
  <component name="TypeScriptGeneratedFilesManager">
 
483
  </line-breakpoint>
484
  <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
485
  <url>file://$PROJECT_DIR$/evaluator.py</url>
486
+ <line>81</line>
487
  <option name="timeStamp" value="17" />
488
  </line-breakpoint>
489
  </breakpoints>
 
493
  <SUITE FILE_PATH="coverage/detector$yolo_dataset.coverage" NAME="yolo_dataset Coverage Results" MODIFIED="1705852113469" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
494
  <SUITE FILE_PATH="coverage/detector$evaluator.coverage" NAME="evaluator Coverage Results" MODIFIED="1706107083258" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
495
  <SUITE FILE_PATH="coverage/detector$demo.coverage" NAME="demo Coverage Results" MODIFIED="1706108414052" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
496
+ <SUITE FILE_PATH="coverage/detector$streamlit.coverage" NAME="streamlit Coverage Results" MODIFIED="1706110239818" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
497
  <SUITE FILE_PATH="coverage/detector$extract.coverage" NAME="yolo_dataset Coverage Results" MODIFIED="1705764465837" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
498
  </component>
499
  </project>
demo.py CHANGED
@@ -51,14 +51,18 @@ def evaluate(model: YoloModel):
51
  # Slider for changing confidence
52
  confidence = st.slider('Confidence Threshold', 0, 100, 30)
53
  yolo_dataset = YoloDataset.from_zip_file(ZipFile(buffer))
54
- metrics_res = capture_output(evaluator.evaluate)(model=model.model,
55
- dataset=yolo_dataset,
56
- confidence_threshold=confidence / 100.0)
57
- with metrics_res as metrics:
 
 
58
  st.json(metrics.speed)
59
- st.json(metrics.result_dict)
60
- for pic in os.listdir(metrics.val.save_dir):
61
- st.image(os.path.join(metrics.val.save_dir, pic), use_column_width=True)
 
 
62
 
63
 
64
  def detect(model: YoloModel):
 
51
  # Slider for changing confidence
52
  confidence = st.slider('Confidence Threshold', 0, 100, 30)
53
  yolo_dataset = YoloDataset.from_zip_file(ZipFile(buffer))
54
+ capture_output(evaluator.coco_evaluate)(model=model.model,
55
+ dataset=yolo_dataset,
56
+ confidence_threshold=confidence / 100.0)
57
+ with evaluator.yolo_evaluator(model, yolo_dataset) as metrics:
58
+ st.subheader("Metrics:")
59
+ st.write("Speed: ")
60
  st.json(metrics.speed)
61
+ st.write("Results: ")
62
+ st.json(metrics.results_dict)
63
+ for pic in os.listdir(metrics.save_dir):
64
+ st.write(pic)
65
+ st.image(os.path.join(metrics.save_dir, pic), use_column_width=True)
66
 
67
 
68
  def detect(model: YoloModel):
evaluator.py CHANGED
@@ -11,7 +11,7 @@ from yolo_model import YoloModel
11
  image_loader = Callable[[str], Image]
12
 
13
 
14
- def evaluate(model: YoloModel, dataset: YoloDataset, confidence_threshold=0.6):
15
  coco_gt = dataset.to_coco()
16
  # initialize evaluator with ground truth (gt)
17
  evaluator = CocoEvaluator(coco_gt=coco_gt, iou_types=["bbox"])
@@ -30,10 +30,13 @@ def evaluate(model: YoloModel, dataset: YoloDataset, confidence_threshold=0.6):
30
 
31
  if len(evaluator.eval_imgs["bbox"]) == 0:
32
  print("No detections!")
33
- return
34
- evaluator.synchronize_between_processes()
35
- evaluator.accumulate()
36
- evaluator.summarize()
 
 
 
37
  return Metrics(model=model, material=dataset.to_material())
38
 
39
 
@@ -45,6 +48,7 @@ class Metrics:
45
 
46
  def __enter__(self):
47
  if self.val is None:
 
48
  self.val = self.model.model.val(data=self.material.yaml)
49
  return self.val
50
 
 
11
  image_loader = Callable[[str], Image]
12
 
13
 
14
+ def coco_evaluate(model: YoloModel, dataset: YoloDataset, confidence_threshold=0.6):
15
  coco_gt = dataset.to_coco()
16
  # initialize evaluator with ground truth (gt)
17
  evaluator = CocoEvaluator(coco_gt=coco_gt, iou_types=["bbox"])
 
30
 
31
  if len(evaluator.eval_imgs["bbox"]) == 0:
32
  print("No detections!")
33
+ else:
34
+ evaluator.synchronize_between_processes()
35
+ evaluator.accumulate()
36
+ evaluator.summarize()
37
+
38
+
39
+ def yolo_evaluator(model: YoloModel, dataset: YoloDataset):
40
  return Metrics(model=model, material=dataset.to_material())
41
 
42
 
 
48
 
49
  def __enter__(self):
50
  if self.val is None:
51
+ self.material.__enter__()
52
  self.val = self.model.model.val(data=self.material.yaml)
53
  return self.val
54