Tool for Annotating Images in Preparation for Analysis

A tool to help create shiny apps for selecting and annotating elements of images. Users must supply images, questions, and answer choices. The user interface is a dynamic shiny app, that displays the images and questions and answer choices. The data generated can be saved to a file that can be used for subsequent analysis. The original purpose was to annotate still images from tennis video for face recognition and emotion detection purposes.

Travis buildstatus CRAN_Status_Badge Downloads

Taipan is a Tool for Annotating Images in Preparation for ANalysis.

The Taipan package creates simple shiny surveys. The web applications can be used locally or deployed and allow people to save survey results as tidy data that is ready to use for analysis.

The app was initially created to streamline the process of manually tagging images to create a training set. It allows users to provide information regarding entire images, and smaller regions within. It is a survey style tool, with questions being posed for each image and area identified.


You can install the stable version from CRAN.


You can install the development version from Github using:

# install.packages("devtools")


Taipan builds a shiny app suitable for annotating images. Questions can be provided for two scenarios in the app: ‘scene’ and ‘selection’. Scene questions are suitable for questions that apply to the whole image, and are shown when no selection is made. Selection questions are appropriate for selected areas of the image, and are shown when a selection is made.

These lists of questions can be flexibly produced using the taipanQuestions function, where any shiny inputs and web elements can be used to build your own survey UI. For example, to train a model for identifying hotdogs and condiments, you could use this interface:

questions <- taipanQuestions(
  scene = sliderInput("quality", label = "Image Quality",
                      min = 0, max = 10, value = 5),
  selection = div(
    radioButtons("hotdog", label = "Hotdog?",
                 choices = list("Hotdog", "Not hotdog")),
    checkboxGroupInput("extra", label = "Condiments",
                       choices = list("Onion", "Tomato (Ketchup)", "Barbeque", "Mustard"))

To build a taipan app with these questions, we can use the buildTaipan function and provide a set of images to annotate. These images can be provided locally, or via links to the web. You can specify where the app will be created with the appdir argument.

  questions = questions,
  images = c("",
  appdir = file.path(tempdir(), "taipan"), overwrite = TRUE

Example App Screenshot


taipan 0.1.2

  • Bug fixes
  • Documentation improvements
  • Removed previous button on first image

taipan 0.1.1

  • First release

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.1.2 by Stephanie Kobakian, 4 months ago

Report a bug at

Browse source code at

Authors: Stephanie Kobakian [aut, cre] , Mitchell O'Hara-Wild [aut]

Documentation:   PDF Manual  

GPL-3 license

Imports shiny, utils

Suggests testthat, knitr, rmarkdown, tidyverse, ggplot2, purrr, shinydashboard

See at CRAN