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

Related tags

Utilities yolt
Overview

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

You might also like...
Hybrid Detect demonstrates CPU topology detection using multiple intrinsic and OS level APIs.

Hybrid Detect Hybrid Detect demonstrates CPU topology detection using multiple intrinsic and OS level APIs. First, we demonstrate usage of CPUID intri

A 2D collision detection and physics library written in C.
A 2D collision detection and physics library written in C.

A 2D collision detection and physics library written in C. WARNING: This library is in an early alpha stage, use it at your own risk. Documentation —

Do u wanna create more than one trial account on exitlag? This 'spoofer' is for you!

ExitLag HWID Bypass Do you wanna create more than one trial account on exitlag? So this 'spoofer' is for you! Why? Exitlag limit the trial account cre

SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself
SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself

.- the first complete SID-drop-in-replacement that you can build yourself -. SIDKick is a drop-in replacement for the SID sound chips used in C64s and

AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows
AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows

AlleyWind AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows. AlleyWind could: Displays a graphic

A interpreter that runs the script which is programmed in the language of FF0 script (or you can call it as Warfarin)

ff0-script A interpreter that runs the script which is programmed in the language of FF0 script (or you can call it as Warfarin) You can do it, unders

A docker image where you can run a judge program and a converter for multiple sequence alignment

genocon2021-docker 本リポジトリでは、ジャッジプログラム(eval.c)と Multiple Sequence Alignment (MSA) 変換プログラム(decode_cigar.py)を同梱した Docker イメージを提供しています。 また、サンプル解答プログラム(sam

Stripped down version of BIGTREETECH-TouchScreenFirmware which only supports ST7920 emulation (Marlin Mode)

Stripped down version of BIGTREETECH-TouchScreenFirmware which only supports ST7920 emulation (Marlin Mode). This project only uses peripheral drivers supplied by the screen manufacturer and uses it's own library to parse the ST7920 commands.

match(it): A lightweight header-only pattern-matching library for C++17 with macro-free APIs.

match(it): A lightweight header-only pattern-matching library for C++17 with macro-free APIs. Features Easy to get started. Single header library. Mac

Owner
CosmiQ Works
CosmiQ Works
Small header-only C++ library that helps to initialize Vulkan instance and device object

Vulkan Extensions & Features Help, or VkExtensionsFeaturesHelp, is a small, header-only, C++ library for developers who use Vulkan API.

Adam Sawicki 11 Oct 12, 2022
Yet another ratio espresso scale

SofronioEspressoRatioScale Yet another ratio espresso scale

Sofronio 6 Oct 5, 2022
Beacon Object File (BOF) for remote process injection via thread hijacking

cThreadHijack ___________.__ .______ ___ .__ __ __ ___\__ ___/| |_________ ____ _____

Connor McGarr 158 Dec 28, 2022
A Cobalt Strike Beacon Object File (BOF) project which uses direct system calls to enumerate processes for specific loaded modules or process handles.

FindObjects-BOF A Cobalt Strike Beacon Object File (BOF) project which uses direct system calls to enumerate processes for specific modules or process

Outflank B.V. 247 Dec 28, 2022
A Beacon Object File (BOF) for Cobalt Strike which uses direct system calls to enable WDigest credential caching.

WdToggle A Proof of Concept Cobalt Strike Beacon Object File which uses direct system calls to enable WDigest credential caching and circumvent Creden

Outflank B.V. 205 Dec 3, 2022
A simple YAML parser which produces a Node Tree Object representation of YAML Documents

A simple YAML parser which produces a Node Tree Object representation of YAML Documents and includes a find method to locate individual Nodes within the parsed Node Tree.

Timothy Rule 2 Sep 18, 2022
Applications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection

ESP-CSI The main purpose of this project is to show the use of ESP-WIFI-CSI. The human body detection algorithm is still being optimized. You can get

Espressif Systems 314 Jan 4, 2023
Security product hook detection

HookDump EDR function hook dumping Please refer to the Zeroperil blog post for more information https://zeroperil.co.uk/hookdump/ Building source In o

zeroperil 187 Dec 28, 2022
PoC memory injection detection agent based on ETW, for offensive and defensive research purposes

TiEtwAgent - ETW-based process injection detection This project was created to research, build and test different memory injection detection use cases

Filip Olszak 188 Dec 26, 2022
WhyNotWin11 - Detection Script to help identify why your PC isn't Windows 11 ready

Detection Script to help identify why your PC isn't Windows 11 ready

Robert C. Maehl 5.9k Dec 28, 2022