# Why Curalate migrated from Caffe to MXNet for deep learning development and deployment

DevFeed: [Why Curalate migrated from Caffe to MXNet for deep learning development and deployment](<https://devfeed.tech/articles/how-curalate-uses-mxnet-on-aws-for-deep-learning-magic-26525.md>)

Original publisher: [Read original article](<http://engineering.curalate.com/2018/08/01/mxnet-case-study.html>)

Published: 2018-08-01T00:00:00Z

Content type: article

Language: en

Sources: [Curalate](<https://devfeed.tech/sources/curalate.md>)

Topics: [Deep learning](<https://devfeed.tech/topics/deep-learning.md>), [Computer vision](<https://devfeed.tech/topics/computer-vision.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Deployment](<https://devfeed.tech/topics/deployment.md>), [Development](<https://devfeed.tech/topics/development.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [ImageNet](<https://devfeed.tech/topics/imagenet.md>), [onnx](<https://devfeed.tech/topics/onnx.md>)

Tags: [computer-vision](<https://devfeed.tech/tags/computer-vision.md>), [deep-learning](<https://devfeed.tech/tags/deep-learning.md>), [deeplearning](<https://devfeed.tech/tags/deeplearning.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [development](<https://devfeed.tech/tags/development.md>), [fork](<https://devfeed.tech/tags/fork.md>), [framework](<https://devfeed.tech/tags/framework.md>), [model](<https://devfeed.tech/tags/model.md>), [mxnet](<https://devfeed.tech/tags/mxnet.md>), [onnx](<https://devfeed.tech/tags/onnx.md>), [python](<https://devfeed.tech/tags/python.md>), [scala](<https://devfeed.tech/tags/scala.md>)

## AI overview

Curalate describes migrating from Caffe to MXNet for computer vision systems. The post explains how MXNet supports experimentation, pre-trained models, model conversion, and integration into microservices and production environments.

## Source excerpt

This post was simultaneously published to Medium. At Curalate, we use state of the art deep learning and computer vision to add a layer of magic to our products. Intelligent Product Tagging, for example, identifies our clients' products in user-generated photos. Being a startup, we need to build these deep learning and computer vision systems the same way we do the rest of our products: quickly. Our computer vision systems are built in two phases, research and productization, and we require a deep learning framework that accelerates both. During the research phase, we need a framework that's quick to get started with and is flexible enough to experiment with new ideas. Once we have a solution, we need a framework that can easily be integrated into a microservice and deployed to multiple production environments. In the past, we used Caffe for experimentation and our own custom inference interface to deploy the trained models to production. Experimentation was slow due to Caffe's dated Python API, lack of automatic differentiation, unreliable build/install process, and clunky support for advanced layers which required us to maintain our own custom fork. Productization of Caffe was challenging since we had to maintain our own JNI interface. We needed new and modern framework that fulfilled all of our needs while saving us from the shortcomings of Caffe. After a review of all the available options, we decided to move to MXNet. In this post, we'll discuss why we migrated to MXNet as our deep learning framework of choice to facilitate our speed of experimentation, development, and deployment. Training and Experimentation Whenever we are faced with a new computer vision problem, we start by looking at existing state-of-the-art implementations. If we are lucky the functionality of the service we are implementing is similar to an existing pre-trained model for MXNet. MXNet has a fairly fleshed out and maintained Model Zoo that contains all of the standard pre-trained models