Repository files navigation

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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 > 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 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

EBLNet

This repo contains the the implementation of Our ICCV-2021 work: Enhanced Boundary Learning for Glass-like Object Segmentation.

This is a join work of Institute of Automation, Chinese Academy of Sciences, Peking University, and Sensetime Research. Much thanks for Sensetime's GPU clusters.

paper

Any Suggestions/Questions/Pull Requests are welcome.

avatar

The master branch works with PyTorch 1.5 and python 3.7.6

DataSet preparation

Dataloaders for Trans10k, MSD, and GDD are available in datasets. Details of preparing each dataset can be found at PREPARE_DATASETS.md

Model Checkpoint

Pretrained Models

Baidu Pan Link: https://pan.baidu.com/s/15-ldYHk-__VI0ZhLMUFPzA (bpkw)

Google Drive Link: https://drive.google.com/drive/folders/1S6Mv_559_0u851OOXbVyGXgvFCNoMknj?usp=sharing

After downloading the pretrained backbones, you can either change the path in network/resnet_d.py (for ResNet50 and ResNet101) and network/resnext.py (for ResNeXt101), or do soft link according to the default path in network/resnet_d.py and network/resnext.py.

For example, suppose you store the pretrained model at ~/user_name/pretrained_models, you can ln -s ~/user_name/pretrained_models/* ~/user_name/codes/EBLNet/pretrained_models

or you can update the model path in resnet_d.py and resnext.py, like ResNet50 in Line281 of network/resnet_d.py,

model.load_state_dict(torch.load("~/user_name/pretrained_models/resnet50-deep.pth", map_location='cpu'))

Trained Models and CKPTs

Here are the trained models reported in our paper, you can use them to evaluate.

DatasetBackbonemIoUModel
Trans10kResNet50 (os16)89.58Google Drive | Baidu Pan(7eg1)
Trans10kResNet50 (os8)90.28Google Drive | Baidu Pan(5aaf)
GDDResNet10188.16Google Drive | Baidu Pan(fq6a)
GDDResNeXt10188.72Google Drive | Baidu Pan(fi6v)
MSDResNet10178.84Google Drive | Baidu Pan(t9pr)
MSDResNeXt10180.33Google Drive | Baidu Pan(pvs2)

Evaluation

After downloading the trained models, you can evaluate the models with the evaluation scripts, for example, when evaluating the EBLNet (ResNet50 as backbone) on test set of Trans10k dataset:

sh scripts/test/test_Trans10k_R50_EBLNet.sh path_to_checkpoint path_to_save_results

After running this script, you can get the iou of things and stuff are 92.73 and 87.82, respectively. Thus, the mIoU is 90.28 as reported in the last line of out paper Table. 2. Note that, when computing the mean IoU, we do not include the background.

During evaluation, if you want to save images during evaluating for visualization, all you need to do is add args: dump_images in the test scripts. Note that, saving images will take more time.

Training

To be note that, all our models are trained on 8 V-100 GPUs with 32G memory. It is hard to reproduce the results if you do not have such resources. For example, when training EBLNet with ResNet50 (os8) as backbone on the Trans10k dataset:

sh scripts/train/train_Trans10k_R50_EBLNet.sh

Citation

If you find this repo is helpful to your research. Please consider cite our work.

@InProceedings{He_2021_ICCV,
author = {He, Hao and Li, Xiangtai and Cheng, Guangliang and Shi, Jianping and Tong, Yunhai and Meng, Gaofeng and Prinet, Véronique and Weng, LuBin},
title = {Enhanced Boundary Learning for Glass-Like Object Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {15859-15868}
}

Acknowledgement

This repo is based on NVIDIA segmentation repo. We fully thank their open-sourced code.

About

Official code for ICCV2021 paper: Enhanced Boundary Learning for Glass-like Object Segmentation

Topics

Resources

Stars

82 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages