diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..8e3d19ba --- /dev/null +++ b/.gitignore @@ -0,0 +1,3675 @@ +test/2-seed/Testing/0 Brassica napus/001.json +test/2-seed/Testing/0 Brassica napus/001.tiff +test/2-seed/Testing/0 Brassica napus/004.json +test/2-seed/Testing/0 Brassica napus/004.tiff +test/2-seed/Testing/0 Brassica napus/005.json +test/2-seed/Testing/0 Brassica napus/005.tiff +test/2-seed/Testing/0 Brassica napus/006.json +test/2-seed/Testing/0 Brassica napus/006.tiff +test/2-seed/Testing/0 Brassica napus/007.json +test/2-seed/Testing/0 Brassica napus/007.tiff +test/2-seed/Testing/0 Brassica napus/008.json +test/2-seed/Testing/0 Brassica napus/008.tiff +test/2-seed/Testing/0 Brassica napus/009.json +test/2-seed/Testing/0 Brassica napus/009.tiff +test/2-seed/Testing/0 Brassica napus/010.json +test/2-seed/Testing/0 Brassica napus/010.tiff +test/2-seed/Testing/0 Brassica napus/011.json +test/2-seed/Testing/0 Brassica napus/011.tiff +test/2-seed/Testing/0 Brassica napus/012.json +test/2-seed/Testing/0 Brassica napus/012.tiff +test/2-seed/Testing/0 Brassica napus/013.json +test/2-seed/Testing/0 Brassica napus/013.tiff +test/2-seed/Testing/0 Brassica napus/014.json +test/2-seed/Testing/0 Brassica napus/014.tiff +test/2-seed/Testing/0 Brassica napus/015.json +test/2-seed/Testing/0 Brassica napus/015.tiff +test/2-seed/Testing/0 Brassica napus/016.json +test/2-seed/Testing/0 Brassica napus/016.tiff +test/2-seed/Testing/0 Brassica napus/017.json +test/2-seed/Testing/0 Brassica napus/017.tiff +test/2-seed/Testing/0 Brassica napus/018.json +test/2-seed/Testing/0 Brassica napus/018.tiff +test/2-seed/Testing/0 Brassica napus/019.json +test/2-seed/Testing/0 Brassica napus/019.tiff +test/2-seed/Testing/0 Brassica napus/020.json +test/2-seed/Testing/0 Brassica napus/020.tiff +test/2-seed/Testing/0 Brassica napus/021.json +test/2-seed/Testing/0 Brassica napus/021.tiff +test/2-seed/Testing/0 Brassica napus/022.json +test/2-seed/Testing/0 Brassica napus/022.tiff +test/2-seed/Testing/0 Brassica napus/023.json +test/2-seed/Testing/0 Brassica napus/023.tiff +test/2-seed/Testing/0 Brassica napus/024.json +test/2-seed/Testing/0 Brassica napus/024.tiff +test/2-seed/Testing/0 Brassica napus/025.json +test/2-seed/Testing/0 Brassica napus/025.tiff +test/2-seed/Testing/0 Brassica napus/026.json +test/2-seed/Testing/0 Brassica napus/026.tiff +test/2-seed/Testing/0 Brassica napus/027.json +test/2-seed/Testing/0 Brassica napus/027.tiff +test/2-seed/Testing/0 Brassica napus/028.json +test/2-seed/Testing/0 Brassica napus/028.tiff +test/2-seed/Testing/0 Brassica napus/029.json +test/2-seed/Testing/0 Brassica napus/029.tiff +test/2-seed/Testing/0 Brassica napus/030.json +test/2-seed/Testing/0 Brassica napus/030.tiff +test/2-seed/Testing/0 Brassica napus/031.json +test/2-seed/Testing/0 Brassica napus/031.tiff +test/2-seed/Testing/0 Brassica napus/032.json +test/2-seed/Testing/0 Brassica napus/032.tiff +test/2-seed/Testing/0 Brassica napus/033.json +test/2-seed/Testing/0 Brassica napus/033.tiff +test/2-seed/Testing/0 Brassica napus/034.json +test/2-seed/Testing/0 Brassica napus/034.tiff +test/2-seed/Testing/0 Brassica napus/035.json +test/2-seed/Testing/0 Brassica napus/035.tiff +test/2-seed/Testing/0 Brassica napus/036.json +test/2-seed/Testing/0 Brassica napus/036.tiff +test/2-seed/Testing/0 Brassica napus/037.json +test/2-seed/Testing/0 Brassica napus/037.tiff +test/2-seed/Testing/0 Brassica napus/038.json +test/2-seed/Testing/0 Brassica napus/038.tiff +test/2-seed/Testing/0 Brassica napus/039.json +test/2-seed/Testing/0 Brassica napus/039.tiff +test/2-seed/Testing/0 Brassica napus/040.json +test/2-seed/Testing/0 Brassica napus/040.tiff +test/2-seed/Testing/0 Brassica napus/041.json +test/2-seed/Testing/0 Brassica napus/041.tiff +test/2-seed/Testing/0 Brassica napus/042.json +test/2-seed/Testing/0 Brassica napus/042.tiff +test/2-seed/Testing/0 Brassica napus/43.json +test/2-seed/Testing/0 Brassica napus/43.tiff +test/2-seed/Testing/0 Brassica napus/44.json +test/2-seed/Testing/0 Brassica napus/44.tiff +test/2-seed/Testing/0 Brassica napus/45.json +test/2-seed/Testing/0 Brassica napus/45.tiff +test/2-seed/Testing/0 Brassica napus/46.json +test/2-seed/Testing/0 Brassica napus/46.tiff +test/2-seed/Testing/0 Brassica napus/47.json +test/2-seed/Testing/0 Brassica napus/47.tiff +test/2-seed/Testing/0 Brassica napus/48.json +test/2-seed/Testing/0 Brassica napus/48.tiff +test/2-seed/Testing/0 Brassica napus/49.json +test/2-seed/Testing/0 Brassica napus/49.tiff +test/2-seed/Testing/0 Brassica napus/50.json +test/2-seed/Testing/0 Brassica napus/50.tiff +test/2-seed/Testing/0 Brassica napus/Brassica napus (2).json +test/2-seed/Testing/0 Brassica napus/Brassica napus (2).tiff +test/2-seed/Testing/0 Brassica napus/Brassica napus.json +test/2-seed/Testing/0 Brassica napus/Brassica napus.tiff +test/2-seed/Testing/0 Brassica napus/index.json +test/2-seed/Testing/1 Brassica junsea/201.json +test/2-seed/Testing/1 Brassica junsea/201.tiff +test/2-seed/Testing/1 Brassica junsea/202.json +test/2-seed/Testing/1 Brassica junsea/202.tiff +test/2-seed/Testing/1 Brassica junsea/203.json +test/2-seed/Testing/1 Brassica junsea/203.tiff +test/2-seed/Testing/1 Brassica junsea/204.json +test/2-seed/Testing/1 Brassica junsea/204.tiff +test/2-seed/Testing/1 Brassica junsea/205.json +test/2-seed/Testing/1 Brassica junsea/205.tiff +test/2-seed/Testing/1 Brassica junsea/206.json +test/2-seed/Testing/1 Brassica junsea/206.tiff +test/2-seed/Testing/1 Brassica junsea/207.json +test/2-seed/Testing/1 Brassica junsea/207.tiff +test/2-seed/Testing/1 Brassica junsea/208.json +test/2-seed/Testing/1 Brassica junsea/208.tiff +test/2-seed/Testing/1 Brassica junsea/209.json +test/2-seed/Testing/1 Brassica junsea/209.tiff +test/2-seed/Testing/1 Brassica junsea/210.json +test/2-seed/Testing/1 Brassica junsea/210.tiff +test/2-seed/Testing/1 Brassica junsea/211.json +test/2-seed/Testing/1 Brassica junsea/211.tiff +test/2-seed/Testing/1 Brassica junsea/212.json +test/2-seed/Testing/1 Brassica junsea/212.tiff +test/2-seed/Testing/1 Brassica junsea/213.json +test/2-seed/Testing/1 Brassica junsea/213.tiff +test/2-seed/Testing/1 Brassica junsea/214.json +test/2-seed/Testing/1 Brassica junsea/214.tiff +test/2-seed/Testing/1 Brassica junsea/215.json +test/2-seed/Testing/1 Brassica junsea/215.tiff +test/2-seed/Testing/1 Brassica junsea/216.json +test/2-seed/Testing/1 Brassica junsea/216.tiff +test/2-seed/Testing/1 Brassica junsea/217.json +test/2-seed/Testing/1 Brassica junsea/217.tiff +test/2-seed/Testing/1 Brassica junsea/218.json +test/2-seed/Testing/1 Brassica junsea/218.tiff +test/2-seed/Testing/1 Brassica junsea/219.json +test/2-seed/Testing/1 Brassica junsea/219.tiff +test/2-seed/Testing/1 Brassica junsea/220.json +test/2-seed/Testing/1 Brassica junsea/220.tiff +test/2-seed/Testing/1 Brassica junsea/221.json +test/2-seed/Testing/1 Brassica junsea/221.tiff +test/2-seed/Testing/1 Brassica junsea/222.json +test/2-seed/Testing/1 Brassica junsea/222.tiff +test/2-seed/Testing/1 Brassica junsea/223.json +test/2-seed/Testing/1 Brassica junsea/223.tiff +test/2-seed/Testing/1 Brassica junsea/224.json +test/2-seed/Testing/1 Brassica junsea/224.tiff +test/2-seed/Testing/1 Brassica junsea/225.json +test/2-seed/Testing/1 Brassica junsea/225.tiff +test/2-seed/Testing/1 Brassica junsea/226.json +test/2-seed/Testing/1 Brassica junsea/226.tiff +test/2-seed/Testing/1 Brassica junsea/227.json +test/2-seed/Testing/1 Brassica junsea/227.tiff +test/2-seed/Testing/1 Brassica junsea/228.json +test/2-seed/Testing/1 Brassica junsea/228.tiff +test/2-seed/Testing/1 Brassica junsea/229.json +test/2-seed/Testing/1 Brassica junsea/229.tiff +test/2-seed/Testing/1 Brassica junsea/230.json +test/2-seed/Testing/1 Brassica junsea/230.tiff +test/2-seed/Testing/1 Brassica junsea/231.json +test/2-seed/Testing/1 Brassica junsea/231.tiff +test/2-seed/Testing/1 Brassica junsea/232.json +test/2-seed/Testing/1 Brassica junsea/232.tiff +test/2-seed/Testing/1 Brassica junsea/233.json +test/2-seed/Testing/1 Brassica junsea/233.tiff +test/2-seed/Testing/1 Brassica junsea/234.json +test/2-seed/Testing/1 Brassica junsea/234.tiff +test/2-seed/Testing/1 Brassica junsea/235.json +test/2-seed/Testing/1 Brassica junsea/235.tiff +test/2-seed/Testing/1 Brassica junsea/236.json +test/2-seed/Testing/1 Brassica junsea/236.tiff +test/2-seed/Testing/1 Brassica junsea/237.json +test/2-seed/Testing/1 Brassica junsea/237.tiff +test/2-seed/Testing/1 Brassica junsea/238.json +test/2-seed/Testing/1 Brassica junsea/238.tiff +test/2-seed/Testing/1 Brassica junsea/239.json +test/2-seed/Testing/1 Brassica junsea/239.tiff +test/2-seed/Testing/1 Brassica junsea/241.json +test/2-seed/Testing/1 Brassica junsea/241.tiff +test/2-seed/Testing/1 Brassica junsea/242.json +test/2-seed/Testing/1 Brassica junsea/242.tiff +test/2-seed/Testing/1 Brassica junsea/243.json +test/2-seed/Testing/1 Brassica junsea/243.tiff +test/2-seed/Testing/1 Brassica junsea/244.json +test/2-seed/Testing/1 Brassica junsea/244.tiff +test/2-seed/Testing/1 Brassica junsea/245.json +test/2-seed/Testing/1 Brassica junsea/245.tiff +test/2-seed/Testing/1 Brassica junsea/246.json +test/2-seed/Testing/1 Brassica junsea/246.tiff +test/2-seed/Testing/1 Brassica junsea/247.json +test/2-seed/Testing/1 Brassica junsea/247.tiff +test/2-seed/Testing/1 Brassica junsea/248.json +test/2-seed/Testing/1 Brassica junsea/248.tiff +test/2-seed/Testing/1 Brassica junsea/249.json +test/2-seed/Testing/1 Brassica junsea/249.tiff +test/2-seed/Testing/1 Brassica junsea/250.json +test/2-seed/Testing/1 Brassica junsea/250.tiff +test/2-seed/Testing/1 Brassica junsea/Brassica junsea.json +test/2-seed/Testing/1 Brassica junsea/Brassica junsea.tiff +test/2-seed/Testing/1 Brassica junsea/index.json +test/2-seed/Testing/10 Solanum nigrum/1.tiff +test/2-seed/Testing/10 Solanum nigrum/2.tiff +test/2-seed/Testing/10 Solanum nigrum/3.tiff +test/2-seed/Testing/10 Solanum nigrum/4.tiff +test/2-seed/Testing/10 Solanum nigrum/5.tiff +test/2-seed/Testing/10 Solanum nigrum/6.tiff +test/2-seed/Testing/10 Solanum nigrum/7.tiff +test/2-seed/Testing/10 Solanum nigrum/8.tiff +test/2-seed/Testing/10 Solanum nigrum/9.tiff +test/2-seed/Testing/10 Solanum nigrum/10.tiff +test/2-seed/Testing/10 Solanum nigrum/11.tiff +test/2-seed/Testing/10 Solanum nigrum/12.tiff +test/2-seed/Testing/10 Solanum nigrum/13.tiff +test/2-seed/Testing/10 Solanum nigrum/14.tiff +test/2-seed/Testing/10 Solanum nigrum/15.tiff +test/2-seed/Testing/10 Solanum nigrum/17.tiff +test/2-seed/Testing/10 Solanum nigrum/18.tiff +test/2-seed/Testing/10 Solanum nigrum/19.tiff +test/2-seed/Testing/10 Solanum nigrum/20.tiff +test/2-seed/Testing/10 Solanum nigrum/21.tiff +test/2-seed/Testing/10 Solanum nigrum/22.tiff +test/2-seed/Testing/10 Solanum nigrum/23.tiff +test/2-seed/Testing/10 Solanum nigrum/24.tiff +test/2-seed/Testing/10 Solanum nigrum/25.tiff +test/2-seed/Testing/10 Solanum nigrum/Solanum nigrum.tiff +test/2-seed/Testing/11 Solanum rostratum/1.tiff +test/2-seed/Testing/11 Solanum rostratum/2.tiff +test/2-seed/Testing/11 Solanum rostratum/3.tiff +test/2-seed/Testing/11 Solanum rostratum/4.tiff +test/2-seed/Testing/11 Solanum rostratum/5.tiff +test/2-seed/Testing/11 Solanum rostratum/6.tiff +test/2-seed/Testing/11 Solanum rostratum/7.tiff +test/2-seed/Testing/11 Solanum rostratum/9.tiff +test/2-seed/Testing/11 Solanum rostratum/10.tiff +test/2-seed/Testing/11 Solanum rostratum/11.tiff +test/2-seed/Testing/11 Solanum rostratum/12.tiff +test/2-seed/Testing/11 Solanum rostratum/13.tiff +test/2-seed/Testing/11 Solanum rostratum/14.tiff +test/2-seed/Testing/11 Solanum rostratum/15.tiff +test/2-seed/Testing/11 Solanum rostratum/16.tiff +test/2-seed/Testing/11 Solanum rostratum/17.tiff +test/2-seed/Testing/11 Solanum rostratum/18.tiff +test/2-seed/Testing/11 Solanum rostratum/19.tiff +test/2-seed/Testing/11 Solanum rostratum/20.tiff +test/2-seed/Testing/11 Solanum rostratum/21.tiff +test/2-seed/Testing/11 Solanum rostratum/22.tiff +test/2-seed/Testing/11 Solanum rostratum/23.tiff +test/2-seed/Testing/11 Solanum rostratum/24.tiff +test/2-seed/Testing/11 Solanum rostratum/25.tiff +test/2-seed/Testing/11 Solanum rostratum/Solanum rostratum.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/1.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/2.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/3.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/4.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/5.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/6.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/7.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/9.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/10.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/11.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/12.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/13.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/14.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/15.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/16.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/17.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/18.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/19.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/20.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/21.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/22.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/23.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/24.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/25.tiff +test/2-seed/Testing/12 Ambrosia artemisiifolia/Ambrosia artemisiifolia.tiff +test/2-seed/Testing/13 Ambrosia trifida/1.tiff +test/2-seed/Testing/13 Ambrosia trifida/2.tiff +test/2-seed/Testing/13 Ambrosia trifida/3.tiff +test/2-seed/Testing/13 Ambrosia trifida/4.tiff +test/2-seed/Testing/13 Ambrosia trifida/5.tiff +test/2-seed/Testing/13 Ambrosia trifida/6.tiff +test/2-seed/Testing/13 Ambrosia trifida/7.tiff +test/2-seed/Testing/13 Ambrosia trifida/8.tiff +test/2-seed/Testing/13 Ambrosia trifida/9.tiff +test/2-seed/Testing/13 Ambrosia trifida/10.tiff +test/2-seed/Testing/13 Ambrosia trifida/11.tiff +test/2-seed/Testing/13 Ambrosia trifida/12.tiff +test/2-seed/Testing/13 Ambrosia trifida/13.tiff +test/2-seed/Testing/13 Ambrosia trifida/14.tiff +test/2-seed/Testing/13 Ambrosia trifida/15.tiff +test/2-seed/Testing/13 Ambrosia trifida/17.tiff +test/2-seed/Testing/13 Ambrosia trifida/18.tiff +test/2-seed/Testing/13 Ambrosia trifida/19.tiff +test/2-seed/Testing/13 Ambrosia trifida/20.tiff +test/2-seed/Testing/13 Ambrosia trifida/21.tiff +test/2-seed/Testing/13 Ambrosia trifida/22.tiff +test/2-seed/Testing/13 Ambrosia trifida/23.tiff +test/2-seed/Testing/13 Ambrosia trifida/24.tiff +test/2-seed/Testing/13 Ambrosia trifida/25.tiff +test/2-seed/Testing/13 Ambrosia trifida/Ambrosia trifida.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/1.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/2.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/3.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/4.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/5.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/7.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/8.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/9.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/10.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/11.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/12.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/13.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/14.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/15.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/16.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/17.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/18.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/19.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/20.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/21.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/22.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/23.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/24.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/25.tiff +test/2-seed/Testing/14 Ambrosia psilostachya/Ambrosia psilostachya.tiff +test/2-seed/Testing/2 Cirsium arvense/1.json +test/2-seed/Testing/2 Cirsium arvense/1.tiff +test/2-seed/Testing/2 Cirsium arvense/2.json +test/2-seed/Testing/2 Cirsium arvense/2.tiff +test/2-seed/Testing/2 Cirsium arvense/3.json +test/2-seed/Testing/2 Cirsium arvense/3.tiff +test/2-seed/Testing/2 Cirsium arvense/4.json +test/2-seed/Testing/2 Cirsium arvense/4.tiff +test/2-seed/Testing/2 Cirsium arvense/5.json +test/2-seed/Testing/2 Cirsium arvense/5.tiff +test/2-seed/Testing/2 Cirsium arvense/6.json +test/2-seed/Testing/2 Cirsium arvense/6.tiff +test/2-seed/Testing/2 Cirsium arvense/7.json +test/2-seed/Testing/2 Cirsium arvense/7.tiff +test/2-seed/Testing/2 Cirsium arvense/8.json +test/2-seed/Testing/2 Cirsium arvense/8.tiff +test/2-seed/Testing/2 Cirsium arvense/9.json +test/2-seed/Testing/2 Cirsium arvense/9.tiff +test/2-seed/Testing/2 Cirsium arvense/10.json +test/2-seed/Testing/2 Cirsium arvense/10.tiff +test/2-seed/Testing/2 Cirsium arvense/11.json +test/2-seed/Testing/2 Cirsium arvense/11.tiff +test/2-seed/Testing/2 Cirsium arvense/12.json +test/2-seed/Testing/2 Cirsium arvense/12.tiff +test/2-seed/Testing/2 Cirsium arvense/13.json +test/2-seed/Testing/2 Cirsium arvense/13.tiff +test/2-seed/Testing/2 Cirsium arvense/14.json +test/2-seed/Testing/2 Cirsium arvense/14.tiff +test/2-seed/Testing/2 Cirsium arvense/15.json +test/2-seed/Testing/2 Cirsium arvense/15.tiff +test/2-seed/Testing/2 Cirsium arvense/16.json +test/2-seed/Testing/2 Cirsium arvense/16.tiff +test/2-seed/Testing/2 Cirsium arvense/17.json +test/2-seed/Testing/2 Cirsium arvense/17.tiff +test/2-seed/Testing/2 Cirsium arvense/18.json +test/2-seed/Testing/2 Cirsium arvense/18.tiff +test/2-seed/Testing/2 Cirsium arvense/19.json +test/2-seed/Testing/2 Cirsium arvense/19.tiff +test/2-seed/Testing/2 Cirsium arvense/20.json +test/2-seed/Testing/2 Cirsium arvense/20.tiff +test/2-seed/Testing/2 Cirsium arvense/21.json +test/2-seed/Testing/2 Cirsium arvense/21.tiff +test/2-seed/Testing/2 Cirsium arvense/23.json +test/2-seed/Testing/2 Cirsium arvense/23.tiff +test/2-seed/Testing/2 Cirsium arvense/24.json +test/2-seed/Testing/2 Cirsium arvense/24.tiff +test/2-seed/Testing/2 Cirsium arvense/25.json +test/2-seed/Testing/2 Cirsium arvense/25.tiff +test/2-seed/Testing/2 Cirsium arvense/Cirsium arvense.json +test/2-seed/Testing/2 Cirsium arvense/Cirsium arvense.tiff +test/2-seed/Testing/2 Cirsium arvense/index.json +test/2-seed/Testing/3 Cirsium vulgare/1.json +test/2-seed/Testing/3 Cirsium vulgare/1.tiff +test/2-seed/Testing/3 Cirsium vulgare/2.json +test/2-seed/Testing/3 Cirsium vulgare/2.tiff +test/2-seed/Testing/3 Cirsium vulgare/3.json +test/2-seed/Testing/3 Cirsium vulgare/3.tiff +test/2-seed/Testing/3 Cirsium vulgare/4.json +test/2-seed/Testing/3 Cirsium vulgare/4.tiff +test/2-seed/Testing/3 Cirsium vulgare/5.json +test/2-seed/Testing/3 Cirsium vulgare/5.tiff +test/2-seed/Testing/3 Cirsium vulgare/6.json +test/2-seed/Testing/3 Cirsium vulgare/6.tiff +test/2-seed/Testing/3 Cirsium vulgare/7.json +test/2-seed/Testing/3 Cirsium vulgare/7.tiff +test/2-seed/Testing/3 Cirsium vulgare/8.json +test/2-seed/Testing/3 Cirsium vulgare/8.tiff +test/2-seed/Testing/3 Cirsium vulgare/9.json +test/2-seed/Testing/3 Cirsium vulgare/9.tiff +test/2-seed/Testing/3 Cirsium vulgare/10.json +test/2-seed/Testing/3 Cirsium vulgare/10.tiff +test/2-seed/Testing/3 Cirsium vulgare/11.json +test/2-seed/Testing/3 Cirsium vulgare/11.tiff +test/2-seed/Testing/3 Cirsium vulgare/12.json +test/2-seed/Testing/3 Cirsium vulgare/12.tiff +test/2-seed/Testing/3 Cirsium vulgare/13.json +test/2-seed/Testing/3 Cirsium vulgare/13.tiff +test/2-seed/Testing/3 Cirsium vulgare/14.json +test/2-seed/Testing/3 Cirsium vulgare/14.tiff +test/2-seed/Testing/3 Cirsium vulgare/15.json +test/2-seed/Testing/3 Cirsium vulgare/15.tiff +test/2-seed/Testing/3 Cirsium vulgare/17.json +test/2-seed/Testing/3 Cirsium vulgare/17.tiff +test/2-seed/Testing/3 Cirsium vulgare/18.json +test/2-seed/Testing/3 Cirsium vulgare/18.tiff +test/2-seed/Testing/3 Cirsium vulgare/19.json +test/2-seed/Testing/3 Cirsium vulgare/19.tiff +test/2-seed/Testing/3 Cirsium vulgare/20.json +test/2-seed/Testing/3 Cirsium vulgare/20.tiff +test/2-seed/Testing/3 Cirsium vulgare/21.json +test/2-seed/Testing/3 Cirsium vulgare/21.tiff +test/2-seed/Testing/3 Cirsium vulgare/22.json +test/2-seed/Testing/3 Cirsium vulgare/22.tiff +test/2-seed/Testing/3 Cirsium vulgare/23.json +test/2-seed/Testing/3 Cirsium vulgare/23.tiff +test/2-seed/Testing/3 Cirsium vulgare/24.json +test/2-seed/Testing/3 Cirsium vulgare/24.tiff +test/2-seed/Testing/3 Cirsium vulgare/25.json +test/2-seed/Testing/3 Cirsium vulgare/25.tiff +test/2-seed/Testing/3 Cirsium vulgare/Cirsium vulgare.json +test/2-seed/Testing/3 Cirsium vulgare/Cirsium vulgare.tiff +test/2-seed/Testing/3 Cirsium vulgare/index.json +test/2-seed/Testing/4 Carduus nutans/1.tiff +test/2-seed/Testing/4 Carduus nutans/2.tiff +test/2-seed/Testing/4 Carduus nutans/3.tiff +test/2-seed/Testing/4 Carduus nutans/4.tiff +test/2-seed/Testing/4 Carduus nutans/5.tiff +test/2-seed/Testing/4 Carduus nutans/6.tiff +test/2-seed/Testing/4 Carduus nutans/7.tiff +test/2-seed/Testing/4 Carduus nutans/8.tiff +test/2-seed/Testing/4 Carduus nutans/9.tiff +test/2-seed/Testing/4 Carduus nutans/10.tiff +test/2-seed/Testing/4 Carduus nutans/11.tiff +test/2-seed/Testing/4 Carduus nutans/12.tiff +test/2-seed/Testing/4 Carduus nutans/13.tiff +test/2-seed/Testing/4 Carduus nutans/14.tiff +test/2-seed/Testing/4 Carduus nutans/15.tiff +test/2-seed/Testing/4 Carduus nutans/16.tiff +test/2-seed/Testing/4 Carduus nutans/17.tiff +test/2-seed/Testing/4 Carduus nutans/18.tiff +test/2-seed/Testing/4 Carduus nutans/19.tiff +test/2-seed/Testing/4 Carduus nutans/20.tiff +test/2-seed/Testing/4 Carduus nutans/21.tiff +test/2-seed/Testing/4 Carduus nutans/23.tiff +test/2-seed/Testing/4 Carduus nutans/24.tiff +test/2-seed/Testing/4 Carduus nutans/25.tiff +test/2-seed/Testing/4 Carduus nutans/Carduus nutans.tiff +test/2-seed/Testing/5 Bromus secalinus/001 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/001.tiff +test/2-seed/Testing/5 Bromus secalinus/002 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/002.tiff +test/2-seed/Testing/5 Bromus secalinus/003 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/003.tiff +test/2-seed/Testing/5 Bromus secalinus/004.tiff +test/2-seed/Testing/5 Bromus secalinus/005 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/005.tiff +test/2-seed/Testing/5 Bromus secalinus/006 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/007 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/007.tiff +test/2-seed/Testing/5 Bromus secalinus/008 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/008.tiff +test/2-seed/Testing/5 Bromus secalinus/009 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/009.tiff +test/2-seed/Testing/5 Bromus secalinus/010 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/010.tiff +test/2-seed/Testing/5 Bromus secalinus/011.tiff +test/2-seed/Testing/5 Bromus secalinus/012 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/012.tiff +test/2-seed/Testing/5 Bromus secalinus/013 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/013.tiff +test/2-seed/Testing/5 Bromus secalinus/014 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/014.tiff +test/2-seed/Testing/5 Bromus secalinus/015 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/015.tiff +test/2-seed/Testing/5 Bromus secalinus/016 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/016.tiff +test/2-seed/Testing/5 Bromus secalinus/017 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/017.tiff +test/2-seed/Testing/5 Bromus secalinus/018 (2).tiff +test/2-seed/Testing/5 Bromus secalinus/018.tiff +test/2-seed/Testing/5 Bromus secalinus/019.tiff +test/2-seed/Testing/5 Bromus secalinus/020.tiff +test/2-seed/Testing/5 Bromus secalinus/021.tiff +test/2-seed/Testing/5 Bromus secalinus/022.tiff +test/2-seed/Testing/5 Bromus secalinus/023.tiff +test/2-seed/Testing/5 Bromus secalinus/024.tiff +test/2-seed/Testing/5 Bromus secalinus/025.tiff +test/2-seed/Testing/5 Bromus secalinus/026.tiff +test/2-seed/Testing/5 Bromus secalinus/251.tiff +test/2-seed/Testing/5 Bromus secalinus/252.tiff +test/2-seed/Testing/5 Bromus secalinus/253.tiff +test/2-seed/Testing/5 Bromus secalinus/254.tiff +test/2-seed/Testing/5 Bromus secalinus/255.tiff +test/2-seed/Testing/5 Bromus secalinus/256.tiff +test/2-seed/Testing/5 Bromus secalinus/257.tiff +test/2-seed/Testing/5 Bromus secalinus/258.tiff +test/2-seed/Testing/5 Bromus secalinus/259.tiff +test/2-seed/Testing/5 Bromus secalinus/260.tiff +test/2-seed/Testing/5 Bromus secalinus/501.tiff +test/2-seed/Testing/5 Bromus secalinus/502.tiff +test/2-seed/Testing/5 Bromus secalinus/503.tiff +test/2-seed/Testing/5 Bromus secalinus/504.tiff +test/2-seed/Testing/5 Bromus secalinus/505.tiff +test/2-seed/Testing/5 Bromus secalinus/506.tiff +test/2-seed/Testing/5 Bromus secalinus/507.tiff +test/2-seed/Testing/5 Bromus secalinus/508.tiff +test/2-seed/Testing/6 Bromus hordeaceus/002.tiff +test/2-seed/Testing/6 Bromus hordeaceus/003.tiff +test/2-seed/Testing/6 Bromus hordeaceus/004.tiff +test/2-seed/Testing/6 Bromus hordeaceus/005.tiff +test/2-seed/Testing/6 Bromus hordeaceus/006.tiff +test/2-seed/Testing/6 Bromus hordeaceus/007.tiff +test/2-seed/Testing/6 Bromus hordeaceus/008.tiff +test/2-seed/Testing/6 Bromus hordeaceus/009.tiff +test/2-seed/Testing/6 Bromus hordeaceus/010.tiff +test/2-seed/Testing/6 Bromus hordeaceus/011.tiff +test/2-seed/Testing/6 Bromus hordeaceus/012.tiff +test/2-seed/Testing/6 Bromus hordeaceus/013.tiff +test/2-seed/Testing/6 Bromus hordeaceus/014.tiff +test/2-seed/Testing/6 Bromus hordeaceus/016.tiff +test/2-seed/Testing/6 Bromus hordeaceus/017.tiff +test/2-seed/Testing/6 Bromus hordeaceus/018.tiff +test/2-seed/Testing/6 Bromus hordeaceus/019.tiff +test/2-seed/Testing/6 Bromus hordeaceus/020.tiff +test/2-seed/Testing/6 Bromus hordeaceus/021.tiff +test/2-seed/Testing/6 Bromus hordeaceus/022.tiff +test/2-seed/Testing/6 Bromus hordeaceus/023.tiff +test/2-seed/Testing/6 Bromus hordeaceus/024.tiff +test/2-seed/Testing/6 Bromus hordeaceus/025.tiff +test/2-seed/Testing/6 Bromus hordeaceus/026.tiff +test/2-seed/Testing/6 Bromus hordeaceus/img_20220115_125559.tiff +test/2-seed/Testing/7 Bromus japonicus/001.tiff +test/2-seed/Testing/7 Bromus japonicus/002 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/002.tiff +test/2-seed/Testing/7 Bromus japonicus/003 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/004 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/004.tiff +test/2-seed/Testing/7 Bromus japonicus/005 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/005.tiff +test/2-seed/Testing/7 Bromus japonicus/007 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/007.tiff +test/2-seed/Testing/7 Bromus japonicus/008 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/008.tiff +test/2-seed/Testing/7 Bromus japonicus/009.tiff +test/2-seed/Testing/7 Bromus japonicus/010 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/010.tiff +test/2-seed/Testing/7 Bromus japonicus/011.tiff +test/2-seed/Testing/7 Bromus japonicus/012.tiff +test/2-seed/Testing/7 Bromus japonicus/013 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/013.tiff +test/2-seed/Testing/7 Bromus japonicus/014 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/014.tiff +test/2-seed/Testing/7 Bromus japonicus/015 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/015.tiff +test/2-seed/Testing/7 Bromus japonicus/016.tiff +test/2-seed/Testing/7 Bromus japonicus/017 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/017.tiff +test/2-seed/Testing/7 Bromus japonicus/018 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/018.tiff +test/2-seed/Testing/7 Bromus japonicus/019.tiff +test/2-seed/Testing/7 Bromus japonicus/020.tiff +test/2-seed/Testing/7 Bromus japonicus/021 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/021.tiff +test/2-seed/Testing/7 Bromus japonicus/022 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/022.tiff +test/2-seed/Testing/7 Bromus japonicus/023.tiff +test/2-seed/Testing/7 Bromus japonicus/024 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/025 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/025.tiff +test/2-seed/Testing/7 Bromus japonicus/026 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/026.tiff +test/2-seed/Testing/7 Bromus japonicus/027 (2).tiff +test/2-seed/Testing/7 Bromus japonicus/027.tiff +test/2-seed/Testing/7 Bromus japonicus/029.tiff +test/2-seed/Testing/7 Bromus japonicus/201.tiff +test/2-seed/Testing/7 Bromus japonicus/202.tiff +test/2-seed/Testing/7 Bromus japonicus/203.tiff +test/2-seed/Testing/7 Bromus japonicus/204.tiff +test/2-seed/Testing/7 Bromus japonicus/205.tiff +test/2-seed/Testing/7 Bromus japonicus/206.tiff +test/2-seed/Testing/7 Bromus japonicus/207.tiff +test/2-seed/Testing/8 Lolium temulentum/001.tiff +test/2-seed/Testing/8 Lolium temulentum/002 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/002.tiff +test/2-seed/Testing/8 Lolium temulentum/003 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/003.tiff +test/2-seed/Testing/8 Lolium temulentum/004 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/004.tiff +test/2-seed/Testing/8 Lolium temulentum/005 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/005.tiff +test/2-seed/Testing/8 Lolium temulentum/006.tiff +test/2-seed/Testing/8 Lolium temulentum/007 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/007.tiff +test/2-seed/Testing/8 Lolium temulentum/008 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/008.tiff +test/2-seed/Testing/8 Lolium temulentum/009 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/009.tiff +test/2-seed/Testing/8 Lolium temulentum/010 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/010.tiff +test/2-seed/Testing/8 Lolium temulentum/011.tiff +test/2-seed/Testing/8 Lolium temulentum/012.tiff +test/2-seed/Testing/8 Lolium temulentum/013 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/013.tiff +test/2-seed/Testing/8 Lolium temulentum/014 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/014.tiff +test/2-seed/Testing/8 Lolium temulentum/015 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/015.tiff +test/2-seed/Testing/8 Lolium temulentum/016.tiff +test/2-seed/Testing/8 Lolium temulentum/017 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/017.tiff +test/2-seed/Testing/8 Lolium temulentum/018 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/018.tiff +test/2-seed/Testing/8 Lolium temulentum/019 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/019.tiff +test/2-seed/Testing/8 Lolium temulentum/020 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/020.tiff +test/2-seed/Testing/8 Lolium temulentum/021.tiff +test/2-seed/Testing/8 Lolium temulentum/022 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/022.tiff +test/2-seed/Testing/8 Lolium temulentum/023 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/023.tiff +test/2-seed/Testing/8 Lolium temulentum/024 (2).tiff +test/2-seed/Testing/8 Lolium temulentum/024.tiff +test/2-seed/Testing/8 Lolium temulentum/025.tiff +test/2-seed/Testing/8 Lolium temulentum/026.tiff +test/2-seed/Testing/8 Lolium temulentum/027.tiff +test/2-seed/Testing/8 Lolium temulentum/028.tiff +test/2-seed/Testing/8 Lolium temulentum/029.tiff +test/2-seed/Testing/8 Lolium temulentum/030.tiff +test/2-seed/Testing/8 Lolium temulentum/201.tiff +test/2-seed/Testing/8 Lolium temulentum/202.tiff +test/2-seed/Testing/9 Solanum carolinense/1.tiff +test/2-seed/Testing/9 Solanum carolinense/2.tiff +test/2-seed/Testing/9 Solanum carolinense/3.tiff +test/2-seed/Testing/9 Solanum carolinense/4.tiff +test/2-seed/Testing/9 Solanum carolinense/5.tiff +test/2-seed/Testing/9 Solanum carolinense/6.tiff +test/2-seed/Testing/9 Solanum carolinense/7.tiff +test/2-seed/Testing/9 Solanum carolinense/8.tiff +test/2-seed/Testing/9 Solanum carolinense/9.tiff +test/2-seed/Testing/9 Solanum carolinense/10.tiff +test/2-seed/Testing/9 Solanum carolinense/11.tiff +test/2-seed/Testing/9 Solanum carolinense/12.tiff +test/2-seed/Testing/9 Solanum carolinense/13.tiff +test/2-seed/Testing/9 Solanum carolinense/14.tiff +test/2-seed/Testing/9 Solanum carolinense/15.tiff +test/2-seed/Testing/9 Solanum carolinense/17.tiff +test/2-seed/Testing/9 Solanum carolinense/18.tiff +test/2-seed/Testing/9 Solanum carolinense/19.tiff +test/2-seed/Testing/9 Solanum carolinense/20.tiff +test/2-seed/Testing/9 Solanum carolinense/21.tiff +test/2-seed/Testing/9 Solanum carolinense/22.tiff +test/2-seed/Testing/9 Solanum carolinense/23.tiff +test/2-seed/Testing/9 Solanum carolinense/24.tiff +test/2-seed/Testing/9 Solanum carolinense/25.tiff +test/2-seed/Testing/9 Solanum carolinense/Solanum carolinense.tiff +test/2-seed/Training/0 Brassica napus/001 (2).json +test/2-seed/Training/0 Brassica napus/001 (2).tiff +test/2-seed/Training/0 Brassica napus/001 (3).json +test/2-seed/Training/0 Brassica napus/001 (3).tiff +test/2-seed/Training/0 Brassica napus/001 (4).json +test/2-seed/Training/0 Brassica napus/001 (4).tiff +test/2-seed/Training/0 Brassica napus/001 (5).json +test/2-seed/Training/0 Brassica napus/001 (5).tiff +test/2-seed/Training/0 Brassica napus/001 (6).json +test/2-seed/Training/0 Brassica napus/001 (6).tiff +test/2-seed/Training/0 Brassica napus/001.json +test/2-seed/Training/0 Brassica napus/001.tiff +test/2-seed/Training/0 Brassica napus/002 (2).json +test/2-seed/Training/0 Brassica napus/002 (2).tiff +test/2-seed/Training/0 Brassica napus/002 (3).json +test/2-seed/Training/0 Brassica napus/002 (3).tiff +test/2-seed/Training/0 Brassica napus/002 (4).json +test/2-seed/Training/0 Brassica napus/002 (4).tiff +test/2-seed/Training/0 Brassica napus/002 (5).json +test/2-seed/Training/0 Brassica napus/002 (5).tiff +test/2-seed/Training/0 Brassica napus/002 (6).json +test/2-seed/Training/0 Brassica napus/002 (6).tiff +test/2-seed/Training/0 Brassica napus/002.json +test/2-seed/Training/0 Brassica napus/002.tiff +test/2-seed/Training/0 Brassica napus/003 (2).json +test/2-seed/Training/0 Brassica napus/003 (2).tiff +test/2-seed/Training/0 Brassica napus/003 (3).json +test/2-seed/Training/0 Brassica napus/003 (3).tiff +test/2-seed/Training/0 Brassica napus/003 (4).json +test/2-seed/Training/0 Brassica napus/003 (4).tiff +test/2-seed/Training/0 Brassica napus/003 (5).json +test/2-seed/Training/0 Brassica napus/003 (5).tiff +test/2-seed/Training/0 Brassica napus/003 (6).json +test/2-seed/Training/0 Brassica napus/003 (6).tiff +test/2-seed/Training/0 Brassica napus/003.json +test/2-seed/Training/0 Brassica napus/003.tiff +test/2-seed/Training/0 Brassica napus/004 (2).json +test/2-seed/Training/0 Brassica napus/004 (2).tiff +test/2-seed/Training/0 Brassica napus/004 (3).json +test/2-seed/Training/0 Brassica napus/004 (3).tiff +test/2-seed/Training/0 Brassica napus/004 (4).json +test/2-seed/Training/0 Brassica napus/004 (4).tiff +test/2-seed/Training/0 Brassica napus/004 (5).json +test/2-seed/Training/0 Brassica napus/004 (5).tiff +test/2-seed/Training/0 Brassica napus/004 (6).json +test/2-seed/Training/0 Brassica napus/004 (6).tiff +test/2-seed/Training/0 Brassica napus/004.json +test/2-seed/Training/0 Brassica napus/004.tiff +test/2-seed/Training/0 Brassica napus/005 (2).json +test/2-seed/Training/0 Brassica napus/005 (2).tiff +test/2-seed/Training/0 Brassica napus/005 (3).json +test/2-seed/Training/0 Brassica napus/005 (3).tiff +test/2-seed/Training/0 Brassica napus/005 (4).json +test/2-seed/Training/0 Brassica napus/005 (4).tiff +test/2-seed/Training/0 Brassica napus/005 (5).json +test/2-seed/Training/0 Brassica napus/005 (5).tiff +test/2-seed/Training/0 Brassica napus/005 (6).json +test/2-seed/Training/0 Brassica napus/005 (6).tiff +test/2-seed/Training/0 Brassica napus/005.json +test/2-seed/Training/0 Brassica napus/005.tiff +test/2-seed/Training/0 Brassica napus/006 (2).json +test/2-seed/Training/0 Brassica napus/006 (2).tiff +test/2-seed/Training/0 Brassica napus/006 (3).json +test/2-seed/Training/0 Brassica napus/006 (3).tiff +test/2-seed/Training/0 Brassica napus/006 (4).json +test/2-seed/Training/0 Brassica napus/006 (4).tiff +test/2-seed/Training/0 Brassica napus/006 (5).json +test/2-seed/Training/0 Brassica napus/006 (5).tiff +test/2-seed/Training/0 Brassica napus/006 (6).json +test/2-seed/Training/0 Brassica napus/006 (6).tiff +test/2-seed/Training/0 Brassica napus/006.json +test/2-seed/Training/0 Brassica napus/006.tiff +test/2-seed/Training/0 Brassica napus/007 (2).json +test/2-seed/Training/0 Brassica napus/007 (2).tiff +test/2-seed/Training/0 Brassica napus/007 (3).json +test/2-seed/Training/0 Brassica napus/007 (3).tiff +test/2-seed/Training/0 Brassica napus/007 (4).json +test/2-seed/Training/0 Brassica napus/007 (4).tiff +test/2-seed/Training/0 Brassica napus/007 (5).json +test/2-seed/Training/0 Brassica napus/007 (5).tiff +test/2-seed/Training/0 Brassica napus/007 (6).json +test/2-seed/Training/0 Brassica napus/007 (6).tiff +test/2-seed/Training/0 Brassica napus/007.json +test/2-seed/Training/0 Brassica napus/007.tiff +test/2-seed/Training/0 Brassica napus/008 (2).json +test/2-seed/Training/0 Brassica napus/008 (2).tiff +test/2-seed/Training/0 Brassica napus/008 (3).json +test/2-seed/Training/0 Brassica napus/008 (3).tiff +test/2-seed/Training/0 Brassica napus/008 (4).json +test/2-seed/Training/0 Brassica napus/008 (4).tiff +test/2-seed/Training/0 Brassica napus/008 (5).json +test/2-seed/Training/0 Brassica napus/008 (5).tiff +test/2-seed/Training/0 Brassica napus/008 (6).json +test/2-seed/Training/0 Brassica napus/008 (6).tiff +test/2-seed/Training/0 Brassica napus/008.json +test/2-seed/Training/0 Brassica napus/008.tiff +test/2-seed/Training/0 Brassica napus/009 (2).json +test/2-seed/Training/0 Brassica napus/009 (2).tiff +test/2-seed/Training/0 Brassica napus/009 (3).json +test/2-seed/Training/0 Brassica napus/009 (3).tiff +test/2-seed/Training/0 Brassica napus/009 (4).json +test/2-seed/Training/0 Brassica napus/009 (4).tiff +test/2-seed/Training/0 Brassica napus/009 (5).json +test/2-seed/Training/0 Brassica napus/009 (5).tiff +test/2-seed/Training/0 Brassica napus/009 (6).json +test/2-seed/Training/0 Brassica napus/009 (6).tiff +test/2-seed/Training/0 Brassica napus/009.json +test/2-seed/Training/0 Brassica napus/009.tiff +test/2-seed/Training/0 Brassica napus/010 (2).json +test/2-seed/Training/0 Brassica napus/010 (2).tiff +test/2-seed/Training/0 Brassica napus/010 (3).json +test/2-seed/Training/0 Brassica napus/010 (3).tiff +test/2-seed/Training/0 Brassica napus/010 (4).json +test/2-seed/Training/0 Brassica napus/010 (4).tiff +test/2-seed/Training/0 Brassica napus/010 (5).json +test/2-seed/Training/0 Brassica napus/010 (5).tiff +test/2-seed/Training/0 Brassica napus/010 (6).json +test/2-seed/Training/0 Brassica napus/010 (6).tiff +test/2-seed/Training/0 Brassica napus/010.json +test/2-seed/Training/0 Brassica napus/010.tiff +test/2-seed/Training/0 Brassica napus/011 (2).json +test/2-seed/Training/0 Brassica napus/011 (2).tiff +test/2-seed/Training/0 Brassica napus/011 (3).json +test/2-seed/Training/0 Brassica napus/011 (3).tiff +test/2-seed/Training/0 Brassica napus/011 (4).json +test/2-seed/Training/0 Brassica napus/011 (4).tiff +test/2-seed/Training/0 Brassica napus/011 (5).json +test/2-seed/Training/0 Brassica napus/011 (5).tiff +test/2-seed/Training/0 Brassica napus/011 (6).json +test/2-seed/Training/0 Brassica napus/011 (6).tiff +test/2-seed/Training/0 Brassica napus/011.json +test/2-seed/Training/0 Brassica napus/011.tiff +test/2-seed/Training/0 Brassica napus/012 (2).json +test/2-seed/Training/0 Brassica napus/012 (2).tiff +test/2-seed/Training/0 Brassica napus/012 (3).json +test/2-seed/Training/0 Brassica napus/012 (3).tiff +test/2-seed/Training/0 Brassica napus/012 (4).json +test/2-seed/Training/0 Brassica napus/012 (4).tiff +test/2-seed/Training/0 Brassica napus/012 (5).json +test/2-seed/Training/0 Brassica napus/012 (5).tiff +test/2-seed/Training/0 Brassica napus/012 (6).json +test/2-seed/Training/0 Brassica napus/012 (6).tiff +test/2-seed/Training/0 Brassica napus/012.json +test/2-seed/Training/0 Brassica napus/012.tiff +test/2-seed/Training/0 Brassica napus/013 (2).json +test/2-seed/Training/0 Brassica napus/013 (2).tiff +test/2-seed/Training/0 Brassica napus/013 (3).json +test/2-seed/Training/0 Brassica napus/013 (3).tiff +test/2-seed/Training/0 Brassica napus/013 (4).json +test/2-seed/Training/0 Brassica napus/013 (4).tiff +test/2-seed/Training/0 Brassica napus/013 (5).json +test/2-seed/Training/0 Brassica napus/013 (5).tiff +test/2-seed/Training/0 Brassica napus/013 (6).json +test/2-seed/Training/0 Brassica napus/013 (6).tiff +test/2-seed/Training/0 Brassica napus/013.json +test/2-seed/Training/0 Brassica napus/013.tiff +test/2-seed/Training/0 Brassica napus/014 (2).json +test/2-seed/Training/0 Brassica napus/014 (2).tiff +test/2-seed/Training/0 Brassica napus/014 (3).json +test/2-seed/Training/0 Brassica napus/014 (3).tiff +test/2-seed/Training/0 Brassica napus/014 (4).json +test/2-seed/Training/0 Brassica napus/014 (4).tiff +test/2-seed/Training/0 Brassica napus/014 (5).json +test/2-seed/Training/0 Brassica napus/014 (5).tiff +test/2-seed/Training/0 Brassica napus/014 (6).json +test/2-seed/Training/0 Brassica napus/014 (6).tiff +test/2-seed/Training/0 Brassica napus/014.json +test/2-seed/Training/0 Brassica napus/014.tiff +test/2-seed/Training/0 Brassica napus/015 (2).json +test/2-seed/Training/0 Brassica napus/015 (2).tiff +test/2-seed/Training/0 Brassica napus/015 (3).json +test/2-seed/Training/0 Brassica napus/015 (3).tiff +test/2-seed/Training/0 Brassica napus/015 (4).json +test/2-seed/Training/0 Brassica napus/015 (4).tiff +test/2-seed/Training/0 Brassica napus/015 (5).json +test/2-seed/Training/0 Brassica napus/015 (5).tiff +test/2-seed/Training/0 Brassica napus/015 (6).json +test/2-seed/Training/0 Brassica napus/015 (6).tiff +test/2-seed/Training/0 Brassica napus/015.json +test/2-seed/Training/0 Brassica napus/015.tiff +test/2-seed/Training/0 Brassica napus/016 (2).json +test/2-seed/Training/0 Brassica napus/016 (2).tiff +test/2-seed/Training/0 Brassica napus/016 (3).json +test/2-seed/Training/0 Brassica napus/016 (3).tiff +test/2-seed/Training/0 Brassica napus/016 (4).json +test/2-seed/Training/0 Brassica napus/016 (4).tiff +test/2-seed/Training/0 Brassica napus/016 (5).json +test/2-seed/Training/0 Brassica napus/016 (5).tiff +test/2-seed/Training/0 Brassica napus/016 (6).json +test/2-seed/Training/0 Brassica napus/016 (6).tiff +test/2-seed/Training/0 Brassica napus/016.json +test/2-seed/Training/0 Brassica napus/016.tiff +test/2-seed/Training/0 Brassica napus/017 (2).json +test/2-seed/Training/0 Brassica napus/017 (2).tiff +test/2-seed/Training/0 Brassica napus/017 (3).json +test/2-seed/Training/0 Brassica napus/017 (3).tiff +test/2-seed/Training/0 Brassica napus/017 (4).json +test/2-seed/Training/0 Brassica napus/017 (4).tiff +test/2-seed/Training/0 Brassica napus/017 (5).json +test/2-seed/Training/0 Brassica napus/017 (5).tiff +test/2-seed/Training/0 Brassica napus/017 (6).json +test/2-seed/Training/0 Brassica napus/017 (6).tiff +test/2-seed/Training/0 Brassica napus/017.json +test/2-seed/Training/0 Brassica napus/017.tiff +test/2-seed/Training/0 Brassica napus/018 (2).json +test/2-seed/Training/0 Brassica napus/018 (2).tiff +test/2-seed/Training/0 Brassica napus/018 (3).json +test/2-seed/Training/0 Brassica napus/018 (3).tiff +test/2-seed/Training/0 Brassica napus/018 (4).json +test/2-seed/Training/0 Brassica napus/018 (4).tiff +test/2-seed/Training/0 Brassica napus/018 (5).json +test/2-seed/Training/0 Brassica napus/018 (5).tiff +test/2-seed/Training/0 Brassica napus/018 (6).json +test/2-seed/Training/0 Brassica napus/018 (6).tiff +test/2-seed/Training/0 Brassica napus/018.json +test/2-seed/Training/0 Brassica napus/018.tiff +test/2-seed/Training/0 Brassica napus/019 (2).json +test/2-seed/Training/0 Brassica napus/019 (2).tiff +test/2-seed/Training/0 Brassica napus/019 (3).json +test/2-seed/Training/0 Brassica napus/019 (3).tiff +test/2-seed/Training/0 Brassica napus/019 (4).json +test/2-seed/Training/0 Brassica napus/019 (4).tiff +test/2-seed/Training/0 Brassica napus/019 (5).json +test/2-seed/Training/0 Brassica napus/019 (5).tiff +test/2-seed/Training/0 Brassica napus/019 (6).json +test/2-seed/Training/0 Brassica napus/019 (6).tiff +test/2-seed/Training/0 Brassica napus/019.json +test/2-seed/Training/0 Brassica napus/019.tiff +test/2-seed/Training/0 Brassica napus/020 (2).json +test/2-seed/Training/0 Brassica napus/020 (2).tiff +test/2-seed/Training/0 Brassica napus/020 (3).json +test/2-seed/Training/0 Brassica napus/020 (3).tiff +test/2-seed/Training/0 Brassica napus/020 (4).json +test/2-seed/Training/0 Brassica napus/020 (4).tiff +test/2-seed/Training/0 Brassica napus/020 (5).json +test/2-seed/Training/0 Brassica napus/020 (5).tiff +test/2-seed/Training/0 Brassica napus/020 (6).json +test/2-seed/Training/0 Brassica napus/020 (6).tiff +test/2-seed/Training/0 Brassica napus/020.json +test/2-seed/Training/0 Brassica napus/020.tiff +test/2-seed/Training/0 Brassica napus/021 (2).json +test/2-seed/Training/0 Brassica napus/021 (2).tiff +test/2-seed/Training/0 Brassica napus/021 (3).json +test/2-seed/Training/0 Brassica napus/021 (3).tiff +test/2-seed/Training/0 Brassica napus/021 (4).json +test/2-seed/Training/0 Brassica napus/021 (4).tiff +test/2-seed/Training/0 Brassica napus/021 (5).json +test/2-seed/Training/0 Brassica napus/021 (5).tiff +test/2-seed/Training/0 Brassica napus/021 (6).json +test/2-seed/Training/0 Brassica napus/021 (6).tiff +test/2-seed/Training/0 Brassica napus/021.json +test/2-seed/Training/0 Brassica napus/021.tiff +test/2-seed/Training/0 Brassica napus/022 (2).json +test/2-seed/Training/0 Brassica napus/022 (2).tiff +test/2-seed/Training/0 Brassica napus/022 (3).json +test/2-seed/Training/0 Brassica napus/022 (3).tiff +test/2-seed/Training/0 Brassica napus/022 (4).json +test/2-seed/Training/0 Brassica napus/022 (4).tiff +test/2-seed/Training/0 Brassica napus/022 (5).json +test/2-seed/Training/0 Brassica napus/022 (5).tiff +test/2-seed/Training/0 Brassica napus/022 (6).json +test/2-seed/Training/0 Brassica napus/022 (6).tiff +test/2-seed/Training/0 Brassica napus/022.json +test/2-seed/Training/0 Brassica napus/022.tiff +test/2-seed/Training/0 Brassica napus/023 (2).json +test/2-seed/Training/0 Brassica napus/023 (2).tiff +test/2-seed/Training/0 Brassica napus/023 (3).json +test/2-seed/Training/0 Brassica napus/023 (3).tiff +test/2-seed/Training/0 Brassica napus/023 (4).json +test/2-seed/Training/0 Brassica napus/023 (4).tiff +test/2-seed/Training/0 Brassica napus/023 (5).json +test/2-seed/Training/0 Brassica napus/023 (5).tiff +test/2-seed/Training/0 Brassica napus/023 (6).json +test/2-seed/Training/0 Brassica napus/023 (6).tiff +test/2-seed/Training/0 Brassica napus/023.json +test/2-seed/Training/0 Brassica napus/023.tiff +test/2-seed/Training/0 Brassica napus/024 (2).json +test/2-seed/Training/0 Brassica napus/024 (2).tiff +test/2-seed/Training/0 Brassica napus/024 (3).json +test/2-seed/Training/0 Brassica napus/024 (3).tiff +test/2-seed/Training/0 Brassica napus/024 (4).json +test/2-seed/Training/0 Brassica napus/024 (4).tiff +test/2-seed/Training/0 Brassica napus/024 (5).json +test/2-seed/Training/0 Brassica napus/024 (5).tiff +test/2-seed/Training/0 Brassica napus/024 (6).json +test/2-seed/Training/0 Brassica napus/024 (6).tiff +test/2-seed/Training/0 Brassica napus/024.json +test/2-seed/Training/0 Brassica napus/024.tiff +test/2-seed/Training/0 Brassica napus/025 (2).json +test/2-seed/Training/0 Brassica napus/025 (2).tiff +test/2-seed/Training/0 Brassica napus/025 (3).json +test/2-seed/Training/0 Brassica napus/025 (3).tiff +test/2-seed/Training/0 Brassica napus/025 (4).json +test/2-seed/Training/0 Brassica napus/025 (4).tiff +test/2-seed/Training/0 Brassica napus/025 (5).json +test/2-seed/Training/0 Brassica napus/025 (5).tiff +test/2-seed/Training/0 Brassica napus/025 (6).json +test/2-seed/Training/0 Brassica napus/025 (6).tiff +test/2-seed/Training/0 Brassica napus/025.json +test/2-seed/Training/0 Brassica napus/025.tiff +test/2-seed/Training/0 Brassica napus/026 (2).json +test/2-seed/Training/0 Brassica napus/026 (2).tiff +test/2-seed/Training/0 Brassica napus/026 (3).json +test/2-seed/Training/0 Brassica napus/026 (3).tiff +test/2-seed/Training/0 Brassica napus/026 (4).json +test/2-seed/Training/0 Brassica napus/026 (4).tiff +test/2-seed/Training/0 Brassica napus/026 (5).json +test/2-seed/Training/0 Brassica napus/026 (5).tiff +test/2-seed/Training/0 Brassica napus/026 (6).json +test/2-seed/Training/0 Brassica napus/026 (6).tiff +test/2-seed/Training/0 Brassica napus/026.json +test/2-seed/Training/0 Brassica napus/026.tiff +test/2-seed/Training/0 Brassica napus/027 (2).json +test/2-seed/Training/0 Brassica napus/027 (2).tiff +test/2-seed/Training/0 Brassica napus/027 (3).json +test/2-seed/Training/0 Brassica napus/027 (3).tiff +test/2-seed/Training/0 Brassica napus/027 (4).json +test/2-seed/Training/0 Brassica napus/027 (4).tiff +test/2-seed/Training/0 Brassica napus/027 (5).json +test/2-seed/Training/0 Brassica napus/027 (5).tiff +test/2-seed/Training/0 Brassica napus/027.json +test/2-seed/Training/0 Brassica napus/027.tiff +test/2-seed/Training/0 Brassica napus/028 (2).json +test/2-seed/Training/0 Brassica napus/028 (2).tiff +test/2-seed/Training/0 Brassica napus/028 (3).json +test/2-seed/Training/0 Brassica napus/028 (3).tiff +test/2-seed/Training/0 Brassica napus/028 (4).json +test/2-seed/Training/0 Brassica napus/028 (4).tiff +test/2-seed/Training/0 Brassica napus/028 (5).json +test/2-seed/Training/0 Brassica napus/028 (5).tiff +test/2-seed/Training/0 Brassica napus/028 (6).json +test/2-seed/Training/0 Brassica napus/028 (6).tiff +test/2-seed/Training/0 Brassica napus/028.json +test/2-seed/Training/0 Brassica napus/028.tiff +test/2-seed/Training/0 Brassica napus/029 (2).json +test/2-seed/Training/0 Brassica napus/029 (2).tiff +test/2-seed/Training/0 Brassica napus/029 (3).json +test/2-seed/Training/0 Brassica napus/029 (3).tiff +test/2-seed/Training/0 Brassica napus/029 (4).json +test/2-seed/Training/0 Brassica napus/029 (4).tiff +test/2-seed/Training/0 Brassica napus/029 (5).json +test/2-seed/Training/0 Brassica napus/029 (5).tiff +test/2-seed/Training/0 Brassica napus/029 (6).json +test/2-seed/Training/0 Brassica napus/029 (6).tiff +test/2-seed/Training/0 Brassica napus/029.json +test/2-seed/Training/0 Brassica napus/029.tiff +test/2-seed/Training/0 Brassica napus/030 (2).json +test/2-seed/Training/0 Brassica napus/030 (2).tiff +test/2-seed/Training/0 Brassica napus/030 (3).json +test/2-seed/Training/0 Brassica napus/030 (3).tiff +test/2-seed/Training/0 Brassica napus/030 (4).json +test/2-seed/Training/0 Brassica napus/030 (4).tiff +test/2-seed/Training/0 Brassica napus/030 (5).json +test/2-seed/Training/0 Brassica napus/030 (5).tiff +test/2-seed/Training/0 Brassica napus/030 (6).json +test/2-seed/Training/0 Brassica napus/030 (6).tiff +test/2-seed/Training/0 Brassica napus/030.json +test/2-seed/Training/0 Brassica napus/030.tiff +test/2-seed/Training/0 Brassica napus/031 (2).json +test/2-seed/Training/0 Brassica napus/031 (2).tiff +test/2-seed/Training/0 Brassica napus/031 (3).json +test/2-seed/Training/0 Brassica napus/031 (3).tiff +test/2-seed/Training/0 Brassica napus/031 (4).json +test/2-seed/Training/0 Brassica napus/031 (4).tiff +test/2-seed/Training/0 Brassica napus/031 (5).json +test/2-seed/Training/0 Brassica napus/031 (5).tiff +test/2-seed/Training/0 Brassica napus/031 (6).json +test/2-seed/Training/0 Brassica napus/031 (6).tiff +test/2-seed/Training/0 Brassica napus/031.json +test/2-seed/Training/0 Brassica napus/031.tiff +test/2-seed/Training/0 Brassica napus/032 (2).json +test/2-seed/Training/0 Brassica napus/032 (2).tiff +test/2-seed/Training/0 Brassica napus/032 (3).json +test/2-seed/Training/0 Brassica napus/032 (3).tiff +test/2-seed/Training/0 Brassica napus/032 (4).json +test/2-seed/Training/0 Brassica napus/032 (4).tiff +test/2-seed/Training/0 Brassica napus/032 (5).json +test/2-seed/Training/0 Brassica napus/032 (5).tiff +test/2-seed/Training/0 Brassica napus/032 (6).json +test/2-seed/Training/0 Brassica napus/032 (6).tiff +test/2-seed/Training/0 Brassica napus/032.json +test/2-seed/Training/0 Brassica napus/032.tiff +test/2-seed/Training/0 Brassica napus/033 (2).json +test/2-seed/Training/0 Brassica napus/033 (2).tiff +test/2-seed/Training/0 Brassica napus/033 (3).json +test/2-seed/Training/0 Brassica napus/033 (3).tiff +test/2-seed/Training/0 Brassica napus/033 (4).json +test/2-seed/Training/0 Brassica napus/033 (4).tiff +test/2-seed/Training/0 Brassica napus/033 (5).json +test/2-seed/Training/0 Brassica napus/033 (5).tiff +test/2-seed/Training/0 Brassica napus/033 (6).json +test/2-seed/Training/0 Brassica napus/033 (6).tiff +test/2-seed/Training/0 Brassica napus/033.json +test/2-seed/Training/0 Brassica napus/033.tiff +test/2-seed/Training/0 Brassica napus/034 (2).json +test/2-seed/Training/0 Brassica napus/034 (2).tiff +test/2-seed/Training/0 Brassica napus/034 (3).json +test/2-seed/Training/0 Brassica napus/034 (3).tiff +test/2-seed/Training/0 Brassica napus/034 (4).json +test/2-seed/Training/0 Brassica napus/034 (4).tiff +test/2-seed/Training/0 Brassica napus/034 (5).json +test/2-seed/Training/0 Brassica napus/034 (5).tiff +test/2-seed/Training/0 Brassica napus/034 (6).json +test/2-seed/Training/0 Brassica napus/034 (6).tiff +test/2-seed/Training/0 Brassica napus/034.json +test/2-seed/Training/0 Brassica napus/034.tiff +test/2-seed/Training/0 Brassica napus/035 (2).json +test/2-seed/Training/0 Brassica napus/035 (2).tiff +test/2-seed/Training/0 Brassica napus/035 (3).json +test/2-seed/Training/0 Brassica napus/035 (3).tiff +test/2-seed/Training/0 Brassica napus/035 (4).json +test/2-seed/Training/0 Brassica napus/035 (4).tiff +test/2-seed/Training/0 Brassica napus/035 (5).json +test/2-seed/Training/0 Brassica napus/035 (5).tiff +test/2-seed/Training/0 Brassica napus/035 (6).json +test/2-seed/Training/0 Brassica napus/035 (6).tiff +test/2-seed/Training/0 Brassica napus/035.json +test/2-seed/Training/0 Brassica napus/035.tiff +test/2-seed/Training/0 Brassica napus/036 (2).json +test/2-seed/Training/0 Brassica napus/036 (2).tiff +test/2-seed/Training/0 Brassica napus/036 (3).json +test/2-seed/Training/0 Brassica napus/036 (3).tiff +test/2-seed/Training/0 Brassica napus/036 (4).json +test/2-seed/Training/0 Brassica napus/036 (4).tiff +test/2-seed/Training/0 Brassica napus/036 (5).json +test/2-seed/Training/0 Brassica napus/036 (5).tiff +test/2-seed/Training/0 Brassica napus/036 (6).json +test/2-seed/Training/0 Brassica napus/036 (6).tiff +test/2-seed/Training/0 Brassica napus/036.json +test/2-seed/Training/0 Brassica napus/036.tiff +test/2-seed/Training/0 Brassica napus/037 (2).json +test/2-seed/Training/0 Brassica napus/037 (2).tiff +test/2-seed/Training/0 Brassica napus/037 (3).json +test/2-seed/Training/0 Brassica napus/037 (3).tiff +test/2-seed/Training/0 Brassica napus/037 (4).json +test/2-seed/Training/0 Brassica napus/037 (4).tiff +test/2-seed/Training/0 Brassica napus/037 (5).json +test/2-seed/Training/0 Brassica napus/037 (5).tiff +test/2-seed/Training/0 Brassica napus/037 (6).json +test/2-seed/Training/0 Brassica napus/037 (6).tiff +test/2-seed/Training/0 Brassica napus/037.json +test/2-seed/Training/0 Brassica napus/037.tiff +test/2-seed/Training/0 Brassica napus/038 (2).json +test/2-seed/Training/0 Brassica napus/038 (2).tiff +test/2-seed/Training/0 Brassica napus/038 (3).json +test/2-seed/Training/0 Brassica napus/038 (3).tiff +test/2-seed/Training/0 Brassica napus/038 (4).json +test/2-seed/Training/0 Brassica napus/038 (4).tiff +test/2-seed/Training/0 Brassica napus/038 (5).json +test/2-seed/Training/0 Brassica napus/038 (5).tiff +test/2-seed/Training/0 Brassica napus/038 (6).json +test/2-seed/Training/0 Brassica napus/038 (6).tiff +test/2-seed/Training/0 Brassica napus/038.json +test/2-seed/Training/0 Brassica napus/038.tiff +test/2-seed/Training/0 Brassica napus/039 (2).json +test/2-seed/Training/0 Brassica napus/039 (2).tiff +test/2-seed/Training/0 Brassica napus/039 (3).json +test/2-seed/Training/0 Brassica napus/039 (3).tiff +test/2-seed/Training/0 Brassica napus/039 (4).json +test/2-seed/Training/0 Brassica napus/039 (4).tiff +test/2-seed/Training/0 Brassica napus/039 (5).json +test/2-seed/Training/0 Brassica napus/039 (5).tiff +test/2-seed/Training/0 Brassica napus/039 (6).json +test/2-seed/Training/0 Brassica napus/039 (6).tiff +test/2-seed/Training/0 Brassica napus/039.json +test/2-seed/Training/0 Brassica napus/039.tiff +test/2-seed/Training/0 Brassica napus/040 (2).json +test/2-seed/Training/0 Brassica napus/040 (2).tiff +test/2-seed/Training/0 Brassica napus/040 (3).json +test/2-seed/Training/0 Brassica napus/040 (3).tiff +test/2-seed/Training/0 Brassica napus/040 (4).json +test/2-seed/Training/0 Brassica napus/040 (4).tiff +test/2-seed/Training/0 Brassica napus/040 (5).json +test/2-seed/Training/0 Brassica napus/040 (5).tiff +test/2-seed/Training/0 Brassica napus/040 (6).json +test/2-seed/Training/0 Brassica napus/040 (6).tiff +test/2-seed/Training/0 Brassica napus/040.json +test/2-seed/Training/0 Brassica napus/040.tiff +test/2-seed/Training/0 Brassica napus/041 (2).json +test/2-seed/Training/0 Brassica napus/041 (2).tiff +test/2-seed/Training/0 Brassica napus/041 (3).json +test/2-seed/Training/0 Brassica napus/041 (3).tiff +test/2-seed/Training/0 Brassica napus/041 (4).json +test/2-seed/Training/0 Brassica napus/041 (4).tiff +test/2-seed/Training/0 Brassica napus/041 (5).json +test/2-seed/Training/0 Brassica napus/041 (5).tiff +test/2-seed/Training/0 Brassica napus/041 (6).json +test/2-seed/Training/0 Brassica napus/041 (6).tiff +test/2-seed/Training/0 Brassica napus/041.json +test/2-seed/Training/0 Brassica napus/041.tiff +test/2-seed/Training/0 Brassica napus/042 (2).json +test/2-seed/Training/0 Brassica napus/042 (2).tiff +test/2-seed/Training/0 Brassica napus/042 (3).json +test/2-seed/Training/0 Brassica napus/042 (3).tiff +test/2-seed/Training/0 Brassica napus/042 (4).json +test/2-seed/Training/0 Brassica napus/042 (4).tiff +test/2-seed/Training/0 Brassica napus/042 (5).json +test/2-seed/Training/0 Brassica napus/042 (5).tiff +test/2-seed/Training/0 Brassica napus/042 (6).json +test/2-seed/Training/0 Brassica napus/042 (6).tiff +test/2-seed/Training/0 Brassica napus/042.json +test/2-seed/Training/0 Brassica napus/042.tiff +test/2-seed/Training/0 Brassica napus/043 (2).json +test/2-seed/Training/0 Brassica napus/043 (2).tiff +test/2-seed/Training/0 Brassica napus/043 (3).json +test/2-seed/Training/0 Brassica napus/043 (3).tiff +test/2-seed/Training/0 Brassica napus/043 (4).json +test/2-seed/Training/0 Brassica napus/043 (4).tiff +test/2-seed/Training/0 Brassica napus/043 (5).json +test/2-seed/Training/0 Brassica napus/043 (5).tiff +test/2-seed/Training/0 Brassica napus/043 (6).json +test/2-seed/Training/0 Brassica napus/043 (6).tiff +test/2-seed/Training/0 Brassica napus/043.json +test/2-seed/Training/0 Brassica napus/043.tiff +test/2-seed/Training/0 Brassica napus/044 (2).json +test/2-seed/Training/0 Brassica napus/044 (2).tiff +test/2-seed/Training/0 Brassica napus/044 (3).json +test/2-seed/Training/0 Brassica napus/044 (3).tiff +test/2-seed/Training/0 Brassica napus/044 (4).json +test/2-seed/Training/0 Brassica napus/044 (4).tiff +test/2-seed/Training/0 Brassica napus/044 (5).json +test/2-seed/Training/0 Brassica napus/044 (5).tiff +test/2-seed/Training/0 Brassica napus/044 (6).json +test/2-seed/Training/0 Brassica napus/044 (6).tiff +test/2-seed/Training/0 Brassica napus/044.json +test/2-seed/Training/0 Brassica napus/044.tiff +test/2-seed/Training/0 Brassica napus/045 (2).json +test/2-seed/Training/0 Brassica napus/045 (2).tiff +test/2-seed/Training/0 Brassica napus/045 (3).json +test/2-seed/Training/0 Brassica napus/045 (3).tiff +test/2-seed/Training/0 Brassica napus/045 (4).json +test/2-seed/Training/0 Brassica napus/045 (4).tiff +test/2-seed/Training/0 Brassica napus/045 (5).json +test/2-seed/Training/0 Brassica napus/045 (5).tiff +test/2-seed/Training/0 Brassica napus/045.json +test/2-seed/Training/0 Brassica napus/045.tiff +test/2-seed/Training/0 Brassica napus/046 (2).json +test/2-seed/Training/0 Brassica napus/046 (2).tiff +test/2-seed/Training/0 Brassica napus/046 (3).json +test/2-seed/Training/0 Brassica napus/046 (3).tiff +test/2-seed/Training/0 Brassica napus/046 (4).json +test/2-seed/Training/0 Brassica napus/046 (4).tiff +test/2-seed/Training/0 Brassica napus/046 (5).json +test/2-seed/Training/0 Brassica napus/046 (5).tiff +test/2-seed/Training/0 Brassica napus/046.json +test/2-seed/Training/0 Brassica napus/046.tiff +test/2-seed/Training/0 Brassica napus/047 (2).json +test/2-seed/Training/0 Brassica napus/047 (2).tiff +test/2-seed/Training/0 Brassica napus/047 (3).json +test/2-seed/Training/0 Brassica napus/047 (3).tiff +test/2-seed/Training/0 Brassica napus/047 (4).json +test/2-seed/Training/0 Brassica napus/047 (4).tiff +test/2-seed/Training/0 Brassica napus/047 (5).json +test/2-seed/Training/0 Brassica napus/047 (5).tiff +test/2-seed/Training/0 Brassica napus/047.json +test/2-seed/Training/0 Brassica napus/047.tiff +test/2-seed/Training/0 Brassica napus/048 (2).json +test/2-seed/Training/0 Brassica napus/048 (2).tiff +test/2-seed/Training/0 Brassica napus/048 (3).json +test/2-seed/Training/0 Brassica napus/048 (3).tiff +test/2-seed/Training/0 Brassica napus/048 (4).json +test/2-seed/Training/0 Brassica napus/048 (4).tiff +test/2-seed/Training/0 Brassica napus/048 (5).json +test/2-seed/Training/0 Brassica napus/048 (5).tiff +test/2-seed/Training/0 Brassica napus/048.json +test/2-seed/Training/0 Brassica napus/048.tiff +test/2-seed/Training/0 Brassica napus/049 (2).json +test/2-seed/Training/0 Brassica napus/049 (2).tiff +test/2-seed/Training/0 Brassica napus/049 (3).json +test/2-seed/Training/0 Brassica napus/049 (3).tiff +test/2-seed/Training/0 Brassica napus/049 (4).json +test/2-seed/Training/0 Brassica napus/049 (4).tiff +test/2-seed/Training/0 Brassica napus/049 (5).json +test/2-seed/Training/0 Brassica napus/049 (5).tiff +test/2-seed/Training/0 Brassica napus/049.json +test/2-seed/Training/0 Brassica napus/049.tiff +test/2-seed/Training/0 Brassica napus/050 (2).json +test/2-seed/Training/0 Brassica napus/050 (2).tiff +test/2-seed/Training/0 Brassica napus/050 (3).json +test/2-seed/Training/0 Brassica napus/050 (3).tiff +test/2-seed/Training/0 Brassica napus/050 (4).json +test/2-seed/Training/0 Brassica napus/050 (4).tiff +test/2-seed/Training/0 Brassica napus/050.json +test/2-seed/Training/0 Brassica napus/050.tiff +test/2-seed/Training/0 Brassica napus/051 (2).json +test/2-seed/Training/0 Brassica napus/051 (2).tiff +test/2-seed/Training/0 Brassica napus/051 (3).json +test/2-seed/Training/0 Brassica napus/051 (3).tiff +test/2-seed/Training/0 Brassica napus/051.json +test/2-seed/Training/0 Brassica napus/051.tiff +test/2-seed/Training/0 Brassica napus/052 (2).json +test/2-seed/Training/0 Brassica napus/052 (2).tiff +test/2-seed/Training/0 Brassica napus/052 (3).json +test/2-seed/Training/0 Brassica napus/052 (3).tiff +test/2-seed/Training/0 Brassica napus/052.json +test/2-seed/Training/0 Brassica napus/052.tiff +test/2-seed/Training/0 Brassica napus/053 (2).json +test/2-seed/Training/0 Brassica napus/053 (2).tiff +test/2-seed/Training/0 Brassica napus/053 (3).json +test/2-seed/Training/0 Brassica napus/053 (3).tiff +test/2-seed/Training/0 Brassica napus/053.json +test/2-seed/Training/0 Brassica napus/053.tiff +test/2-seed/Training/0 Brassica napus/054 (2).json +test/2-seed/Training/0 Brassica napus/054 (2).tiff +test/2-seed/Training/0 Brassica napus/054 (3).json +test/2-seed/Training/0 Brassica napus/054 (3).tiff +test/2-seed/Training/0 Brassica napus/054.json +test/2-seed/Training/0 Brassica napus/054.tiff +test/2-seed/Training/0 Brassica napus/055 (2).json +test/2-seed/Training/0 Brassica napus/055 (2).tiff +test/2-seed/Training/0 Brassica napus/055 (3).json +test/2-seed/Training/0 Brassica napus/055 (3).tiff +test/2-seed/Training/0 Brassica napus/055.json +test/2-seed/Training/0 Brassica napus/055.tiff +test/2-seed/Training/0 Brassica napus/056 (2).json +test/2-seed/Training/0 Brassica napus/056 (2).tiff +test/2-seed/Training/0 Brassica napus/056 (3).json +test/2-seed/Training/0 Brassica napus/056 (3).tiff +test/2-seed/Training/0 Brassica napus/056.json +test/2-seed/Training/0 Brassica napus/056.tiff +test/2-seed/Training/0 Brassica napus/057 (2).json +test/2-seed/Training/0 Brassica napus/057 (2).tiff +test/2-seed/Training/0 Brassica napus/057 (3).json +test/2-seed/Training/0 Brassica napus/057 (3).tiff +test/2-seed/Training/0 Brassica napus/057.json +test/2-seed/Training/0 Brassica napus/057.tiff +test/2-seed/Training/0 Brassica napus/058 (2).json +test/2-seed/Training/0 Brassica napus/058 (2).tiff +test/2-seed/Training/0 Brassica napus/058 (3).json +test/2-seed/Training/0 Brassica napus/058 (3).tiff +test/2-seed/Training/0 Brassica napus/058.json +test/2-seed/Training/0 Brassica napus/058.tiff +test/2-seed/Training/0 Brassica napus/059 (2).json +test/2-seed/Training/0 Brassica napus/059 (2).tiff +test/2-seed/Training/0 Brassica napus/059.json +test/2-seed/Training/0 Brassica napus/059.tiff +test/2-seed/Training/0 Brassica napus/060 (2).json +test/2-seed/Training/0 Brassica napus/060 (2).tiff +test/2-seed/Training/0 Brassica napus/060.json +test/2-seed/Training/0 Brassica napus/060.tiff +test/2-seed/Training/0 Brassica napus/061 (2).json +test/2-seed/Training/0 Brassica napus/061 (2).tiff +test/2-seed/Training/0 Brassica napus/061.json +test/2-seed/Training/0 Brassica napus/061.tiff +test/2-seed/Training/0 Brassica napus/062 (2).json +test/2-seed/Training/0 Brassica napus/062 (2).tiff +test/2-seed/Training/0 Brassica napus/062.json +test/2-seed/Training/0 Brassica napus/062.tiff +test/2-seed/Training/0 Brassica napus/063 (2).json +test/2-seed/Training/0 Brassica napus/063 (2).tiff +test/2-seed/Training/0 Brassica napus/063.json +test/2-seed/Training/0 Brassica napus/063.tiff +test/2-seed/Training/0 Brassica napus/064 (2).json +test/2-seed/Training/0 Brassica napus/064 (2).tiff +test/2-seed/Training/0 Brassica napus/064.json +test/2-seed/Training/0 Brassica napus/064.tiff +test/2-seed/Training/0 Brassica napus/065 (2).json +test/2-seed/Training/0 Brassica napus/065 (2).tiff +test/2-seed/Training/0 Brassica napus/065.json +test/2-seed/Training/0 Brassica napus/065.tiff +test/2-seed/Training/0 Brassica napus/066 (2).json +test/2-seed/Training/0 Brassica napus/066 (2).tiff +test/2-seed/Training/0 Brassica napus/066.json +test/2-seed/Training/0 Brassica napus/066.tiff +test/2-seed/Training/0 Brassica napus/067 (2).json +test/2-seed/Training/0 Brassica napus/067 (2).tiff +test/2-seed/Training/0 Brassica napus/067.json +test/2-seed/Training/0 Brassica napus/067.tiff +test/2-seed/Training/0 Brassica napus/068 (2).json +test/2-seed/Training/0 Brassica napus/068 (2).tiff +test/2-seed/Training/0 Brassica napus/068.json +test/2-seed/Training/0 Brassica napus/068.tiff +test/2-seed/Training/0 Brassica napus/069 (2).json +test/2-seed/Training/0 Brassica napus/069 (2).tiff +test/2-seed/Training/0 Brassica napus/069.json +test/2-seed/Training/0 Brassica napus/069.tiff +test/2-seed/Training/0 Brassica napus/070 (2).json +test/2-seed/Training/0 Brassica napus/070 (2).tiff +test/2-seed/Training/0 Brassica napus/070.json +test/2-seed/Training/0 Brassica napus/070.tiff +test/2-seed/Training/0 Brassica napus/071 (2).json +test/2-seed/Training/0 Brassica napus/071 (2).tiff +test/2-seed/Training/0 Brassica napus/071.json +test/2-seed/Training/0 Brassica napus/071.tiff +test/2-seed/Training/0 Brassica napus/072 (2).json +test/2-seed/Training/0 Brassica napus/072 (2).tiff +test/2-seed/Training/0 Brassica napus/072.json +test/2-seed/Training/0 Brassica napus/072.tiff +test/2-seed/Training/0 Brassica napus/073 (2).json +test/2-seed/Training/0 Brassica napus/073 (2).tiff +test/2-seed/Training/0 Brassica napus/073.json +test/2-seed/Training/0 Brassica napus/073.tiff +test/2-seed/Training/0 Brassica napus/074 (2).json +test/2-seed/Training/0 Brassica napus/074 (2).tiff +test/2-seed/Training/0 Brassica napus/074.json +test/2-seed/Training/0 Brassica napus/074.tiff +test/2-seed/Training/0 Brassica napus/075 (2).json +test/2-seed/Training/0 Brassica napus/075 (2).tiff +test/2-seed/Training/0 Brassica napus/075.json +test/2-seed/Training/0 Brassica napus/075.tiff +test/2-seed/Training/0 Brassica napus/076 (2).json +test/2-seed/Training/0 Brassica napus/076 (2).tiff +test/2-seed/Training/0 Brassica napus/076.json +test/2-seed/Training/0 Brassica napus/076.tiff +test/2-seed/Training/0 Brassica napus/077 (2).json +test/2-seed/Training/0 Brassica napus/077 (2).tiff +test/2-seed/Training/0 Brassica napus/077.json +test/2-seed/Training/0 Brassica napus/077.tiff +test/2-seed/Training/0 Brassica napus/078 (2).json +test/2-seed/Training/0 Brassica napus/078 (2).tiff +test/2-seed/Training/0 Brassica napus/078.json +test/2-seed/Training/0 Brassica napus/078.tiff +test/2-seed/Training/0 Brassica napus/079 (2).json +test/2-seed/Training/0 Brassica napus/079 (2).tiff +test/2-seed/Training/0 Brassica napus/079.json +test/2-seed/Training/0 Brassica napus/079.tiff +test/2-seed/Training/0 Brassica napus/080 (2).json +test/2-seed/Training/0 Brassica napus/080 (2).tiff +test/2-seed/Training/0 Brassica napus/080.json +test/2-seed/Training/0 Brassica napus/080.tiff +test/2-seed/Training/0 Brassica napus/081 (2).json +test/2-seed/Training/0 Brassica napus/081 (2).tiff +test/2-seed/Training/0 Brassica napus/081.json +test/2-seed/Training/0 Brassica napus/081.tiff +test/2-seed/Training/0 Brassica napus/082 (2).json +test/2-seed/Training/0 Brassica napus/082 (2).tiff +test/2-seed/Training/0 Brassica napus/082.json +test/2-seed/Training/0 Brassica napus/082.tiff +test/2-seed/Training/0 Brassica napus/083 (2).json +test/2-seed/Training/0 Brassica napus/083 (2).tiff +test/2-seed/Training/0 Brassica napus/083.json +test/2-seed/Training/0 Brassica napus/083.tiff +test/2-seed/Training/0 Brassica napus/084 (2).json +test/2-seed/Training/0 Brassica napus/084 (2).tiff +test/2-seed/Training/0 Brassica napus/084.json +test/2-seed/Training/0 Brassica napus/084.tiff +test/2-seed/Training/0 Brassica napus/085 (2).json +test/2-seed/Training/0 Brassica napus/085 (2).tiff +test/2-seed/Training/0 Brassica napus/085.json +test/2-seed/Training/0 Brassica napus/085.tiff +test/2-seed/Training/0 Brassica napus/086 (2).json +test/2-seed/Training/0 Brassica napus/086 (2).tiff +test/2-seed/Training/0 Brassica napus/086.json +test/2-seed/Training/0 Brassica napus/086.tiff +test/2-seed/Training/0 Brassica napus/087 (2).json +test/2-seed/Training/0 Brassica napus/087 (2).tiff +test/2-seed/Training/0 Brassica napus/087.json +test/2-seed/Training/0 Brassica napus/087.tiff +test/2-seed/Training/0 Brassica napus/088 (2).json +test/2-seed/Training/0 Brassica napus/088 (2).tiff +test/2-seed/Training/0 Brassica napus/088.json +test/2-seed/Training/0 Brassica napus/088.tiff +test/2-seed/Training/0 Brassica napus/089 (2).json +test/2-seed/Training/0 Brassica napus/089 (2).tiff +test/2-seed/Training/0 Brassica napus/089.json +test/2-seed/Training/0 Brassica napus/089.tiff +test/2-seed/Training/0 Brassica napus/090 (2).json +test/2-seed/Training/0 Brassica napus/090 (2).tiff +test/2-seed/Training/0 Brassica napus/090.json +test/2-seed/Training/0 Brassica napus/090.tiff +test/2-seed/Training/0 Brassica napus/091 (2).json +test/2-seed/Training/0 Brassica napus/091 (2).tiff +test/2-seed/Training/0 Brassica napus/091.json +test/2-seed/Training/0 Brassica napus/091.tiff +test/2-seed/Training/0 Brassica napus/092 (2).json +test/2-seed/Training/0 Brassica napus/092 (2).tiff +test/2-seed/Training/0 Brassica napus/092.json +test/2-seed/Training/0 Brassica napus/092.tiff +test/2-seed/Training/0 Brassica napus/093 (2).json +test/2-seed/Training/0 Brassica napus/093 (2).tiff +test/2-seed/Training/0 Brassica napus/093.json +test/2-seed/Training/0 Brassica napus/093.tiff +test/2-seed/Training/0 Brassica napus/094 (2).json +test/2-seed/Training/0 Brassica napus/094 (2).tiff +test/2-seed/Training/0 Brassica napus/094.json +test/2-seed/Training/0 Brassica napus/094.tiff +test/2-seed/Training/0 Brassica napus/095 (2).json +test/2-seed/Training/0 Brassica napus/095 (2).tiff +test/2-seed/Training/0 Brassica napus/095.json +test/2-seed/Training/0 Brassica napus/095.tiff +test/2-seed/Training/0 Brassica napus/096 (2).json +test/2-seed/Training/0 Brassica napus/096 (2).tiff +test/2-seed/Training/0 Brassica napus/096.json +test/2-seed/Training/0 Brassica napus/096.tiff +test/2-seed/Training/0 Brassica napus/097 (2).json +test/2-seed/Training/0 Brassica napus/097 (2).tiff +test/2-seed/Training/0 Brassica napus/097.json +test/2-seed/Training/0 Brassica napus/097.tiff +test/2-seed/Training/0 Brassica napus/098 (2).json +test/2-seed/Training/0 Brassica napus/098 (2).tiff +test/2-seed/Training/0 Brassica napus/098.json +test/2-seed/Training/0 Brassica napus/098.tiff +test/2-seed/Training/0 Brassica napus/099 (2).json +test/2-seed/Training/0 Brassica napus/099 (2).tiff +test/2-seed/Training/0 Brassica napus/099.json +test/2-seed/Training/0 Brassica napus/099.tiff +test/2-seed/Training/0 Brassica napus/100 (2).json +test/2-seed/Training/0 Brassica napus/100 (2).tiff +test/2-seed/Training/0 Brassica napus/100.json +test/2-seed/Training/0 Brassica napus/100.tiff +test/2-seed/Training/0 Brassica napus/index.json +test/2-seed/Training/1 Brassica junsea/001.json +test/2-seed/Training/1 Brassica junsea/001.tiff +test/2-seed/Training/1 Brassica junsea/002.json +test/2-seed/Training/1 Brassica junsea/002.tiff +test/2-seed/Training/1 Brassica junsea/003.json +test/2-seed/Training/1 Brassica junsea/003.tiff +test/2-seed/Training/1 Brassica junsea/004.json +test/2-seed/Training/1 Brassica junsea/004.tiff +test/2-seed/Training/1 Brassica junsea/005.json +test/2-seed/Training/1 Brassica junsea/005.tiff +test/2-seed/Training/1 Brassica junsea/006.json +test/2-seed/Training/1 Brassica junsea/006.tiff +test/2-seed/Training/1 Brassica junsea/007.json +test/2-seed/Training/1 Brassica junsea/007.tiff +test/2-seed/Training/1 Brassica junsea/008.json +test/2-seed/Training/1 Brassica junsea/008.tiff +test/2-seed/Training/1 Brassica junsea/009.json +test/2-seed/Training/1 Brassica junsea/009.tiff +test/2-seed/Training/1 Brassica junsea/010.json +test/2-seed/Training/1 Brassica junsea/010.tiff +test/2-seed/Training/1 Brassica junsea/011.json +test/2-seed/Training/1 Brassica junsea/011.tiff +test/2-seed/Training/1 Brassica junsea/012.json +test/2-seed/Training/1 Brassica junsea/012.tiff +test/2-seed/Training/1 Brassica junsea/013.json +test/2-seed/Training/1 Brassica junsea/013.tiff +test/2-seed/Training/1 Brassica junsea/014.json +test/2-seed/Training/1 Brassica junsea/014.tiff +test/2-seed/Training/1 Brassica junsea/015.json +test/2-seed/Training/1 Brassica junsea/015.tiff +test/2-seed/Training/1 Brassica junsea/016.json +test/2-seed/Training/1 Brassica junsea/016.tiff +test/2-seed/Training/1 Brassica junsea/017.json +test/2-seed/Training/1 Brassica junsea/017.tiff +test/2-seed/Training/1 Brassica junsea/018.json +test/2-seed/Training/1 Brassica junsea/018.tiff +test/2-seed/Training/1 Brassica junsea/019.json +test/2-seed/Training/1 Brassica junsea/019.tiff +test/2-seed/Training/1 Brassica junsea/020.json +test/2-seed/Training/1 Brassica junsea/020.tiff +test/2-seed/Training/1 Brassica junsea/021.json +test/2-seed/Training/1 Brassica junsea/021.tiff +test/2-seed/Training/1 Brassica junsea/022.json +test/2-seed/Training/1 Brassica junsea/022.tiff +test/2-seed/Training/1 Brassica junsea/023.json +test/2-seed/Training/1 Brassica junsea/023.tiff +test/2-seed/Training/1 Brassica junsea/024.json +test/2-seed/Training/1 Brassica junsea/024.tiff +test/2-seed/Training/1 Brassica junsea/025.json +test/2-seed/Training/1 Brassica junsea/025.tiff +test/2-seed/Training/1 Brassica junsea/026.json +test/2-seed/Training/1 Brassica junsea/026.tiff +test/2-seed/Training/1 Brassica junsea/027.json +test/2-seed/Training/1 Brassica junsea/027.tiff +test/2-seed/Training/1 Brassica junsea/28.json +test/2-seed/Training/1 Brassica junsea/28.tiff +test/2-seed/Training/1 Brassica junsea/29.json +test/2-seed/Training/1 Brassica junsea/29.tiff +test/2-seed/Training/1 Brassica junsea/30.json +test/2-seed/Training/1 Brassica junsea/30.tiff +test/2-seed/Training/1 Brassica junsea/31.json +test/2-seed/Training/1 Brassica junsea/31.tiff +test/2-seed/Training/1 Brassica junsea/32.json +test/2-seed/Training/1 Brassica junsea/32.tiff +test/2-seed/Training/1 Brassica junsea/33.json +test/2-seed/Training/1 Brassica junsea/33.tiff +test/2-seed/Training/1 Brassica junsea/34.json +test/2-seed/Training/1 Brassica junsea/34.tiff +test/2-seed/Training/1 Brassica junsea/35.json +test/2-seed/Training/1 Brassica junsea/35.tiff +test/2-seed/Training/1 Brassica junsea/36.json +test/2-seed/Training/1 Brassica junsea/36.tiff +test/2-seed/Training/1 Brassica junsea/38.json +test/2-seed/Training/1 Brassica junsea/38.tiff +test/2-seed/Training/1 Brassica junsea/39.json +test/2-seed/Training/1 Brassica junsea/39.tiff +test/2-seed/Training/1 Brassica junsea/40.json +test/2-seed/Training/1 Brassica junsea/40.tiff +test/2-seed/Training/1 Brassica junsea/41.json +test/2-seed/Training/1 Brassica junsea/41.tiff +test/2-seed/Training/1 Brassica junsea/42.json +test/2-seed/Training/1 Brassica junsea/42.tiff +test/2-seed/Training/1 Brassica junsea/43.json +test/2-seed/Training/1 Brassica junsea/43.tiff +test/2-seed/Training/1 Brassica junsea/44.json +test/2-seed/Training/1 Brassica junsea/44.tiff +test/2-seed/Training/1 Brassica junsea/45.json +test/2-seed/Training/1 Brassica junsea/45.tiff +test/2-seed/Training/1 Brassica junsea/46.json +test/2-seed/Training/1 Brassica junsea/46.tiff +test/2-seed/Training/1 Brassica junsea/47.json +test/2-seed/Training/1 Brassica junsea/47.tiff +test/2-seed/Training/1 Brassica junsea/48.json +test/2-seed/Training/1 Brassica junsea/48.tiff +test/2-seed/Training/1 Brassica junsea/49.json +test/2-seed/Training/1 Brassica junsea/49.tiff +test/2-seed/Training/1 Brassica junsea/50.json +test/2-seed/Training/1 Brassica junsea/50.tiff +test/2-seed/Training/1 Brassica junsea/51.json +test/2-seed/Training/1 Brassica junsea/51.tiff +test/2-seed/Training/1 Brassica junsea/52.json +test/2-seed/Training/1 Brassica junsea/52.tiff +test/2-seed/Training/1 Brassica junsea/53.json +test/2-seed/Training/1 Brassica junsea/53.tiff +test/2-seed/Training/1 Brassica junsea/54.json +test/2-seed/Training/1 Brassica junsea/54.tiff +test/2-seed/Training/1 Brassica junsea/55.json +test/2-seed/Training/1 Brassica junsea/55.tiff +test/2-seed/Training/1 Brassica junsea/56 (2).json +test/2-seed/Training/1 Brassica junsea/56 (2).tiff +test/2-seed/Training/1 Brassica junsea/56.json +test/2-seed/Training/1 Brassica junsea/56.tiff +test/2-seed/Training/1 Brassica junsea/57.json +test/2-seed/Training/1 Brassica junsea/57.tiff +test/2-seed/Training/1 Brassica junsea/58.json +test/2-seed/Training/1 Brassica junsea/58.tiff +test/2-seed/Training/1 Brassica junsea/59.json +test/2-seed/Training/1 Brassica junsea/59.tiff +test/2-seed/Training/1 Brassica junsea/60.json +test/2-seed/Training/1 Brassica junsea/60.tiff +test/2-seed/Training/1 Brassica junsea/61.json +test/2-seed/Training/1 Brassica junsea/61.tiff +test/2-seed/Training/1 Brassica junsea/62.json +test/2-seed/Training/1 Brassica junsea/62.tiff +test/2-seed/Training/1 Brassica junsea/63.json +test/2-seed/Training/1 Brassica junsea/63.tiff +test/2-seed/Training/1 Brassica junsea/64.json +test/2-seed/Training/1 Brassica junsea/64.tiff +test/2-seed/Training/1 Brassica junsea/65.json +test/2-seed/Training/1 Brassica junsea/65.tiff +test/2-seed/Training/1 Brassica junsea/66.json +test/2-seed/Training/1 Brassica junsea/66.tiff +test/2-seed/Training/1 Brassica junsea/67.json +test/2-seed/Training/1 Brassica junsea/67.tiff +test/2-seed/Training/1 Brassica junsea/68.json +test/2-seed/Training/1 Brassica junsea/68.tiff +test/2-seed/Training/1 Brassica junsea/69.json +test/2-seed/Training/1 Brassica junsea/69.tiff +test/2-seed/Training/1 Brassica junsea/70.json +test/2-seed/Training/1 Brassica junsea/70.tiff +test/2-seed/Training/1 Brassica junsea/71.json +test/2-seed/Training/1 Brassica junsea/71.tiff +test/2-seed/Training/1 Brassica junsea/72.json +test/2-seed/Training/1 Brassica junsea/72.tiff +test/2-seed/Training/1 Brassica junsea/73.json +test/2-seed/Training/1 Brassica junsea/73.tiff +test/2-seed/Training/1 Brassica junsea/74.json +test/2-seed/Training/1 Brassica junsea/74.tiff +test/2-seed/Training/1 Brassica junsea/75.json +test/2-seed/Training/1 Brassica junsea/75.tiff +test/2-seed/Training/1 Brassica junsea/76.json +test/2-seed/Training/1 Brassica junsea/76.tiff +test/2-seed/Training/1 Brassica junsea/77.json +test/2-seed/Training/1 Brassica junsea/77.tiff +test/2-seed/Training/1 Brassica junsea/78.json +test/2-seed/Training/1 Brassica junsea/78.tiff +test/2-seed/Training/1 Brassica junsea/79.json +test/2-seed/Training/1 Brassica junsea/79.tiff +test/2-seed/Training/1 Brassica junsea/80.json +test/2-seed/Training/1 Brassica junsea/80.tiff +test/2-seed/Training/1 Brassica junsea/81.json +test/2-seed/Training/1 Brassica junsea/81.tiff +test/2-seed/Training/1 Brassica junsea/82.json +test/2-seed/Training/1 Brassica junsea/82.tiff +test/2-seed/Training/1 Brassica junsea/83.json +test/2-seed/Training/1 Brassica junsea/83.tiff +test/2-seed/Training/1 Brassica junsea/84.json +test/2-seed/Training/1 Brassica junsea/84.tiff +test/2-seed/Training/1 Brassica junsea/85.json +test/2-seed/Training/1 Brassica junsea/85.tiff +test/2-seed/Training/1 Brassica junsea/86.json +test/2-seed/Training/1 Brassica junsea/86.tiff +test/2-seed/Training/1 Brassica junsea/87.json +test/2-seed/Training/1 Brassica junsea/87.tiff +test/2-seed/Training/1 Brassica junsea/88.json +test/2-seed/Training/1 Brassica junsea/88.tiff +test/2-seed/Training/1 Brassica junsea/89.json +test/2-seed/Training/1 Brassica junsea/89.tiff +test/2-seed/Training/1 Brassica junsea/90.json +test/2-seed/Training/1 Brassica junsea/90.tiff +test/2-seed/Training/1 Brassica junsea/91.json +test/2-seed/Training/1 Brassica junsea/91.tiff +test/2-seed/Training/1 Brassica junsea/92.json +test/2-seed/Training/1 Brassica junsea/92.tiff +test/2-seed/Training/1 Brassica junsea/93.json +test/2-seed/Training/1 Brassica junsea/93.tiff +test/2-seed/Training/1 Brassica junsea/94.json +test/2-seed/Training/1 Brassica junsea/94.tiff +test/2-seed/Training/1 Brassica junsea/95.json +test/2-seed/Training/1 Brassica junsea/95.tiff +test/2-seed/Training/1 Brassica junsea/96.json +test/2-seed/Training/1 Brassica junsea/96.tiff +test/2-seed/Training/1 Brassica junsea/97.json +test/2-seed/Training/1 Brassica junsea/97.tiff +test/2-seed/Training/1 Brassica junsea/98.json +test/2-seed/Training/1 Brassica junsea/98.tiff +test/2-seed/Training/1 Brassica junsea/99.json +test/2-seed/Training/1 Brassica junsea/99.tiff +test/2-seed/Training/1 Brassica junsea/100.json +test/2-seed/Training/1 Brassica junsea/100.tiff +test/2-seed/Training/1 Brassica junsea/101.json +test/2-seed/Training/1 Brassica junsea/101.tiff +test/2-seed/Training/1 Brassica junsea/102.json +test/2-seed/Training/1 Brassica junsea/102.tiff +test/2-seed/Training/1 Brassica junsea/103.json +test/2-seed/Training/1 Brassica junsea/103.tiff +test/2-seed/Training/1 Brassica junsea/104.json +test/2-seed/Training/1 Brassica junsea/104.tiff +test/2-seed/Training/1 Brassica junsea/105.json +test/2-seed/Training/1 Brassica junsea/105.tiff +test/2-seed/Training/1 Brassica junsea/106.json +test/2-seed/Training/1 Brassica junsea/106.tiff +test/2-seed/Training/1 Brassica junsea/107.json +test/2-seed/Training/1 Brassica junsea/107.tiff +test/2-seed/Training/1 Brassica junsea/108.json +test/2-seed/Training/1 Brassica junsea/108.tiff +test/2-seed/Training/1 Brassica junsea/109.json +test/2-seed/Training/1 Brassica junsea/109.tiff +test/2-seed/Training/1 Brassica junsea/110.json +test/2-seed/Training/1 Brassica junsea/110.tiff +test/2-seed/Training/1 Brassica junsea/111.json +test/2-seed/Training/1 Brassica junsea/111.tiff +test/2-seed/Training/1 Brassica junsea/112.json +test/2-seed/Training/1 Brassica junsea/112.tiff +test/2-seed/Training/1 Brassica junsea/113.json +test/2-seed/Training/1 Brassica junsea/113.tiff +test/2-seed/Training/1 Brassica junsea/114.json +test/2-seed/Training/1 Brassica junsea/114.tiff +test/2-seed/Training/1 Brassica junsea/115.json +test/2-seed/Training/1 Brassica junsea/115.tiff +test/2-seed/Training/1 Brassica junsea/116.json +test/2-seed/Training/1 Brassica junsea/116.tiff +test/2-seed/Training/1 Brassica junsea/117.json +test/2-seed/Training/1 Brassica junsea/117.tiff +test/2-seed/Training/1 Brassica junsea/118.json +test/2-seed/Training/1 Brassica junsea/118.tiff +test/2-seed/Training/1 Brassica junsea/119.json +test/2-seed/Training/1 Brassica junsea/119.tiff +test/2-seed/Training/1 Brassica junsea/120.json +test/2-seed/Training/1 Brassica junsea/120.tiff +test/2-seed/Training/1 Brassica junsea/121.json +test/2-seed/Training/1 Brassica junsea/121.tiff +test/2-seed/Training/1 Brassica junsea/122.json +test/2-seed/Training/1 Brassica junsea/122.tiff +test/2-seed/Training/1 Brassica junsea/123.json +test/2-seed/Training/1 Brassica junsea/123.tiff +test/2-seed/Training/1 Brassica junsea/124.json +test/2-seed/Training/1 Brassica junsea/124.tiff +test/2-seed/Training/1 Brassica junsea/125.json +test/2-seed/Training/1 Brassica junsea/125.tiff +test/2-seed/Training/1 Brassica junsea/126.json +test/2-seed/Training/1 Brassica junsea/126.tiff +test/2-seed/Training/1 Brassica junsea/127.json +test/2-seed/Training/1 Brassica junsea/127.tiff +test/2-seed/Training/1 Brassica junsea/128.json +test/2-seed/Training/1 Brassica junsea/128.tiff +test/2-seed/Training/1 Brassica junsea/129.json +test/2-seed/Training/1 Brassica junsea/129.tiff +test/2-seed/Training/1 Brassica junsea/130.json +test/2-seed/Training/1 Brassica junsea/130.tiff +test/2-seed/Training/1 Brassica junsea/131.json +test/2-seed/Training/1 Brassica junsea/131.tiff +test/2-seed/Training/1 Brassica junsea/132.json +test/2-seed/Training/1 Brassica junsea/132.tiff +test/2-seed/Training/1 Brassica junsea/133.json +test/2-seed/Training/1 Brassica junsea/133.tiff +test/2-seed/Training/1 Brassica junsea/134.json +test/2-seed/Training/1 Brassica junsea/134.tiff +test/2-seed/Training/1 Brassica junsea/135.json +test/2-seed/Training/1 Brassica junsea/135.tiff +test/2-seed/Training/1 Brassica junsea/136.json +test/2-seed/Training/1 Brassica junsea/136.tiff +test/2-seed/Training/1 Brassica junsea/137.json +test/2-seed/Training/1 Brassica junsea/137.tiff +test/2-seed/Training/1 Brassica junsea/138.json +test/2-seed/Training/1 Brassica junsea/138.tiff +test/2-seed/Training/1 Brassica junsea/139.json +test/2-seed/Training/1 Brassica junsea/139.tiff +test/2-seed/Training/1 Brassica junsea/140.json +test/2-seed/Training/1 Brassica junsea/140.tiff +test/2-seed/Training/1 Brassica junsea/141.json +test/2-seed/Training/1 Brassica junsea/141.tiff +test/2-seed/Training/1 Brassica junsea/142.json +test/2-seed/Training/1 Brassica junsea/142.tiff +test/2-seed/Training/1 Brassica junsea/143.json +test/2-seed/Training/1 Brassica junsea/143.tiff +test/2-seed/Training/1 Brassica junsea/144.json +test/2-seed/Training/1 Brassica junsea/144.tiff +test/2-seed/Training/1 Brassica junsea/145.json +test/2-seed/Training/1 Brassica junsea/145.tiff +test/2-seed/Training/1 Brassica junsea/146.json +test/2-seed/Training/1 Brassica junsea/146.tiff +test/2-seed/Training/1 Brassica junsea/147.json +test/2-seed/Training/1 Brassica junsea/147.tiff +test/2-seed/Training/1 Brassica junsea/148.json +test/2-seed/Training/1 Brassica junsea/148.tiff +test/2-seed/Training/1 Brassica junsea/149.json +test/2-seed/Training/1 Brassica junsea/149.tiff +test/2-seed/Training/1 Brassica junsea/150.json +test/2-seed/Training/1 Brassica junsea/150.tiff +test/2-seed/Training/1 Brassica junsea/151.json +test/2-seed/Training/1 Brassica junsea/151.tiff +test/2-seed/Training/1 Brassica junsea/152.json +test/2-seed/Training/1 Brassica junsea/152.tiff +test/2-seed/Training/1 Brassica junsea/153.json +test/2-seed/Training/1 Brassica junsea/153.tiff +test/2-seed/Training/1 Brassica junsea/154.json +test/2-seed/Training/1 Brassica junsea/154.tiff +test/2-seed/Training/1 Brassica junsea/155.json +test/2-seed/Training/1 Brassica junsea/155.tiff +test/2-seed/Training/1 Brassica junsea/156.json +test/2-seed/Training/1 Brassica junsea/156.tiff +test/2-seed/Training/1 Brassica junsea/157.json +test/2-seed/Training/1 Brassica junsea/157.tiff +test/2-seed/Training/1 Brassica junsea/158.json +test/2-seed/Training/1 Brassica junsea/158.tiff +test/2-seed/Training/1 Brassica junsea/159.json +test/2-seed/Training/1 Brassica junsea/159.tiff +test/2-seed/Training/1 Brassica junsea/160.json +test/2-seed/Training/1 Brassica junsea/160.tiff +test/2-seed/Training/1 Brassica junsea/161.json +test/2-seed/Training/1 Brassica junsea/161.tiff +test/2-seed/Training/1 Brassica junsea/162.json +test/2-seed/Training/1 Brassica junsea/162.tiff +test/2-seed/Training/1 Brassica junsea/163.json +test/2-seed/Training/1 Brassica junsea/163.tiff +test/2-seed/Training/1 Brassica junsea/164.json +test/2-seed/Training/1 Brassica junsea/164.tiff +test/2-seed/Training/1 Brassica junsea/165.json +test/2-seed/Training/1 Brassica junsea/165.tiff +test/2-seed/Training/1 Brassica junsea/166.json +test/2-seed/Training/1 Brassica junsea/166.tiff +test/2-seed/Training/1 Brassica junsea/167.json +test/2-seed/Training/1 Brassica junsea/167.tiff +test/2-seed/Training/1 Brassica junsea/168.json +test/2-seed/Training/1 Brassica junsea/168.tiff +test/2-seed/Training/1 Brassica junsea/169.json +test/2-seed/Training/1 Brassica junsea/169.tiff +test/2-seed/Training/1 Brassica junsea/170.json +test/2-seed/Training/1 Brassica junsea/170.tiff +test/2-seed/Training/1 Brassica junsea/171.json +test/2-seed/Training/1 Brassica junsea/171.tiff +test/2-seed/Training/1 Brassica junsea/172.json +test/2-seed/Training/1 Brassica junsea/172.tiff +test/2-seed/Training/1 Brassica junsea/173.json +test/2-seed/Training/1 Brassica junsea/173.tiff +test/2-seed/Training/1 Brassica junsea/174.json +test/2-seed/Training/1 Brassica junsea/174.tiff +test/2-seed/Training/1 Brassica junsea/175.json +test/2-seed/Training/1 Brassica junsea/175.tiff +test/2-seed/Training/1 Brassica junsea/176.json +test/2-seed/Training/1 Brassica junsea/176.tiff +test/2-seed/Training/1 Brassica junsea/177.json +test/2-seed/Training/1 Brassica junsea/177.tiff +test/2-seed/Training/1 Brassica junsea/178.json +test/2-seed/Training/1 Brassica junsea/178.tiff +test/2-seed/Training/1 Brassica junsea/179.json +test/2-seed/Training/1 Brassica junsea/179.tiff +test/2-seed/Training/1 Brassica junsea/180.json +test/2-seed/Training/1 Brassica junsea/180.tiff +test/2-seed/Training/1 Brassica junsea/181.json +test/2-seed/Training/1 Brassica junsea/181.tiff +test/2-seed/Training/1 Brassica junsea/182.json +test/2-seed/Training/1 Brassica junsea/182.tiff +test/2-seed/Training/1 Brassica junsea/183.json +test/2-seed/Training/1 Brassica junsea/183.tiff +test/2-seed/Training/1 Brassica junsea/184.json +test/2-seed/Training/1 Brassica junsea/184.tiff +test/2-seed/Training/1 Brassica junsea/185.json +test/2-seed/Training/1 Brassica junsea/185.tiff +test/2-seed/Training/1 Brassica junsea/186.json +test/2-seed/Training/1 Brassica junsea/186.tiff +test/2-seed/Training/1 Brassica junsea/187.json +test/2-seed/Training/1 Brassica junsea/187.tiff +test/2-seed/Training/1 Brassica junsea/188.json +test/2-seed/Training/1 Brassica junsea/188.tiff +test/2-seed/Training/1 Brassica junsea/189.json +test/2-seed/Training/1 Brassica junsea/189.tiff +test/2-seed/Training/1 Brassica junsea/190.json +test/2-seed/Training/1 Brassica junsea/190.tiff +test/2-seed/Training/1 Brassica junsea/191.json +test/2-seed/Training/1 Brassica junsea/191.tiff +test/2-seed/Training/1 Brassica junsea/192.json +test/2-seed/Training/1 Brassica junsea/192.tiff +test/2-seed/Training/1 Brassica junsea/193.json +test/2-seed/Training/1 Brassica junsea/193.tiff +test/2-seed/Training/1 Brassica junsea/194.json +test/2-seed/Training/1 Brassica junsea/194.tiff +test/2-seed/Training/1 Brassica junsea/195.json +test/2-seed/Training/1 Brassica junsea/195.tiff +test/2-seed/Training/1 Brassica junsea/196.json +test/2-seed/Training/1 Brassica junsea/196.tiff +test/2-seed/Training/1 Brassica junsea/197.json +test/2-seed/Training/1 Brassica junsea/197.tiff +test/2-seed/Training/1 Brassica junsea/198.json +test/2-seed/Training/1 Brassica junsea/198.tiff +test/2-seed/Training/1 Brassica junsea/199.json +test/2-seed/Training/1 Brassica junsea/199.tiff +test/2-seed/Training/1 Brassica junsea/200.json +test/2-seed/Training/1 Brassica junsea/200.tiff +test/2-seed/Training/1 Brassica junsea/index.json +test/2-seed/Training/10 Solanum nigrum/1.tiff +test/2-seed/Training/10 Solanum nigrum/2.tiff +test/2-seed/Training/10 Solanum nigrum/3.tiff +test/2-seed/Training/10 Solanum nigrum/4.tiff +test/2-seed/Training/10 Solanum nigrum/5.tiff +test/2-seed/Training/10 Solanum nigrum/6.tiff +test/2-seed/Training/10 Solanum nigrum/7.tiff +test/2-seed/Training/10 Solanum nigrum/8.tiff +test/2-seed/Training/10 Solanum nigrum/9.tiff +test/2-seed/Training/10 Solanum nigrum/10.tiff +test/2-seed/Training/10 Solanum nigrum/11.tiff +test/2-seed/Training/10 Solanum nigrum/12.tiff +test/2-seed/Training/10 Solanum nigrum/13.tiff +test/2-seed/Training/10 Solanum nigrum/14.tiff +test/2-seed/Training/10 Solanum nigrum/15.tiff +test/2-seed/Training/10 Solanum nigrum/16.tiff +test/2-seed/Training/10 Solanum nigrum/17.tiff +test/2-seed/Training/10 Solanum nigrum/18.tiff +test/2-seed/Training/10 Solanum nigrum/19.tiff +test/2-seed/Training/10 Solanum nigrum/20.tiff +test/2-seed/Training/10 Solanum nigrum/21.tiff +test/2-seed/Training/10 Solanum nigrum/22.tiff +test/2-seed/Training/10 Solanum nigrum/23.tiff +test/2-seed/Training/10 Solanum nigrum/24.tiff +test/2-seed/Training/10 Solanum nigrum/25.tiff +test/2-seed/Training/10 Solanum nigrum/26.tiff +test/2-seed/Training/10 Solanum nigrum/27.tiff +test/2-seed/Training/10 Solanum nigrum/28.tiff +test/2-seed/Training/10 Solanum nigrum/29.tiff +test/2-seed/Training/10 Solanum nigrum/30.tiff +test/2-seed/Training/10 Solanum nigrum/31.tiff +test/2-seed/Training/10 Solanum nigrum/32.tiff +test/2-seed/Training/10 Solanum nigrum/33.tiff +test/2-seed/Training/10 Solanum nigrum/34.tiff +test/2-seed/Training/10 Solanum nigrum/35.tiff +test/2-seed/Training/10 Solanum nigrum/36.tiff +test/2-seed/Training/10 Solanum nigrum/37.tiff +test/2-seed/Training/10 Solanum nigrum/38.tiff +test/2-seed/Training/10 Solanum nigrum/39.tiff +test/2-seed/Training/10 Solanum nigrum/40.tiff +test/2-seed/Training/10 Solanum nigrum/41.tiff +test/2-seed/Training/10 Solanum nigrum/42.tiff +test/2-seed/Training/10 Solanum nigrum/43.tiff +test/2-seed/Training/10 Solanum nigrum/44.tiff +test/2-seed/Training/10 Solanum nigrum/45.tiff +test/2-seed/Training/10 Solanum nigrum/46.tiff +test/2-seed/Training/10 Solanum nigrum/47.tiff +test/2-seed/Training/10 Solanum nigrum/48.tiff +test/2-seed/Training/10 Solanum nigrum/49.tiff +test/2-seed/Training/10 Solanum nigrum/50.tiff +test/2-seed/Training/11 Solanum rostratum/1.tiff +test/2-seed/Training/11 Solanum rostratum/2.tiff +test/2-seed/Training/11 Solanum rostratum/3.tiff +test/2-seed/Training/11 Solanum rostratum/4.tiff +test/2-seed/Training/11 Solanum rostratum/5.tiff +test/2-seed/Training/11 Solanum rostratum/6.tiff +test/2-seed/Training/11 Solanum rostratum/7.tiff +test/2-seed/Training/11 Solanum rostratum/8.tiff +test/2-seed/Training/11 Solanum rostratum/9.tiff +test/2-seed/Training/11 Solanum rostratum/10.tiff +test/2-seed/Training/11 Solanum rostratum/11.tiff +test/2-seed/Training/11 Solanum rostratum/12.tiff +test/2-seed/Training/11 Solanum rostratum/13.tiff +test/2-seed/Training/11 Solanum rostratum/14.tiff +test/2-seed/Training/11 Solanum rostratum/15.tiff +test/2-seed/Training/11 Solanum rostratum/16.tiff +test/2-seed/Training/11 Solanum rostratum/17.tiff +test/2-seed/Training/11 Solanum rostratum/18.tiff +test/2-seed/Training/11 Solanum rostratum/19.tiff +test/2-seed/Training/11 Solanum rostratum/20.tiff +test/2-seed/Training/11 Solanum rostratum/21.tiff +test/2-seed/Training/11 Solanum rostratum/22.tiff +test/2-seed/Training/11 Solanum rostratum/23.tiff +test/2-seed/Training/11 Solanum rostratum/24.tiff +test/2-seed/Training/11 Solanum rostratum/25.tiff +test/2-seed/Training/11 Solanum rostratum/26.tiff +test/2-seed/Training/11 Solanum rostratum/27.tiff +test/2-seed/Training/11 Solanum rostratum/28.tiff +test/2-seed/Training/11 Solanum rostratum/29.tiff +test/2-seed/Training/11 Solanum rostratum/30.tiff +test/2-seed/Training/11 Solanum rostratum/31.tiff +test/2-seed/Training/11 Solanum rostratum/32.tiff +test/2-seed/Training/11 Solanum rostratum/33.tiff +test/2-seed/Training/11 Solanum rostratum/34.tiff +test/2-seed/Training/11 Solanum rostratum/35.tiff +test/2-seed/Training/11 Solanum rostratum/36.tiff +test/2-seed/Training/11 Solanum rostratum/37.tiff +test/2-seed/Training/11 Solanum rostratum/38.tiff +test/2-seed/Training/11 Solanum rostratum/39.tiff +test/2-seed/Training/11 Solanum rostratum/40.tiff +test/2-seed/Training/11 Solanum rostratum/41.tiff +test/2-seed/Training/11 Solanum rostratum/42.tiff +test/2-seed/Training/11 Solanum rostratum/43.tiff +test/2-seed/Training/11 Solanum rostratum/44.tiff +test/2-seed/Training/11 Solanum rostratum/45.tiff +test/2-seed/Training/11 Solanum rostratum/46.tiff +test/2-seed/Training/11 Solanum rostratum/47.tiff +test/2-seed/Training/11 Solanum rostratum/48.tiff +test/2-seed/Training/11 Solanum rostratum/49.tiff +test/2-seed/Training/11 Solanum rostratum/50.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/1.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/2.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/3.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/4.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/5.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/6.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/7.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/8.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/9.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/10.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/11.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/12.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/13.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/14.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/15.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/16.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/17.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/18.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/19.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/20.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/21.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/22.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/23.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/24.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/25.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/26.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/27.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/28.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/29.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/30.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/31.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/32.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/33.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/34.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/35.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/36.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/37.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/38.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/39.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/40.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/41.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/42.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/43.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/44.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/45.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/46.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/47.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/48.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/49.tiff +test/2-seed/Training/12 Ambrosia artemisiifolia/50.tiff +test/2-seed/Training/13 Ambrosia trifida/1.tiff +test/2-seed/Training/13 Ambrosia trifida/2.tiff +test/2-seed/Training/13 Ambrosia trifida/3.tiff +test/2-seed/Training/13 Ambrosia trifida/4.tiff +test/2-seed/Training/13 Ambrosia trifida/5.tiff +test/2-seed/Training/13 Ambrosia trifida/6.tiff +test/2-seed/Training/13 Ambrosia trifida/7.tiff +test/2-seed/Training/13 Ambrosia trifida/8.tiff +test/2-seed/Training/13 Ambrosia trifida/9.tiff +test/2-seed/Training/13 Ambrosia trifida/10.tiff +test/2-seed/Training/13 Ambrosia trifida/11.tiff +test/2-seed/Training/13 Ambrosia trifida/12.tiff +test/2-seed/Training/13 Ambrosia trifida/13.tiff +test/2-seed/Training/13 Ambrosia trifida/14.tiff +test/2-seed/Training/13 Ambrosia trifida/15.tiff +test/2-seed/Training/13 Ambrosia trifida/16.tiff +test/2-seed/Training/13 Ambrosia trifida/17.tiff +test/2-seed/Training/13 Ambrosia trifida/18.tiff +test/2-seed/Training/13 Ambrosia trifida/19.tiff +test/2-seed/Training/13 Ambrosia trifida/20.tiff +test/2-seed/Training/13 Ambrosia trifida/21.tiff +test/2-seed/Training/13 Ambrosia trifida/22.tiff +test/2-seed/Training/13 Ambrosia trifida/23.tiff +test/2-seed/Training/13 Ambrosia trifida/24.tiff +test/2-seed/Training/13 Ambrosia trifida/25.tiff +test/2-seed/Training/13 Ambrosia trifida/26.tiff +test/2-seed/Training/13 Ambrosia trifida/27.tiff +test/2-seed/Training/13 Ambrosia trifida/28.tiff +test/2-seed/Training/13 Ambrosia trifida/29.tiff +test/2-seed/Training/13 Ambrosia trifida/30.tiff +test/2-seed/Training/13 Ambrosia trifida/31.tiff +test/2-seed/Training/13 Ambrosia trifida/32.tiff +test/2-seed/Training/13 Ambrosia trifida/33.tiff +test/2-seed/Training/13 Ambrosia trifida/34.tiff +test/2-seed/Training/13 Ambrosia trifida/35.tiff +test/2-seed/Training/13 Ambrosia trifida/36.tiff +test/2-seed/Training/13 Ambrosia trifida/37.tiff +test/2-seed/Training/13 Ambrosia trifida/38.tiff +test/2-seed/Training/13 Ambrosia trifida/39.tiff +test/2-seed/Training/13 Ambrosia trifida/40.tiff +test/2-seed/Training/13 Ambrosia trifida/41.tiff +test/2-seed/Training/13 Ambrosia trifida/42.tiff +test/2-seed/Training/13 Ambrosia trifida/43.tiff +test/2-seed/Training/13 Ambrosia trifida/44.tiff +test/2-seed/Training/13 Ambrosia trifida/45.tiff +test/2-seed/Training/13 Ambrosia trifida/46.tiff +test/2-seed/Training/13 Ambrosia trifida/47.tiff +test/2-seed/Training/13 Ambrosia trifida/48.tiff +test/2-seed/Training/13 Ambrosia trifida/49.tiff +test/2-seed/Training/13 Ambrosia trifida/50.tiff +test/2-seed/Training/14 Ambrosia psilostachya/1.tiff +test/2-seed/Training/14 Ambrosia psilostachya/2.tiff +test/2-seed/Training/14 Ambrosia psilostachya/3.tiff +test/2-seed/Training/14 Ambrosia psilostachya/4.tiff +test/2-seed/Training/14 Ambrosia psilostachya/5.tiff +test/2-seed/Training/14 Ambrosia psilostachya/6.tiff +test/2-seed/Training/14 Ambrosia psilostachya/7.tiff +test/2-seed/Training/14 Ambrosia psilostachya/8.tiff +test/2-seed/Training/14 Ambrosia psilostachya/9.tiff +test/2-seed/Training/14 Ambrosia psilostachya/10.tiff +test/2-seed/Training/14 Ambrosia psilostachya/11.tiff +test/2-seed/Training/14 Ambrosia psilostachya/12.tiff +test/2-seed/Training/14 Ambrosia psilostachya/13.tiff +test/2-seed/Training/14 Ambrosia psilostachya/14.tiff +test/2-seed/Training/14 Ambrosia psilostachya/15.tiff +test/2-seed/Training/14 Ambrosia psilostachya/16.tiff +test/2-seed/Training/14 Ambrosia psilostachya/17.tiff +test/2-seed/Training/14 Ambrosia psilostachya/18.tiff +test/2-seed/Training/14 Ambrosia psilostachya/19.tiff +test/2-seed/Training/14 Ambrosia psilostachya/20.tiff +test/2-seed/Training/14 Ambrosia psilostachya/21.tiff +test/2-seed/Training/14 Ambrosia psilostachya/22.tiff +test/2-seed/Training/14 Ambrosia psilostachya/23.1.tiff +test/2-seed/Training/14 Ambrosia psilostachya/24.tiff +test/2-seed/Training/14 Ambrosia psilostachya/25.tiff +test/2-seed/Training/14 Ambrosia psilostachya/26.tiff +test/2-seed/Training/14 Ambrosia psilostachya/27.tiff +test/2-seed/Training/14 Ambrosia psilostachya/28.tiff +test/2-seed/Training/14 Ambrosia psilostachya/29.tiff +test/2-seed/Training/14 Ambrosia psilostachya/30.tiff +test/2-seed/Training/14 Ambrosia psilostachya/31.tiff +test/2-seed/Training/14 Ambrosia psilostachya/32.tiff +test/2-seed/Training/14 Ambrosia psilostachya/33.tiff +test/2-seed/Training/14 Ambrosia psilostachya/34.tiff +test/2-seed/Training/14 Ambrosia psilostachya/35.tiff +test/2-seed/Training/14 Ambrosia psilostachya/36.tiff +test/2-seed/Training/14 Ambrosia psilostachya/37.tiff +test/2-seed/Training/14 Ambrosia psilostachya/38.tiff +test/2-seed/Training/14 Ambrosia psilostachya/39.tiff +test/2-seed/Training/14 Ambrosia psilostachya/40.tiff +test/2-seed/Training/14 Ambrosia psilostachya/41.tiff +test/2-seed/Training/14 Ambrosia psilostachya/42.tiff +test/2-seed/Training/14 Ambrosia psilostachya/43.tiff +test/2-seed/Training/14 Ambrosia psilostachya/44.tiff +test/2-seed/Training/14 Ambrosia psilostachya/45.tiff +test/2-seed/Training/14 Ambrosia psilostachya/46.tiff +test/2-seed/Training/14 Ambrosia psilostachya/47.tiff +test/2-seed/Training/14 Ambrosia psilostachya/48.tiff +test/2-seed/Training/14 Ambrosia psilostachya/49.tiff +test/2-seed/Training/14 Ambrosia psilostachya/50.tiff +test/2-seed/Training/2 Cirsium arvense/1.json +test/2-seed/Training/2 Cirsium arvense/1.tiff +test/2-seed/Training/2 Cirsium arvense/2.json +test/2-seed/Training/2 Cirsium arvense/2.tiff +test/2-seed/Training/2 Cirsium arvense/3.json +test/2-seed/Training/2 Cirsium arvense/3.tiff +test/2-seed/Training/2 Cirsium arvense/4.json +test/2-seed/Training/2 Cirsium arvense/4.tiff +test/2-seed/Training/2 Cirsium arvense/5.json +test/2-seed/Training/2 Cirsium arvense/5.tiff +test/2-seed/Training/2 Cirsium arvense/6.json +test/2-seed/Training/2 Cirsium arvense/6.tiff +test/2-seed/Training/2 Cirsium arvense/7.json +test/2-seed/Training/2 Cirsium arvense/7.tiff +test/2-seed/Training/2 Cirsium arvense/8.json +test/2-seed/Training/2 Cirsium arvense/8.tiff +test/2-seed/Training/2 Cirsium arvense/9.json +test/2-seed/Training/2 Cirsium arvense/9.tiff +test/2-seed/Training/2 Cirsium arvense/10.json +test/2-seed/Training/2 Cirsium arvense/10.tiff +test/2-seed/Training/2 Cirsium arvense/11.json +test/2-seed/Training/2 Cirsium arvense/11.tiff +test/2-seed/Training/2 Cirsium arvense/12.json +test/2-seed/Training/2 Cirsium arvense/12.tiff +test/2-seed/Training/2 Cirsium arvense/13.json +test/2-seed/Training/2 Cirsium arvense/13.tiff +test/2-seed/Training/2 Cirsium arvense/14.json +test/2-seed/Training/2 Cirsium arvense/14.tiff +test/2-seed/Training/2 Cirsium arvense/15.json +test/2-seed/Training/2 Cirsium arvense/15.tiff +test/2-seed/Training/2 Cirsium arvense/16.json +test/2-seed/Training/2 Cirsium arvense/16.tiff +test/2-seed/Training/2 Cirsium arvense/17.json +test/2-seed/Training/2 Cirsium arvense/17.tiff +test/2-seed/Training/2 Cirsium arvense/18.json +test/2-seed/Training/2 Cirsium arvense/18.tiff +test/2-seed/Training/2 Cirsium arvense/19.json +test/2-seed/Training/2 Cirsium arvense/19.tiff +test/2-seed/Training/2 Cirsium arvense/20.json +test/2-seed/Training/2 Cirsium arvense/20.tiff +test/2-seed/Training/2 Cirsium arvense/21.json +test/2-seed/Training/2 Cirsium arvense/21.tiff +test/2-seed/Training/2 Cirsium arvense/22.json +test/2-seed/Training/2 Cirsium arvense/22.tiff +test/2-seed/Training/2 Cirsium arvense/23.json +test/2-seed/Training/2 Cirsium arvense/23.tiff +test/2-seed/Training/2 Cirsium arvense/24.json +test/2-seed/Training/2 Cirsium arvense/24.tiff +test/2-seed/Training/2 Cirsium arvense/25.json +test/2-seed/Training/2 Cirsium arvense/25.tiff +test/2-seed/Training/2 Cirsium arvense/26.json +test/2-seed/Training/2 Cirsium arvense/26.tiff +test/2-seed/Training/2 Cirsium arvense/27.json +test/2-seed/Training/2 Cirsium arvense/27.tiff +test/2-seed/Training/2 Cirsium arvense/28.json +test/2-seed/Training/2 Cirsium arvense/28.tiff +test/2-seed/Training/2 Cirsium arvense/29.json +test/2-seed/Training/2 Cirsium arvense/29.tiff +test/2-seed/Training/2 Cirsium arvense/30.json +test/2-seed/Training/2 Cirsium arvense/30.tiff +test/2-seed/Training/2 Cirsium arvense/31.json +test/2-seed/Training/2 Cirsium arvense/31.tiff +test/2-seed/Training/2 Cirsium arvense/32.json +test/2-seed/Training/2 Cirsium arvense/32.tiff +test/2-seed/Training/2 Cirsium arvense/33.json +test/2-seed/Training/2 Cirsium arvense/33.tiff +test/2-seed/Training/2 Cirsium arvense/34.json +test/2-seed/Training/2 Cirsium arvense/34.tiff +test/2-seed/Training/2 Cirsium arvense/35.json +test/2-seed/Training/2 Cirsium arvense/35.tiff +test/2-seed/Training/2 Cirsium arvense/36.json +test/2-seed/Training/2 Cirsium arvense/36.tiff +test/2-seed/Training/2 Cirsium arvense/37.json +test/2-seed/Training/2 Cirsium arvense/37.tiff +test/2-seed/Training/2 Cirsium arvense/38.json +test/2-seed/Training/2 Cirsium arvense/38.tiff +test/2-seed/Training/2 Cirsium arvense/39.json +test/2-seed/Training/2 Cirsium arvense/39.tiff +test/2-seed/Training/2 Cirsium arvense/40.json +test/2-seed/Training/2 Cirsium arvense/40.tiff +test/2-seed/Training/2 Cirsium arvense/41.json +test/2-seed/Training/2 Cirsium arvense/41.tiff +test/2-seed/Training/2 Cirsium arvense/42.json +test/2-seed/Training/2 Cirsium arvense/42.tiff +test/2-seed/Training/2 Cirsium arvense/43.json +test/2-seed/Training/2 Cirsium arvense/43.tiff +test/2-seed/Training/2 Cirsium arvense/44.json +test/2-seed/Training/2 Cirsium arvense/44.tiff +test/2-seed/Training/2 Cirsium arvense/45.json +test/2-seed/Training/2 Cirsium arvense/45.tiff +test/2-seed/Training/2 Cirsium arvense/46.json +test/2-seed/Training/2 Cirsium arvense/46.tiff +test/2-seed/Training/2 Cirsium arvense/47.json +test/2-seed/Training/2 Cirsium arvense/47.tiff +test/2-seed/Training/2 Cirsium arvense/48.json +test/2-seed/Training/2 Cirsium arvense/48.tiff +test/2-seed/Training/2 Cirsium arvense/49.json +test/2-seed/Training/2 Cirsium arvense/49.tiff +test/2-seed/Training/2 Cirsium arvense/50.json +test/2-seed/Training/2 Cirsium arvense/50.tiff +test/2-seed/Training/2 Cirsium arvense/index.json +test/2-seed/Training/3 Cirsium vulgare/1.json +test/2-seed/Training/3 Cirsium vulgare/1.tiff +test/2-seed/Training/3 Cirsium vulgare/2.json +test/2-seed/Training/3 Cirsium vulgare/2.tiff +test/2-seed/Training/3 Cirsium vulgare/3.json +test/2-seed/Training/3 Cirsium vulgare/3.tiff +test/2-seed/Training/3 Cirsium vulgare/4.json +test/2-seed/Training/3 Cirsium vulgare/4.tiff +test/2-seed/Training/3 Cirsium vulgare/5.json +test/2-seed/Training/3 Cirsium vulgare/5.tiff +test/2-seed/Training/3 Cirsium vulgare/6.json +test/2-seed/Training/3 Cirsium vulgare/6.tiff +test/2-seed/Training/3 Cirsium vulgare/7.json +test/2-seed/Training/3 Cirsium vulgare/7.tiff +test/2-seed/Training/3 Cirsium vulgare/8.json +test/2-seed/Training/3 Cirsium vulgare/8.tiff +test/2-seed/Training/3 Cirsium vulgare/9.json +test/2-seed/Training/3 Cirsium vulgare/9.tiff +test/2-seed/Training/3 Cirsium vulgare/10.json +test/2-seed/Training/3 Cirsium vulgare/10.tiff +test/2-seed/Training/3 Cirsium vulgare/11.json +test/2-seed/Training/3 Cirsium vulgare/11.tiff +test/2-seed/Training/3 Cirsium vulgare/12.json +test/2-seed/Training/3 Cirsium vulgare/12.tiff +test/2-seed/Training/3 Cirsium vulgare/13.json +test/2-seed/Training/3 Cirsium vulgare/13.tiff +test/2-seed/Training/3 Cirsium vulgare/14.json +test/2-seed/Training/3 Cirsium vulgare/14.tiff +test/2-seed/Training/3 Cirsium vulgare/15.json +test/2-seed/Training/3 Cirsium vulgare/15.tiff +test/2-seed/Training/3 Cirsium vulgare/16.json +test/2-seed/Training/3 Cirsium vulgare/16.tiff +test/2-seed/Training/3 Cirsium vulgare/17.json +test/2-seed/Training/3 Cirsium vulgare/17.tiff +test/2-seed/Training/3 Cirsium vulgare/18.json +test/2-seed/Training/3 Cirsium vulgare/18.tiff +test/2-seed/Training/3 Cirsium vulgare/19.json +test/2-seed/Training/3 Cirsium vulgare/19.tiff +test/2-seed/Training/3 Cirsium vulgare/20.json +test/2-seed/Training/3 Cirsium vulgare/20.tiff +test/2-seed/Training/3 Cirsium vulgare/21.json +test/2-seed/Training/3 Cirsium vulgare/21.tiff +test/2-seed/Training/3 Cirsium vulgare/22.json +test/2-seed/Training/3 Cirsium vulgare/22.tiff +test/2-seed/Training/3 Cirsium vulgare/23.json +test/2-seed/Training/3 Cirsium vulgare/23.tiff +test/2-seed/Training/3 Cirsium vulgare/24.json +test/2-seed/Training/3 Cirsium vulgare/24.tiff +test/2-seed/Training/3 Cirsium vulgare/25.json +test/2-seed/Training/3 Cirsium vulgare/25.tiff +test/2-seed/Training/3 Cirsium vulgare/26.json +test/2-seed/Training/3 Cirsium vulgare/26.tiff +test/2-seed/Training/3 Cirsium vulgare/27.json +test/2-seed/Training/3 Cirsium vulgare/27.tiff +test/2-seed/Training/3 Cirsium vulgare/28.json +test/2-seed/Training/3 Cirsium vulgare/28.tiff +test/2-seed/Training/3 Cirsium vulgare/29.json +test/2-seed/Training/3 Cirsium vulgare/29.tiff +test/2-seed/Training/3 Cirsium vulgare/30.json +test/2-seed/Training/3 Cirsium vulgare/30.tiff +test/2-seed/Training/3 Cirsium vulgare/31.json +test/2-seed/Training/3 Cirsium vulgare/31.tiff +test/2-seed/Training/3 Cirsium vulgare/32.json +test/2-seed/Training/3 Cirsium vulgare/32.tiff +test/2-seed/Training/3 Cirsium vulgare/33.json +test/2-seed/Training/3 Cirsium vulgare/33.tiff +test/2-seed/Training/3 Cirsium vulgare/34.json +test/2-seed/Training/3 Cirsium vulgare/34.tiff +test/2-seed/Training/3 Cirsium vulgare/35.json +test/2-seed/Training/3 Cirsium vulgare/35.tiff +test/2-seed/Training/3 Cirsium vulgare/36.json +test/2-seed/Training/3 Cirsium vulgare/36.tiff +test/2-seed/Training/3 Cirsium vulgare/37.json +test/2-seed/Training/3 Cirsium vulgare/37.tiff +test/2-seed/Training/3 Cirsium vulgare/38.json +test/2-seed/Training/3 Cirsium vulgare/38.tiff +test/2-seed/Training/3 Cirsium vulgare/39.json +test/2-seed/Training/3 Cirsium vulgare/39.tiff +test/2-seed/Training/3 Cirsium vulgare/40.json +test/2-seed/Training/3 Cirsium vulgare/40.tiff +test/2-seed/Training/3 Cirsium vulgare/41.json +test/2-seed/Training/3 Cirsium vulgare/41.tiff +test/2-seed/Training/3 Cirsium vulgare/42.json +test/2-seed/Training/3 Cirsium vulgare/42.tiff +test/2-seed/Training/3 Cirsium vulgare/43.json +test/2-seed/Training/3 Cirsium vulgare/43.tiff +test/2-seed/Training/3 Cirsium vulgare/44.json +test/2-seed/Training/3 Cirsium vulgare/44.tiff +test/2-seed/Training/3 Cirsium vulgare/45.json +test/2-seed/Training/3 Cirsium vulgare/45.tiff +test/2-seed/Training/3 Cirsium vulgare/46.json +test/2-seed/Training/3 Cirsium vulgare/46.tiff +test/2-seed/Training/3 Cirsium vulgare/47.json +test/2-seed/Training/3 Cirsium vulgare/47.tiff +test/2-seed/Training/3 Cirsium vulgare/48.json +test/2-seed/Training/3 Cirsium vulgare/48.tiff +test/2-seed/Training/3 Cirsium vulgare/49.json +test/2-seed/Training/3 Cirsium vulgare/49.tiff +test/2-seed/Training/3 Cirsium vulgare/50.json +test/2-seed/Training/3 Cirsium vulgare/50.tiff +test/2-seed/Training/3 Cirsium vulgare/index.json +test/2-seed/Training/4 Carduus nutans/1.tiff +test/2-seed/Training/4 Carduus nutans/2.tiff +test/2-seed/Training/4 Carduus nutans/3.tiff +test/2-seed/Training/4 Carduus nutans/4.tiff +test/2-seed/Training/4 Carduus nutans/5.tiff +test/2-seed/Training/4 Carduus nutans/6.tiff +test/2-seed/Training/4 Carduus nutans/7.tiff +test/2-seed/Training/4 Carduus nutans/8.tiff +test/2-seed/Training/4 Carduus nutans/9.tiff +test/2-seed/Training/4 Carduus nutans/10.tiff +test/2-seed/Training/4 Carduus nutans/11.tiff +test/2-seed/Training/4 Carduus nutans/12.tiff +test/2-seed/Training/4 Carduus nutans/13.tiff +test/2-seed/Training/4 Carduus nutans/14.tiff +test/2-seed/Training/4 Carduus nutans/15.tiff +test/2-seed/Training/4 Carduus nutans/16.tiff +test/2-seed/Training/4 Carduus nutans/17.tiff +test/2-seed/Training/4 Carduus nutans/18.tiff +test/2-seed/Training/4 Carduus nutans/19.tiff +test/2-seed/Training/4 Carduus nutans/20.tiff +test/2-seed/Training/4 Carduus nutans/21.tiff +test/2-seed/Training/4 Carduus nutans/22.tiff +test/2-seed/Training/4 Carduus nutans/23.tiff +test/2-seed/Training/4 Carduus nutans/24.tiff +test/2-seed/Training/4 Carduus nutans/25.tiff +test/2-seed/Training/4 Carduus nutans/26.tiff +test/2-seed/Training/4 Carduus nutans/27.tiff +test/2-seed/Training/4 Carduus nutans/28.tiff +test/2-seed/Training/4 Carduus nutans/29.tiff +test/2-seed/Training/4 Carduus nutans/30.tiff +test/2-seed/Training/4 Carduus nutans/31.tiff +test/2-seed/Training/4 Carduus nutans/32.tiff +test/2-seed/Training/4 Carduus nutans/33.tiff +test/2-seed/Training/4 Carduus nutans/34.tiff +test/2-seed/Training/4 Carduus nutans/35.tiff +test/2-seed/Training/4 Carduus nutans/36.tiff +test/2-seed/Training/4 Carduus nutans/37.tiff +test/2-seed/Training/4 Carduus nutans/38.tiff +test/2-seed/Training/4 Carduus nutans/39.tiff +test/2-seed/Training/4 Carduus nutans/40.tiff +test/2-seed/Training/4 Carduus nutans/41.tiff +test/2-seed/Training/4 Carduus nutans/42.tiff +test/2-seed/Training/4 Carduus nutans/43.tiff +test/2-seed/Training/4 Carduus nutans/44.tiff +test/2-seed/Training/4 Carduus nutans/45.tiff +test/2-seed/Training/4 Carduus nutans/46.tiff +test/2-seed/Training/4 Carduus nutans/47.tiff +test/2-seed/Training/4 Carduus nutans/48.tiff +test/2-seed/Training/4 Carduus nutans/49.tiff +test/2-seed/Training/4 Carduus nutans/50.tiff +test/2-seed/Training/5 Bromus secalinus/001.tiff +test/2-seed/Training/5 Bromus secalinus/002 (2).tiff +test/2-seed/Training/5 Bromus secalinus/002.tiff +test/2-seed/Training/5 Bromus secalinus/003 (2).tiff +test/2-seed/Training/5 Bromus secalinus/003.tiff +test/2-seed/Training/5 Bromus secalinus/004 (2).tiff +test/2-seed/Training/5 Bromus secalinus/004.tiff +test/2-seed/Training/5 Bromus secalinus/005 (2).tiff +test/2-seed/Training/5 Bromus secalinus/005.tiff +test/2-seed/Training/5 Bromus secalinus/006 (2).tiff +test/2-seed/Training/5 Bromus secalinus/006.tiff +test/2-seed/Training/5 Bromus secalinus/007 (2).tiff +test/2-seed/Training/5 Bromus secalinus/007.tiff +test/2-seed/Training/5 Bromus secalinus/008 (2).tiff +test/2-seed/Training/5 Bromus secalinus/008.tiff +test/2-seed/Training/5 Bromus secalinus/009 (2).tiff +test/2-seed/Training/5 Bromus secalinus/009.tiff +test/2-seed/Training/5 Bromus secalinus/010 (2).tiff +test/2-seed/Training/5 Bromus secalinus/010.tiff +test/2-seed/Training/5 Bromus secalinus/011 (2).tiff +test/2-seed/Training/5 Bromus secalinus/011.tiff +test/2-seed/Training/5 Bromus secalinus/012 (2).tiff +test/2-seed/Training/5 Bromus secalinus/012.tiff +test/2-seed/Training/5 Bromus secalinus/013 (2).tiff +test/2-seed/Training/5 Bromus secalinus/013.tiff +test/2-seed/Training/5 Bromus secalinus/014 (2).tiff +test/2-seed/Training/5 Bromus secalinus/015.tiff +test/2-seed/Training/5 Bromus secalinus/016 (2).tiff +test/2-seed/Training/5 Bromus secalinus/016.tiff +test/2-seed/Training/5 Bromus secalinus/017 (2).tiff +test/2-seed/Training/5 Bromus secalinus/018 (2).tiff +test/2-seed/Training/5 Bromus secalinus/018.tiff +test/2-seed/Training/5 Bromus secalinus/019 (2).tiff +test/2-seed/Training/5 Bromus secalinus/019.tiff +test/2-seed/Training/5 Bromus secalinus/020 (2).tiff +test/2-seed/Training/5 Bromus secalinus/021 (2).tiff +test/2-seed/Training/5 Bromus secalinus/021.tiff +test/2-seed/Training/5 Bromus secalinus/022.tiff +test/2-seed/Training/5 Bromus secalinus/023 (2).tiff +test/2-seed/Training/5 Bromus secalinus/023.tiff +test/2-seed/Training/5 Bromus secalinus/024 (2).tiff +test/2-seed/Training/5 Bromus secalinus/024.tiff +test/2-seed/Training/5 Bromus secalinus/025 (2).tiff +test/2-seed/Training/5 Bromus secalinus/025.tiff +test/2-seed/Training/5 Bromus secalinus/026.tiff +test/2-seed/Training/5 Bromus secalinus/027 (2).tiff +test/2-seed/Training/5 Bromus secalinus/027.tiff +test/2-seed/Training/5 Bromus secalinus/028 (2).tiff +test/2-seed/Training/5 Bromus secalinus/028.tiff +test/2-seed/Training/5 Bromus secalinus/029.tiff +test/2-seed/Training/5 Bromus secalinus/030 (2).tiff +test/2-seed/Training/5 Bromus secalinus/030.tiff +test/2-seed/Training/5 Bromus secalinus/031 (2).tiff +test/2-seed/Training/5 Bromus secalinus/031.tiff +test/2-seed/Training/5 Bromus secalinus/032 (2).tiff +test/2-seed/Training/5 Bromus secalinus/032.tiff +test/2-seed/Training/5 Bromus secalinus/033 (2).tiff +test/2-seed/Training/5 Bromus secalinus/033.tiff +test/2-seed/Training/5 Bromus secalinus/034 (2).tiff +test/2-seed/Training/5 Bromus secalinus/034.tiff +test/2-seed/Training/5 Bromus secalinus/035 (2).tiff +test/2-seed/Training/5 Bromus secalinus/035.tiff +test/2-seed/Training/5 Bromus secalinus/036.tiff +test/2-seed/Training/5 Bromus secalinus/037.tiff +test/2-seed/Training/5 Bromus secalinus/038.tiff +test/2-seed/Training/5 Bromus secalinus/039 (2).tiff +test/2-seed/Training/5 Bromus secalinus/039.tiff +test/2-seed/Training/5 Bromus secalinus/040 (2).tiff +test/2-seed/Training/5 Bromus secalinus/040.tiff +test/2-seed/Training/5 Bromus secalinus/041 (2).tiff +test/2-seed/Training/5 Bromus secalinus/041.tiff +test/2-seed/Training/5 Bromus secalinus/042 (2).tiff +test/2-seed/Training/5 Bromus secalinus/042.tiff +test/2-seed/Training/5 Bromus secalinus/043 (2).tiff +test/2-seed/Training/5 Bromus secalinus/043.tiff +test/2-seed/Training/5 Bromus secalinus/044 (2).tiff +test/2-seed/Training/5 Bromus secalinus/044.tiff +test/2-seed/Training/5 Bromus secalinus/045 (2).tiff +test/2-seed/Training/5 Bromus secalinus/046 (2).tiff +test/2-seed/Training/5 Bromus secalinus/046.tiff +test/2-seed/Training/5 Bromus secalinus/047 (2).tiff +test/2-seed/Training/5 Bromus secalinus/047.tiff +test/2-seed/Training/5 Bromus secalinus/048 (2).tiff +test/2-seed/Training/5 Bromus secalinus/048.tiff +test/2-seed/Training/5 Bromus secalinus/049 (2).tiff +test/2-seed/Training/5 Bromus secalinus/049.tiff +test/2-seed/Training/5 Bromus secalinus/050 (2).tiff +test/2-seed/Training/5 Bromus secalinus/050.tiff +test/2-seed/Training/5 Bromus secalinus/051 (2).tiff +test/2-seed/Training/5 Bromus secalinus/052.tiff +test/2-seed/Training/5 Bromus secalinus/201 (2).tiff +test/2-seed/Training/5 Bromus secalinus/202 (2).tiff +test/2-seed/Training/5 Bromus secalinus/203 (2).tiff +test/2-seed/Training/5 Bromus secalinus/204 (2).tiff +test/2-seed/Training/5 Bromus secalinus/205 (2).tiff +test/2-seed/Training/5 Bromus secalinus/206 (2).tiff +test/2-seed/Training/5 Bromus secalinus/207 (2).tiff +test/2-seed/Training/5 Bromus secalinus/208 (2).tiff +test/2-seed/Training/5 Bromus secalinus/209 (2).tiff +test/2-seed/Training/5 Bromus secalinus/210 (2).tiff +test/2-seed/Training/5 Bromus secalinus/211 (2).tiff +test/2-seed/Training/5 Bromus secalinus/212 (2).tiff +test/2-seed/Training/5 Bromus secalinus/213 (2).tiff +test/2-seed/Training/5 Bromus secalinus/214 (2).tiff +test/2-seed/Training/5 Bromus secalinus/Bromus secalinus 2.tiff +test/2-seed/Training/5 Bromus secalinus/Bromus secalinus.tiff +test/2-seed/Training/6 Bromus hordeaceus/001.tiff +test/2-seed/Training/6 Bromus hordeaceus/002.tiff +test/2-seed/Training/6 Bromus hordeaceus/003.tiff +test/2-seed/Training/6 Bromus hordeaceus/004.tiff +test/2-seed/Training/6 Bromus hordeaceus/005.tiff +test/2-seed/Training/6 Bromus hordeaceus/006.tiff +test/2-seed/Training/6 Bromus hordeaceus/007.tiff +test/2-seed/Training/6 Bromus hordeaceus/008.tiff +test/2-seed/Training/6 Bromus hordeaceus/009.tiff +test/2-seed/Training/6 Bromus hordeaceus/010.tiff +test/2-seed/Training/6 Bromus hordeaceus/011.tiff +test/2-seed/Training/6 Bromus hordeaceus/012.tiff +test/2-seed/Training/6 Bromus hordeaceus/013.tiff +test/2-seed/Training/6 Bromus hordeaceus/014.tiff +test/2-seed/Training/6 Bromus hordeaceus/015.tiff +test/2-seed/Training/6 Bromus hordeaceus/016.tiff +test/2-seed/Training/6 Bromus hordeaceus/017.tiff +test/2-seed/Training/6 Bromus hordeaceus/018.tiff +test/2-seed/Training/6 Bromus hordeaceus/019.tiff +test/2-seed/Training/6 Bromus hordeaceus/020.tiff +test/2-seed/Training/6 Bromus hordeaceus/21.tiff +test/2-seed/Training/6 Bromus hordeaceus/22.tiff +test/2-seed/Training/6 Bromus hordeaceus/23.tiff +test/2-seed/Training/6 Bromus hordeaceus/24.tiff +test/2-seed/Training/6 Bromus hordeaceus/025.tiff +test/2-seed/Training/6 Bromus hordeaceus/026.tiff +test/2-seed/Training/6 Bromus hordeaceus/027.tiff +test/2-seed/Training/6 Bromus hordeaceus/028.tiff +test/2-seed/Training/6 Bromus hordeaceus/029.tiff +test/2-seed/Training/6 Bromus hordeaceus/030.tiff +test/2-seed/Training/6 Bromus hordeaceus/031.tiff +test/2-seed/Training/6 Bromus hordeaceus/032.tiff +test/2-seed/Training/6 Bromus hordeaceus/033.tiff +test/2-seed/Training/6 Bromus hordeaceus/036.tiff +test/2-seed/Training/6 Bromus hordeaceus/037.tiff +test/2-seed/Training/6 Bromus hordeaceus/038.tiff +test/2-seed/Training/6 Bromus hordeaceus/039.tiff +test/2-seed/Training/6 Bromus hordeaceus/040.tiff +test/2-seed/Training/6 Bromus hordeaceus/041.tiff +test/2-seed/Training/6 Bromus hordeaceus/042.tiff +test/2-seed/Training/6 Bromus hordeaceus/043.tiff +test/2-seed/Training/6 Bromus hordeaceus/044.tiff +test/2-seed/Training/6 Bromus hordeaceus/045.tiff +test/2-seed/Training/6 Bromus hordeaceus/046.tiff +test/2-seed/Training/6 Bromus hordeaceus/047.tiff +test/2-seed/Training/6 Bromus hordeaceus/048.tiff +test/2-seed/Training/6 Bromus hordeaceus/050.tiff +test/2-seed/Training/6 Bromus hordeaceus/051.tiff +test/2-seed/Training/6 Bromus hordeaceus/052.tiff +test/2-seed/Training/6 Bromus hordeaceus/053.tiff +test/2-seed/Training/6 Bromus hordeaceus/054.tiff +test/2-seed/Training/6 Bromus hordeaceus/055.tiff +test/2-seed/Training/6 Bromus hordeaceus/056.tiff +test/2-seed/Training/6 Bromus hordeaceus/057.tiff +test/2-seed/Training/6 Bromus hordeaceus/058.tiff +test/2-seed/Training/6 Bromus hordeaceus/059.tiff +test/2-seed/Training/6 Bromus hordeaceus/060.tiff +test/2-seed/Training/6 Bromus hordeaceus/061.tiff +test/2-seed/Training/6 Bromus hordeaceus/062.tiff +test/2-seed/Training/6 Bromus hordeaceus/063.tiff +test/2-seed/Training/6 Bromus hordeaceus/064.tiff +test/2-seed/Training/6 Bromus hordeaceus/065.tiff +test/2-seed/Training/6 Bromus hordeaceus/066.tiff +test/2-seed/Training/6 Bromus hordeaceus/067.tiff +test/2-seed/Training/6 Bromus hordeaceus/068.tiff +test/2-seed/Training/6 Bromus hordeaceus/069.tiff +test/2-seed/Training/6 Bromus hordeaceus/070.tiff +test/2-seed/Training/6 Bromus hordeaceus/071.tiff +test/2-seed/Training/6 Bromus hordeaceus/072.tiff +test/2-seed/Training/6 Bromus hordeaceus/073.tiff +test/2-seed/Training/6 Bromus hordeaceus/074.tiff +test/2-seed/Training/6 Bromus hordeaceus/075.tiff +test/2-seed/Training/6 Bromus hordeaceus/076.tiff +test/2-seed/Training/6 Bromus hordeaceus/077.tiff +test/2-seed/Training/6 Bromus hordeaceus/078.tiff +test/2-seed/Training/6 Bromus hordeaceus/079.tiff +test/2-seed/Training/6 Bromus hordeaceus/080.tiff +test/2-seed/Training/6 Bromus hordeaceus/081.tiff +test/2-seed/Training/6 Bromus hordeaceus/082.tiff +test/2-seed/Training/6 Bromus hordeaceus/083.tiff +test/2-seed/Training/6 Bromus hordeaceus/084.tiff +test/2-seed/Training/6 Bromus hordeaceus/085-1.tiff +test/2-seed/Training/6 Bromus hordeaceus/085.tiff +test/2-seed/Training/6 Bromus hordeaceus/086-1.tiff +test/2-seed/Training/6 Bromus hordeaceus/086.tiff +test/2-seed/Training/6 Bromus hordeaceus/087-1.tiff +test/2-seed/Training/6 Bromus hordeaceus/089.tiff +test/2-seed/Training/6 Bromus hordeaceus/090.tiff +test/2-seed/Training/6 Bromus hordeaceus/093.tiff +test/2-seed/Training/6 Bromus hordeaceus/094.tiff +test/2-seed/Training/6 Bromus hordeaceus/095.tiff +test/2-seed/Training/6 Bromus hordeaceus/096.tiff +test/2-seed/Training/6 Bromus hordeaceus/097.tiff +test/2-seed/Training/6 Bromus hordeaceus/098.tiff +test/2-seed/Training/6 Bromus hordeaceus/099.tiff +test/2-seed/Training/6 Bromus hordeaceus/601.tiff +test/2-seed/Training/6 Bromus hordeaceus/602.tiff +test/2-seed/Training/6 Bromus hordeaceus/603.tiff +test/2-seed/Training/6 Bromus hordeaceus/Bromus hordeaceus (2).tiff +test/2-seed/Training/6 Bromus hordeaceus/Bromus hordeaceus.tiff +test/2-seed/Training/7 Bromus japonicus/001 (2).tiff +test/2-seed/Training/7 Bromus japonicus/001.tiff +test/2-seed/Training/7 Bromus japonicus/002 (2).tiff +test/2-seed/Training/7 Bromus japonicus/002.tiff +test/2-seed/Training/7 Bromus japonicus/003 (2).tiff +test/2-seed/Training/7 Bromus japonicus/003.tiff +test/2-seed/Training/7 Bromus japonicus/004 (2).tiff +test/2-seed/Training/7 Bromus japonicus/004.tiff +test/2-seed/Training/7 Bromus japonicus/005.tiff +test/2-seed/Training/7 Bromus japonicus/006 (2).tiff +test/2-seed/Training/7 Bromus japonicus/006.tiff +test/2-seed/Training/7 Bromus japonicus/007 (2).tiff +test/2-seed/Training/7 Bromus japonicus/007.tiff +test/2-seed/Training/7 Bromus japonicus/008 (2).tiff +test/2-seed/Training/7 Bromus japonicus/008.tiff +test/2-seed/Training/7 Bromus japonicus/009 (2).tiff +test/2-seed/Training/7 Bromus japonicus/009.tiff +test/2-seed/Training/7 Bromus japonicus/010 (2).tiff +test/2-seed/Training/7 Bromus japonicus/010.tiff +test/2-seed/Training/7 Bromus japonicus/011 (2).tiff +test/2-seed/Training/7 Bromus japonicus/011.tiff +test/2-seed/Training/7 Bromus japonicus/012 (2).tiff +test/2-seed/Training/7 Bromus japonicus/012.tiff +test/2-seed/Training/7 Bromus japonicus/013 (2).tiff +test/2-seed/Training/7 Bromus japonicus/013.tiff +test/2-seed/Training/7 Bromus japonicus/014 (2).tiff +test/2-seed/Training/7 Bromus japonicus/014.tiff +test/2-seed/Training/7 Bromus japonicus/015 (2).tiff +test/2-seed/Training/7 Bromus japonicus/015.tiff +test/2-seed/Training/7 Bromus japonicus/016.tiff +test/2-seed/Training/7 Bromus japonicus/017 (2).tiff +test/2-seed/Training/7 Bromus japonicus/017.tiff +test/2-seed/Training/7 Bromus japonicus/018 (2).tiff +test/2-seed/Training/7 Bromus japonicus/018.tiff +test/2-seed/Training/7 Bromus japonicus/019.tiff +test/2-seed/Training/7 Bromus japonicus/020.tiff +test/2-seed/Training/7 Bromus japonicus/021 (2).tiff +test/2-seed/Training/7 Bromus japonicus/021.tiff +test/2-seed/Training/7 Bromus japonicus/022 (2).tiff +test/2-seed/Training/7 Bromus japonicus/022.tiff +test/2-seed/Training/7 Bromus japonicus/023 (2).tiff +test/2-seed/Training/7 Bromus japonicus/023.tiff +test/2-seed/Training/7 Bromus japonicus/024 (2).tiff +test/2-seed/Training/7 Bromus japonicus/024.tiff +test/2-seed/Training/7 Bromus japonicus/025 (2).tiff +test/2-seed/Training/7 Bromus japonicus/025.tiff +test/2-seed/Training/7 Bromus japonicus/026 (2).tiff +test/2-seed/Training/7 Bromus japonicus/026.tiff +test/2-seed/Training/7 Bromus japonicus/027 (2).tiff +test/2-seed/Training/7 Bromus japonicus/027.tiff +test/2-seed/Training/7 Bromus japonicus/028 (2).tiff +test/2-seed/Training/7 Bromus japonicus/028.tiff +test/2-seed/Training/7 Bromus japonicus/029.tiff +test/2-seed/Training/7 Bromus japonicus/030 (2).tiff +test/2-seed/Training/7 Bromus japonicus/030.tiff +test/2-seed/Training/7 Bromus japonicus/031 (2).tiff +test/2-seed/Training/7 Bromus japonicus/031.tiff +test/2-seed/Training/7 Bromus japonicus/032.tiff +test/2-seed/Training/7 Bromus japonicus/033.tiff +test/2-seed/Training/7 Bromus japonicus/034.tiff +test/2-seed/Training/7 Bromus japonicus/035.tiff +test/2-seed/Training/7 Bromus japonicus/036.tiff +test/2-seed/Training/7 Bromus japonicus/037.tiff +test/2-seed/Training/7 Bromus japonicus/038.tiff +test/2-seed/Training/7 Bromus japonicus/039.tiff +test/2-seed/Training/7 Bromus japonicus/040.tiff +test/2-seed/Training/7 Bromus japonicus/042.tiff +test/2-seed/Training/7 Bromus japonicus/043 (2).tiff +test/2-seed/Training/7 Bromus japonicus/043.tiff +test/2-seed/Training/7 Bromus japonicus/044.tiff +test/2-seed/Training/7 Bromus japonicus/045 (2).tiff +test/2-seed/Training/7 Bromus japonicus/045.tiff +test/2-seed/Training/7 Bromus japonicus/046 (2).tiff +test/2-seed/Training/7 Bromus japonicus/046.tiff +test/2-seed/Training/7 Bromus japonicus/047 (2).tiff +test/2-seed/Training/7 Bromus japonicus/048.tiff +test/2-seed/Training/7 Bromus japonicus/049 (2).tiff +test/2-seed/Training/7 Bromus japonicus/049.tiff +test/2-seed/Training/7 Bromus japonicus/050 (2).tiff +test/2-seed/Training/7 Bromus japonicus/051 (2).tiff +test/2-seed/Training/7 Bromus japonicus/051.tiff +test/2-seed/Training/7 Bromus japonicus/052 (2).tiff +test/2-seed/Training/7 Bromus japonicus/052.tiff +test/2-seed/Training/7 Bromus japonicus/053 (2).tiff +test/2-seed/Training/7 Bromus japonicus/053.tiff +test/2-seed/Training/7 Bromus japonicus/054.tiff +test/2-seed/Training/7 Bromus japonicus/055.tiff +test/2-seed/Training/7 Bromus japonicus/056.tiff +test/2-seed/Training/7 Bromus japonicus/057.tiff +test/2-seed/Training/7 Bromus japonicus/058.tiff +test/2-seed/Training/7 Bromus japonicus/059.tiff +test/2-seed/Training/7 Bromus japonicus/201.tiff +test/2-seed/Training/7 Bromus japonicus/202.tiff +test/2-seed/Training/7 Bromus japonicus/203.tiff +test/2-seed/Training/7 Bromus japonicus/205.tiff +test/2-seed/Training/7 Bromus japonicus/206.tiff +test/2-seed/Training/7 Bromus japonicus/207.tiff +test/2-seed/Training/7 Bromus japonicus/208.tiff +test/2-seed/Training/7 Bromus japonicus/209.tiff +test/2-seed/Training/7 Bromus japonicus/210.tiff +test/2-seed/Training/7 Bromus japonicus/211.tiff +test/2-seed/Training/7 Bromus japonicus/212.tiff +test/2-seed/Training/7 Bromus japonicus/213.tiff +test/2-seed/Training/7 Bromus japonicus/214.tiff +test/2-seed/Training/7 Bromus japonicus/215.tiff +test/2-seed/Training/7 Bromus japonicus/216.tiff +test/2-seed/Training/7 Bromus japonicus/221.tiff +test/2-seed/Training/7 Bromus japonicus/222.tiff +test/2-seed/Training/7 Bromus japonicus/223.tiff +test/2-seed/Training/7 Bromus japonicus/224.tiff +test/2-seed/Training/7 Bromus japonicus/225.tiff +test/2-seed/Training/7 Bromus japonicus/226.tiff +test/2-seed/Training/7 Bromus japonicus/227.tiff +test/2-seed/Training/7 Bromus japonicus/228.tiff +test/2-seed/Training/7 Bromus japonicus/601.tiff +test/2-seed/Training/7 Bromus japonicus/Bromus japonicus (2).tiff +test/2-seed/Training/7 Bromus japonicus/Bromus japonicus.tiff +test/2-seed/Training/8 Lolium temulentum/001.tiff +test/2-seed/Training/8 Lolium temulentum/002.tiff +test/2-seed/Training/8 Lolium temulentum/003.tiff +test/2-seed/Training/8 Lolium temulentum/004.tiff +test/2-seed/Training/8 Lolium temulentum/005.tiff +test/2-seed/Training/8 Lolium temulentum/006.tiff +test/2-seed/Training/8 Lolium temulentum/007.tiff +test/2-seed/Training/8 Lolium temulentum/008.tiff +test/2-seed/Training/8 Lolium temulentum/009.tiff +test/2-seed/Training/8 Lolium temulentum/010.tiff +test/2-seed/Training/8 Lolium temulentum/011 (2).tiff +test/2-seed/Training/8 Lolium temulentum/011.tiff +test/2-seed/Training/8 Lolium temulentum/013 (2).tiff +test/2-seed/Training/8 Lolium temulentum/013.tiff +test/2-seed/Training/8 Lolium temulentum/014 (2).tiff +test/2-seed/Training/8 Lolium temulentum/014.tiff +test/2-seed/Training/8 Lolium temulentum/015 (2).tiff +test/2-seed/Training/8 Lolium temulentum/017 (2).tiff +test/2-seed/Training/8 Lolium temulentum/018 (2).tiff +test/2-seed/Training/8 Lolium temulentum/019 (2).tiff +test/2-seed/Training/8 Lolium temulentum/019.tiff +test/2-seed/Training/8 Lolium temulentum/020 (2).tiff +test/2-seed/Training/8 Lolium temulentum/020.tiff +test/2-seed/Training/8 Lolium temulentum/021 (2).tiff +test/2-seed/Training/8 Lolium temulentum/022.tiff +test/2-seed/Training/8 Lolium temulentum/023 (2).tiff +test/2-seed/Training/8 Lolium temulentum/023.tiff +test/2-seed/Training/8 Lolium temulentum/024.tiff +test/2-seed/Training/8 Lolium temulentum/025 (2).tiff +test/2-seed/Training/8 Lolium temulentum/026 (2).tiff +test/2-seed/Training/8 Lolium temulentum/026.tiff +test/2-seed/Training/8 Lolium temulentum/027.tiff +test/2-seed/Training/8 Lolium temulentum/028 (2).tiff +test/2-seed/Training/8 Lolium temulentum/028.tiff +test/2-seed/Training/8 Lolium temulentum/029 (2).tiff +test/2-seed/Training/8 Lolium temulentum/029.tiff +test/2-seed/Training/8 Lolium temulentum/030 (2).tiff +test/2-seed/Training/8 Lolium temulentum/031 (2).tiff +test/2-seed/Training/8 Lolium temulentum/031.tiff +test/2-seed/Training/8 Lolium temulentum/032 (2).tiff +test/2-seed/Training/8 Lolium temulentum/032.tiff +test/2-seed/Training/8 Lolium temulentum/033.tiff +test/2-seed/Training/8 Lolium temulentum/034 (2).tiff +test/2-seed/Training/8 Lolium temulentum/034.tiff +test/2-seed/Training/8 Lolium temulentum/035 (2).tiff +test/2-seed/Training/8 Lolium temulentum/035.tiff +test/2-seed/Training/8 Lolium temulentum/036 (2).tiff +test/2-seed/Training/8 Lolium temulentum/036.tiff +test/2-seed/Training/8 Lolium temulentum/037 (2).tiff +test/2-seed/Training/8 Lolium temulentum/037.tiff +test/2-seed/Training/8 Lolium temulentum/038 (2).tiff +test/2-seed/Training/8 Lolium temulentum/038.tiff +test/2-seed/Training/8 Lolium temulentum/040 (2).tiff +test/2-seed/Training/8 Lolium temulentum/040.tiff +test/2-seed/Training/8 Lolium temulentum/041 (2).tiff +test/2-seed/Training/8 Lolium temulentum/041.tiff +test/2-seed/Training/8 Lolium temulentum/042 (2).tiff +test/2-seed/Training/8 Lolium temulentum/042.tiff +test/2-seed/Training/8 Lolium temulentum/043 (2).tiff +test/2-seed/Training/8 Lolium temulentum/043.tiff +test/2-seed/Training/8 Lolium temulentum/044 (2).tiff +test/2-seed/Training/8 Lolium temulentum/044.tiff +test/2-seed/Training/8 Lolium temulentum/046 (2).tiff +test/2-seed/Training/8 Lolium temulentum/046.tiff +test/2-seed/Training/8 Lolium temulentum/047 (2).tiff +test/2-seed/Training/8 Lolium temulentum/047.tiff +test/2-seed/Training/8 Lolium temulentum/048 (2).tiff +test/2-seed/Training/8 Lolium temulentum/048.tiff +test/2-seed/Training/8 Lolium temulentum/049 (2).tiff +test/2-seed/Training/8 Lolium temulentum/049.tiff +test/2-seed/Training/8 Lolium temulentum/050 (2).tiff +test/2-seed/Training/8 Lolium temulentum/050.tiff +test/2-seed/Training/8 Lolium temulentum/051 (2).tiff +test/2-seed/Training/8 Lolium temulentum/051.tiff +test/2-seed/Training/8 Lolium temulentum/052.tiff +test/2-seed/Training/8 Lolium temulentum/053 (2).tiff +test/2-seed/Training/8 Lolium temulentum/053.tiff +test/2-seed/Training/8 Lolium temulentum/054 (2).tiff +test/2-seed/Training/8 Lolium temulentum/101.tiff +test/2-seed/Training/8 Lolium temulentum/102.tiff +test/2-seed/Training/8 Lolium temulentum/103.tiff +test/2-seed/Training/8 Lolium temulentum/104.tiff +test/2-seed/Training/8 Lolium temulentum/105.tiff +test/2-seed/Training/8 Lolium temulentum/107.tiff +test/2-seed/Training/8 Lolium temulentum/108.tiff +test/2-seed/Training/8 Lolium temulentum/109.tiff +test/2-seed/Training/8 Lolium temulentum/110.tiff +test/2-seed/Training/8 Lolium temulentum/201.tiff +test/2-seed/Training/8 Lolium temulentum/202.tiff +test/2-seed/Training/8 Lolium temulentum/203.tiff +test/2-seed/Training/8 Lolium temulentum/204.tiff +test/2-seed/Training/8 Lolium temulentum/205.tiff +test/2-seed/Training/8 Lolium temulentum/206.tiff +test/2-seed/Training/8 Lolium temulentum/207.tiff +test/2-seed/Training/8 Lolium temulentum/208.tiff +test/2-seed/Training/8 Lolium temulentum/209.tiff +test/2-seed/Training/8 Lolium temulentum/210.tiff +test/2-seed/Training/8 Lolium temulentum/211.tiff +test/2-seed/Training/8 Lolium temulentum/222.tiff +test/2-seed/Training/8 Lolium temulentum/223.tiff +test/2-seed/Training/8 Lolium temulentum/224.tiff +test/2-seed/Training/8 Lolium temulentum/225.tiff +test/2-seed/Training/8 Lolium temulentum/226.tiff +test/2-seed/Training/8 Lolium temulentum/227.tiff +test/2-seed/Training/8 Lolium temulentum/Lolium temulentum 1.tiff +test/2-seed/Training/8 Lolium temulentum/Lolium temulentum.tiff +test/2-seed/Training/9 Solanum carolinense/1.tiff +test/2-seed/Training/9 Solanum carolinense/2.tiff +test/2-seed/Training/9 Solanum carolinense/3.tiff +test/2-seed/Training/9 Solanum carolinense/4.tiff +test/2-seed/Training/9 Solanum carolinense/5.tiff +test/2-seed/Training/9 Solanum carolinense/6.tiff +test/2-seed/Training/9 Solanum carolinense/7.tiff +test/2-seed/Training/9 Solanum carolinense/8.tiff +test/2-seed/Training/9 Solanum carolinense/9.tiff +test/2-seed/Training/9 Solanum carolinense/10.tiff +test/2-seed/Training/9 Solanum carolinense/11.tiff +test/2-seed/Training/9 Solanum carolinense/12.tiff +test/2-seed/Training/9 Solanum carolinense/13.tiff +test/2-seed/Training/9 Solanum carolinense/14.tiff +test/2-seed/Training/9 Solanum carolinense/15.tiff +test/2-seed/Training/9 Solanum carolinense/16.tiff +test/2-seed/Training/9 Solanum carolinense/17.tiff +test/2-seed/Training/9 Solanum carolinense/18.tiff +test/2-seed/Training/9 Solanum carolinense/19.tiff +test/2-seed/Training/9 Solanum carolinense/20.tiff +test/2-seed/Training/9 Solanum carolinense/21.tiff +test/2-seed/Training/9 Solanum carolinense/22.tiff +test/2-seed/Training/9 Solanum carolinense/23.tiff +test/2-seed/Training/9 Solanum carolinense/24.tiff +test/2-seed/Training/9 Solanum carolinense/25.tiff +test/2-seed/Training/9 Solanum carolinense/26.tiff +test/2-seed/Training/9 Solanum carolinense/27.tiff +test/2-seed/Training/9 Solanum carolinense/28.tiff +test/2-seed/Training/9 Solanum carolinense/29.tiff +test/2-seed/Training/9 Solanum carolinense/30.tiff +test/2-seed/Training/9 Solanum carolinense/31.tiff +test/2-seed/Training/9 Solanum carolinense/32.tiff +test/2-seed/Training/9 Solanum carolinense/33.tiff +test/2-seed/Training/9 Solanum carolinense/34.tiff +test/2-seed/Training/9 Solanum carolinense/35.tiff +test/2-seed/Training/9 Solanum carolinense/36.tiff +test/2-seed/Training/9 Solanum carolinense/37.tiff +test/2-seed/Training/9 Solanum carolinense/38.tiff +test/2-seed/Training/9 Solanum carolinense/39.tiff +test/2-seed/Training/9 Solanum carolinense/40.tiff +test/2-seed/Training/9 Solanum carolinense/41.tiff +test/2-seed/Training/9 Solanum carolinense/42.tiff +test/2-seed/Training/9 Solanum carolinense/43.tiff +test/2-seed/Training/9 Solanum carolinense/44.tiff +test/2-seed/Training/9 Solanum carolinense/45.tiff +test/2-seed/Training/9 Solanum carolinense/46.tiff +test/2-seed/Training/9 Solanum carolinense/47.tiff +test/2-seed/Training/9 Solanum carolinense/48.tiff +test/2-seed/Training/9 Solanum carolinense/49.tiff +test/2-seed/Training/9 Solanum carolinense/50.tiff +test/6-seed/Testing/0 Brassica napus/801.json +test/6-seed/Testing/0 Brassica napus/801.tiff +test/6-seed/Testing/0 Brassica napus/802.json +test/6-seed/Testing/0 Brassica napus/802.tiff +test/6-seed/Testing/0 Brassica napus/803.json +test/6-seed/Testing/0 Brassica napus/803.tiff +test/6-seed/Testing/0 Brassica napus/804.json +test/6-seed/Testing/0 Brassica napus/804.tiff +test/6-seed/Testing/0 Brassica napus/805.json +test/6-seed/Testing/0 Brassica napus/805.tiff +test/6-seed/Testing/0 Brassica napus/806.json +test/6-seed/Testing/0 Brassica napus/806.tiff +test/6-seed/Testing/0 Brassica napus/807.json +test/6-seed/Testing/0 Brassica napus/807.tiff +test/6-seed/Testing/0 Brassica napus/808.json +test/6-seed/Testing/0 Brassica napus/808.tiff +test/6-seed/Testing/0 Brassica napus/809.json +test/6-seed/Testing/0 Brassica napus/809.tiff +test/6-seed/Testing/0 Brassica napus/810.json +test/6-seed/Testing/0 Brassica napus/810.tiff +test/6-seed/Testing/0 Brassica napus/811.json +test/6-seed/Testing/0 Brassica napus/811.tiff +test/6-seed/Testing/0 Brassica napus/813.json +test/6-seed/Testing/0 Brassica napus/813.tiff +test/6-seed/Testing/0 Brassica napus/Brassica napus.json +test/6-seed/Testing/0 Brassica napus/Brassica napus.tiff +test/6-seed/Testing/0 Brassica napus/index.json +test/6-seed/Testing/1 Brassica junsea/851.json +test/6-seed/Testing/1 Brassica junsea/851.tiff +test/6-seed/Testing/1 Brassica junsea/852.json +test/6-seed/Testing/1 Brassica junsea/852.tiff +test/6-seed/Testing/1 Brassica junsea/853.json +test/6-seed/Testing/1 Brassica junsea/853.tiff +test/6-seed/Testing/1 Brassica junsea/854.json +test/6-seed/Testing/1 Brassica junsea/854.tiff +test/6-seed/Testing/1 Brassica junsea/856.json +test/6-seed/Testing/1 Brassica junsea/856.tiff +test/6-seed/Testing/1 Brassica junsea/857.json +test/6-seed/Testing/1 Brassica junsea/857.tiff +test/6-seed/Testing/1 Brassica junsea/858.json +test/6-seed/Testing/1 Brassica junsea/858.tiff +test/6-seed/Testing/1 Brassica junsea/859.json +test/6-seed/Testing/1 Brassica junsea/859.tiff +test/6-seed/Testing/1 Brassica junsea/860.json +test/6-seed/Testing/1 Brassica junsea/860.tiff +test/6-seed/Testing/1 Brassica junsea/862.json +test/6-seed/Testing/1 Brassica junsea/862.tiff +test/6-seed/Testing/1 Brassica junsea/863.json +test/6-seed/Testing/1 Brassica junsea/863.tiff +test/6-seed/Testing/1 Brassica junsea/961.json +test/6-seed/Testing/1 Brassica junsea/961.tiff +test/6-seed/Testing/1 Brassica junsea/Brassica junsea.json +test/6-seed/Testing/1 Brassica junsea/Brassica junsea.tiff +test/6-seed/Testing/1 Brassica junsea/index.json +test/6-seed/Testing/10 Solanum nigrum/1.tiff +test/6-seed/Testing/10 Solanum nigrum/2.tiff +test/6-seed/Testing/10 Solanum nigrum/3.tiff +test/6-seed/Testing/10 Solanum nigrum/4.tiff +test/6-seed/Testing/10 Solanum nigrum/5.tiff +test/6-seed/Testing/10 Solanum nigrum/6.tiff +test/6-seed/Testing/10 Solanum nigrum/8.tiff +test/6-seed/Testing/10 Solanum nigrum/9.tiff +test/6-seed/Testing/10 Solanum nigrum/Solanum nigrum.tiff +test/6-seed/Testing/11 Solanum rostratum/1.tiff +test/6-seed/Testing/11 Solanum rostratum/2.tiff +test/6-seed/Testing/11 Solanum rostratum/3.tiff +test/6-seed/Testing/11 Solanum rostratum/4.tiff +test/6-seed/Testing/11 Solanum rostratum/6.tiff +test/6-seed/Testing/11 Solanum rostratum/7.tiff +test/6-seed/Testing/11 Solanum rostratum/8.tiff +test/6-seed/Testing/11 Solanum rostratum/9.tiff +test/6-seed/Testing/11 Solanum rostratum/Solanum rostratum.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/1.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/2.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/3.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/4.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/6.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/7.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/8.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/9.tiff +test/6-seed/Testing/12 Ambrosia artemisiifolia/Ambrosia artemisiifolia.tiff +test/6-seed/Testing/13 Ambrosia trifida/1.tiff +test/6-seed/Testing/13 Ambrosia trifida/3.tiff +test/6-seed/Testing/13 Ambrosia trifida/4.tiff +test/6-seed/Testing/13 Ambrosia trifida/5.tiff +test/6-seed/Testing/13 Ambrosia trifida/6.tiff +test/6-seed/Testing/13 Ambrosia trifida/7.tiff +test/6-seed/Testing/13 Ambrosia trifida/8.tiff +test/6-seed/Testing/13 Ambrosia trifida/9.tiff +test/6-seed/Testing/13 Ambrosia trifida/Ambrosia trifida.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/1.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/2.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/4.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/5.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/6.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/7.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/8.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/9.tiff +test/6-seed/Testing/14 Ambrosia psilostachya/Ambrosia psilostachya.tiff +test/6-seed/Testing/2 Cirsium arvense/1.json +test/6-seed/Testing/2 Cirsium arvense/1.tiff +test/6-seed/Testing/2 Cirsium arvense/2.json +test/6-seed/Testing/2 Cirsium arvense/2.tiff +test/6-seed/Testing/2 Cirsium arvense/3.json +test/6-seed/Testing/2 Cirsium arvense/3.tiff +test/6-seed/Testing/2 Cirsium arvense/4.json +test/6-seed/Testing/2 Cirsium arvense/4.tiff +test/6-seed/Testing/2 Cirsium arvense/5.json +test/6-seed/Testing/2 Cirsium arvense/5.tiff +test/6-seed/Testing/2 Cirsium arvense/6.json +test/6-seed/Testing/2 Cirsium arvense/6.tiff +test/6-seed/Testing/2 Cirsium arvense/7.json +test/6-seed/Testing/2 Cirsium arvense/7.tiff +test/6-seed/Testing/2 Cirsium arvense/9.json +test/6-seed/Testing/2 Cirsium arvense/9.tiff +test/6-seed/Testing/2 Cirsium arvense/Cirsium arvense.json +test/6-seed/Testing/2 Cirsium arvense/Cirsium arvense.tiff +test/6-seed/Testing/2 Cirsium arvense/index.json +test/6-seed/Testing/3 Cirsium vulgare/1.tiff +test/6-seed/Testing/3 Cirsium vulgare/2.tiff +test/6-seed/Testing/3 Cirsium vulgare/3.tiff +test/6-seed/Testing/3 Cirsium vulgare/4.tiff +test/6-seed/Testing/3 Cirsium vulgare/5.tiff +test/6-seed/Testing/3 Cirsium vulgare/6.tiff +test/6-seed/Testing/3 Cirsium vulgare/7.tiff +test/6-seed/Testing/3 Cirsium vulgare/9.tiff +test/6-seed/Testing/3 Cirsium vulgare/Cirsium vulgare.tiff +test/6-seed/Testing/4 Carduus nutans/1.tiff +test/6-seed/Testing/4 Carduus nutans/2.tiff +test/6-seed/Testing/4 Carduus nutans/3.tiff +test/6-seed/Testing/4 Carduus nutans/5.tiff +test/6-seed/Testing/4 Carduus nutans/6.tiff +test/6-seed/Testing/4 Carduus nutans/7.tiff +test/6-seed/Testing/4 Carduus nutans/8.tiff +test/6-seed/Testing/4 Carduus nutans/9.tiff +test/6-seed/Testing/4 Carduus nutans/Carduus nutans.tiff +test/6-seed/Testing/5 Bromus secalinus/651.tiff +test/6-seed/Testing/5 Bromus secalinus/652.tiff +test/6-seed/Testing/5 Bromus secalinus/653.tiff +test/6-seed/Testing/5 Bromus secalinus/654.tiff +test/6-seed/Testing/5 Bromus secalinus/655.tiff +test/6-seed/Testing/5 Bromus secalinus/656.tiff +test/6-seed/Testing/5 Bromus secalinus/657.tiff +test/6-seed/Testing/5 Bromus secalinus/658.tiff +test/6-seed/Testing/5 Bromus secalinus/659.tiff +test/6-seed/Testing/5 Bromus secalinus/661.tiff +test/6-seed/Testing/5 Bromus secalinus/662.tiff +test/6-seed/Testing/5 Bromus secalinus/663.tiff +test/6-seed/Testing/5 Bromus secalinus/664.tiff +test/6-seed/Testing/5 Bromus secalinus/665.tiff +test/6-seed/Testing/5 Bromus secalinus/666.tiff +test/6-seed/Testing/5 Bromus secalinus/667.tiff +test/6-seed/Testing/5 Bromus secalinus/668.tiff +test/6-seed/Testing/5 Bromus secalinus/669.tiff +test/6-seed/Testing/5 Bromus secalinus/926.tiff +test/6-seed/Testing/6 Bromus hordeaceus/001.tiff +test/6-seed/Testing/6 Bromus hordeaceus/002.tiff +test/6-seed/Testing/6 Bromus hordeaceus/003.tiff +test/6-seed/Testing/6 Bromus hordeaceus/0004.tiff +test/6-seed/Testing/6 Bromus hordeaceus/005.tiff +test/6-seed/Testing/6 Bromus hordeaceus/006.tiff +test/6-seed/Testing/6 Bromus hordeaceus/007.tiff +test/6-seed/Testing/6 Bromus hordeaceus/008.tiff +test/6-seed/Testing/6 Bromus hordeaceus/009.tiff +test/6-seed/Testing/6 Bromus hordeaceus/010.tiff +test/6-seed/Testing/6 Bromus hordeaceus/014.tiff +test/6-seed/Testing/6 Bromus hordeaceus/015.tiff +test/6-seed/Testing/6 Bromus hordeaceus/016.tiff +test/6-seed/Testing/6 Bromus hordeaceus/017.tiff +test/6-seed/Testing/6 Bromus hordeaceus/018.tiff +test/6-seed/Testing/6 Bromus hordeaceus/019.tiff +test/6-seed/Testing/6 Bromus hordeaceus/020.tiff +test/6-seed/Testing/6 Bromus hordeaceus/021.tiff +test/6-seed/Testing/6 Bromus hordeaceus/022.tiff +test/6-seed/Testing/7 Bromus japonicus/001.tiff +test/6-seed/Testing/7 Bromus japonicus/003.tiff +test/6-seed/Testing/7 Bromus japonicus/602.tiff +test/6-seed/Testing/7 Bromus japonicus/604.tiff +test/6-seed/Testing/7 Bromus japonicus/605.tiff +test/6-seed/Testing/7 Bromus japonicus/606.tiff +test/6-seed/Testing/7 Bromus japonicus/607.tiff +test/6-seed/Testing/7 Bromus japonicus/608.tiff +test/6-seed/Testing/7 Bromus japonicus/609.tiff +test/6-seed/Testing/7 Bromus japonicus/610.tiff +test/6-seed/Testing/7 Bromus japonicus/611.tiff +test/6-seed/Testing/7 Bromus japonicus/612.tiff +test/6-seed/Testing/7 Bromus japonicus/613.tiff +test/6-seed/Testing/7 Bromus japonicus/614.tiff +test/6-seed/Testing/7 Bromus japonicus/615.tiff +test/6-seed/Testing/7 Bromus japonicus/616.tiff +test/6-seed/Testing/7 Bromus japonicus/617.tiff +test/6-seed/Testing/7 Bromus japonicus/618.tiff +test/6-seed/Testing/8 Lolium temulentum/001.tiff +test/6-seed/Testing/8 Lolium temulentum/002.tiff +test/6-seed/Testing/8 Lolium temulentum/003.tiff +test/6-seed/Testing/8 Lolium temulentum/004.tiff +test/6-seed/Testing/8 Lolium temulentum/005.tiff +test/6-seed/Testing/8 Lolium temulentum/006.tiff +test/6-seed/Testing/8 Lolium temulentum/007.tiff +test/6-seed/Testing/8 Lolium temulentum/008.tiff +test/6-seed/Testing/8 Lolium temulentum/009.tiff +test/6-seed/Testing/8 Lolium temulentum/011.tiff +test/6-seed/Testing/8 Lolium temulentum/012.tiff +test/6-seed/Testing/8 Lolium temulentum/013.tiff +test/6-seed/Testing/8 Lolium temulentum/014.tiff +test/6-seed/Testing/8 Lolium temulentum/015.tiff +test/6-seed/Testing/8 Lolium temulentum/016.tiff +test/6-seed/Testing/8 Lolium temulentum/017.tiff +test/6-seed/Testing/8 Lolium temulentum/018.tiff +test/6-seed/Testing/8 Lolium temulentum/019.tiff +test/6-seed/Testing/9 Solanum carolinense/1.tiff +test/6-seed/Testing/9 Solanum carolinense/2.tiff +test/6-seed/Testing/9 Solanum carolinense/3.tiff +test/6-seed/Testing/9 Solanum carolinense/4.tiff +test/6-seed/Testing/9 Solanum carolinense/5.tiff +test/6-seed/Testing/9 Solanum carolinense/6.tiff +test/6-seed/Testing/9 Solanum carolinense/8.tiff +test/6-seed/Testing/9 Solanum carolinense/9.tiff +test/6-seed/Testing/9 Solanum carolinense/Solanum carolinense.tiff +test/6-seed/Training/0 Brassica napus/001.json +test/6-seed/Training/0 Brassica napus/001.tiff +test/6-seed/Training/0 Brassica napus/003.json +test/6-seed/Training/0 Brassica napus/003.tiff +test/6-seed/Training/0 Brassica napus/004.json +test/6-seed/Training/0 Brassica napus/004.tiff +test/6-seed/Training/0 Brassica napus/005.json +test/6-seed/Training/0 Brassica napus/005.tiff +test/6-seed/Training/0 Brassica napus/006.json +test/6-seed/Training/0 Brassica napus/006.tiff +test/6-seed/Training/0 Brassica napus/007.json +test/6-seed/Training/0 Brassica napus/007.tiff +test/6-seed/Training/0 Brassica napus/008.json +test/6-seed/Training/0 Brassica napus/008.tiff +test/6-seed/Training/0 Brassica napus/009.json +test/6-seed/Training/0 Brassica napus/009.tiff +test/6-seed/Training/0 Brassica napus/010.json +test/6-seed/Training/0 Brassica napus/010.tiff +test/6-seed/Training/0 Brassica napus/011.json +test/6-seed/Training/0 Brassica napus/011.tiff +test/6-seed/Training/0 Brassica napus/012.json +test/6-seed/Training/0 Brassica napus/012.tiff +test/6-seed/Training/0 Brassica napus/013.json +test/6-seed/Training/0 Brassica napus/013.tiff +test/6-seed/Training/0 Brassica napus/014.json +test/6-seed/Training/0 Brassica napus/014.tiff +test/6-seed/Training/0 Brassica napus/024.json +test/6-seed/Training/0 Brassica napus/024.tiff +test/6-seed/Training/0 Brassica napus/201 (3).json +test/6-seed/Training/0 Brassica napus/201 (3).tiff +test/6-seed/Training/0 Brassica napus/201 (4).json +test/6-seed/Training/0 Brassica napus/201 (4).tiff +test/6-seed/Training/0 Brassica napus/201.json +test/6-seed/Training/0 Brassica napus/201.tiff +test/6-seed/Training/0 Brassica napus/202 (3).json +test/6-seed/Training/0 Brassica napus/202 (3).tiff +test/6-seed/Training/0 Brassica napus/202 (4).json +test/6-seed/Training/0 Brassica napus/202 (4).tiff +test/6-seed/Training/0 Brassica napus/202 (5).json +test/6-seed/Training/0 Brassica napus/202 (5).tiff +test/6-seed/Training/0 Brassica napus/202.json +test/6-seed/Training/0 Brassica napus/202.tiff +test/6-seed/Training/0 Brassica napus/203 (2).json +test/6-seed/Training/0 Brassica napus/203 (2).tiff +test/6-seed/Training/0 Brassica napus/203 (3).json +test/6-seed/Training/0 Brassica napus/203 (3).tiff +test/6-seed/Training/0 Brassica napus/203 (4).json +test/6-seed/Training/0 Brassica napus/203 (4).tiff +test/6-seed/Training/0 Brassica napus/203 (5).json +test/6-seed/Training/0 Brassica napus/203 (5).tiff +test/6-seed/Training/0 Brassica napus/203.json +test/6-seed/Training/0 Brassica napus/203.tiff +test/6-seed/Training/0 Brassica napus/204 (2).json +test/6-seed/Training/0 Brassica napus/204 (2).tiff +test/6-seed/Training/0 Brassica napus/204 (3).json +test/6-seed/Training/0 Brassica napus/204 (3).tiff +test/6-seed/Training/0 Brassica napus/204 (4).json +test/6-seed/Training/0 Brassica napus/204 (4).tiff +test/6-seed/Training/0 Brassica napus/204 (5).json +test/6-seed/Training/0 Brassica napus/204 (5).tiff +test/6-seed/Training/0 Brassica napus/204.json +test/6-seed/Training/0 Brassica napus/204.tiff +test/6-seed/Training/0 Brassica napus/205 (2).json +test/6-seed/Training/0 Brassica napus/205 (2).tiff +test/6-seed/Training/0 Brassica napus/205 (3).json +test/6-seed/Training/0 Brassica napus/205 (3).tiff +test/6-seed/Training/0 Brassica napus/205 (4).json +test/6-seed/Training/0 Brassica napus/205 (4).tiff +test/6-seed/Training/0 Brassica napus/205 (5).json +test/6-seed/Training/0 Brassica napus/205 (5).tiff +test/6-seed/Training/0 Brassica napus/205.json +test/6-seed/Training/0 Brassica napus/205.tiff +test/6-seed/Training/0 Brassica napus/206 (3).json +test/6-seed/Training/0 Brassica napus/206 (3).tiff +test/6-seed/Training/0 Brassica napus/206 (4).json +test/6-seed/Training/0 Brassica napus/206 (4).tiff +test/6-seed/Training/0 Brassica napus/206 (5).json +test/6-seed/Training/0 Brassica napus/206 (5).tiff +test/6-seed/Training/0 Brassica napus/206.json +test/6-seed/Training/0 Brassica napus/206.tiff +test/6-seed/Training/0 Brassica napus/207 (3).json +test/6-seed/Training/0 Brassica napus/207 (3).tiff +test/6-seed/Training/0 Brassica napus/207 (4).json +test/6-seed/Training/0 Brassica napus/207 (4).tiff +test/6-seed/Training/0 Brassica napus/207 (5).json +test/6-seed/Training/0 Brassica napus/207 (5).tiff +test/6-seed/Training/0 Brassica napus/207.json +test/6-seed/Training/0 Brassica napus/207.tiff +test/6-seed/Training/0 Brassica napus/208 (2).json +test/6-seed/Training/0 Brassica napus/208 (2).tiff +test/6-seed/Training/0 Brassica napus/208 (3).json +test/6-seed/Training/0 Brassica napus/208 (3).tiff +test/6-seed/Training/0 Brassica napus/208 (4).json +test/6-seed/Training/0 Brassica napus/208 (4).tiff +test/6-seed/Training/0 Brassica napus/208 (5).json +test/6-seed/Training/0 Brassica napus/208 (5).tiff +test/6-seed/Training/0 Brassica napus/208.json +test/6-seed/Training/0 Brassica napus/208.tiff +test/6-seed/Training/0 Brassica napus/209 (2).json +test/6-seed/Training/0 Brassica napus/209 (2).tiff +test/6-seed/Training/0 Brassica napus/209 (3).json +test/6-seed/Training/0 Brassica napus/209 (3).tiff +test/6-seed/Training/0 Brassica napus/209 (4).json +test/6-seed/Training/0 Brassica napus/209 (4).tiff +test/6-seed/Training/0 Brassica napus/209 (5).json +test/6-seed/Training/0 Brassica napus/209 (5).tiff +test/6-seed/Training/0 Brassica napus/209.json +test/6-seed/Training/0 Brassica napus/209.tiff +test/6-seed/Training/0 Brassica napus/210 (2).json +test/6-seed/Training/0 Brassica napus/210 (2).tiff +test/6-seed/Training/0 Brassica napus/210 (3).json +test/6-seed/Training/0 Brassica napus/210 (3).tiff +test/6-seed/Training/0 Brassica napus/210 (4).json +test/6-seed/Training/0 Brassica napus/210 (4).tiff +test/6-seed/Training/0 Brassica napus/210 (5).json +test/6-seed/Training/0 Brassica napus/210 (5).tiff +test/6-seed/Training/0 Brassica napus/210.json +test/6-seed/Training/0 Brassica napus/210.tiff +test/6-seed/Training/0 Brassica napus/211 (3).json +test/6-seed/Training/0 Brassica napus/211 (3).tiff +test/6-seed/Training/0 Brassica napus/211.json +test/6-seed/Training/0 Brassica napus/211.tiff +test/6-seed/Training/0 Brassica napus/212 (2).json +test/6-seed/Training/0 Brassica napus/212 (2).tiff +test/6-seed/Training/0 Brassica napus/212.json +test/6-seed/Training/0 Brassica napus/212.tiff +test/6-seed/Training/0 Brassica napus/213 (2).json +test/6-seed/Training/0 Brassica napus/213 (2).tiff +test/6-seed/Training/0 Brassica napus/213 (3).json +test/6-seed/Training/0 Brassica napus/213 (3).tiff +test/6-seed/Training/0 Brassica napus/213.json +test/6-seed/Training/0 Brassica napus/213.tiff +test/6-seed/Training/0 Brassica napus/214 (2).json +test/6-seed/Training/0 Brassica napus/214 (2).tiff +test/6-seed/Training/0 Brassica napus/214 (3).json +test/6-seed/Training/0 Brassica napus/214 (3).tiff +test/6-seed/Training/0 Brassica napus/214.json +test/6-seed/Training/0 Brassica napus/214.tiff +test/6-seed/Training/0 Brassica napus/215 (2).json +test/6-seed/Training/0 Brassica napus/215 (2).tiff +test/6-seed/Training/0 Brassica napus/215 (3).json +test/6-seed/Training/0 Brassica napus/215 (3).tiff +test/6-seed/Training/0 Brassica napus/215.json +test/6-seed/Training/0 Brassica napus/215.tiff +test/6-seed/Training/0 Brassica napus/216 (2).json +test/6-seed/Training/0 Brassica napus/216 (2).tiff +test/6-seed/Training/0 Brassica napus/216 (3).json +test/6-seed/Training/0 Brassica napus/216 (3).tiff +test/6-seed/Training/0 Brassica napus/216.json +test/6-seed/Training/0 Brassica napus/216.tiff +test/6-seed/Training/0 Brassica napus/217 (2).json +test/6-seed/Training/0 Brassica napus/217 (2).tiff +test/6-seed/Training/0 Brassica napus/217.json +test/6-seed/Training/0 Brassica napus/217.tiff +test/6-seed/Training/0 Brassica napus/218 (2).json +test/6-seed/Training/0 Brassica napus/218 (2).tiff +test/6-seed/Training/0 Brassica napus/218.json +test/6-seed/Training/0 Brassica napus/218.tiff +test/6-seed/Training/0 Brassica napus/219 (2).json +test/6-seed/Training/0 Brassica napus/219 (2).tiff +test/6-seed/Training/0 Brassica napus/219.json +test/6-seed/Training/0 Brassica napus/219.tiff +test/6-seed/Training/0 Brassica napus/220.json +test/6-seed/Training/0 Brassica napus/220.tiff +test/6-seed/Training/0 Brassica napus/221.json +test/6-seed/Training/0 Brassica napus/221.tiff +test/6-seed/Training/0 Brassica napus/222.json +test/6-seed/Training/0 Brassica napus/222.tiff +test/6-seed/Training/0 Brassica napus/223.json +test/6-seed/Training/0 Brassica napus/223.tiff +test/6-seed/Training/0 Brassica napus/225.json +test/6-seed/Training/0 Brassica napus/225.tiff +test/6-seed/Training/0 Brassica napus/230.json +test/6-seed/Training/0 Brassica napus/230.tiff +test/6-seed/Training/0 Brassica napus/231.json +test/6-seed/Training/0 Brassica napus/231.tiff +test/6-seed/Training/0 Brassica napus/232.json +test/6-seed/Training/0 Brassica napus/232.tiff +test/6-seed/Training/0 Brassica napus/233.json +test/6-seed/Training/0 Brassica napus/233.tiff +test/6-seed/Training/0 Brassica napus/235.json +test/6-seed/Training/0 Brassica napus/235.tiff +test/6-seed/Training/0 Brassica napus/236.json +test/6-seed/Training/0 Brassica napus/236.tiff +test/6-seed/Training/0 Brassica napus/index.json +test/6-seed/Training/1 Brassica junsea/801.json +test/6-seed/Training/1 Brassica junsea/801.tiff +test/6-seed/Training/1 Brassica junsea/802.json +test/6-seed/Training/1 Brassica junsea/802.tiff +test/6-seed/Training/1 Brassica junsea/803.json +test/6-seed/Training/1 Brassica junsea/803.tiff +test/6-seed/Training/1 Brassica junsea/804.json +test/6-seed/Training/1 Brassica junsea/804.tiff +test/6-seed/Training/1 Brassica junsea/805.json +test/6-seed/Training/1 Brassica junsea/805.tiff +test/6-seed/Training/1 Brassica junsea/806.json +test/6-seed/Training/1 Brassica junsea/806.tiff +test/6-seed/Training/1 Brassica junsea/807.json +test/6-seed/Training/1 Brassica junsea/807.tiff +test/6-seed/Training/1 Brassica junsea/808.json +test/6-seed/Training/1 Brassica junsea/808.tiff +test/6-seed/Training/1 Brassica junsea/809.json +test/6-seed/Training/1 Brassica junsea/809.tiff +test/6-seed/Training/1 Brassica junsea/810.json +test/6-seed/Training/1 Brassica junsea/810.tiff +test/6-seed/Training/1 Brassica junsea/811.json +test/6-seed/Training/1 Brassica junsea/811.tiff +test/6-seed/Training/1 Brassica junsea/812.json +test/6-seed/Training/1 Brassica junsea/812.tiff +test/6-seed/Training/1 Brassica junsea/813.json +test/6-seed/Training/1 Brassica junsea/813.tiff +test/6-seed/Training/1 Brassica junsea/814.json +test/6-seed/Training/1 Brassica junsea/814.tiff +test/6-seed/Training/1 Brassica junsea/815.json +test/6-seed/Training/1 Brassica junsea/815.tiff +test/6-seed/Training/1 Brassica junsea/816.json +test/6-seed/Training/1 Brassica junsea/816.tiff +test/6-seed/Training/1 Brassica junsea/817.json +test/6-seed/Training/1 Brassica junsea/817.tiff +test/6-seed/Training/1 Brassica junsea/818.json +test/6-seed/Training/1 Brassica junsea/818.tiff +test/6-seed/Training/1 Brassica junsea/819.json +test/6-seed/Training/1 Brassica junsea/819.tiff +test/6-seed/Training/1 Brassica junsea/820.json +test/6-seed/Training/1 Brassica junsea/820.tiff +test/6-seed/Training/1 Brassica junsea/821.json +test/6-seed/Training/1 Brassica junsea/821.tiff +test/6-seed/Training/1 Brassica junsea/822.json +test/6-seed/Training/1 Brassica junsea/822.tiff +test/6-seed/Training/1 Brassica junsea/823.json +test/6-seed/Training/1 Brassica junsea/823.tiff +test/6-seed/Training/1 Brassica junsea/824.json +test/6-seed/Training/1 Brassica junsea/824.tiff +test/6-seed/Training/1 Brassica junsea/825.json +test/6-seed/Training/1 Brassica junsea/825.tiff +test/6-seed/Training/1 Brassica junsea/826.json +test/6-seed/Training/1 Brassica junsea/826.tiff +test/6-seed/Training/1 Brassica junsea/827.json +test/6-seed/Training/1 Brassica junsea/827.tiff +test/6-seed/Training/1 Brassica junsea/828.json +test/6-seed/Training/1 Brassica junsea/828.tiff +test/6-seed/Training/1 Brassica junsea/829.json +test/6-seed/Training/1 Brassica junsea/829.tiff +test/6-seed/Training/1 Brassica junsea/830.json +test/6-seed/Training/1 Brassica junsea/830.tiff +test/6-seed/Training/1 Brassica junsea/831.json +test/6-seed/Training/1 Brassica junsea/831.tiff +test/6-seed/Training/1 Brassica junsea/832.json +test/6-seed/Training/1 Brassica junsea/832.tiff +test/6-seed/Training/1 Brassica junsea/833.json +test/6-seed/Training/1 Brassica junsea/833.tiff +test/6-seed/Training/1 Brassica junsea/834.json +test/6-seed/Training/1 Brassica junsea/834.tiff +test/6-seed/Training/1 Brassica junsea/835.json +test/6-seed/Training/1 Brassica junsea/835.tiff +test/6-seed/Training/1 Brassica junsea/836.json +test/6-seed/Training/1 Brassica junsea/836.tiff +test/6-seed/Training/1 Brassica junsea/837.json +test/6-seed/Training/1 Brassica junsea/837.tiff +test/6-seed/Training/1 Brassica junsea/838.json +test/6-seed/Training/1 Brassica junsea/838.tiff +test/6-seed/Training/1 Brassica junsea/839.json +test/6-seed/Training/1 Brassica junsea/839.tiff +test/6-seed/Training/1 Brassica junsea/840.json +test/6-seed/Training/1 Brassica junsea/840.tiff +test/6-seed/Training/1 Brassica junsea/841.json +test/6-seed/Training/1 Brassica junsea/841.tiff +test/6-seed/Training/1 Brassica junsea/842.json +test/6-seed/Training/1 Brassica junsea/842.tiff +test/6-seed/Training/1 Brassica junsea/843.json +test/6-seed/Training/1 Brassica junsea/843.tiff +test/6-seed/Training/1 Brassica junsea/844.json +test/6-seed/Training/1 Brassica junsea/844.tiff +test/6-seed/Training/1 Brassica junsea/845.json +test/6-seed/Training/1 Brassica junsea/845.tiff +test/6-seed/Training/1 Brassica junsea/846.json +test/6-seed/Training/1 Brassica junsea/846.tiff +test/6-seed/Training/1 Brassica junsea/847.json +test/6-seed/Training/1 Brassica junsea/847.tiff +test/6-seed/Training/1 Brassica junsea/848.json +test/6-seed/Training/1 Brassica junsea/848.tiff +test/6-seed/Training/1 Brassica junsea/849.json +test/6-seed/Training/1 Brassica junsea/849.tiff +test/6-seed/Training/1 Brassica junsea/850.json +test/6-seed/Training/1 Brassica junsea/850.tiff +test/6-seed/Training/1 Brassica junsea/index.json +test/6-seed/Training/10 Solanum nigrum/1.tiff +test/6-seed/Training/10 Solanum nigrum/2.tiff +test/6-seed/Training/10 Solanum nigrum/3.tiff +test/6-seed/Training/10 Solanum nigrum/4.tiff +test/6-seed/Training/10 Solanum nigrum/5.tiff +test/6-seed/Training/10 Solanum nigrum/6.tiff +test/6-seed/Training/10 Solanum nigrum/7.tiff +test/6-seed/Training/10 Solanum nigrum/8.tiff +test/6-seed/Training/10 Solanum nigrum/9.tiff +test/6-seed/Training/10 Solanum nigrum/10.tiff +test/6-seed/Training/10 Solanum nigrum/11.tiff +test/6-seed/Training/10 Solanum nigrum/12.tiff +test/6-seed/Training/10 Solanum nigrum/13.tiff +test/6-seed/Training/10 Solanum nigrum/14.tiff +test/6-seed/Training/10 Solanum nigrum/15.tiff +test/6-seed/Training/10 Solanum nigrum/16.tiff +test/6-seed/Training/10 Solanum nigrum/17.tiff +test/6-seed/Training/11 Solanum rostratum/1.tiff +test/6-seed/Training/11 Solanum rostratum/2.tiff +test/6-seed/Training/11 Solanum rostratum/3.tiff +test/6-seed/Training/11 Solanum rostratum/4.tiff +test/6-seed/Training/11 Solanum rostratum/5.tiff +test/6-seed/Training/11 Solanum rostratum/6.tiff +test/6-seed/Training/11 Solanum rostratum/7.tiff +test/6-seed/Training/11 Solanum rostratum/8.tiff +test/6-seed/Training/11 Solanum rostratum/9.tiff +test/6-seed/Training/11 Solanum rostratum/10.tiff +test/6-seed/Training/11 Solanum rostratum/11.tiff +test/6-seed/Training/11 Solanum rostratum/12.tiff +test/6-seed/Training/11 Solanum rostratum/13.tiff +test/6-seed/Training/11 Solanum rostratum/14.tiff +test/6-seed/Training/11 Solanum rostratum/15.tiff +test/6-seed/Training/11 Solanum rostratum/16.tiff +test/6-seed/Training/11 Solanum rostratum/17.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/1.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/2.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/3.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/4.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/5.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/6.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/7.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/8.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/9.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/10.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/11.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/12.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/13.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/14.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/15.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/16.tiff +test/6-seed/Training/12 Ambrosia artemisiifolia/17.tiff +test/6-seed/Training/13 Ambrosia trifida/1.tiff +test/6-seed/Training/13 Ambrosia trifida/2.tiff +test/6-seed/Training/13 Ambrosia trifida/3.tiff +test/6-seed/Training/13 Ambrosia trifida/4.tiff +test/6-seed/Training/13 Ambrosia trifida/5.tiff +test/6-seed/Training/13 Ambrosia trifida/6.tiff +test/6-seed/Training/13 Ambrosia trifida/7.tiff +test/6-seed/Training/13 Ambrosia trifida/8.tiff +test/6-seed/Training/13 Ambrosia trifida/9.tiff +test/6-seed/Training/13 Ambrosia trifida/10.tiff +test/6-seed/Training/13 Ambrosia trifida/11.tiff +test/6-seed/Training/13 Ambrosia trifida/12.tiff +test/6-seed/Training/13 Ambrosia trifida/13.tiff +test/6-seed/Training/13 Ambrosia trifida/14.tiff +test/6-seed/Training/13 Ambrosia trifida/15.tiff +test/6-seed/Training/13 Ambrosia trifida/16.tiff +test/6-seed/Training/13 Ambrosia trifida/17.tiff +test/6-seed/Training/14 Ambrosia psilostachya/1.tiff +test/6-seed/Training/14 Ambrosia psilostachya/2.tiff +test/6-seed/Training/14 Ambrosia psilostachya/3.tiff +test/6-seed/Training/14 Ambrosia psilostachya/4.tiff +test/6-seed/Training/14 Ambrosia psilostachya/5.tiff +test/6-seed/Training/14 Ambrosia psilostachya/6.tiff +test/6-seed/Training/14 Ambrosia psilostachya/7.tiff +test/6-seed/Training/14 Ambrosia psilostachya/8.tiff +test/6-seed/Training/14 Ambrosia psilostachya/9.tiff +test/6-seed/Training/14 Ambrosia psilostachya/10.tiff +test/6-seed/Training/14 Ambrosia psilostachya/11.tiff +test/6-seed/Training/14 Ambrosia psilostachya/12.tiff +test/6-seed/Training/14 Ambrosia psilostachya/13.tiff +test/6-seed/Training/14 Ambrosia psilostachya/14.tiff +test/6-seed/Training/14 Ambrosia psilostachya/15.tiff +test/6-seed/Training/14 Ambrosia psilostachya/16.tiff +test/6-seed/Training/14 Ambrosia psilostachya/17.tiff +test/6-seed/Training/2 Cirsium arvense/1.json +test/6-seed/Training/2 Cirsium arvense/1.tiff +test/6-seed/Training/2 Cirsium arvense/2.json +test/6-seed/Training/2 Cirsium arvense/2.tiff +test/6-seed/Training/2 Cirsium arvense/3.json +test/6-seed/Training/2 Cirsium arvense/3.tiff +test/6-seed/Training/2 Cirsium arvense/4.json +test/6-seed/Training/2 Cirsium arvense/4.tiff +test/6-seed/Training/2 Cirsium arvense/5.json +test/6-seed/Training/2 Cirsium arvense/5.tiff +test/6-seed/Training/2 Cirsium arvense/6.json +test/6-seed/Training/2 Cirsium arvense/6.tiff +test/6-seed/Training/2 Cirsium arvense/7.json +test/6-seed/Training/2 Cirsium arvense/7.tiff +test/6-seed/Training/2 Cirsium arvense/8.json +test/6-seed/Training/2 Cirsium arvense/8.tiff +test/6-seed/Training/2 Cirsium arvense/9.json +test/6-seed/Training/2 Cirsium arvense/9.tiff +test/6-seed/Training/2 Cirsium arvense/10.json +test/6-seed/Training/2 Cirsium arvense/10.tiff +test/6-seed/Training/2 Cirsium arvense/11.json +test/6-seed/Training/2 Cirsium arvense/11.tiff +test/6-seed/Training/2 Cirsium arvense/12.json +test/6-seed/Training/2 Cirsium arvense/12.tiff +test/6-seed/Training/2 Cirsium arvense/13.json +test/6-seed/Training/2 Cirsium arvense/13.tiff +test/6-seed/Training/2 Cirsium arvense/14.json +test/6-seed/Training/2 Cirsium arvense/14.tiff +test/6-seed/Training/2 Cirsium arvense/15.json +test/6-seed/Training/2 Cirsium arvense/15.tiff +test/6-seed/Training/2 Cirsium arvense/16.json +test/6-seed/Training/2 Cirsium arvense/16.tiff +test/6-seed/Training/2 Cirsium arvense/17.json +test/6-seed/Training/2 Cirsium arvense/17.tiff +test/6-seed/Training/2 Cirsium arvense/index.json +test/6-seed/Training/3 Cirsium vulgare/1.tiff +test/6-seed/Training/3 Cirsium vulgare/2.tiff +test/6-seed/Training/3 Cirsium vulgare/3.tiff +test/6-seed/Training/3 Cirsium vulgare/4.tiff +test/6-seed/Training/3 Cirsium vulgare/5.tiff +test/6-seed/Training/3 Cirsium vulgare/6.tiff +test/6-seed/Training/3 Cirsium vulgare/7.tiff +test/6-seed/Training/3 Cirsium vulgare/8.tiff +test/6-seed/Training/3 Cirsium vulgare/9.tiff +test/6-seed/Training/3 Cirsium vulgare/10.tiff +test/6-seed/Training/3 Cirsium vulgare/11.tiff +test/6-seed/Training/3 Cirsium vulgare/12.tiff +test/6-seed/Training/3 Cirsium vulgare/13.tiff +test/6-seed/Training/3 Cirsium vulgare/14.tiff +test/6-seed/Training/3 Cirsium vulgare/15.tiff +test/6-seed/Training/3 Cirsium vulgare/16.tiff +test/6-seed/Training/3 Cirsium vulgare/17.tiff +test/6-seed/Training/4 Carduus nutans/1.tiff +test/6-seed/Training/4 Carduus nutans/2.tiff +test/6-seed/Training/4 Carduus nutans/3.tiff +test/6-seed/Training/4 Carduus nutans/4.tiff +test/6-seed/Training/4 Carduus nutans/5.tiff +test/6-seed/Training/4 Carduus nutans/6.tiff +test/6-seed/Training/4 Carduus nutans/7.tiff +test/6-seed/Training/4 Carduus nutans/8.tiff +test/6-seed/Training/4 Carduus nutans/9.tiff +test/6-seed/Training/4 Carduus nutans/10.tiff +test/6-seed/Training/4 Carduus nutans/11.tiff +test/6-seed/Training/4 Carduus nutans/12.tiff +test/6-seed/Training/4 Carduus nutans/13.tiff +test/6-seed/Training/4 Carduus nutans/14.tiff +test/6-seed/Training/4 Carduus nutans/15.tiff +test/6-seed/Training/4 Carduus nutans/16.tiff +test/6-seed/Training/4 Carduus nutans/17.tiff +test/6-seed/Training/5 Bromus secalinus/601.tiff +test/6-seed/Training/5 Bromus secalinus/602.tiff +test/6-seed/Training/5 Bromus secalinus/603.tiff +test/6-seed/Training/5 Bromus secalinus/604.tiff +test/6-seed/Training/5 Bromus secalinus/605.tiff +test/6-seed/Training/5 Bromus secalinus/606.tiff +test/6-seed/Training/5 Bromus secalinus/607.tiff +test/6-seed/Training/5 Bromus secalinus/608.tiff +test/6-seed/Training/5 Bromus secalinus/609.tiff +test/6-seed/Training/5 Bromus secalinus/610.tiff +test/6-seed/Training/5 Bromus secalinus/612.tiff +test/6-seed/Training/5 Bromus secalinus/613.tiff +test/6-seed/Training/5 Bromus secalinus/614.tiff +test/6-seed/Training/5 Bromus secalinus/616.tiff +test/6-seed/Training/5 Bromus secalinus/617.tiff +test/6-seed/Training/5 Bromus secalinus/618.tiff +test/6-seed/Training/5 Bromus secalinus/619.tiff +test/6-seed/Training/5 Bromus secalinus/621.tiff +test/6-seed/Training/5 Bromus secalinus/622.tiff +test/6-seed/Training/5 Bromus secalinus/623.tiff +test/6-seed/Training/5 Bromus secalinus/624.tiff +test/6-seed/Training/5 Bromus secalinus/625.tiff +test/6-seed/Training/5 Bromus secalinus/627.tiff +test/6-seed/Training/5 Bromus secalinus/629.tiff +test/6-seed/Training/5 Bromus secalinus/Bromus secalinus 2.tiff +test/6-seed/Training/5 Bromus secalinus/Bromus secalinus.tiff +test/6-seed/Training/6 Bromus hordeaceus/002.tiff +test/6-seed/Training/6 Bromus hordeaceus/003.tiff +test/6-seed/Training/6 Bromus hordeaceus/004.tiff +test/6-seed/Training/6 Bromus hordeaceus/005.tiff +test/6-seed/Training/6 Bromus hordeaceus/006.tiff +test/6-seed/Training/6 Bromus hordeaceus/007.tiff +test/6-seed/Training/6 Bromus hordeaceus/008.tiff +test/6-seed/Training/6 Bromus hordeaceus/009.tiff +test/6-seed/Training/6 Bromus hordeaceus/010.tiff +test/6-seed/Training/6 Bromus hordeaceus/012.tiff +test/6-seed/Training/6 Bromus hordeaceus/013.tiff +test/6-seed/Training/6 Bromus hordeaceus/014.tiff +test/6-seed/Training/6 Bromus hordeaceus/015.tiff +test/6-seed/Training/6 Bromus hordeaceus/016.tiff +test/6-seed/Training/6 Bromus hordeaceus/017.tiff +test/6-seed/Training/6 Bromus hordeaceus/018.tiff +test/6-seed/Training/6 Bromus hordeaceus/021.tiff +test/6-seed/Training/6 Bromus hordeaceus/022.tiff +test/6-seed/Training/6 Bromus hordeaceus/023.tiff +test/6-seed/Training/6 Bromus hordeaceus/024.tiff +test/6-seed/Training/6 Bromus hordeaceus/025.tiff +test/6-seed/Training/6 Bromus hordeaceus/026.tiff +test/6-seed/Training/6 Bromus hordeaceus/027.tiff +test/6-seed/Training/6 Bromus hordeaceus/028.tiff +test/6-seed/Training/6 Bromus hordeaceus/029.tiff +test/6-seed/Training/6 Bromus hordeaceus/030.tiff +test/6-seed/Training/6 Bromus hordeaceus/031.tiff +test/6-seed/Training/6 Bromus hordeaceus/032.tiff +test/6-seed/Training/6 Bromus hordeaceus/033.tiff +test/6-seed/Training/6 Bromus hordeaceus/034.tiff +test/6-seed/Training/6 Bromus hordeaceus/035.tiff +test/6-seed/Training/6 Bromus hordeaceus/036.tiff +test/6-seed/Training/6 Bromus hordeaceus/Bromus hordeaceus (2).tiff +test/6-seed/Training/6 Bromus hordeaceus/Bromus hordeaceus.tiff +test/6-seed/Training/7 Bromus japonicus/602.tiff +test/6-seed/Training/7 Bromus japonicus/603.tiff +test/6-seed/Training/7 Bromus japonicus/604.tiff +test/6-seed/Training/7 Bromus japonicus/605.tiff +test/6-seed/Training/7 Bromus japonicus/606.tiff +test/6-seed/Training/7 Bromus japonicus/607.tiff +test/6-seed/Training/7 Bromus japonicus/608.tiff +test/6-seed/Training/7 Bromus japonicus/609.tiff +test/6-seed/Training/7 Bromus japonicus/610.tiff +test/6-seed/Training/7 Bromus japonicus/611.tiff +test/6-seed/Training/7 Bromus japonicus/612.tiff +test/6-seed/Training/7 Bromus japonicus/613.tiff +test/6-seed/Training/7 Bromus japonicus/614.tiff +test/6-seed/Training/7 Bromus japonicus/615.tiff +test/6-seed/Training/7 Bromus japonicus/616.tiff +test/6-seed/Training/7 Bromus japonicus/617.tiff +test/6-seed/Training/7 Bromus japonicus/618.tiff +test/6-seed/Training/7 Bromus japonicus/621.tiff +test/6-seed/Training/7 Bromus japonicus/622.tiff +test/6-seed/Training/7 Bromus japonicus/623.tiff +test/6-seed/Training/7 Bromus japonicus/624.tiff +test/6-seed/Training/7 Bromus japonicus/625.tiff +test/6-seed/Training/7 Bromus japonicus/627.tiff +test/6-seed/Training/7 Bromus japonicus/628.tiff +test/6-seed/Training/7 Bromus japonicus/629.tiff +test/6-seed/Training/7 Bromus japonicus/632.tiff +test/6-seed/Training/7 Bromus japonicus/633.tiff +test/6-seed/Training/7 Bromus japonicus/634.tiff +test/6-seed/Training/7 Bromus japonicus/635.tiff +test/6-seed/Training/7 Bromus japonicus/636.tiff +test/6-seed/Training/7 Bromus japonicus/637.tiff +test/6-seed/Training/7 Bromus japonicus/638.tiff +test/6-seed/Training/7 Bromus japonicus/639.tiff +test/6-seed/Training/7 Bromus japonicus/Bromus japonicus (2).tiff +test/6-seed/Training/7 Bromus japonicus/Bromus japonicus.tiff +test/6-seed/Training/8 Lolium temulentum/2.1.tiff +test/6-seed/Training/8 Lolium temulentum/2.2.tiff +test/6-seed/Training/8 Lolium temulentum/3.1.tiff +test/6-seed/Training/8 Lolium temulentum/3.2.tiff +test/6-seed/Training/8 Lolium temulentum/4.1.tiff +test/6-seed/Training/8 Lolium temulentum/4.2.tiff +test/6-seed/Training/8 Lolium temulentum/5.1.tiff +test/6-seed/Training/8 Lolium temulentum/5.2.tiff +test/6-seed/Training/8 Lolium temulentum/6.1.tiff +test/6-seed/Training/8 Lolium temulentum/6.2.tiff +test/6-seed/Training/8 Lolium temulentum/7.1.tiff +test/6-seed/Training/8 Lolium temulentum/7.2.tiff +test/6-seed/Training/8 Lolium temulentum/8.1.tiff +test/6-seed/Training/8 Lolium temulentum/8.tiff +test/6-seed/Training/8 Lolium temulentum/9.1.tiff +test/6-seed/Training/8 Lolium temulentum/9.2.tiff +test/6-seed/Training/8 Lolium temulentum/10.1.tiff +test/6-seed/Training/8 Lolium temulentum/10.2.tiff +test/6-seed/Training/8 Lolium temulentum/11.1.tiff +test/6-seed/Training/8 Lolium temulentum/11.2.tiff +test/6-seed/Training/8 Lolium temulentum/011.tiff +test/6-seed/Training/8 Lolium temulentum/12.1.tiff +test/6-seed/Training/8 Lolium temulentum/12.2.tiff +test/6-seed/Training/8 Lolium temulentum/012.tiff +test/6-seed/Training/8 Lolium temulentum/13.1.tiff +test/6-seed/Training/8 Lolium temulentum/13.2.tiff +test/6-seed/Training/8 Lolium temulentum/013.tiff +test/6-seed/Training/8 Lolium temulentum/14.1.tiff +test/6-seed/Training/8 Lolium temulentum/14.2.tiff +test/6-seed/Training/8 Lolium temulentum/014.tiff +test/6-seed/Training/8 Lolium temulentum/15.1.tiff +test/6-seed/Training/8 Lolium temulentum/15.2.tiff +test/6-seed/Training/8 Lolium temulentum/015.tiff +test/6-seed/Training/8 Lolium temulentum/16.1.tiff +test/6-seed/Training/8 Lolium temulentum/16.2.tiff +test/6-seed/Training/8 Lolium temulentum/016.tiff +test/6-seed/Training/8 Lolium temulentum/17.1.tiff +test/6-seed/Training/8 Lolium temulentum/17.2.tiff +test/6-seed/Training/8 Lolium temulentum/017.tiff +test/6-seed/Training/8 Lolium temulentum/021.tiff +test/6-seed/Training/8 Lolium temulentum/022.tiff +test/6-seed/Training/8 Lolium temulentum/023.tiff +test/6-seed/Training/8 Lolium temulentum/024.tiff +test/6-seed/Training/8 Lolium temulentum/025.tiff +test/6-seed/Training/8 Lolium temulentum/026.tiff +test/6-seed/Training/8 Lolium temulentum/027.tiff +test/6-seed/Training/8 Lolium temulentum/028.tiff +test/6-seed/Training/8 Lolium temulentum/029.tiff +test/6-seed/Training/8 Lolium temulentum/030.tiff +test/6-seed/Training/8 Lolium temulentum/031.tiff +test/6-seed/Training/8 Lolium temulentum/032.tiff +test/6-seed/Training/8 Lolium temulentum/033.tiff +test/6-seed/Training/8 Lolium temulentum/034.tiff +test/6-seed/Training/8 Lolium temulentum/035.tiff +test/6-seed/Training/8 Lolium temulentum/036.tiff +test/6-seed/Training/8 Lolium temulentum/037.tiff +test/6-seed/Training/8 Lolium temulentum/Lolium temulentum.1.tiff +test/6-seed/Training/8 Lolium temulentum/Lolium temulentum.2.tiff +test/6-seed/Training/9 Solanum carolinense/1.tiff +test/6-seed/Training/9 Solanum carolinense/2.tiff +test/6-seed/Training/9 Solanum carolinense/3.tiff +test/6-seed/Training/9 Solanum carolinense/4.tiff +test/6-seed/Training/9 Solanum carolinense/5.tiff +test/6-seed/Training/9 Solanum carolinense/6.tiff +test/6-seed/Training/9 Solanum carolinense/7.tiff +test/6-seed/Training/9 Solanum carolinense/8.tiff +test/6-seed/Training/9 Solanum carolinense/9.tiff +test/6-seed/Training/9 Solanum carolinense/10.tiff +test/6-seed/Training/9 Solanum carolinense/11.tiff +test/6-seed/Training/9 Solanum carolinense/12.tiff +test/6-seed/Training/9 Solanum carolinense/13.tiff +test/6-seed/Training/9 Solanum carolinense/14.tiff +test/6-seed/Training/9 Solanum carolinense/15.tiff +test/6-seed/Training/9 Solanum carolinense/16.tiff +test/6-seed/Training/9 Solanum carolinense/17.tiff diff --git a/child-picture-template.json b/child-picture-template.json new file mode 100644 index 00000000..44726ce6 --- /dev/null +++ b/child-picture-template.json @@ -0,0 +1,15 @@ +{ +"childData":{ + "children":[ + { + "name":"", + "source": "", + "height": "", + "width": "", + "bbox":"" + } + ], + "count":"" + } + +} diff --git a/db/queries/queries.py b/db/queries/queries.py new file mode 100644 index 00000000..38e6de9f --- /dev/null +++ b/db/queries/queries.py @@ -0,0 +1,41 @@ +import psycopg +import os + +NACHET_DB_URL = os.getenv("NACHET_DB_URL") + +NACHET_SCHEMA = os.getenv("NACHET_SCHEMA") + +def createConnection(): + return psycopg.connect(NACHET_DB_URL) + +def createCursor(conn): + return conn.cursor() + +def createSearchPath(conn,cur): + cur.execute(f"""SET search_path TO "{NACHET_SCHEMA}";""") + conn.commit() + +def closeConnection(conn): + conn.close() + +def closeCursor(cur): + cur.close() + +def endQuery(conn,cursor): + conn.commit() + closeCursor(cursor) + closeConnection(conn) + +def queryDB(conn,cur,query): + cur.execute(query) + conn.commit() + return cur + +def queryParameterizedDB(conn,cur,query, params): + cur.execute(query, params) + conn.commit() + return cur + +def printResults(cur): + for record in cur: + print(record) \ No newline at end of file diff --git a/db/setup/db-creation.py b/db/setup/db-creation.py new file mode 100644 index 00000000..83b7cdf4 --- /dev/null +++ b/db/setup/db-creation.py @@ -0,0 +1,70 @@ +import db.queries.queries as queries + +# Connect to your PostgreSQL database with the DB URL +conn = queries.createConnection() +# Create a cursor object +cur = queries.createCursor(conn) + +# # Create Schema +# cur.execute("""CREATE SCHEMA "nachetdb_0.0.1";""") + +# # Create Search Path +# cur.execute("""SET search_path TO "nachetdb_0.0.1";""") + +# #Create Users table +# cur.execute(""" +# CREATE TABLE \"%s\".users ( +# id uuid PRIMARY KEY, +# email VARCHAR(255) +# ) +# """ % ("nachetdb_0.0.1")) + +# # Create Indexes table +# cur.execute(""" +# CREATE TABLE \"%s\".indexes ( +# id uuid PRIMARY KEY, +# index JSON, +# ownerID uuid REFERENCES "nachetdb_0.0.1".users(id) +# ) +# """ % ("nachetdb_0.0.1")) + +# # Create Pictures table +# cur.execute(""" +# CREATE TABLE \"%s\".pictures ( +# id uuid PRIMARY KEY, +# picture JSON, +# indexID uuid REFERENCES "nachetdb_0.0.1".indexes(id) +# ) +# """ % ("nachetdb_0.0.1")) + +# Create seed DB +cur.execute(""" + CREATE TABLE \"%s\".seeds ( + id uuid PRIMARY KEY, + info JSON, + name VARCHAR(255) + ) +""" % ("nachetdb_0.0.1")) + +# # check if the schema exists +cur.execute(""" + SELECT EXISTS ( + SELECT * + FROM information_schema.schemata + WHERE schema_name = 'nachetdb_0.0.1' + ) +""") + +# # check if the search path exists +# cur.execute("Show search_path") + + +## Commit the transaction +conn.commit() + +print(cur.fetchone()[0]) + +# Close the cursor and connection +cur.close() +conn.close() +print("done") \ No newline at end of file diff --git a/db/setup/db-mock-seeds-population.py b/db/setup/db-mock-seeds-population.py new file mode 100644 index 00000000..ad481c62 --- /dev/null +++ b/db/setup/db-mock-seeds-population.py @@ -0,0 +1,66 @@ +import uuid +import db.queries.queries as queries + + +# Connect to your PostgreSQL database with the DB URL +conn = queries.createConnection() +# Create a cursor object +cur = queries.createCursor(conn) + +brassicaNapus = (str(uuid.uuid4()), "Brassica napus") +brassicaJunsea = (str(uuid.uuid4()), "Brassica juncea") +cirsiumArvense = (str(uuid.uuid4()), "Cirsium arvense") +cirsiumVulgare = (str(uuid.uuid4()), "Cirsium vulgare") +carduusNutans = (str(uuid.uuid4()), "Carduus nutans") +bromusSecalinus = (str(uuid.uuid4()), "Bromus secalinus") +bromusHordeaceus = (str(uuid.uuid4()), "Bromus hordeaceus") +bromusJaponicus = (str(uuid.uuid4()), "Bromus japonicus") +loliumTemulentum = (str(uuid.uuid4()), "Lolium temulentum") +solanumCarolinense = (str(uuid.uuid4()), "Solanum carolinense") +solanumNigrum = (str(uuid.uuid4()), "Solanum nigrum") +solanumRostratum = (str(uuid.uuid4()), "Solanum rostratum") +ambrosiaArtemisiifolia = (str(uuid.uuid4()), "Ambrosia artemisiifolia") +ambrosiaTrifida = (str(uuid.uuid4()), "Ambrosia trifida") +Ambrosiapsilostachya = (str(uuid.uuid4()), "Ambrosia psilostachya") + +queries.createSearchPath(conn, cur) + +# Query to insert a seed +query = "INSERT INTO seeds (id,name) VALUES (%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s),(%s,%s)" +data = ( + brassicaNapus[0], + brassicaNapus[1], + brassicaJunsea[0], + brassicaJunsea[1], + cirsiumArvense[0], + cirsiumArvense[1], + cirsiumVulgare[0], + cirsiumVulgare[1], + carduusNutans[0], + carduusNutans[1], + bromusSecalinus[0], + bromusSecalinus[1], + bromusHordeaceus[0], + bromusHordeaceus[1], + bromusJaponicus[0], + bromusJaponicus[1], + loliumTemulentum[0], + loliumTemulentum[1], + solanumCarolinense[0], + solanumCarolinense[1], + solanumNigrum[0], + solanumNigrum[1], + solanumRostratum[0], + solanumRostratum[1], + ambrosiaArtemisiifolia[0], + ambrosiaArtemisiifolia[1], + ambrosiaTrifida[0], + ambrosiaTrifida[1], + Ambrosiapsilostachya[0], + Ambrosiapsilostachya[1], +) + +# queries.queryParameterizedDB(conn,cur,query,data) + +queries.queryDB(conn, cur, "select id,name from seeds") +queries.printResults(cur) diff --git a/db/setup/deployment-mass-import.py b/db/setup/deployment-mass-import.py new file mode 100644 index 00000000..1647375d --- /dev/null +++ b/db/setup/deployment-mass-import.py @@ -0,0 +1,528 @@ +from datetime import date +import uuid +import json +import os +import psycopg +from PIL import Image +import db.queries.queries as queries +import validator as validator + +# File: nachetDb-1.0.0/mass-import.py +# This script is used to import the missing metadata from an Azure container to the database + + +# Constants +container_URL = "" +seedID = "" +path = "" + + +def jsonDeletion(picturefolder): + """ + Function to delete all the .json files in the specified folder in case of a bad importation. + + Parameters: + - picturefolder (str): The path to the folder. + """ + # Get a list of files in the directory + files = [ + f + for f in os.listdir(picturefolder) + if os.path.isfile(os.path.join(picturefolder, f)) + ] + # Iterate over the list of filepaths & remove each file. + for file in files: + try: + os.remove(file) + except OSError as e: + print("Error: %s : %s" % (file, e.strerror)) + + +def manualMetaDataImport(picturefolder: str): + """ + Template function to do the importation process of the metadata from the Azure container to the database. + The user is prompted to input the client email, the zoom level and the number of seeds for the index. + The container needs to be downloaded locally before running this function. + + Parameters: + - picturefolder (str): Relative path to the folder we want to import. + """ + + # Manually define the picture folder + # picturefolder = "" # manually inputted before each import sequence + + # Input the client email to identify the user or register him if needed + # clientEmail = input("clientEmail: ") + clientEmail = "test@dev" + userID = getUserID(clientEmail) + + # #build index + nbPic = buildIndex(picturefolder, userID) + + # upload index to database + indexID = uploadIndexDB(f"{picturefolder}/index.json", userID=userID) + # indexID=1 + print("indexID : " + str(indexID)) + + # for each picture in field + # zoomlevel = input("Zoom level for this index: ") + zoomlevel = 0 + seedNumber = input("Number of seed for this index: ") + + # Get a list of files in the directory + files = [ + f + for f in os.listdir(picturefolder) + if os.path.isfile(os.path.join(picturefolder, f)) + ] + i = 0 + # Loop through each file in the folder + for filename in files: + if filename.endswith(".tiff") or filename.endswith(".tif"): + buildPicture( + picturefolder, seedNumber, zoomlevel, indexID, filename, userID + ) + picPath = f'{picturefolder}/{filename.removesuffix(".tiff")}.json' + # upload picture to database + uploadPictureDB(picPath, userID, indexID) + i = i + 1 + + if i != nbPic: + print("Error: number of pictures processed does not match the index") + print("Number of picture processed: " + str(i)) + print("Number of picture in index: " + str(nbPic)) + else: + print("importation of " + picturefolder + "/ complete") + print("Number of picture processed: " + str(i)) + + +# Function to retrieve the userID from the database based on the email +# Returns the userID if the email is already registered, else it registers the email and returns the userID +def getUserID(email: str): + """ + Function to retrieve the userID from the database based on the email. + If the email is not already registered, it registers the email and returns the userID. + + Parameters: + - email (str): The email of the user. + + Returns: + - The userID of the user. + """ + # Connect to your PostgreSQL database + conn = psycopg.connect(os.getenv("NACHET_DB_URL")) + # Create a cursor object + cur = conn.cursor() + queries.createSearchPath(conn, cur) + # Check if the email is already registered + cur.execute(f"SELECT Exists(SELECT 1 FROM users WHERE email='{email}')") + if cur.fetchone()[0]: # Already registered + cur.execute(f"SELECT id FROM users WHERE email='{email}'") + res = cur.fetchone()[0] + else: # Not registered -> Creates new user + cur.execute(f"INSERT INTO users (id,email) VALUES (,'{email}')") + cur.execute(f"SELECT id FROM users WHERE email='{email}'") + res = cur.fetchone()[0] + cur.close() + conn.close() + return res + + +# Function to build the index metadata file +def buildIndex(output: str, clientID): + """ + This function builds the index needed to represent each folder (with pictures in it) of a container. + It prompts the user to input the expertise of the client and the number of images in the folder. + + Parameters: + - output (str): The path to the folder. + - clientID (str): The UUID of the client. + + Returns: + - The number of pictures in the folder that are supposed to be processed. + """ + + # clientEmail = input("clientEmail: ") + clientEmail = "test@email" + + # clientExpertise = input("Expertise: ") + clientExpertise = "Developer" + + # Create the index metadata (sub part) normally filled by the user + clientData = validator.ClientData(clientEmail=clientEmail, clientExpertise=clientExpertise) + print(output) + nb = len([f for f in os.listdir(output) if os.path.isfile(os.path.join(output, f))]) + imageData = validator.ImageDataindex(numberOfImages=nb) + + # ATM===> I dont have access to the seedID db + # seedID = input("SeedID: ") + + # family = input("Family: ") + # genus = input("Genus: ") + # species = input("Species: ") + family = "" + genus = "" + species = "" + seedData = validator.SeedData( + seedID=seedID, seedFamily=family, seedGenus=genus, seedSpecies=species + ) + + # Create the Index object + index = validator.Index(clientData=clientData, imageData=imageData, seedData=seedData) + + print("File created, name: " + output + "/index.json") + indexJson = index.dict() + + # Creating index metadata collected from the system + sysData = IndexProcessing(openIndexSystem()) + + # Append the system data to the index + indexJson.update(sysData) + + # Create the index file + createJsonIndex(index=indexJson, name="index", output=output) + return nb + + +def buildPicture(output: str, number: int, zoom, indexID: int, name: str, userID: str): + """ + This function builds the picture metadata file (.json) for each picture in the folder. + + Parameters: + - output (str): The path to the folder. + - number (int): The number of seeds in the picture. + - zoom (float): The zoom level of the picture. + - indexID (uuid): The ID of the index. + - name (str): The name of the picture. + - userID (str): The UUID of the user. + + Returns: + None + """ + + desc = "This image was uploaded before the creation of the database and was apart of the first importation batch." + nb = number + userData = validator.UserData(description=desc, numberOfSeeds=nb, zoom=zoom) + + # Create the Picture object with the user data + pic = validator.Picture(userData=userData) + picJson = pic.dict() + print("File created, name: " + name) + picturePath = f"{output}/{name}" + + # Creating picture metadata collected from the system + picData = PictureProcessing(openPictureSystem(), userID, indexID, picturePath) + picJson.update(picData) + createJsonPicture(pic=picJson, name=name, output=output) + + +def IndexProcessing(jsonData: str): + """ + Function to create the system index metadata. + + Parameters: + - jsonData (str): The JSON data of the index. + + Returns: + - The system index object populated with the metadata. + """ + today = date.today() + editedBy = "Francois Werbrouck" # not permanent, will be changed once the mass import is over + editDate = date.today() + change = "" + access = "" + privacy = False + return IndexSystemPopulating( + jsonData, today, editedBy, editDate, change, access, privacy + ) + + +# Function to create the system picture metadata +# Returns the system picture object populated with the metadata +def PictureProcessing(jsonData: str, userID: str, indexID: int, picturePath: str): + """ + Function to create the system picture metadata. + + Parameters: + - jsonData (str): The JSON data of the picture. + - userID (str): The UUID of the user. + - indexID (str): The ID of the index. + - picturePath (str): The path to the picture. + + Returns: + - The system picture object populated with the metadata. + """ + today = date.today() + # userID + # indexID + info = getImageProperties(picturePath) + parent = "" + source = container_URL + picturePath.removesuffix("test") + format = info[2] + height = info[1] + width = info[0] + resolution = "" + return PictureSystemPopulating( + jsonData, + today, + str(userID), + str(indexID), + format, + height, + width, + resolution, + source, + parent, + ) + + +# Function to populate the index metadata file provided +# Returns the index metadata object populated with the metadata +def IndexSystemPopulating( + data, date: date, editedBy, editDate: date, changes: str, access, privacy +): + """ + Function to populate the index metadata file provided. + + Parameters: + - data (str): The JSON data template of the index. + - date (date): The date of the upload + - editedBy (str): The name of the person who edited the file + - editDate (date): The date of the last edit + - changes (str): The changes made to the file + - access (str): The access log + + Returns: + - The index metadata object populated with the metadata. + """ + # print(data) + data["auditTrail"]["uploadDate"] = date.strftime("%Y-%m-%d") + data["auditTrail"]["editedBy"] = editedBy + data["auditTrail"]["editDate"] = editDate.strftime("%Y-%m-%d") + data["auditTrail"]["changeLog"] = changes + data["auditTrail"]["accessLog"] = access + data["auditTrail"]["privacyFlag"] = privacy + return data + + +# Function to populate the picture metadata file provided +# Returns the picture metadata object populated with the metadata +def PictureSystemPopulating( + data, + date: date, + userID: str, + indexID: str, + format: str, + height: int, + width: int, + resolution: str, + source: str, + parent: str, +): + """ + Function to populate the Picture metadata file provided. + + Parameters: + - data (str): The JSON data template of the Picture. + - date (date): The date of the upload + - userID (str): The UUID of the user + - indexID (str): The ID of the index + - format (str): The format of the picture + - height (int): The height of the picture + - width (int): The width of the picture + - resolution (str): The resolution of the picture + - source (str): The source of the picture + - parent (str): The parent of the picture + + Returns: + - The Picture metadata object populated with the metadata. + """ + data["info"]["userID"] = userID + data["info"]["uploadDate"] = date.strftime("%Y-%m-%d") + data["info"]["indexID"] = indexID + data["imageData"]["height"] = height + data["imageData"]["width"] = width + data["imageData"]["format"] = format + data["imageData"]["source"] = source + data["imageData"]["parent"] = parent + data["imageData"]["resolution"] = resolution + + data["qualityCheck"]["imageChecksum"] = "" + data["qualityCheck"]["uploadCheck"] = True + data["qualityCheck"]["validData"] = True + data["qualityCheck"]["errorType"] = "" + data["qualityCheck"]["dataQualityScore"] = 1.0 + + return data + + +def getImageProperties(path: str): + """ + Function to retrieve an image's properties. + + Parameters: + - path (str): The path to the image. + + Returns: + - The image's width, height and format as a tuple. + """ + with Image.open(path) as img: + width, height = img.size + img_format = img.format + return width, height, img_format + + +# Function to open the system index metadata template file +# Returns an empty system index metadata object +def openIndexSystem(): + """ + Function to open the system index metadata template file. + + Returns: + - An empty system index metadata object. + """ + with open("index-template-system.json", "r") as file: + sysData = json.load(file) + # print(sysData) + return sysData + + +# Function to open the system picture metadata template file +# Returns an empty system picture metadata object +def openPictureSystem(): + """ + Function to open the system picture metadata template file. + + Returns: + - An empty system picture metadata object. + """ + with open("picture-template-system.json", "r") as file: + sysData = json.load(file) + # print(sysData) + return sysData + + +# Create .json from Index data model +def createJsonIndex(index, name: str, output: str): + """ + Create .json from index data model to the specified output. + + Parameters: + - index (dict): The index data model. + - name (str): The name of the file. + - output (str): The path to the folder. + + Returns: + None + """ + data = validator.PIndex(**index) + filePath = f"{output}/{name}.json" + with open(filePath, "w") as json_file: + json.dump(index, json_file, indent=2) + + +# Create .json form Picture data model +def createJsonPicture(pic, name: str, output: str): + """ + Create .json from picture data model to the specified output. + + Parameters: + - pic (dict): The picture data model. + - name (str): The name of the file. + - output (str): The path to the folder. + + Returns: + None + """ + data = validator.PPicture(**pic) + extension = name.split(".")[-1] + filename = name.removesuffix("." + extension) + filePath = f"{output}/{filename}.json" + with open(filePath, "w") as json_file: + json.dump(pic, json_file, indent=2) + + +# Function to upload the index file located @path to the database +# RETURNS the indexID of the uploaded index +def uploadIndexDB(path: str, userID: str): + """ + Upload the index.json file located at the specified path to the database. + + Parameters: + - path (str): The path to the index file. + - userID (str): The ID of the user. + + Returns: + - The ID of the index. + """ + + # Connect to your PostgreSQL database + conn = psycopg.connect(os.getenv("NACHET_DB_URL")) + + # Create a cursor object + cur = conn.cursor() + + queries.createSearchPath(conn, cur) + + # Open the file + with open(path, "r") as file: + data = file.read() + + # Build indexID + indexID = uuid.uuid4() + + # Execute the INSERT statement + # print(userID) + cur.execute( + "INSERT INTO indexes (id,index, ownerID) VALUES (%s,%s, %s)", + (indexID, data, userID), + ) + conn.commit() + + # Retrieve the index id + cur.execute("SELECT id FROM indexes ORDER BY id DESC LIMIT 1") + + cur.close() + conn.close() + return indexID + + +def uploadPictureDB(path: str, userID: str, indexID: str): + """ + Uploads the picture file located at the specified path to the database. + + Parameters: + - path (str): The path to the picture file. + - userID (str): The ID of the user. + - indexID (str): The ID of the index. + + Returns: + None + """ + # Connect to your PostgreSQL howatabase + conn = psycopg.connect(os.getenv("NACHET_DB_URL")) + + # Create a cursor object + cur = conn.cursor() + + queries.createSearchPath(conn, cur) + # Open the file + with open(path, "r") as file: + data = file.read() + + # Generate pictureID + pictureID = uuid.uuid4() + + # Execute the INSERT statement + cur.execute( + "INSERT INTO pictures (id,picture, indexID) VALUES (%s,%s, %s)", + (pictureID, data, indexID), + ) + conn.commit() + + cur.close() + conn.close() + + +if __name__ == "__main__": + manualMetaDataImport(path) diff --git a/db/setup/storage-download.py b/db/setup/storage-download.py new file mode 100644 index 00000000..2ed4c374 --- /dev/null +++ b/db/setup/storage-download.py @@ -0,0 +1,52 @@ +import os +from azure.storage.blob import BlobServiceClient + + +def folderProcessing(storage_url, container_name): + """ + This function downloads all the files from a container in a storage account + to the local directory "test" + + This serves as a way to locally download the container files for processing and importing within the db + + Parameters: + - storage_url: the url of the storage account + - container_name: the name of the container + + Returns: None + """ + + # Create a blob service client + blob_service_client = BlobServiceClient.from_connection_string(conn_str=storage_url) + + # # Get the container client + container_client = blob_service_client.get_container_client(container_name) + if container_client.exists(): + print("Container exists") + else: + print("Container does not exist") + # print("===============================================") + # print(container_name) + # Specify the local directory + local_dir = "test" + + # List blobs in the container + blob_list = container_client.list_blobs() + i = 0 + # Iterate through each blob + for blob in blob_list: + # Create a blob client + blob_client = blob_service_client.get_blob_client( + container=container_name, blob=blob.name + ) + # Download the blob + local_file_path = f"{local_dir}/{blob.name}" + os.makedirs(os.path.dirname(local_file_path), exist_ok=True) + + with open(local_file_path, "wb") as file: + blob_data = blob_client.download_blob() + # blob_data = container_client.download_blob(blob=blob.name) + blob_data.readinto(file) + i = i + 1 + + print("downloaded : " + str(i) + "/" + str(len(blob_list))) diff --git a/db/validator.py b/db/validator.py new file mode 100644 index 00000000..ec8e1687 --- /dev/null +++ b/db/validator.py @@ -0,0 +1,85 @@ +from datetime import date +from pydantic import BaseModel + + +class ClientData(BaseModel): + clientEmail: str + clientExpertise: str + + +class SeedData(BaseModel): + seedID: int + seedFamily: str + seedGenus: str + seedSpecies: str + + +class ImageDataindex(BaseModel): + numberOfImages: int + + +class AuditTrail(BaseModel): + uploadDate: date + editedBy: str + editDate: date + changeLog: str + accessLog: str + privacyFlag: bool + + +class Info(BaseModel): + userID: int + uploadDate: date + indexID: int + + +class ImageData(BaseModel): + format: str + height: int + width: int + resolution: str + source: str + parent: str + + +class QualityCheck(BaseModel): + imageChecksum: str + uploadCheck: bool + validData: bool + errorType: str + dataQualityScore: float + + +class UserData(BaseModel): + description: str + numberOfSeeds: int + zoom: float + + +class Index(BaseModel): + clientData: ClientData + imageData: ImageDataindex + seedData: SeedData + + +class PIndex(BaseModel): + clientData: ClientData + imageData: ImageDataindex + seedData: SeedData + auditTrail: AuditTrail + + +class Picture(BaseModel): + userData: UserData + + +class PPicture(BaseModel): + userData: UserData + info: Info + imageData: ImageData + qualityCheck: QualityCheck + + +class ClientFeedback(BaseModel): + correctIdentification: bool + historicalComparison: str diff --git a/img/malicious-site.png b/img/malicious-site.png new file mode 100644 index 00000000..6ba56704 Binary files /dev/null and b/img/malicious-site.png differ diff --git a/index-mockData.yaml b/index-mockData.yaml new file mode 100644 index 00000000..9479d805 --- /dev/null +++ b/index-mockData.yaml @@ -0,0 +1,10 @@ +clientData: + clientEmail: francois.werbrouck@inspection.gc.ca + clientExpertise: dev +imageData: + numberOfImages: 4 +seedData: + seedID: e5b69945-377d-47e5-98d1-7f350c1fe240 + seedFamily: Poaceae + seedGenus: Triticum + seedSpecies: Aestivum \ No newline at end of file diff --git a/index-template-system.json b/index-template-system.json new file mode 100644 index 00000000..d10614c9 --- /dev/null +++ b/index-template-system.json @@ -0,0 +1,12 @@ +{ + "auditTrail": { + "ownerID":"", + "uploadDate":"", + "editedBy": "", + "editDate": "", + "changeLog": "", + "accessLog": "", + "privacyFlag": "" + } +} + \ No newline at end of file diff --git a/index-template.yaml b/index-template.yaml new file mode 100644 index 00000000..0763b935 --- /dev/null +++ b/index-template.yaml @@ -0,0 +1,12 @@ +#This is a Section filled by user +clientData: + clientEmail: + clientExpertise: +imageData: + numberOfImages: +seedData: + seedID: + seedFamily: + seedGenus: + seedSpecies: +# ------------------------------------------------------ \ No newline at end of file diff --git a/index.yaml b/index.yaml new file mode 100644 index 00000000..126ec56f --- /dev/null +++ b/index.yaml @@ -0,0 +1,21 @@ +#This is a Section filled by user +clientData: + clientEmail: email + clientExpertise: level of expertise +imageData: + numberOfImages: number of images +seedData: + seedID: seed ID (uuid) + seedFamily: seed Family + seedGenus: seed Genus + seedSpecies: seed Species +# ------------------------------------------------------ +# Section filled by system +auditTrail: + ownerID: ID of the user who uploaded the picture, facilitate search + uploadDate: date uploaded + editedBy: last userID that modified the records + editDate: date of the last modification + changeLog: log of all the changes made after the upload + accessLog: log of all the data access + privacyFlag: indicator for special privacy concerns \ No newline at end of file diff --git a/metadata-doc.md b/metadata-doc.md new file mode 100644 index 00000000..4cdfcfa6 --- /dev/null +++ b/metadata-doc.md @@ -0,0 +1,436 @@ +# Metadata importation + + +## Context + +The following documentation provide an overview of the metadata importation +process for the Nachet pipeline. We outline each steps of the workflow, +illustrating how data progresses until it becomes usable by our models. +Additionally, the upcoming process are showcased with the expected files +structure. +``` mermaid +--- +title: Nachet data upload +--- +flowchart LR; + DB[(Metadata)] + blob[(Blob)] + FE(Frontend) + BE(Backend) + file[/Folder/] + + file --> FE + FE-->BE + subgraph tdb [New Process] + test:::hidden + end + BE -- TODO --- test + file -- In progress --- test + test -- TODO --> DB & blob + +``` +As shown above, we are currently working on a process to validate the files +uploaded to the cloud. However, since Nachet is still a work in progress, here's +the current workflow for our user to upload their images for the models. + +## Workflow: Metadata upload to Azure cloud +``` mermaid +sequenceDiagram; + actor User + actor DataScientist + participant Azure Portal + participant Azure Storage Explorer + + alt New User + User->>DataScientist: Storage subscription key request + Note right of User: Email + DataScientist->>Azure Portal: Create Storage Blob + create participant Azure Storage + Azure Portal-)Azure Storage: Create() + DataScientist->>Azure Storage: Retrieve Key + DataScientist->>User: Send back subscription key + Note left of DataScientist: Email + User-)Azure Storage Explorer: SubscribeToStorage(key) + end + loop for each project Folder + User-)Azure Storage Explorer: Upload(Folder) + Azure Storage Explorer-) Azure Storage: Save(folder) + end + +``` +This workflow showcase the 2 options that a user will face to upload data. The +first one being he's a first time user. Therefore, the current process for a +first time user is to contact the AI-Lab team and subscribe to the Blob storage +with a given subscription key. +## Sequence of processing metadata for model + +``` mermaid +sequenceDiagram; + actor DataScientist + participant Azure Portal + participant Notebook + participant Azure Storage + DataScientist->>Azure Storage: Check files structure + alt Wrong structure + DataScientist->>Azure Portal: Create Alt. Azure Storage + Azure Portal-)Azure Storage: Create(Alt) + create participant Azure Storage Alt + DataScientist-)Azure Storage Alt: Copy files + DataScientist-)Azure Storage Alt: Rework structure + Edit files/folders + DataScientist-)Azure Storage Alt: Replace Storage content with Alt. Storage content + destroy Azure Storage Alt + Azure Storage Alt -) Azure Storage: Export files + end + DataScientist->>Azure Storage: Retrieve extraction code + DataScientist->>Notebook: Edit parameters of extraction code commands + + DataScientist-) Notebook: Run extraction code + Note left of Notebook: output source needs to be specified + Notebook -) Azure Storage: Processing files into metadata + DataScientist->> Azure Storage: Use files to train the model +``` +This sequence illustrate the manual task done by our team to maintain the +storage of user's data. +### Legend +| Element | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| User | Anyone wanting to upload data. | +| DataScientist | Member of the AI-Lab Team. | +| Azure Portal | Interface managing Azure's services | +| Azure Storage | Interface storing data in the cloud. | +| Azure Storage Explorer | Application with GUI offering a user friendly access to a Azure Storage without granting full acess To the Azure Services. | +| NoteBook | Azure Service enabling to run code with Azure Storage structure | +| Folder | All project folder should follow the files structure presented bellow. | + +## Development + +As explained in the context we aim to implement a folder structure for user +uploads. This approach would allow to us add a data structure validator using +[Pydantic](https://docs.pydantic.dev/latest/). By implementing a validator, we +will be able to remove all manual metadata maintenance. Once the validation +process is complete, the upload process will come into play, enabling the +distribution of the files between the BLOB storage and a PostgreSQL database. + + We are currently working on such process, which will be added to the backend + part of nachet once it is finished. + +``` mermaid +--- +title: Nachet folder upload +--- +flowchart LR; + DB[(Metadata)] + blob[(Blob)] + FE(Frontend) + BE(Backend) + file[/Folder/] + classDef foo stroke:#f00 + + file --> FE + FE-->BE + subgraph dbProcess [New Process] + test:::hidden + end + BE -- TODO --- test + file -- In progress --- test + test -- TODO --> DB & blob + + linkStyle 3,4,5 stroke:#f00,stroke-width:4px,color:red; + style dbProcess stroke:#f00,stroke-width:2px +``` +*Note that the bottom process wont be present on the deployed versions of +Nachet* +## New Process + +``` mermaid +sequenceDiagram; + participant System + participant Folder Controller + Box Pydantic Validation + participant Folder Structure Template + participant Yaml file template + end + System -) Folder Controller: Send(User data) + Activate Folder Controller + note left of Folder Controller: Validation process + alt User first upload + Folder Controller ->> Folder Structure Template: Check Project structure + end + Folder Controller ->>Folder Structure Template: Check Session structure + Folder Controller ->> Yaml file template: Check index structure + Folder Controller ->> Yaml file template: Check picture metadata structure + break Error raised + Folder Controller -) System: Reply(Error) + end + deactivate Folder Controller + Folder Controller -) Folder Controller: Transform User Yaml file into Json + Activate Folder Controller + note left of Folder Controller: Upload process + Folder Controller -) Json file template: Copy system file structure + Folder Controller -) Folder Controller: Append metadata files with system structure + Folder Controller -) Folder Controller: Fill system metadata + alt User first upload + create participant Azure Blob Storage + Folder Controller -) Azure Blob Storage: Create + end + loop each picture in session + Folder Controller -) Azure Blob Storage: upload(picture) + Folder Controller ->> Folder Controller: add info to picture metadata + end + Folder Controller -) Database: Upload(Metadata) + deactivate Folder Controller + Folder Controller ->> System: Reply(Upload successfull) + + +``` +This sequence encapsulate the expected tasks of the new feature. +### Queries +To communicate with the database and perform the request, we will need to build +a structure representing the schema. + +```mermaid + classDiagram + class User { + <> uuid id + string email + User(email) User + getUser(id) User + isUser(email) bool + registerUser() uuid + update() + getAllIndexes(id) List~Index~ + getAllPictures(id) List~Pictures~ + } + + class Index { + <> uuid id + json index + <> uuid ownerID + getIndex(id) Index + update() + getSeed() Seed + getNbPicture int + getAllPictures(id) List~Pictures~ + } + + class Picture { + <> uuid id + json picture + <> uuid indexID + <> uuid parentID + getPicture(id) + update() + getParent(id) + getUrlSource() string + } + class PictureSeed { + json pictureSeed + getSeed() Seed + getNbSeeds() int + getZoom() float + getUrlSas() string + + } + class Seed{ + <> uuid id + string name + getAllPictures() List~Pictures~ + getAllIndexes() List~Index~ + } + + class Search{ + uuid userID + uuid indexID + uuid pictureID + uuid seedID + float zoom + nbSeed int + date startDate + date endDate + } + Picture <|-- PictureSeed +``` +### Requests (Backend) + +Nachet backend will need the following requests to be able to handle the new +process. + +*Note the name of the requests are subject to change and are currently meant to +be explicit about the purpose of the call* + +#### User requests +| Name | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| isUserRegister | Is this user uuid stored in the database | +| getUserID | Retrieve the uuid of the current user | +| userRegister | This will serve as creating an instance of the user in the DB. I assume this will also be used as a way to create the containers if the user is an expert and has the responsability to upload a data set for testing the models| + +#### Upload requests + +| Name | Description | +| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| ValidateDataSet | Scans the folder uploaded by the user and checks if the standard structure is respected. | +| ValidateIndexes | Check if there is an index file for each sub folders with pictures, and if all the keys have a value associated to them (This does not verify the value)| +| ValidateIndexContent | This validates that a single index has all his fields correctly filled out (input type check, input is valid, seed info is ok, ...) | +| ValidateFileCount | This scans each subfolders and verify that the file count correspond to the expected amount of file, based on the number of images in the index metadata. | +|**CreateNewSeed** | This request will depend on either we receive a populated DB from our partners. If not, if the see submitted by is a new one, we will have to create an instance of it in the DB. | +| ValidatePictureTandem | This validates that each picture have their corresponding YAML counterpart.
*(If the number of seeds and zoom field are not removed from picture.yaml)* | +| ValidatePictureContent | This will not be a request related to the DB or metadata, but it will be necessary to check if the picture uploaded is related to Nachet's content and it's properties are ok (size, format, etc.) +| MaliciousPictureCheck|This will not be a request related to the DB or metadata, but it is imperative to check the picture file and make sure it's a picture and not a malicious file with hidden code or content into it. | +| uploadDataSet | This request happen once the data set receive the ok to all the validation checks. It serves as uploading all the folder to diverse endpoint depending on the file type. | +#### Validation Errors +Here's a list of the errors that can be returned turing the validation of the +upload | Name | Description +| | ---------------------- | +-------------------------------------------------------------------------------------------------------------------------- +| | Wrong structure | This type if error indicate the +folder uploaded by the user doesn't follow the required structure. +| | Missing Index | An Index is missing which means the whole folder of +picture couldn't be processed. This might stop the upload process as a whole +| |Index content | A specific Index either has missing fields or unexpected +values | |Unexpected file | Based on the value given by the user within the +index, there are more files present in the subfolder than expected | |Missing +file | Based on the value given by the user within the index, there are less +picture files than expected| | content | This error indicate +there's an issue with one of the data field in the file called 'picture.yml' +
*(If the number of seeds and zoom field are not removed from picture.yaml)* +| +### Files Structure + +We aim to have a standard file structure to enable the use of a script to manage +the importation of files into the system. This statarized structure will allow +us to keep track of the users uploads, the metadata feedback. By providing a +default structure for the files, we can run scripts through those files and +efficiently add/edit data within. Moreover, this approach will facilitate the +population of a database with the collected information enabling us to have a +better insight on our models actual performance. + +#### Folder + +Lets begin by examinating the overall struture of the folder that a typical user +will be expected to upload. We require that users pack their entire upload into +a singular folder. Within the project folder, multiple subfolder will be present +to enforce an overall structure for the project, while allowing futur addition. +The project folder should adhere to the following structure: +``` +project/ +│ index.yaml +│ +└───pictures/ +│ └───session1/ +│ | │ index.yaml +│ | │ 1.tiff +│ | │ 1.yaml +│ | | ... +│ | └───────────── +│ └───session2/ +│ | ... +│ └───────────── +└────────────────── +``` +#### Files (.yaml) +##### [Index.yaml](index.yaml) + +The index is an most important file. It will allow us to have all the knowledge +about the user and the project/session. + + +##### [picture.yaml](picture.yaml) + +Each picture should have their .yaml conterpart. This will allow us to run +scripts into the session folder and monitor each picture easily. + +*Note: 'picture' in this exemple is replacing the picture number or name of the +.tiff file* +## Database +We plan on storing the metadata of the user's files in a postgreSQL Database. +The database should have the following structure: +``` mermaid +--- +title: Nachet DB Structure +--- +erDiagram + users{ + uuid id PK + string email + string container + } + indexes{ + uuid id PK + json index + uuid ownerID FK + } + pictures{ + uuid id PK + json picture + uuid indexID FK + uuid parent FK + } + feedbacks{ + int ID PK + json feedback + } + seeds{ + uuid id PK + string name + json information + } + + users ||--|{ indexes: uploads + indexes ||--o{pictures: contains + pictures ||--o{pictures: cropped + pictures ||--||seeds: has + +``` +## Blob Storage + +Finally the picture uploaded by the users will need to be stored in a blob +storage. Therefore we are using a Azure blob Storage account which currently +contains a list of containers either for the users upload or our Data scientists +training sets. The current structure needs to be revised and a standarized +structure needs to pe applied for the futur of Nachet. + +``` +Storage account +│ +│ +└───container +│ └───folder/ +│ | │ 1.tiff +│ | │ 2.tiff +│ | | ... +│ | └───────────── +│ └───folder/ +│ | ... +│ └───────────── +└────────────────── +``` + +## Consequences + Implementing this structure and introducing the new backend features in Nachet + will result in the following impact: +- **Automation of file structure maintenance:** This process will autonomously + manage the file structure, eliminating the need for manual maintenance and + reducing workload for the AI-Lab team. + +- **Streamlined subscription key management:** The new feature will eliminate + the need for email communication between users and the AI-Lab team for + subscription keys. The system may automatically create and connect to the + appropriate BLOB storage without user intervention. Consequently, manual + creation of storage by the AI-Lab team will be unnecessary, and all keys will + be securely stored in the database. + +- **Enhanced security:** The removal of email exchanges between users and the + development team represents a substantial improvement in security protocols. + +- **Improved model tracking and training:** Storing user metadata will enable + more effective tracking of model performance and facilitate better training + strategies. + +- **Automated metadata enrichment:** The process will enable the automatic + addition of additional information to metadata, enhancing the depth of + insights available. + +Overall, this new feature will empowers the AI-Lav team to have better control +over the content fed to the models and ensures improved tool maintenance +capabilities in the future. \ No newline at end of file diff --git a/picture-mockData.yaml b/picture-mockData.yaml new file mode 100644 index 00000000..f54cb880 --- /dev/null +++ b/picture-mockData.yaml @@ -0,0 +1,4 @@ +userData: + description: cool seed picture + numberOfSeeds: 6 + zoom: 30 \ No newline at end of file diff --git a/picture-template-system.json b/picture-template-system.json new file mode 100644 index 00000000..608c60a3 --- /dev/null +++ b/picture-template-system.json @@ -0,0 +1,22 @@ +{ +"info":{ + "uploadDate": "", + "userID": "", + "indexID": "" +}, +"imageData":{ + "parent": "", + "source": "", + "format": "", + "height": "", + "width": "", + "resolution": "" +}, +"qualityCheck":{ + "imageChecksum": "", + "uploadCheck": "", + "validData": "", + "errorType": "", + "dataQualityScore": "" + } +} diff --git a/picture-template.yaml b/picture-template.yaml new file mode 100644 index 00000000..74d02190 --- /dev/null +++ b/picture-template.yaml @@ -0,0 +1,5 @@ +# This is a Section filled by user +UserData: + description: + numberOfSeeds: + zoom: diff --git a/picture.yaml b/picture.yaml new file mode 100644 index 00000000..28410b18 --- /dev/null +++ b/picture.yaml @@ -0,0 +1,51 @@ +# This is a Section filled by user +UserData: + description: + numberOfSeeds: + zoom: + + +# ------------------------------------------------------ +# Section filled by system +info: + uploadDate: timestamp + userID: ID of the user who uploaded the picture to facilitate search + indexID: ID of the index linked to this pîcture to facilitate search +imageData: + parent: boolean if the picture has child pictures + source: url or path to the images + format: extension (.tiff, .jpg, .png, ...) + height: image height + width: image width + resolution: resolution of the images +qualityCheck: + imageChecksum: checksum for image data integrity + uploadCheck: boolean to verify sucessfull upload + validData: boolean indicating if the data is valid + errorType: Type of error if the data is erroneous + dataQualityScore: Overall score given to the data + +# ------------------------------------------------------ +#Section filled after Inference by User TBD +clientData: + clientEmail: email +clientFeedback: + levelOfExpertise: level + correctIdentification: True/False + comparison: link to historical data +# ------------------------------------------------------ +#Section filled after Inference by System TBD +classificationData: + model: modelID + prediction: inference + confidenceScore: score +auditTrail: + editedBy: editorID + editDate: date + changeLog: changes + accessLog: log + privacyFlag: boolean +errorHandling: + feedback: + correctionApplied: + errorDetails: \ No newline at end of file