Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Attention-Guided Domain Adaptation Network (ADA-Net)

This repository shares the implementation of ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery and includes the annotated dataset for mapping standing dead trees. ADA-Nets are generic networks and they can be used in different domation adaptation and Image-to-Image translation problems. In this repository, we specifically focus on transforming multispectral remote sensing aerial images from USA sites into images resembling those from Finland. The tree annotations are provided at the individual tree level.

Dead tree segmentation results are given for both the original images and the generated ones obtained through different domain transformation approaches. The pretrained segmentation network is trained using images from Finland sites.

Content:

Citation

If you use method(s) and the dataset(s) provided in this repository, please cite the following paper:

M. Ahishali, A. U. Rahman, E. Heinaro, and S. Junttila, "ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery," arXiv preprint arXiv:2504.04271, 2025.

@misc{ahishali2025adanet,
title={ADA-Net: Attention-Guided Domain Adaptation Network with Contrastive Learning for Standing Dead Tree Segmentation Using Aerial Imagery}, author={Mete Ahishali and Anis Ur Rahman and Einari Heinaro and Samuli Junttila},
year={2025},
eprint={2504.04271},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2504.04271}, }

Software Environment:

git clone https://github.com/meteahishali/ADA-Net.git
cd ADA-Net/

Pip based installation:

python -m venv my_env/
source my_env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Conda based environment:

conda env create -f environment.yml
conda activate ada_net

Finnish supercomputers Puhti and Mahti:

source create_pytorch_env.sh my_env/ requirements.txt

Note for Lumi, include module use /appl/local/csc/modulefiles/ in create_pytorch_env.sh.

Downloading the Dataset

We collect the dataset consisting of unpaired aerial multispectral image samples from the US [1] and Finland [2]. The image samples have four-band data including near-infrared channel (NIR) and RGB channels. The preprocessed dataset is shared in .h5 format and can be downloaded here, please download the files and unzip it:

unzip dataset.zip

These datasets also consist of polygon annotations for standing dead trees annotated by our collaborator group of forest health experts. Note that we share only a small sub-set of the Finland data due to the extensive size of the whole annotated regions and the aerial imagery data.

Kaggle Dataset

Although we already provide direct .h5 files for the pre-processed data above, the full dataset with untiled image frames are available in the following Kaggle repository: https://www.kaggle.com/datasets/meteahishali/aerial-imagery-for-standing-dead-tree-segmentation. We share the RGB and NRG images in .png format together with the corresponding ground-truth mask images for the USA data.

Training

The proposed ADA-Net method can be trained as follows,

python train.py

Configurations for training are available and can be adjusted in configs/adanet.txt. During the training, the RGB and false color NRG views (NIR-R-G) of the generated multispectral data are saved for the training set.

Testing

The evaluation of the method over the test data can be performed using the provided test.py script as follows,

python test.py

Checkpoints of 'latest' are loaded in testing. You can specify another epoch number by changing resume-epoch setting in configs/adanet.txt. Optionally you can set visualize = False in the test script if you want store only output .h5 files, otherwise RGB view generated images are saved as well.

Custom Dataset Training Guide

If you want to train using your own images, start by specifying the extension format indicated as dataset-type in configs/adanet.txt. Then, the data should be organized in trainA, trainB, testA, and testB folders under data/ or modify data-folder-A and data-folder-B as needed in configs/adanet.txt. For instance, let's run ADA-Net model on the horse2zebras dataset:

wget https://github.com/akanametov/cyclegan/releases/download/1.0/horse2zebra.zip
unzip horse2zebra.zip
mv -f horse2zebra/* data

Next, configs/adanet.txt should be modified accordingly by setting dataset-type = jpg. You may adjust learning-rate = 2e-4 or 2e-5 depending on your problem. It is advisible to change the number of epochs to 200, e.g., initial-epochs = 100 and decay-epochs = 100. Additionally, assuming you are using RGB images not multispectral data, please change input-channels = 3 and output-channels = 3 to align with the typical three-channel data size.

Note that the current data augmentation is most suitable for the remote sensing data. It includes some domain-specific augmentations such as multiplitative noise. Therefore, it is suggusted to modify treemort/augment.py script to suit your dataset. For now, in configs/adanet.txtset train-load-size = 286 andaugment-mode='partial' to perform only resizing and random cropping as augmentation. Finally, the training can be started using the following script:

python train.py

References

[1] "National Agriculture Imagery Program," https://naip-usdaonline.hub.arcgis.com/.
[2] "National Land Survey of Finland," https://asiointi.maanmittauslaitos.fi/karttapaikka/tiedostopalvelu.

About

Attention-Guided Domain Adaptation Network

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages