DigiFarm: Optimize Crop Production Using Neural Network Models on Oracle Cloud

DigiFarm runs its cloud-native precision agriculture platform on Oracle Cloud Infrastructure (OCI), helping farmers, and other agribusinesses determine seeded field acre boundaries.

With its deep neural network models running on Oracle Bare Metal GPUs, DigiFarm ingests optical satellite images from the European Space Agency (ESA), increases their resolution, and then provides a georeference map, which has so far helped some 14,000 producers in 30 countries delineate their seeded field acre boundaries with 92% accuracy.

Customer Story

Learn more about DigiFarm's journey to Oracle Cloud:

Architecture

After ingesting satellite images from the European Space Agency (ESA), using a public bucket in AWS, they are brought into an instance on Oracle Cloud Infrastructure and placed into Oracle Cloud Infrastructure Object Storage. DigiFarm then trains its deep neural network model to classify and enhance the resolution of those images in a private subnet on seven Oracle bare metal servers.

Using a combination of NVIDIA Tesla A100, V100, and P100 GPUs, DigiFarm applies its inference models to help analyze the enhanced images and determine the precise boundaries of a farmer's seeded acres. Once the boundaries are delineated, the images are stored in block storage and are turned into georeference maps and made available to DigiFarm's clients.

DigiFarm's clients can access their georeference maps using Oracle API Gateway, which instructs Oracle Functions to pull the delineated images from block storage.

The following diagrams illustrates the architecture. The first image shows the machine learning training and inference workflow and the second image shows the client services workflow.

  1. Field delineation training instances (bare metal and block storage) are provisioned using Docker images.
  2. The field delineation training instances download satellite imagery data from ESA or other sources using the network address translation (NAT) gateway and store the data in block storage.
  3. The field delineation training instances enhance the images using Digifarm's neural network algorithm running on NVIDIA GPUs on bare metal by retrieving metadata from the shared database system. After image enhancement is complete, the field delineation training instances are de-provisioned.
  4. Enhanced images are saved in object storage.
  5. Field delineation and deep resolution inference engines retrieve data from object storage, apply vectorization, and build georeferenced maps.

    digifarm-oci-ml-oracle.zip

  6. Digifarm’s clients access their georeferenced maps using an API which is exposed using Oracle API Gateway.
  7. The API allows clients to access a library of user-servicing functions built on the Oracle Functions platform.
  8. The user-servicing functions pull the optimized satellite images from the object storage and access the field boundary delineated polygons and metadata.

    GUID-4F31A37B-30C9-43A4-B0CD-39E3E95E15DF

The architecture has the following components:

  • Region

    An Oracle Cloud Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).

  • Compartment

    Compartments are cross-region logical partitions within an Oracle Cloud Infrastructure tenancy. Use compartments to organize your resources in Oracle Cloud, control access to the resources, and set usage quotas. To control access to the resources in a given compartment, you define policies that specify who can access the resources and what actions they can perform.

  • Identity and access management (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) enables you to control who can access your resources in Oracle Cloud Infrastructure and the operations that they can perform on those resources.

  • Availability domain

    Availability domains are standalone, independent data centers within a region. The physical resources in each availability domain are isolated from the resources in the other availability domains, which provides fault tolerance. Availability domains don’t share infrastructure such as power or cooling, or the internal availability domain network. So, a failure at one availability domain is unlikely to affect the other availability domains in the region.

  • Fault domain

    A fault domain is a grouping of hardware and infrastructure within an availability domain. Each availability domain has three fault domains with independent power and hardware. When you distribute resources across multiple fault domains, your applications can tolerate physical server failure, system maintenance, and power failures inside a fault domain.

  • Virtual cloud network (VCN) and subnets

    A VCN is a customizable, software-defined network that you set up in an Oracle Cloud Infrastructure region. Like traditional data center networks, VCNs give you complete control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.

  • Security list

    For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.

  • Dynamic routing gateway (DRG)

    The DRG is a virtual router that provides a path for private network traffic between a VCN and a network outside the region, such as a VCN in another Oracle Cloud Infrastructure region, an on-premises network, or a network in another cloud provider.

  • Network address translation (NAT) gateway

    A NAT gateway enables private resources in a VCN to access hosts on the internet, without exposing those resources to incoming internet connections.

  • Internet gateway

    The internet gateway allows traffic between the public subnets in a VCN and the public internet.

  • API gateway

    Oracle API Gateway service enables you to publish APIs with private endpoints that are accessible from within your network, and which you can expose to the public internet if required. The endpoints support API validation, request and response transformation, CORS, authentication and authorization, and request limiting.

  • Bastion host

    The bastion host is a compute instance that serves as a secure, controlled entry point to the topology from outside the cloud. The bastion host is provisioned typically in a demilitarized zone (DMZ). It enables you to protect sensitive resources by placing them in private networks that can't be accessed directly from outside the cloud. The topology has a single, known entry point that you can monitor and audit regularly. So, you can avoid exposing the more sensitive components of the topology without compromising access to them.

  • Virtual Machine

    The Oracle Cloud Infrastructure Compute service enables you to provision and manage compute hosts in the cloud. You can launch compute instances with shapes that meet your resource requirements for CPU, memory, network bandwidth, and storage. After creating a compute instance, you can access it securely, restart it, attach and detach volumes, and terminate it when you no longer need it.

    • Training instances: These instances are used to develop and verify the application model, such as a neural network simulation. Training nodes are powerful instances that retrieve data from Oracle Cloud Infrastructure Object Storage, perform operations on the data according to the model being used, and store the data in attached shared Oracle Cloud Infrastructure Block Volumes.
    • Inference server: These instances prepare the data processed by the training nodes and stored in the block volumes for consumption by user applications.
    • Bare metal: The bare metal shape can reduce the computation duration by 50% when compared to the virtual machine instances running less compute-intensive workloads.
  • Functions

    Oracle Functions is a fully managed, multitenant, highly scalable, on-demand, Functions-as-a-Service (FaaS) platform. It is powered by the Fn Project open source engine. Functions enable you to deploy your code, and either call it directly or trigger it in response to events. Oracle Functions uses Docker containers hosted in Oracle Cloud Infrastructure Registry.

  • Database system

    The database system lets you easily build, scale, and secure Oracle databases with license-included pricing in Oracle Cloud. You can also leverage Oracle Cloud Infrastructure to manage Oracle databases in your data center alongside your cloud databases.

  • Object storage

    Object storage provides quick access to large amounts of structured and unstructured data of any content type, including database backups, analytic data, and rich content such as images and videos. You can safely and securely store and then retrieve data directly from the internet or from within the cloud platform. You can seamlessly scale storage without experiencing any degradation in performance or service reliability. Use standard storage for "hot" storage that you need to access quickly, immediately, and frequently. Use archive storage for "cold" storage that you retain for long periods of time and seldom or rarely access.

  • Block volume

    With block storage volumes, you can create, attach, connect, and move storage volumes, and change volume performance to meet your storage, performance, and application requirements. After you attach and connect a volume to an instance, you can use the volume like a regular hard drive. You can also disconnect a volume and attach it to another instance without losing data.

Get Featured in Built and Deployed

Want to show off what you built on Oracle Cloud Infrastructure? Care to share your lessons learned, best practices, and reference architectures with our global community of cloud architects? Let us help you get started.

  1. Download the template (PPTX)

    Illustrate your own reference architecture by dragging and dropping the icons into the sample wireframe.

  2. Watch the architecture tutorial

    Get step by step instructions on how to create a reference architecture.

  3. Submit your diagram

    Send us an email with your diagram. Our cloud architects will review your diagram and contact you to discuss your architecture.

Explore More

Learn more about the features of this architecture.

Acknowledgements

  • Authors: Sasha Banks-Louie, Gabriel Grigorie, Mitesh Bhopale, Andriy Tsybulsky
  • Contributors: Robert Lies, Vladimir Taft