artelabsuper commited on
Commit
85993f4
1 Parent(s): af0160d

demo work with demo button

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. .gitignore +2 -0
  3. app.py +148 -1
  4. demo_data/best_model_annual.pth +3 -0
  5. demo_data/best_model_daily.pth +3 -0
  6. demo_data/classes-newmapping.txt +8 -0
  7. demo_data/lombardia/example/2/20190104.tif +3 -0
  8. demo_data/lombardia/example/2/20190104_MSAVI.tif +3 -0
  9. demo_data/lombardia/example/2/20190109.tif +3 -0
  10. demo_data/lombardia/example/2/20190109_MSAVI.tif +3 -0
  11. demo_data/lombardia/example/2/20190114.tif +3 -0
  12. demo_data/lombardia/example/2/20190114_MSAVI.tif +3 -0
  13. demo_data/lombardia/example/2/20190119.tif +3 -0
  14. demo_data/lombardia/example/2/20190119_MSAVI.tif +3 -0
  15. demo_data/lombardia/example/2/20190124.tif +3 -0
  16. demo_data/lombardia/example/2/20190124_MSAVI.tif +3 -0
  17. demo_data/lombardia/example/2/20190129.tif +3 -0
  18. demo_data/lombardia/example/2/20190129_MSAVI.tif +3 -0
  19. demo_data/lombardia/example/2/20190203.tif +3 -0
  20. demo_data/lombardia/example/2/20190203_MSAVI.tif +3 -0
  21. demo_data/lombardia/example/2/20190208.tif +3 -0
  22. demo_data/lombardia/example/2/20190208_MSAVI.tif +3 -0
  23. demo_data/lombardia/example/2/20190213.tif +3 -0
  24. demo_data/lombardia/example/2/20190213_MSAVI.tif +3 -0
  25. demo_data/lombardia/example/2/20190218.tif +3 -0
  26. demo_data/lombardia/example/2/20190218_MSAVI.tif +3 -0
  27. demo_data/lombardia/example/2/20190223.tif +3 -0
  28. demo_data/lombardia/example/2/20190223_MSAVI.tif +3 -0
  29. demo_data/lombardia/example/2/20190228.tif +3 -0
  30. demo_data/lombardia/example/2/20190228_MSAVI.tif +3 -0
  31. demo_data/lombardia/example/2/20190305.tif +3 -0
  32. demo_data/lombardia/example/2/20190305_MSAVI.tif +3 -0
  33. demo_data/lombardia/example/2/20190310.tif +3 -0
  34. demo_data/lombardia/example/2/20190310_MSAVI.tif +3 -0
  35. demo_data/lombardia/example/2/20190315.tif +3 -0
  36. demo_data/lombardia/example/2/20190315_MSAVI.tif +3 -0
  37. demo_data/lombardia/example/2/20190320.tif +3 -0
  38. demo_data/lombardia/example/2/20190320_MSAVI.tif +3 -0
  39. demo_data/lombardia/example/2/20190325.tif +3 -0
  40. demo_data/lombardia/example/2/20190325_MSAVI.tif +3 -0
  41. demo_data/lombardia/example/2/20190330.tif +3 -0
  42. demo_data/lombardia/example/2/20190330_MSAVI.tif +3 -0
  43. demo_data/lombardia/example/2/20190404.tif +3 -0
  44. demo_data/lombardia/example/2/20190404_MSAVI.tif +3 -0
  45. demo_data/lombardia/example/2/20190409.tif +3 -0
  46. demo_data/lombardia/example/2/20190409_MSAVI.tif +3 -0
  47. demo_data/lombardia/example/2/20190414.tif +3 -0
  48. demo_data/lombardia/example/2/20190414_MSAVI.tif +3 -0
  49. demo_data/lombardia/example/2/20190419.tif +3 -0
  50. demo_data/lombardia/example/2/20190419_MSAVI.tif +3 -0
.gitattributes CHANGED
@@ -31,3 +31,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
31
  *.zip filter=lfs diff=lfs merge=lfs -text
32
  *.zst filter=lfs diff=lfs merge=lfs -text
33
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
31
  *.zip filter=lfs diff=lfs merge=lfs -text
32
  *.zst filter=lfs diff=lfs merge=lfs -text
33
  *tfevents* filter=lfs diff=lfs merge=lfs -text
