Janne Mäyrä commited on
Commit
86ecc5c
·
unverified ·
1 Parent(s): 00adade
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +1 -0
  2. app.py +85 -0
  3. examples/Hiidenportti_121.png +0 -0
  4. examples/Hiidenportti_122.png +0 -0
  5. examples/Hiidenportti_123.png +0 -0
  6. examples/Hiidenportti_124.png +0 -0
  7. examples/Hiidenportti_125.png +0 -0
  8. examples/Hiidenportti_127.png +0 -0
  9. examples/Hiidenportti_128.png +0 -0
  10. examples/Hiidenportti_129.png +0 -0
  11. examples/Hiidenportti_13.png +0 -0
  12. examples/Hiidenportti_131.png +0 -0
  13. examples/Hiidenportti_133.png +0 -0
  14. examples/Hiidenportti_134.png +0 -0
  15. examples/Hiidenportti_135.png +0 -0
  16. examples/Hiidenportti_136.png +0 -0
  17. examples/Hiidenportti_137.png +0 -0
  18. examples/Hiidenportti_139.png +0 -0
  19. examples/Hiidenportti_140.png +0 -0
  20. examples/Hiidenportti_141.png +0 -0
  21. examples/Hiidenportti_142.png +0 -0
  22. examples/Hiidenportti_143.png +0 -0
  23. examples/Hiidenportti_151.png +0 -0
  24. examples/Hiidenportti_157.png +0 -0
  25. examples/Hiidenportti_158.png +0 -0
  26. examples/Hiidenportti_159.png +0 -0
  27. examples/Hiidenportti_161.png +0 -0
  28. examples/Hiidenportti_162.png +0 -0
  29. examples/Hiidenportti_165.png +0 -0
  30. examples/Hiidenportti_167.png +0 -0
  31. examples/Hiidenportti_169.png +0 -0
  32. examples/Hiidenportti_172.png +0 -0
  33. examples/Hiidenportti_175.png +0 -0
  34. examples/Hiidenportti_177.png +0 -0
  35. examples/Hiidenportti_178.png +0 -0
  36. examples/Hiidenportti_184.png +0 -0
  37. examples/Hiidenportti_19.png +0 -0
  38. examples/Hiidenportti_196.png +0 -0
  39. examples/Hiidenportti_197.png +0 -0
  40. examples/Hiidenportti_198.png +0 -0
  41. examples/Hiidenportti_20.png +0 -0
  42. examples/Hiidenportti_200.png +0 -0
  43. examples/Hiidenportti_201.png +0 -0
  44. examples/Hiidenportti_202.png +0 -0
  45. examples/Hiidenportti_204.png +0 -0
  46. examples/Hiidenportti_205.png +0 -0
  47. examples/Hiidenportti_26.png +0 -0
  48. examples/Hiidenportti_32.png +0 -0
  49. examples/Hiidenportti_48.png +0 -0
  50. examples/Hiidenportti_53.png +0 -0
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ __pycache__
app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from ultralytics import YOLO
3
+
4
+ import os
5
+ from pathlib import Path
6
+
7
+ model_paths = {
8
+ 'YOLOv8n': '/mnt/d/Users/E1005164/articles/deadwood-yolov8/codes/runs_pretrained/yolov8n_Adam',
9
+ 'YOLOv8s': '/mnt/d/Users/E1005164/articles/deadwood-yolov8/codes/runs_pretrained/yolov8s_Adam',
10
+ 'YOLOv8m': '/mnt/d/Users/E1005164/articles/deadwood-yolov8/codes/runs_pretrained/yolov8m_Adam',
11
+ 'YOLOv8l': '/mnt/d/Users/E1005164/articles/deadwood-yolov8/codes/runs_pretrained/yolov8l_Adam',
12
+ 'YOLOv8x': '/mnt/d/Users/E1005164/articles/deadwood-yolov8/codes/runs_pretrained/yolov8x_Adam',
13
+ }
14
+
15
+ def run_models(
16
+ im:gr.Image=None,
17
+ model_type:gr.Dropdown='YOLOv8n',
18
+ conf_thr:gr.Slider=0.25
19
+ ):
20
+
21
+ hp_model = f'{model_paths[model_type]}_hp/weights/best.pt'
22
+ model = YOLO(hp_model)
23
+ model.to(device='cpu')
24
+ hp_result = model(im[:,:,::-1], conf=conf_thr)
25
+ hp_im = hp_result[0].plot()
26
+
27
+ spk_model = f'{model_paths[model_type]}_spk/weights/best.pt'
28
+ model = YOLO(spk_model)
29
+ model.to(device='cpu')
30
+
31
+ spk_result = model(im[:,:,::-1], conf=conf_thr)
32
+ spk_im = spk_result[0].plot()
33
+
34
+ both_model = f'{model_paths[model_type]}_both/weights/best.pt'
35
+ model = YOLO(both_model)
36
+ model.to(device='cpu')
37
+
38
+ both_result = model(im[:,:,::-1], conf=conf_thr)
39
+ both_im = both_result[0].plot()
40
+ return [
41
+ (hp_im[:,:,::-1], 'HP'),
42
+ (spk_im[:,:,::-1], 'SPK'),
43
+ (both_im[:,:,::-1], 'HP+SPK')
44
+ ]
45
+
46
+ ex_dir = Path('examples')
47
+
48
+ loc = gr.Textbox(label='Location')
49
+
50
+ desc_str = """
51
+ Demo application for YOLOv8 models for deadwood segmentation from RGB UAV imagery. Results are shown on three different models: HP is trained only with data from Hiidenportti,
52
+ SPK only with data from Sudenpesänkangas and HP+SPK is trained with both sites.
53
+ """
54
+
55
+ with gr.Blocks() as demo:
56
+ with gr.Row():
57
+ gr.Markdown(desc_str)
58
+ with gr.Row():
59
+ with gr.Column(2):
60
+ inp = gr.Image(label='Input image', sources='upload')
61
+ with gr.Column(1):
62
+ ex_list = [[ex_dir/i, i.split('_')[0]] for i in os.listdir(ex_dir)]
63
+ ex = gr.Examples(ex_list, inputs=[inp, loc], label=None,
64
+ cache_examples=False, examples_per_page=5)
65
+ with gr.Column(1):
66
+ loc.render()
67
+ model = gr.Dropdown([
68
+ 'YOLOv8n',
69
+ 'YOLOv8s',
70
+ 'YOLOv8m',
71
+ 'YOLOv8l',
72
+ 'YOLOv8x'
73
+ ],
74
+ value='YOLOv8n', label='Model')
75
+ conf = gr.Slider(minimum=0.0, maximum=1.0, value=0.25, step=0.05, label='Confidence Threshold')
76
+ btn = gr.Button()
77
+ with gr.Row():
78
+ with gr.Column():
79
+ gallery = gr.Gallery(
80
+ label='Predictions', show_label=True, elem_id='gallery',
81
+ columns=[3], rows=[1], object_fit='contain', interactive=False
82
+ )
83
+ btn.click(run_models, [inp, model, conf], gallery)
84
+
85
+ if __name__ == '__main__': demo.launch(share=False)
examples/Hiidenportti_121.png ADDED
examples/Hiidenportti_122.png ADDED
examples/Hiidenportti_123.png ADDED
examples/Hiidenportti_124.png ADDED
examples/Hiidenportti_125.png ADDED
examples/Hiidenportti_127.png ADDED
examples/Hiidenportti_128.png ADDED
examples/Hiidenportti_129.png ADDED
examples/Hiidenportti_13.png ADDED
examples/Hiidenportti_131.png ADDED
examples/Hiidenportti_133.png ADDED
examples/Hiidenportti_134.png ADDED
examples/Hiidenportti_135.png ADDED
examples/Hiidenportti_136.png ADDED
examples/Hiidenportti_137.png ADDED
examples/Hiidenportti_139.png ADDED
examples/Hiidenportti_140.png ADDED
examples/Hiidenportti_141.png ADDED
examples/Hiidenportti_142.png ADDED
examples/Hiidenportti_143.png ADDED
examples/Hiidenportti_151.png ADDED
examples/Hiidenportti_157.png ADDED
examples/Hiidenportti_158.png ADDED
examples/Hiidenportti_159.png ADDED
examples/Hiidenportti_161.png ADDED
examples/Hiidenportti_162.png ADDED
examples/Hiidenportti_165.png ADDED
examples/Hiidenportti_167.png ADDED
examples/Hiidenportti_169.png ADDED
examples/Hiidenportti_172.png ADDED
examples/Hiidenportti_175.png ADDED
examples/Hiidenportti_177.png ADDED
examples/Hiidenportti_178.png ADDED
examples/Hiidenportti_184.png ADDED
examples/Hiidenportti_19.png ADDED
examples/Hiidenportti_196.png ADDED
examples/Hiidenportti_197.png ADDED
examples/Hiidenportti_198.png ADDED
examples/Hiidenportti_20.png ADDED
examples/Hiidenportti_200.png ADDED
examples/Hiidenportti_201.png ADDED
examples/Hiidenportti_202.png ADDED
examples/Hiidenportti_204.png ADDED
examples/Hiidenportti_205.png ADDED
examples/Hiidenportti_26.png ADDED
examples/Hiidenportti_32.png ADDED
examples/Hiidenportti_48.png ADDED
examples/Hiidenportti_53.png ADDED