Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 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

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

YOLT

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Alt text


As of 24 October 2018 YOLT has been superceded by SIMRDWN


YOLT is an extension of the YOLO v2 framework that can evaluate satellite images of arbitrary size, and runs at ~50 frames per second. Current applications include vechicle detection (cars, airplanes, boats), building detection, and airport detection.

The YOLT code alters a number of the files in src/*.c to allow further functionality. We also built a python wrapper around the C functions to improve flexibility. We utililize the default data format of YOLO, which places images and labels in different directories. For example:

/data/images/train1.tif
/data/labels/train1.txt

Each line of the train1.txt file has the format

<object-class> <x> <y> <width> <height>

Where x, y, width, and height are relative to the image's width and height. Labels can be created with LabelImg, and converted to the appropriate format with the /yolt/scripts/convert.py script.

For more information, see:

  1. arXiv paper: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

  2. Blog1: You Only Look Twice — Multi-Scale Object Detection in Satellite Imagery With Convolutional Neural Networks (Part I)

  3. Blog2: You Only Look Twice (Part II) — Vehicle and Infrastructure Detection in Satellite Imagery

  4. Blog3: Building Extraction with YOLT2 and SpaceNet Data

  5. Blog4: Car Localization and Counting with Overhead Imagery, an Interactive Exploration

  6. Blog5: The Satellite Utility Manifold; Object Detection Accuracy as a Function of Image Resolution

  7. Blog6: Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands


Installation

The following has been tested on Ubuntu 16.04.2

  1. Install nvidia-docker

  2. Build docker file

     nvidia-docker build -t yolt yolt_docker_name /path_to_yolt/docker
    
  3. Launch the docker container

     nvidia-docker run -it -v /raid:/raid yolt_docker_name
    # '/raid' is the root directory of your machine, which will
    # be shared with the docker container
    
  4. Run Makefile

     cd /path_to_yolt/
    make clean
    make
    

Execution

Commands should be executed within the docker file. To run the container (with name yolt_train0):

nvidia-docker run -it -v --name yolt_train0 yolt_docker_name

HELP

cd /path_to_yolt/scripts
python yolt2.py --help

TRAIN (gpu_machine)

# e.g. train boats and planes
cd /path_to_yolt/scripts
python yolt2.py \
--mode train \
--outname 3class_boat_plane \
--object_labels_str boat,boat_harbor,airplane \
--cfg_file ave_standard.cfg \
--nbands 3 \
--train_images_list_file boat_airplane_all.txt \
--single_gpu_machine 0 \
--keep_valid_slices False \
--max_batches 60000 \
--gpu 0

VALIDATE (gpu_machine)

# e.g. test on boats, cars, and airplanes
cd /path_to_yolt/scripts
python yolt2.py \
--mode valid \
--outname qgis_labels_all_boats_planes_cars_buffer \
--object_labels_str airplane,airport,boat,boat_harbor,car \
--cfg_file ave_standard.cfg \
--valid_weight_dir train_cowc_cars_qgis_boats_planes_cfg=ave_26x26_2017_11_28_23-11-36 \
--weight_file ave_standard_30000_tmp.weights \
--valid_testims_dir qgis_validation/all \
--keep_valid_slices False \
--valid_make_pngs True \
--valid_make_legend_and_title False \
--edge_buffer_valid 1 \
--valid_box_rescale_frac 1 \
--plot_thresh_str 0.4 \
--slice_sizes_str 416 \
--slice_overlap 0.2 \
--gpu 2

To Do

  1. Include train/test example
  2. Upload data preparation scripts
  3. Describe multispectral data handling
  4. Describle initial results with YOLO v3
  5. Describe improve labeling methods

If you plan on using YOLT in your work, please consider citing YOLO and YOLT

About

You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery

Resources

Stars

674 stars

Watchers

39 watching

Forks

Releases

Packages

Contributors

Languages