34
+ *.tif filter=lfs diff=lfs merge=lfs -text
.gitignore CHANGED
@@ -1,2 +1,4 @@
1
  venv
2
  __pycache__
 
 
 
1
  venv
2
  __pycache__
3
+ uploaded_samples
4
+ demo_data/results
app.py CHANGED
@@ -1,5 +1,41 @@
 
1
  import streamlit as st
2
  import zipfile
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  st.title('Sentinel 2 Crop Mapping')
5
  st.markdown('Using a <model> and giving a zip that contains 32 tiff named correctly you can reach prediction of crop mapping og the area.')
@@ -9,6 +45,117 @@ file_uploaded = st.file_uploader(
9
  type=["zip"],
10
  accept_multiple_files=False,
11
  )
 
12
  if file_uploaded is not None:
13
  with zipfile.ZipFile(file_uploaded, "r") as z:
14
- z.extractall(".")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
  import streamlit as st
3
  import zipfile
4
+ import torch
5
+ from utils import *
6
+ import matplotlib.pyplot as plt
7
+
8
+ # Load Model
9
+ # @title Load pretrained weights
10
+
11
+ best_model_daily_file_name = "best_model_daily.pth"
12
+ best_model_annual_file_name = "best_model_annual.pth"
13
+
14
+ first_input_batch = torch.zeros(71, 9, 5, 48, 48)
15
+ # first_input_batch = first_input_batch.view(-1, *first_input_batch.shape[2:])
16
+ daily_model = FPN(opt, first_input_batch, opt.win_size)
17
+ annual_model = SimpleNN(opt)
18
+
19
+ if torch.cuda.is_available():
20
+ daily_model = torch.nn.DataParallel(daily_model).cuda()
21
+ annual_model = torch.nn.DataParallel(annual_model).cuda()
22
+ daily_model = torch.nn.DataParallel(daily_model).cuda()
23
+ annual_model = torch.nn.DataParallel(annual_model).cuda()
24
+ else:
25
+ daily_model = torch.nn.DataParallel(daily_model).cpu()
26
+ annual_model = torch.nn.DataParallel(annual_model).cpu()
27
+ daily_model = torch.nn.DataParallel(daily_model).cpu()
28
+ annual_model = torch.nn.DataParallel(annual_model).cpu()
29
+
30
+ print('trying to resume previous saved models...')
31
+ state = resume(
32
+ os.path.join(opt.resume_path, best_model_daily_file_name),
33
+ model=daily_model, optimizer=None)
34
+ state = resume(
35
+ os.path.join(opt.resume_path, best_model_annual_file_name),
36
+ model=annual_model, optimizer=None)
37
+ daily_model = daily_model.eval()
38
+ annual_model = annual_model.eval()
39
 
40
  st.title('Sentinel 2 Crop Mapping')
41
  st.markdown('Using a <model> and giving a zip that contains 32 tiff named correctly you can reach prediction of crop mapping og the area.')
 
45
  type=["zip"],
46
  accept_multiple_files=False,
47
  )
48
+ sample_path = None
49
  if file_uploaded is not None:
50
  with zipfile.ZipFile(file_uploaded, "r") as z:
51
+ z.extractall("uploaded_samples")
52
+ sample_path = "uploaded_samples/" + file_uploaded.name[:-4]
53
+ st.markdown('or use a demo sample')
54
+ if st.button('sample 1'):
55
+ sample_path = 'demo_data/lombardia'
56
+
57
+ if sample_path is not None:
58
+ st.markdown(f'elaborating {sample_path}...')
59
+
60
+ validationdataset = SentinelDailyAnnualDatasetNoLabel(
61
+ sample_path,
62
+ opt.years,
63
+ opt.classes_path,
64
+ opt.sample_duration,
65
+ opt.win_size,
66
+ tileids=None)
67
+ validationdataloader = torch.utils.data.DataLoader(
68
+ validationdataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.workers)
69
+
70
+ st.markdown(f'predict in progress...')
71
+
72
+ out_dir = os.path.join(opt.result_path, "seg_maps")
73
+ if not os.path.exists(out_dir):
74
+ os.makedirs(out_dir)
75
+ for i, (x_dailies, dates, dirs_path) in enumerate(validationdataloader):
76
+ with torch.no_grad():
77
+ # x_dailies, dates, dirs_path = next(iter(validationdataloader))
78
+ # reshape merging the first two dimensions
79
+ x_dailies = x_dailies.view(-1, *x_dailies.shape[2:])
80
+ if torch.cuda.is_available():
81
+ x_dailies = x_dailies.cuda()
82
+
83
+ feat_daily, outs_daily = daily_model.forward(x_dailies)
84
+ # return to original size of batch and year
85
+ outs_daily = outs_daily.view(
86
+ opt.batch_size, opt.sample_duration, *outs_daily.shape[1:])
87
+ feat_daily = feat_daily.view(
88
+ opt.batch_size, opt.sample_duration, *feat_daily.shape[1:])
89
+
90
+ _, out_annual = annual_model.forward(feat_daily)
91
+ pred_annual = torch.argmax(out_annual, dim=1).squeeze(1)
92
+ pred_annual = pred_annual.cpu().numpy()
93
+ # Remapping the labels
94
+ pred_annual_nn = ids_to_labels(
95
+ validationdataloader, pred_annual).astype(numpy.uint8)
96
+
97
+ for batch in range(feat_daily.shape[0]):
98
+ # _, profile = read(os.path.join(dirs_path[batch], '20191230_MSAVI.tif')) # todo get the last image
99
+ _, tmp_path = get_patch_id(validationdataset.samples, 0)
100
+ dates = get_all_dates(
101
+ tmp_path, validationdataset.max_seq_length)
102
+ last_tif_path = os.path.join(tmp_path, dates[-1] + ".tif")
103
+ _, profile = read(last_tif_path)
104
+ profile["name"] = dirs_path[batch]
105
+
106
+ pth = dirs_path[batch].split(os.path.sep)[-3:]
107
+ full_pth_patch = os.path.join(
108
+ out_dir, pth[1] + '-' + pth[0], pth[2])
109
+
110
+ if not os.path.exists(full_pth_patch):
111
+ os.makedirs(full_pth_patch)
112
+ full_pth_pred = os.path.join(
113
+ full_pth_patch, 'patch-pred-nn.tif')
114
+ profile.update({
115
+ 'nodata': None,
116
+ 'dtype': 'uint8',
117
+ 'count': 1})
118
+ with rasterio.open(full_pth_pred, 'w', **profile) as dst:
119
+ dst.write_band(1, pred_annual_nn[batch])
120
+
121
+ # patch_predictions = None
122
+ for ch in range(len(dates)):
123
+ soft_seg = outs_daily[batch, ch, :, :, :]
124
+ # transform probs into a hard segmentation
125
+ pred_daily = torch.argmax(soft_seg, dim=0)
126
+ pred_daily = pred_daily.cpu()
127
+ daily_pred = ids_to_labels(
128
+ validationdataloader, pred_daily).astype(numpy.uint8)
129
+ # if patch_predictions is None:
130
+ # patch_predictions = numpy.expand_dims(daily_pred, axis=0)
131
+ # else:
132
+ # patch_predictions = numpy.concatenate((patch_predictions, numpy.expand_dims(daily_pred, axis=0)),
133
+ # axis=0)
134
+
135
+ # save GT image in opt.root_path
136
+ full_pth_date = os.path.join(
137
+ full_pth_patch, dates[ch][batch] + f'-ch{ch}-b{batch}-daily-pred.tif')
138
+ profile.update({
139
+ 'nodata': None,
140
+ 'dtype': 'uint8',
141
+ 'count': 1})
142
+ with rasterio.open(full_pth_date, 'w', **profile) as dst:
143
+ dst.write_band(1, daily_pred)
144
+
145
+ st.markdown('End prediction')
146
+
147
+ folder = "demo_data/results/seg_maps/example-lombardia/2"
148
+ paths = os.listdir(folder)
149
+
150
+ file_picker = st.selectbox("Select day predict (annual is patch-pred-nn.tif)", paths, index=paths.index('patch-pred-nn.tif'))
151
+
152
+ file_path = os.path.join(folder, file_picker)
153
+ print(file_path)
154
+ target, profile = read(file_path)
155
+ target = np.squeeze(target)
156
+ target = [classes_color_map[p] for p in target]
157
+
158
+ fig, ax = plt.subplots()
159
+ ax.imshow(target)
160
+ st.pyplot(fig)
161
+
demo_data/best_model_annual.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6c4d7a0be5d24a55e19f257b37b5bd034f8dceb82e4355e2c98c35995b7bce36
3
+ size 326134860
demo_data/best_model_daily.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:820efc0edf6e22b12049a0dcce37880808d3e5c8773ed7b30441ab2893515253
3
+ size 646423341
demo_data/classes-newmapping.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ 0|Unknown|20180201|20181230
2
+ 2|Other cereals|20180324|20180512
3
+ 4|Woods and other tree crops|20180521|20180610
4
+ 7|Forage|20180402|20180504
5
+ 9|Corn|20180612|20180729
6
+ 12|Rice|20180606|20180902
7
+ 1,3,5,6,8,10,11,13,14,15,16,20|Unknow cropland|20180201|20181230
8
+ 17,18,19|No arable land|20180201|20181230
demo_data/lombardia/example/2/20190104.tif ADDED

