Get started
General
Index
- Overview of Encord Index
- Getting Started with Index
- Upload files to Encord
- Files
- Index Basics
Annotate
- Overview of Encord Annotate
- Get Started with Annotate
- Datasets
- Ontologies
- Agents (BETA)
- Projects
- Export labels
- Webhooks and Notifications
- Label Editor
- Automated Labeling
- Encord Annotate API
- Settings
- API Keys
- Activity Log
- Annotate FAQ
Active
- Overview of Encord Active
- Get started with Active
- Importing
- Basics
- Collections and Bulk Actions
- Embeddings
- Tutorials
- How to
- Model Evaluation
- Active Videos Guides
- Active FAQ
Import Data into Encord
Learn how to import cloud and local data into Encord.
STEP 1: Set up your Org
Add Users
An overview of all your Organization’s users and user roles is found on the Users tab of your Organization.
User roles
Organizations have several kinds of users.
- Internal: Users that your Organization directly employs. Can be either Member or Admin.
- External: Users not directly employed, or contractually employed by your Organization. This includes external annotation teams.
- Workforce: Users belonging to a Workforce Organization that are added to another Organization’s Project or Dataset.
Internal users can have the Member OR Admin role in your Organization. The following table outlines permissions of both internal user roles.
Admin | Member |
---|---|
Executive privileges over the Organization such as adding and removing users, and the ability to view all Projects in the Organization. | No administrative privileges over your Organization. Can only view Projects they create, or have been invited to. |
Adding and removing users
Users belonging to your Organization are managed on the Users tab of your Organization dashboard. The Users tab displays by default when you navigate to your Organization. All users belonging to your Organization are listed on the Users tab.
To add new users to your Organization:
- Click the + Add user button. A dialog appears
- Type the email addresses of the users you want to add.
- Select the role you want the users to have.
- Click Add to add the users to your Organization.
Add User Groups
User groups are collections of members that are grouped together, allowing them to be added to Projects, Datasets, and Ontologies collectively. User groups are managed on the Groups tab of your Organization’s dashboard.
Create user groups
To create a user group:
-
Navigate to the Groups tab of your Organization.
-
Click + Create group. A dialog appears.
- Give your group a meaningful name and description.
- Search for and select users to include in the group.
- Click Add to add the selected users to the group. Users can be removed by clicking the delete icon next to the user.
- Click Create group to create the user group.
Add Project Tags
Project tags serve as a labeling system that helps to categorize, group, and filter Projects within your Organization. Project tags are created and managed in the Project tags tab of the Organization’s dashboard.
Create Project tags
Project tags must be created before they can be added to a Project.
- Click + New project tag on the Project tags tab.
-
Give the new Project tag a name.
-
Press Enter to create the tag.
STEP 2: Create a Cloud Integration
Select your cloud provider.
STEP 3: Create Metadata Schema
Based on your Data Discoverability Strategy, you need to create a metadata schema. The schema provides a method of organization for your custom metadata. Encord supports:
- Scalers: Methods for filtering.
- Enums: Methods with options for filtering.
- Embeddings: Method for embedding plot visualization, similarity search, and natural language search.
Custom metadata
Custom metadata refers to any additional information you attach to files, allowing for better data curation and management based on your specific needs. It can include any details relevant to your workflow, helping you organize, filter, and retrieve data more efficiently. For example, for a video of a construction site, custom metadata could include fields like "site_location": "Algiers"
, "project_phase": "foundation"
, or "weather_conditions": "sunny"
. This enables more precise tracking and management of your data.
Before importing any files with custom metadata to Encord, we recommend that you import a metadata schema. Encord uses metadata schemas to validate custom metadata uploaded to Encord and to instruct Index and Active how to display your metadata.
video.description
, while team B could use audio.description
. Another example could be TeamName.MetadataKey
. This approach maintains clarity and avoids key collisions across departments.Metadata schema table
Use add_scalar
to add a scalar key to your metadata schema.
Scalar Key | Description | Display Benefits |
---|---|---|
boolean | Binary data type with values “true” or “false”. | Filtering by binary values |
datetime | ISO 8601 formatted date and time. | Filtering by time and date |
number | Numeric data type supporting float values. | Filtering by numeric values |
uuid | Customer specified unique identifier for a data unit. | Filtering by customer specified unique identifier |
varchar | Textual data type. Formally string . string can be used as an alias for varchar , but we STRONGLY RECOMMEND that you use varchar . | Filtering by string. |
text | Text data with unlimited length (example: transcripts for audio). Formally long_string . long_string can be used as an alias for text , but we STRONGLY RECOMMEND that you use text . | Storing and filtering large amounts of text. |
Use add_enum
and add_enum_options
to add an enum and enum options to your metadata schema.
Key | Description | Display Benefits |
---|---|---|
enum | Enumerated type with predefined set of values. | Facilitates categorical filtering and data validation |
Use add_embedding
to add an embedding to your metadata schema.
Key | Description | Display Benefits |
---|---|---|
embedding | 512 dimension embeddings for Active, 1 to 4096 for Index. | Filtering by embeddings, similarity search, 2D scatter plot visualization (Coming Soon) |
Incorrectly specifying a data type in the schema can cause errors when filtering your data in Index or Active. If you encounter errors while filtering, verify your schema is correct. If your schema has errors, correct the errors, re-import the schema, and then re-sync your Active Project.
Import your metadata schema to Encord
Verify your schema
After importing your schema to Encord we recommend that you verify that the import is successful. Run the following code to verify your metadata schema imported and that the schema is correct.
STEP 4: Create a Folder in Index
You must create a folder in Index to store your files.
- Navigate to Files under the Index heading in the Encord platform.
- Click the + New folder button to create a new folder. A dialog to create a new folder appears.
-
Give the folder a meaningful name and description.
-
Click Create to create the folder. The folder is listed in Files.
STEP 5: Create JSON or CSV for Import
To import files from cloud storage into Encord, you must create a JSON or CSV file specifying the files you want to upload.
Find helpful scripts for creating JSON and CSV files for the data upload process here.
All types of data (videos, images, image groups, image sequences, and DICOM) from a private cloud are added to a Dataset in the same way, by using a JSON or CSV file. The file includes links to all images, image groups, videos and DICOM files in your cloud storage.
Create JSON file for Import
For detailed information about the JSON file format used for import go here.
The information provided about each of the following data types is designed to get you up and running as quickly as possible without going too deeply into the why or how. Look at the template for each data type, then the examples, and adjust the examples to suit your needs.
skip_duplicate_urls
is set to true
, all object URLs that exactly match existing images/videos in the dataset are skipped.AWS JSON
Videos
sampling_rate
to 0
. This imports only the first frame and any key frames you specify in the video. This can significantly speed up the import of your data into Active and Index and help you to focus on only data you identify as critical.The following table provides some guidance for the examples provided after the table.
Title | Description |
---|---|
Template | Provides the proper JSON format to import videos into Encord. This template provides examples from the most basic to the most complex. |
Data | Imports videos into Encord. Why would I do this?
|
Key Frames | Imports videos with an Encord title and specifies key frames (frames of interest) for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Custom Metadata | Imports videos with an Encord title, specifies key frames (frames of interest), and custom metadata for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Embeddings | Imports videos with an Encord title, specifies key frames (frames of interest), custom metadata, and custom embeddings for Active and Index. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If Refer to our documentation for more information about Index with Custom Metadata, Index with Custom Embeddings, Active with Custom Metadata and Active with Custom Embeddings. |
Video Metadata | Imports videos with the videoMetadata flag. When the videoMetadata flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate. |
Audio Files
The following is an example JSON file for uploading two audio files to Encord.
- Template: Imports audio files with an Encord title, and with custom metadata. Custom metadata only appears in the Encord UI in Active and Index as an option to filter your data.
- Audio Metadata: Imports one audio file with the
audiometadata
flag. When theaudiometadata
flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate.
Single Images
For detailed information about the JSON file format used for import go here.
The JSON structure for single images parallels that of videos.
Template: Provides the proper JSON format to import images into Encord.
Examples:
-
Data Imports the images only.
-
Custom Metadata: Imports images with an Encord title for the images and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Embeddings: Imports images with an Encord title, custom metadata, and custom embeddings for each image. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Image Metadata: Imports images with image metadata. This improves the import speed for your images.
Image groups
For detailed information about the JSON file format used for import go here.
- Image groups are collections of images that are processed as one annotation task.
- Images within image groups remain unaltered, meaning that images of different sizes and resolutions can form an image group without the loss of data.
- Image groups do NOT require ‘write’ permissions to your cloud storage.
- Custom metadata is defined per image group, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image groups in the dataset are skipped.
objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
Examples:
-
Data: Imports the image groups only.
-
Custom Metadata: Imports image groups with an Encord title for the image groups and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
Image sequences
For detailed information about the JSON file format used for import go here.
- Image sequences are collections of images that are processed as one annotation task and represented as a video.
- Images within image sequences may be altered as images of varying sizes and resolutions are made to match that of the first image in the sequence.
- Creating Image sequences from cloud storage requires ‘write’ permissions, as new files have to be created in order to be read as a video.
- Each object in the
image_groups
array with thecreateVideo
flag set totrue
represents a single image sequence. - Custom client metadata is defined per image sequence, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image sequences in the dataset are skipped.
createVideo
flag to be set to true
. Both use the key image_groups
.objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
** Examples:**
-
Data: Imports the images groups only.
-
Custom Metadata: Imports image groups and custom metadata. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
DICOM
For detailed information about the JSON file format used for import go here.
- Each
dicom_series
element can contain one or more DICOM series. - Each series requires a title and at least one object URL, as shown in the example below.
- If
skip_duplicate_urls
is set totrue
, all object URLs exactly matching existing DICOM files in the dataset will be skipped.
.dcm
file and does not have to be specific during the upload to Encord. The following is an example JSON for uploading three DICOM series belonging to a study. Each title and object URL correspond to individual DICOM series.
- The first series contains only a single object URL, as it is composed of a single file.
- The second series contains 3 object URLs, as it is composed of three separate files.
- The third series contains 2 object URLs, as it is composed of two separate files.
{
"dicom_series": [
{
"title": "Series-1",
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series1-file.dcm"
},
{
"title": "Series-2",
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series2-file1.dcm",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series2-file2.dcm",
"objectUrl_2": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series2-file3.dcm",
},
{
"title": "Series-3",
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series3-file1.dcm",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/study1-series3-file2.dcm",
}
],
"skip_duplicate_urls": true
}
NIfTI
The following is an example JSON file for uploading two NIfTI files to Encord.
{
"nifti": [
{
"title": "<file-1>",
"objectUrl": "https://my-bucket/.../nifti-file1.nii"
},
{
"title": "<file-2>",
"objectUrl": "https://my-bucket/.../nifti-file2.nii.gz"
}
],
"skip_duplicate_urls": true
}
You can upload multiple file types using a single JSON file. The example below shows 1 image, 2 videos, 2 image sequences, and 1 image group.
{
"images": [
{
"objectUrl": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/Image1.png"
}
],
"videos": [
{
"objectUrl": "https://encord-integration.s3.eu-west-2.amazonaws.com/videos/Cooking.mp4"
},
{
"objectUrl": "https://encord-integration.s3.eu-west-2.amazonaws.com/videos/Oranges.mp4"
}
],
"image_groups": [
{
"title": "apple-samsung-light",
"createVideo": true,
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(32).jpg",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(33).jpg",
"objectUrl_2": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(34).jpg",
"objectUrl_3": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(35).jpg"
},
{
"title": "apple-samsung-dark",
"createVideo": true,
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/2+(32).jpg",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/2+(33).jpg",
"objectUrl_2": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/2+(34).jpg",
"objectUrl_3": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/2+(35).jpg"
}
],
"image_groups": [
{
"title": "apple-ios-light",
"createVideo": false,
"objectUrl_0": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/3+(32).jpg",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/3+(33).jpg"
}
],
"skip_duplicate_urls": true
}
GCP JSON
Videos
sampling_rate
to 0
. This imports only the first frame and any key frames you specify in the video. This can significantly speed up the import of your data into Active and Index and help you to focus on only data you identify as critical.The following table provides some guidance for the examples provided after the table.
Title | Description |
---|---|
JSON for videos | Provides the proper JSON format to import videos into Encord. This template provides examples from the most basic to the most complex. |
Data | Imports videos into Encord. Why would I do this?
|
Key Frames | Imports videos with an Encord title and specifies key frames (frames of interest) for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Custom Metadata | Imports videos with an Encord title, specifies key frames (frames of interest), and custom metadata for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Embeddings | Imports videos with an Encord title, specifies key frames (frames of interest), custom metadata, and custom embeddings for Active and Index. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If Refer to our documentation for more information about Index with Custom Metadata, Index with Custom Embeddings, Active with Custom Metadata and Active with Custom Embeddings. |
Video Metadata | Imports videos with the videoMetadata flag. When the videoMetadata flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate. |
Audio Files
The following is an example JSON file for uploading two audio files to Encord.
- Example 1 imports audio files with an Encord title, and with custom metadata. Custom metadata only appears in the Encord UI in Active and Index as an option to filter your data.
- Example 2 imports one audio file with the
audiometadata
flag. When theaudiometadata
flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate.
Single Images
For detailed information about the JSON file format used for import go here.
The JSON structure for single images parallels that of videos.
Template: Provides the proper JSON format to import images into Encord.
Examples:
-
Data Imports the images only.
-
Custom Metadata: Imports images with an Encord title for the images and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Embeddings: Imports images with an Encord title, custom metadata, and custom embeddings for each image. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Image Metadata: Imports images with image metadata. This improves the import speed for your images.
Image groups
For detailed information about the JSON file format used for import go here.
- Image groups are collections of images that are processed as one annotation task.
- Images within image groups remain unaltered, meaning that images of different sizes and resolutions can form an image group without the loss of data.
- Image groups do NOT require ‘write’ permissions to your cloud storage.
- Custom metadata is defined per image group, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image groups in the dataset are skipped.
objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
Examples:
-
Data: Imports the image groups only.
-
Custom Metadata: Imports image groups with an Encord title for the image groups and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
Image sequences
For detailed information about the JSON file format used for import go here.
- Image sequences are collections of images that are processed as one annotation task and represented as a video.
- Images within image sequences may be altered as images of varying sizes and resolutions are made to match that of the first image in the sequence.
- Creating Image sequences from cloud storage requires ‘write’ permissions, as new files have to be created in order to be read as a video.
- Each object in the
image_groups
array with thecreateVideo
flag set totrue
represents a single image sequence. - Custom client metadata is defined per image sequence, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image sequences in the dataset are skipped.
createVideo
flag to be set to true
. Both use the key image_groups
.objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
** Examples:**
-
Data: Imports the images groups only.
-
Custom Metadata: Imports image groups and custom metadata. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
DICOM
For detailed information about the JSON file format used for import go here.
- Each
dicom_series
element can contain one or more DICOM series. - Each series requires a title and at least one object URL, as shown in the example below.
- If
skip_duplicate_urls
is set totrue
, all object URLs exactly matching existing DICOM files in the dataset will be skipped.
.dcm
file and does not have to be specific during the upload to Encord. The following is an example JSON for uploading three DICOM series belonging to a study. Each title and object URL correspond to individual DICOM series.
- The first series contains only a single object URL, as it is composed of a single file.
- The second series contains 3 object URLs, as it is composed of three separate files.
- The third series contains 2 object URLs, as it is composed of two separate files.
{
"dicom_series": [
{
"title": "Series-1",
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series1-file.dcm"
},
{
"title": "Series-2",
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series2-file1.dcm",
"objectUrl_1": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series2-file2.dcm",
"objectUrl_2": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series2-file3.dcm",
},
{
"title": "Series-3",
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series3-file1.dcm",
"objectUrl_1": "https://storage.cloud.google.com/encord-image-bucket/images/study1-series3-file2.dcm",
}
],
"skip_duplicate_urls": true
}
NIfTI
The following is an example JSON file for uploading two NIfTI files to Encord.
{
"nifti": [
{
"title": "<file-1>",
"objectUrl": "https://my-bucket/.../nifti-file1.nii"
},
{
"title": "<file-2>",
"objectUrl": "https://my-bucket/.../nifti-file2.nii.gz"
}
],
"skip_duplicate_urls": true
}
You can upload multiple file types using a single JSON file. The example below shows 1 image, 2 videos, 2 image sequences, and 1 image group.
{
"images": [
{
"objectUrl": "https://storage.cloud.google.com/encord-image-bucket/images/Image1.png"
}
],
"videos": [
{
"objectUrl": "https://storage.cloud.google.com/encord-image-bucket/videos/Cooking.mp4"
},
{
"objectUrl": "https://storage.cloud.google.com/encord-image-bucket/videos/Oranges.mp4"
}
],
"image_groups": [
{
"title": "apple-samsung-light",
"createVideo": true,
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/1+(32).jpg",
"objectUrl_1": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(33).jpg",
"objectUrl_2": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(34).jpg",
"objectUrl_3": "https://encord-integration.s3.eu-west-2.amazonaws.com/images/1+(35).jpg"
},
{
"title": "apple-samsung-dark",
"createVideo": true,
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/2+(32).jpg",
"objectUrl_1": "https://storage.cloud.google.com/encord-image-bucket/images/2+(33).jpg",
"objectUrl_2": "https://storage.cloud.google.com/encord-image-bucket/images/2+(34).jpg",
"objectUrl_3": "https://storage.cloud.google.com/encord-image-bucket/images/2+(35).jpg"
}
],
"image_groups": [
{
"title": "apple-ios-light",
"createVideo": false,
"objectUrl_0": "https://storage.cloud.google.com/encord-image-bucket/images/3+(32).jpg",
"objectUrl_1": "https://storage.cloud.google.com/encord-image-bucket/images/3+(33).jpg"
}
],
"skip_duplicate_urls": true
}
Azure JSON
Videos
sampling_rate
to 0
. This imports only the first frame and any key frames you specify in the video. This can significantly speed up the import of your data into Active and Index and help you to focus on only data you identify as critical.The following table provides some guidance for the examples provided after the table.
Title | Description |
---|---|
Template | Provides the proper JSON format to import videos into Encord. This template provides examples from the most basic to the most complex. |
Data | Imports videos into Encord. Why would I do this?
|
Key Frames | Imports videos with an Encord title and specifies key frames (frames of interest) for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Custom Metadata | Imports videos with an Encord title, specifies key frames (frames of interest), and custom metadata for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Embeddings | Imports videos with an Encord title, specifies key frames (frames of interest), custom metadata, and custom embeddings for Active and Index. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If Refer to our documentation for more information about Index with Custom Metadata, Index with Custom Embeddings, Active with Custom Metadata and Active with Custom Embeddings. |
Video Metadata | Imports videos with the videoMetadata flag. When the videoMetadata flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate. |
Audio Files
The following is an example JSON file for uploading two audio files to Encord.
- Template: Imports audio files with an Encord title, and with custom metadata. Custom metadata only appears in the Encord UI in Active and Index as an option to filter your data.
- Audio Metadata: Imports one audio file with the
audiometadata
flag. When theaudiometadata
flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate.
Single Images
For detailed information about the JSON file format used for import go here.
The JSON structure for single images parallels that of videos.
Template: Provides the proper JSON format to import images into Encord.
Examples:
-
Data Imports the images only.
-
Custom Metadata: Imports images with an Encord title for the images and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Embeddings: Imports images with an Encord title, custom metadata, and custom embeddings for each image. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Image Metadata: Imports images with image metadata. This improves the import speed for your images.
Image groups
For detailed information about the JSON file format used for import go here.
- Image groups are collections of images that are processed as one annotation task.
- Images within image groups remain unaltered, meaning that images of different sizes and resolutions can form an image group without the loss of data.
- Image groups do NOT require ‘write’ permissions to your cloud storage.
- Custom metadata is defined per image group, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image groups in the dataset are skipped.
objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
Examples:
-
Data: Imports the image groups only.
-
Custom Metadata: Imports image groups with an Encord title for the image groups and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
Image sequences
For detailed information about the JSON file format used for import go here.
- Image sequences are collections of images that are processed as one annotation task and represented as a video.
- Images within image sequences may be altered as images of varying sizes and resolutions are made to match that of the first image in the sequence.
- Creating Image sequences from cloud storage requires ‘write’ permissions, as new files have to be created in order to be read as a video.
- Each object in the
image_groups
array with thecreateVideo
flag set totrue
represents a single image sequence. - Custom client metadata is defined per image sequence, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image sequences in the dataset are skipped.
createVideo
flag to be set to true
. Both use the key image_groups
.objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
** Examples:**
-
Data: Imports the images groups only.
-
Custom Metadata: Imports image groups and custom metadata. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
DICOM
For detailed information about the JSON file format used for import go here.
- Each
dicom_series
element can contain one or more DICOM series. - Each series requires a title and at least one object URL, as shown in the example below.
- If
skip_duplicate_urls
is set totrue
, all object URLs exactly matching existing DICOM files in the dataset will be skipped.
.dcm
file and does not have to be specific during the upload to Encord. The following is an example JSON for uploading three DICOM series belonging to a study. Each title and object URL correspond to individual DICOM series.
- The first series contains only a single object URL, as it is composed of a single file.
- The second series contains 3 object URLs, as it is composed of three separate files.
- The third series contains 2 object URLs, as it is composed of two separate files.
{
"dicom_series": [
{
"title": "Series-1",
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series1-file.dcm"
},
{
"title": "Series-2",
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series2-file1.dcm",
"objectUrl_1": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series2-file2.dcm",
"objectUrl_2": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series2-file3.dcm",
},
{
"title": "Series-3",
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series3-file1.dcm",
"objectUrl_1": "https://myaccount.blob.core.windows.net/encordcontainer/study1-series3-file2.dcm",
}
],
"skip_duplicate_urls": true
}
NIfTI
The following is an example JSON file for uploading two NIfTI files to Encord.
{
"nifti": [
{
"title": "<file-1>",
"objectUrl": "https://my-bucket/.../nifti-file1.nii"
},
{
"title": "<file-2>",
"objectUrl": "https://my-bucket/.../nifti-file2.nii.gz"
}
],
"skip_duplicate_urls": true
}
You can upload multiple file types using a single JSON file. The example below shows 1 image, 2 videos, 2 image sequences, and 1 image group.
{
"images": [
{
"objectUrl": "https://myaccount.blob.core.windows.net/encordcontainer/Image1.png"
}
],
"videos": [
{
"objectUrl": "https://myaccount.blob.core.windows.net/encordcontainer/Cooking.mp4"
},
{
"objectUrl": "https://myaccount.blob.core.windows.net/encordcontainer/Oranges.mp4"
}
],
"image_groups": [
{
"title": "apple-samsung-light",
"createVideo": true,
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/1-Samsung-S4-Light+Environment/1+(32).jpg",
"objectUrl_1": "https://myaccount.blob.core.windows.net/encordcontainer/1-Samsung-S4-Light+Environment/1+(33).jpg",
"objectUrl_2": "https://myaccount.blob.core.windows.net/encordcontainer/1-Samsung-S4-Light+Environment/1+(34).jpg",
"objectUrl_3": "https://myaccount.blob.core.windows.net/encordcontainer/1-Samsung-S4-Light+Environment/1+(35).jpg"
},
{
"title": "apple-samsung-dark",
"createVideo": true,
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/2-samsung-S4-Dark+Environment/2+(32).jpg",
"objectUrl_1": "https://myaccount.blob.core.windows.net/encordcontainer/2-samsung-S4-Dark+Environment/2+(33).jpg",
"objectUrl_2": "https://myaccount.blob.core.windows.net/encordcontainer/2-samsung-S4-Dark+Environment/2+(34).jpg",
"objectUrl_3": "https://myaccount.blob.core.windows.net/encordcontainer/2-samsung-S4-Dark+Environment/2+(35).jpg"
}
],
"image_groups": [
{
"title": "apple-ios-light",
"createVideo": false,
"objectUrl_0": "https://myaccount.blob.core.windows.net/encordcontainer/3-IOS-4-Light+Environment/3+(32).jpg",
"objectUrl_1": "https://myaccount.blob.core.windows.net/encordcontainer/3-IOS-4-Light+Environment/3+(33).jpg"
}
],
"skip_duplicate_urls": true
}
OTC JSON
Videos
sampling_rate
to 0
. This imports only the first frame and any key frames you specify in the video. This can significantly speed up the import of your data into Active and Index and help you to focus on only data you identify as critical.The following table provides some guidance for the examples provided after the table.
Title | Description |
---|---|
Template | Provides the proper JSON format to import videos into Encord. This template provides examples from the most basic to the most complex. |
Data | Imports videos into Encord. Why would I do this?
|
Key Frames | Imports videos with an Encord title and specifies key frames (frames of interest) for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Custom Metadata | Imports videos with an Encord title, specifies key frames (frames of interest), and custom metadata for Active and Index. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If |
Embeddings | Imports videos with an Encord title, specifies key frames (frames of interest), custom metadata, and custom embeddings for Active and Index. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number. Why would I do this?
Specifying a sampling_rate of 0 only imports the first frame and all key frames of your video into Active and Index.
If Refer to our documentation for more information about Index with Custom Metadata, Index with Custom Embeddings, Active with Custom Metadata and Active with Custom Embeddings. |
Video Metadata | Imports videos with the videoMetadata flag. When the videoMetadata flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate. |
Audio Files
The following is an example JSON file for uploading two audio files to Encord.
- Template: Imports audio files with an Encord title, and with custom metadata. Custom metadata only appears in the Encord UI in Active and Index as an option to filter your data.
- Audio Metadata: Imports one audio file with the
audiometadata
flag. When theaudiometadata
flag is present in the JSON file, we directly use the supplied metadata without performing any additional validation, and do not store the file on our servers. To guarantee accurate labels, it is crucial that the metadata you provide is accurate.
Single Images
For detailed information about the JSON file format used for import go here.
The JSON structure for single images parallels that of videos.
Template: Provides the proper JSON format to import images into Encord.
Examples:
-
Data Imports the images only.
-
Custom Metadata: Imports images with an Encord title for the images and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Embeddings: Imports images with an Encord title, custom metadata, and custom embeddings for each image. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
-
Image Metadata: Imports images with image metadata. This improves the import speed for your images.
Image groups
For detailed information about the JSON file format used for import go here.
- Image groups are collections of images that are processed as one annotation task.
- Images within image groups remain unaltered, meaning that images of different sizes and resolutions can form an image group without the loss of data.
- Image groups do NOT require ‘write’ permissions to your cloud storage.
- Custom metadata is defined per image group, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image groups in the dataset are skipped.
objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
Examples:
-
Data: Imports the image groups only.
-
Custom Metadata: Imports image groups with an Encord title for the image groups and with custom metadata for each image. Custom metadata only appears in Active and Index as an option to filter your data. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
Image sequences
For detailed information about the JSON file format used for import go here.
- Image sequences are collections of images that are processed as one annotation task and represented as a video.
- Images within image sequences may be altered as images of varying sizes and resolutions are made to match that of the first image in the sequence.
- Creating Image sequences from cloud storage requires ‘write’ permissions, as new files have to be created in order to be read as a video.
- Each object in the
image_groups
array with thecreateVideo
flag set totrue
represents a single image sequence. - Custom client metadata is defined per image sequence, not per image.
- If
skip_duplicate_urls
is set totrue
, all URLs exactly matching existing image sequences in the dataset are skipped.
createVideo
flag to be set to true
. Both use the key image_groups
.objectUrl_{position_number}
).Template: Provides the proper JSON format to import image groups into Encord.
** Examples:**
-
Data: Imports the images groups only.
-
Custom Metadata: Imports image groups and custom metadata. This example includes the following custom metadata types: boolean, varchar, datetime, uuid, number.
DICOM
For detailed information about the JSON file format used for import go here.
- Each
dicom_series
element can contain one or more DICOM series. - Each series requires a title and at least one object URL, as shown in the example below.
- If
skip_duplicate_urls
is set totrue
, all object URLs exactly matching existing DICOM files in the dataset will be skipped.
.dcm
file and does not have to be specific during the upload to Encord. The following is an example JSON for uploading three DICOM series belonging to a study. Each title and object URL correspond to individual DICOM series.
- The first series contains only a single object URL, as it is composed of a single file.
- The second series contains 3 object URLs, as it is composed of three separate files.
- The third series contains 2 object URLs, as it is composed of two separate files.
{
"dicom_series": [
{
"title": "Series-1",
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series1-file.dcm"
},
{
"title": "Series-2",
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series2-file1.dcm",
"objectUrl_1": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series2-file2.dcm",
"objectUrl_2": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series2-file3.dcm",
},
{
"title": "Series-3",
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series3-file1.dcm",
"objectUrl_1": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/study1-series3-file2.dcm",
}
],
"skip_duplicate_urls": true
}
NIfTI
The following is an example JSON file for uploading two NIfTI files to Encord.
{
"nifti": [
{
"title": "<file-1>",
"objectUrl": "https://my-bucket/.../nifti-file1.nii"
},
{
"title": "<file-2>",
"objectUrl": "https://my-bucket/.../nifti-file2.nii.gz"
}
],
"skip_duplicate_urls": true
}
You can upload multiple file types using a single JSON file. The example below shows 1 image, 2 videos, 2 image sequences, and 1 image group.
{
"images": [
{
"objectUrl": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/Image1.png"
}
],
"videos": [
{
"objectUrl": "https://encord-bucket.obs.eu-de.otc.t-systems.com/videos/Cooking.mp4"
},
{
"objectUrl": "https://encord-bucket.obs.eu-de.otc.t-systems.com/videos/Oranges.mp4"
}
],
"image_groups": [
{
"title": "apple-samsung-light",
"createVideo": true,
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/1+(32).jpg",
"objectUrl_1": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/1+(33).jpg",
"objectUrl_2": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/1+(34).jpg",
"objectUrl_3": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/1+(35).jpg"
},
{
"title": "apple-samsung-dark",
"createVideo": true,
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/2+(32).jpg",
"objectUrl_1": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/2+(33).jpg",
"objectUrl_2": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/2+(34).jpg",
"objectUrl_3": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/2+(35).jpg"
}
],
"image_groups": [
{
"title": "apple-ios-light",
"createVideo": false,
"objectUrl_0": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/3+(32).jpg",
"objectUrl_1": "https://encord-bucket.obs.eu-de.otc.t-systems.com/images/3+(33).jpg"
}
],
"skip_duplicate_urls": true
}
Use a Multi-Region Access Point
When using a Multi-Region Access Point for your AWS S3 buckets the JSON file has to be slightly different from the examples provided. Instead of an object’s URL, objects are specified using the ARN of the Multi-Region Access Point followed by the object name. The example below shows how video files from a Multi-Region Access Point would be specified.
{
"videos": [
{
"objectUrl": "Multi-Region-Access-Point-ARN + <object name_1>"
},
{
"objectUrl": "Multi-Region-Access-Point-ARN + <object name_2>",
"title": "my-custom-video-title.mp4",
"clientMetadata": {"optional": "metadata"}
}
],
"skip_duplicate_urls": true
}
Create CSV file for import
In the CSV file format, the column headers specify which type of data is being uploaded. You can add and single file format at a time, or combine multiple data types in a single CSV file.
Details for each data format are given in the sections below.
- Object URLs can’t contain whitespace.
- For backwards compatibility reasons, a single column CSV is supported. A file with the single
ObjectUrl
column is interpreted as a request for video upload. If your objects are of a different type (for example, images), this error displays: “Expected a video, got a file of type XXX”.
Videos
A CSV file containing videos should contain two columns with the following mandatory column headings:
‘ObjectURL’ and ‘Video title’. All headings are case-insensitive.
-
The ‘ObjectURL’ column containing the
objectUrl
. This field is mandatory for each file, as it specifies the full URL of the video resource. -
The ‘Video title’ column containing the
video_title
. If left blank, the original file name is used.
In the example below files 1, 2 and 4 will be assigned the names in the title column, while file 3 will keep its original file name.
ObjectUrl | Video title |
---|---|
path/to/storage-location/frame1.mp4 | Video 1 |
path/to/storage-location/frame2.mp4 | Video 2 |
path/to/storage-location/frame3.mp4 | |
path/to/storage-location/frame4.mp4 | Video 3 |
A CSV file containing single images should contain two columns with the following mandatory headings:
‘ObjectURL’ and ‘Image title’. All headings are case-insensitive.
-
The ‘ObjectURL’ column containing the
objectUrl
. This field is mandatory for each file, as it specifies the full URL of the image resource. -
The ‘Image title’ column containing the
image_title
. If left blank, the original file name is used.
In the example below files 1, 2 and 4 will be assigned the names in the title column, while file 3 will keep its original file name.
ObjectUrl | Image title |
---|---|
path/to/storage-location/frame1.jpg | Image 1 |
path/to/storage-location/frame2.jpg | Image 2 |
path/to/storage-location/frame3.jpg | |
path/to/storage-location/frame4.jpg | Image 3 |
Image groups
A CSV file containing image groups should contain three columns with the following mandatory headings:
‘ObjectURL’, ‘Image group title’, and ‘Create video’. All three headings are case-insensitive.
-
The ‘ObjectURL’ column containing the
objectUrl
. This field is mandatory for each file, as it specifies the full URL of the resource. -
The ‘Image group title’ column containing the
image_group_title
. This field is mandatory, as it determines which image group a file will be assigned to.
In the example below the first two URLs are grouped together into ‘Group 1’, while the following two files are grouped together into ‘Group 2’.
ObjectUrl | Image group title | Create video |
---|---|---|
path/to/storage-location/frame1.jpg | Group 1 | false |
path/to/storage-location/frame2.jpg | Group 1 | false |
path/to/storage-location/frame3.jpg | Group 2 | false |
path/to/storage-location/frame4.jpg | Group 2 | false |
Image sequences
A CSV file containing image sequences should contain three columns with the following mandatory headings: ‘ObjectURL’, ‘Image group title’, and ‘Create video’. All three headings are case-insensitive.
-
The ‘ObjectURL’ column containing the
objectUrl
. This field is mandatory for each file, as it specifies the full URL of the resource. -
The ‘Image group title’ column containing the
image_group_title
. This field is mandatory, as it determines which image sequence a file will be assigned to. The dimensions of the image sequence are determined by the first file in the sequence. -
The ‘Create video’ column. This can be left blank, as the default value is ‘true’.
In the example below the first two URLs are grouped together into ‘Sequence 1’, while the second two files are grouped together into ‘Sequence 2’.
ObjectUrl | Image group title | Create video |
---|---|---|
path/to/storage-location/frame1.jpg | Sequence 1 | true |
path/to/storage-location/frame2.jpg | Sequence 1 | true |
path/to/storage-location/frame3.jpg | Sequence 2 | true |
path/to/storage-location/frame4.jpg | Sequence 2 | true |
A CSV file containing DICOM files should contain two columns with the following mandatory headings: ‘ObjectURL’ and ‘Dicom title’. Both headings are case-insensitive.
-
The ‘ObjectURL’ column containing the
objectUrl
. This field is mandatory for each file, as it specifies the full URL of the resource. -
The ‘Series title’ column containing the
dicom_title
. When two files are given the same title they are grouped into the same DICOM series. If left blank, the original file name is used.
In the example below the first two files are grouped into ‘dicom series 1’, the next two files are grouped into ‘dicom series 2’, while the final file will remain separated as ‘dicom series 3’.
ObjectUrl | Series title |
---|---|
path/to/storage-location/frame1.dcm | dicom series 1 |
path/to/storage-location/frame2.dcm | dicom series 1 |
path/to/storage-location/frame3.dcm | dicom series 2 |
path/to/storage-location/frame4.dcm | dicom series 2 |
path/to/storage-location/frame5.dcm | dicom series 3 |
Multiple file types
You can upload multiple file types with a single CSV file by using a new header each time there is a change of file type. Three headings will be required if image sequences are included.
true
all files that are not image sequences must contain the value false
The example below shows a CSV file for the following:
- Two image sequences composed of 2 files each.
- One image group composed of 2 files.
- One single image.
- One video.
ObjectUrl | Image group title | Create video |
---|---|---|
path/to/storage-location/frame1.jpg | Sequence 1 | true |
path/to/storage-location/frame2.jpg | Sequence 1 | true |
path/to/storage-location/frame3.jpg | Sequence 2 | true |
path/to/storage-location/frame4.jpg | Sequence 2 | true |
path/to/storage-location/frame5.jpg | Group 1 | false |
path/to/storage-location/frame6.jpg | Group 1 | false |
ObjectUrl | Image title | Create video |
path/to/storage-location/frame1.jpg | Image 1 | false |
ObjectUrl | Image title | Create video |
full/storage/path/video.mp4 | Video 1 | false |
STEP 6: Import your data
Import Cloud Data
- Navigate to Files section of Index in the Encord platform.
- Click into a Folder.
- Click + Upload files. A dialog appears.
- Click Import from cloud data.
Import Local Data
- Navigate to Files section of Index in the Encord platform.
- Click into a Folder.
- Click + Upload files. A dialog appears.
-
Click one of the following:
- Upload: Upload images, videos, and audio files.
- Batch images as: Upload image batches as image groups or image sequences.
- DICOM/NifTi: Upload DICOM or NifTi series.
-
Click Upload after selecting your images or series.
Your files upload into the Folder in Encord.
Was this page helpful?
- STEP 1: Set up your Org
- Add Users
- User roles
- Adding and removing users
- Add User Groups
- Create user groups
- Add Project Tags
- Create Project tags
- STEP 2: Create a Cloud Integration
- STEP 3: Create Metadata Schema
- Custom metadata
- Metadata schema table
- Import your metadata schema to Encord
- Verify your schema
- STEP 4: Create a Folder in Index
- STEP 5: Create JSON or CSV for Import
- STEP 6: Import your data
- Import Cloud Data
- Import Local Data