Git LFS Details

  • SHA256: 0c94b20ffd7571807aa0020a3e84d13c342ae20be46b09c3fa30c238c6f6357c
  • Pointer size: 130 Bytes
  • Size of remote file: 37.3 kB
demo_data/lombardia/example/2/20190104_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 45646b9a5acf52354198ba1fc485f501db6d6bfe7022c772d62fc85feebb9326
  • Pointer size: 129 Bytes
  • Size of remote file: 5.21 kB
demo_data/lombardia/example/2/20190109.tif ADDED

Git LFS Details

  • SHA256: f55283e02f82998052bce2d64716996dc70659a7f39d9121858109a05b7fd06c
  • Pointer size: 130 Bytes
  • Size of remote file: 37.8 kB
demo_data/lombardia/example/2/20190109_MSAVI.tif ADDED

Git LFS Details

  • SHA256: cc465b965eb59d642e44346ed0a353a28750a3f5f48b59349430b56760c4a3c2
  • Pointer size: 129 Bytes
  • Size of remote file: 5.89 kB
demo_data/lombardia/example/2/20190114.tif ADDED

Git LFS Details

  • SHA256: 6de35a778963ecefe2c89716c1c8080c0fe0f28263af1bf4903426f0fe3aafc9
  • Pointer size: 130 Bytes
  • Size of remote file: 38 kB
demo_data/lombardia/example/2/20190114_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 7c593c57f88ea02e4f960b413e6c1e98e22872c9c9fa775f9fe0431d8fb8c4ce
  • Pointer size: 129 Bytes
  • Size of remote file: 5.99 kB
demo_data/lombardia/example/2/20190119.tif ADDED

Git LFS Details

  • SHA256: 71ecf7cc3bf67383d1bfa86e4ba24220453cc56c791b288e451c511b0f7ba18d
  • Pointer size: 130 Bytes
  • Size of remote file: 35.5 kB
demo_data/lombardia/example/2/20190119_MSAVI.tif ADDED

Git LFS Details

  • SHA256: eaefb84965c9e7359e19777f3ebc598344896c87e3cf25a8548668ca97060ad9
  • Pointer size: 129 Bytes
  • Size of remote file: 4.69 kB
demo_data/lombardia/example/2/20190124.tif ADDED

Git LFS Details

  • SHA256: 5a62f00ed8379367b328c1a255c8558f6682c643fc55bbba12a3818c1408437b
  • Pointer size: 130 Bytes
  • Size of remote file: 36.5 kB
demo_data/lombardia/example/2/20190124_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 27dd32479af98502b67c0d773fde36f197c60e5f3c27398397265d14766db4a3
  • Pointer size: 129 Bytes
  • Size of remote file: 5.85 kB
demo_data/lombardia/example/2/20190129.tif ADDED

Git LFS Details

  • SHA256: 3e2fde2de1b559f7a58ba02f8d4ccdf87fd883669cc4bc9d8b4f5f030ed6317f
  • Pointer size: 130 Bytes
  • Size of remote file: 37.2 kB
demo_data/lombardia/example/2/20190129_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 5b2b849664835a5c5d6d289c942c5d2b7549f7cb5e1b5f13ff2f8ab3f7135446
  • Pointer size: 129 Bytes
  • Size of remote file: 5.85 kB
demo_data/lombardia/example/2/20190203.tif ADDED

Git LFS Details

  • SHA256: 742c43825835b164608f855d99ef4f3b524625d0b83d174e89f2608568e00a9b
  • Pointer size: 130 Bytes
  • Size of remote file: 35.6 kB
demo_data/lombardia/example/2/20190203_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 33ed3cf5733bc34bb773811fe75bff00abc4a0b00fcbad6e3fb8d9b97a9ac787
  • Pointer size: 129 Bytes
  • Size of remote file: 4.19 kB
demo_data/lombardia/example/2/20190208.tif ADDED

Git LFS Details

  • SHA256: c04ecb495c9a8abf5de4d35f8debd0389c2eee1f0bf6ffc6d5ed8ce321144e80
  • Pointer size: 130 Bytes
  • Size of remote file: 37.6 kB
demo_data/lombardia/example/2/20190208_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 0cf7ed58170d536604893624eb865dc8dec8e51b2258474b9375539746d80a58
  • Pointer size: 129 Bytes
  • Size of remote file: 5.83 kB
demo_data/lombardia/example/2/20190213.tif ADDED

Git LFS Details

  • SHA256: 5add48ba9867f3ee4adc140c22fa458ddac413bcace9ca8ccab0d669d02479df
  • Pointer size: 130 Bytes
  • Size of remote file: 37.2 kB
demo_data/lombardia/example/2/20190213_MSAVI.tif ADDED

Git LFS Details

  • SHA256: e4e4320a2b9fa9720678d1b3b05ce4284ec3aa14c587a012bd1a05595a39ceb2
  • Pointer size: 129 Bytes
  • Size of remote file: 5.6 kB
demo_data/lombardia/example/2/20190218.tif ADDED

Git LFS Details

  • SHA256: a2dd948d2a4ba5cfe01a836496d2462212978767eb9142ceb9df25bd41a4e6bd
  • Pointer size: 130 Bytes
  • Size of remote file: 38.5 kB
demo_data/lombardia/example/2/20190218_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 2ecd82c7e4c0a710abcb11719bf970765b93198f729c1e1345b31afda57038ae
  • Pointer size: 129 Bytes
  • Size of remote file: 5.74 kB
demo_data/lombardia/example/2/20190223.tif ADDED

Git LFS Details

  • SHA256: 5c50f6347d57401065fe96baf214fda01ac56e0980525f53bfdf161df6299219
  • Pointer size: 130 Bytes
  • Size of remote file: 39.2 kB
demo_data/lombardia/example/2/20190223_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 803128e66dec1a10548e1b0a3b2b97f3d725698c21b6aa3fdd3073de4be396ab
  • Pointer size: 129 Bytes
  • Size of remote file: 5.88 kB
demo_data/lombardia/example/2/20190228.tif ADDED

Git LFS Details

  • SHA256: 2a29a5eecea7dba19e427abc313c5f238707e33e57c33c86a1c70e9514a92286
  • Pointer size: 130 Bytes
  • Size of remote file: 39.1 kB
demo_data/lombardia/example/2/20190228_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 109375eca6a06df8e30c1e64b6ed1f91b4405a0c0d55522699aa379b8946ad97
  • Pointer size: 129 Bytes
  • Size of remote file: 5.87 kB
demo_data/lombardia/example/2/20190305.tif ADDED

Git LFS Details

  • SHA256: 9c92e1de8ec44f07c269f2c0646c186bd1c7149fd855c2260e8a24fbcd1cd47a
  • Pointer size: 130 Bytes
  • Size of remote file: 37 kB
demo_data/lombardia/example/2/20190305_MSAVI.tif ADDED

Git LFS Details

  • SHA256: d47e81878088407adf489c87b583a0a4497fa6266887f95adeea0c2d4430b145
  • Pointer size: 129 Bytes
  • Size of remote file: 5.54 kB
demo_data/lombardia/example/2/20190310.tif ADDED

Git LFS Details

  • SHA256: e3291ceaad6bb04e4ab982545663cb308456a2246aaa54cb9d5f3b23bee0b983
  • Pointer size: 130 Bytes
  • Size of remote file: 36 kB
demo_data/lombardia/example/2/20190310_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 9a54fdbe8e33d4e1bb853a6be9620b9c83c913438c197672eb9fdb46757256bc
  • Pointer size: 129 Bytes
  • Size of remote file: 5.12 kB
demo_data/lombardia/example/2/20190315.tif ADDED

Git LFS Details

  • SHA256: e8242615ccd6cb963849799e54557248a90c37d6da58a6846a02d9e351925287
  • Pointer size: 130 Bytes
  • Size of remote file: 39.4 kB
demo_data/lombardia/example/2/20190315_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 934d946cf262959fe9dc68f5226f9e84cdb21d3b552c4b5ba04caabc50436484
  • Pointer size: 129 Bytes
  • Size of remote file: 5.83 kB
demo_data/lombardia/example/2/20190320.tif ADDED

Git LFS Details

  • SHA256: 98edceed82c6e8b65bf2ec27f9e3ea5c2422e7c7da264e05eb1aa52aa1081463
  • Pointer size: 130 Bytes
  • Size of remote file: 39.3 kB
demo_data/lombardia/example/2/20190320_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 1abbe746efe824eb9454ba72aa039b3545a131ae1fb24623b4e07386e52b76b5
  • Pointer size: 129 Bytes
  • Size of remote file: 5.87 kB
demo_data/lombardia/example/2/20190325.tif ADDED

Git LFS Details

  • SHA256: fcb18f1a204a4dcf30b10836825f061717d88e8329e6984c01bd10c94e35b0fd
  • Pointer size: 130 Bytes
  • Size of remote file: 39.2 kB
demo_data/lombardia/example/2/20190325_MSAVI.tif ADDED

Git LFS Details

  • SHA256: f950b5eac2a5be6d873385b35b2135c58befa28e883e07a6213de1651d5e4407
  • Pointer size: 129 Bytes
  • Size of remote file: 5.86 kB
demo_data/lombardia/example/2/20190330.tif ADDED

Git LFS Details

  • SHA256: 20327d5328947da1d15824887e6fae55857d775a0a97bec8c4aafbe82be92889
  • Pointer size: 130 Bytes
  • Size of remote file: 39.2 kB
demo_data/lombardia/example/2/20190330_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 73612b4f13f30b317611e00016f15bb199b12448e9412c4d5032fe5d06ca0020
  • Pointer size: 129 Bytes
  • Size of remote file: 5.92 kB
demo_data/lombardia/example/2/20190404.tif ADDED

Git LFS Details

  • SHA256: dc5ccfd4072e53eb34630de5ed3eceda5c68622a7b41359c02d678973919376f
  • Pointer size: 130 Bytes
  • Size of remote file: 28.9 kB
demo_data/lombardia/example/2/20190404_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 6fcbb652d7833609b1740e85dfdc66af58fdb304c85f97b2167f2d97d73e63db
  • Pointer size: 129 Bytes
  • Size of remote file: 3.61 kB
demo_data/lombardia/example/2/20190409.tif ADDED

Git LFS Details

  • SHA256: a35822a5aafbc45ca0eb005da17ce7d76250ba6633f69dbd4e6b39159d5acf84
  • Pointer size: 130 Bytes
  • Size of remote file: 38.1 kB
demo_data/lombardia/example/2/20190409_MSAVI.tif ADDED

Git LFS Details

  • SHA256: ac7c01de5be8c8691a42c2dcbee212c6f97b29d2c5a8c7d5679e83c5c790b511
  • Pointer size: 129 Bytes
  • Size of remote file: 4.39 kB
demo_data/lombardia/example/2/20190414.tif ADDED

Git LFS Details

  • SHA256: 8c09dd573ad82864c7c9bf9fd06e85ee19bce14f829d18563485bc09222b573e
  • Pointer size: 130 Bytes
  • Size of remote file: 26.9 kB
demo_data/lombardia/example/2/20190414_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 79cb4330749e14bfc21fce428e968565e769dd5001b4e4c6c8cc8b8dc078aaf7
  • Pointer size: 129 Bytes
  • Size of remote file: 3.95 kB
demo_data/lombardia/example/2/20190419.tif ADDED

Git LFS Details

  • SHA256: 11d530ac13cfd47319a5d41bd7fd14fa43031319c99b4b6e6224c4e54de55c49
  • Pointer size: 130 Bytes
  • Size of remote file: 39 kB
demo_data/lombardia/example/2/20190419_MSAVI.tif ADDED

Git LFS Details

  • SHA256: 75b7dadf1a399421e8a17991b717d7a3af301714e567efb213ba6ddf5f7925c3
  • Pointer size: 129 Bytes
  • Size of remote file: 4.46 kB