We changed our name from IT Central Station: Here's why
Get our free report covering OpenVINO, IBM, and other competitors of PyTorch. Updated: January 2022.
565,304 professionals have used our research since 2012.

Read reviews of PyTorch alternatives and competitors

Machine/Deep Learning Engineer at UpWork Freelancer
Real User
Top 20
Speeds up the development process but needs to evolve more to stay relevant
Pros and Cons
  • "Caffe has helped our company become up-to-date in the market and has helped us speed up the development process of our projects."
  • "The concept of Caffe is a little bit complex because it was developed and based in C++. They need to make it easier for a new developer, data scientist, or a new machine or deep learning engineer to understand it."

What is our primary use case?

We used this solution to make a face recognition system that uses gender and age prediction. We have to recognize and register faces for security reasons. Since we don't know all the people that are passing by our cameras, we track them and assign a unique ID for each face. We keep tracking them as long as they are visible within the camera field. After that, we predict the age and gender of those people, and then we send them to our database system to produce statistics. Finally, there is a second-team that analyses the statistics.

We also use it for transfer learning, which is a style transfer. We have two kinds of input images. Let's say the first image is of a person, and the second image is a style. We want to transfer information from the first image to the second. This is called image-to-image translation. First, we collect the data, then we clean it. After that, we have the model and we make our inference.

The third use case for us is based on image retrieval. We have a full database — it's a huge database. We have used Spark and HDFS — big data tools; it's a distributed database. We have to extract features for each image so we needed to develop a model to retrieve the images. Let's say the user has input images, and they have a web interface like Google search — when you upload an image, it will retrieve the closest one to you. We proceed with feature extraction and a calculation for each image. We save them and after that, we train a model to retrieve the closest images to the stored one. We use GitHub to upload these input images and after that, our system retrieves and outputs the 10 closest images to them.

How has it helped my organization?

Since its development, Caffe has been one of the most famous solutions. TensorFlow comes in second place — it's still a little underdeveloped; it doesn't support all the features. Caffe has helped our company become up-to-date in the market and has helped us speed up the development process of our projects. 

For people that are comfortable with C++, they will not experience problems like they would with TensorFlow and other libraries. Using C++, you can develop your mobile and IOS models. In short, as we are very comfortable with C++, Caffe has helped our company speed up the development process.

Python is easy, but for people coming from C++, it's not easy to learn. If you're familiar with C++, then implementation, development, and configuration will be much faster with Caffe. 

What is most valuable?

Caffe is up to date. For example, in the case of TensorFlow, there are some versions of GPU and other operations that are not supported yet. For deep learning operations, we often have to customize or develop them by ourselves, which takes a lot of time. Other libraries are mostly in Python, but Caffe is based on C++ and touches the low-level of the system. In short, relating to optimization and time, from my point of view, Caffe is more suitable.

What needs improvement?

In the future, they should expand text processing, for a recommendation system, or to support some other models as well — that would be great. The concept of Caffe is a little bit complex because it was developed and based in C++. They need to make it easier for a new developer, data scientist, or a new machine or deep learning engineer to understand it. You can't work with metrics and vectors as Python does.

Python is a vector-oriented language, but Caffe is not. When you deal with memory in C++, you have to allocate the data you will use in memory. You have to manage everything in C++. Conversely, in Python, you don't need to do that since everything is abstract and done by Python itself. It depends on every use case or your requirement goals. Some clients will require you to use Caffe because maybe their projects are old and they want to continue with Caffe. Others are comfortable with their current situation or they are afraid of migrating to another library. From my point of view, they need to make it easier for a new developer to use it. They should incorporate Python API to make it richer, overall.

What do I think about the stability of the solution?

Caffe as a solution is well optimized because it uses C++ — it's stable. When it comes to making models, Caffe is very complex compared to other libraries, but stability-wise and optimization-wise, it's great.

What do I think about the scalability of the solution?

It's not that scalable. TensorFlow on YARN is more scalable. YARN is used as a distribution system. From my experience, you have to go with TensorFlow on YARN for scalability. YARN can manage everything for you, including the memory, the distribution, and the containers as well. Personally, I don't recommend Caffe if you're looking for a scalable system. You can deploy TensorFlow in your infrastructure or on your cluster, then, yarn can manage it and make it scalable to optimize the memory, the container, etc. Overall, I'd recommend TensorFlow on Yarn for this matter.

Which solution did I use previously and why did I switch?

Recently, TensorFlow and PyTorch merged together — PyTorch in TensorFlow or TensorFlow in PyTorch. If you look at the market, some of the greatest companies are migrating from TensorFlow to PyTorch.

PyTorch is better at debugging than TensorFlow. There are a lot of tools in TensorFlow that are not present in PyTorch. Caffe offers different tools altogether.

Caffe is based on something we call the Blob. PyTorch and TensorFlow are based on tensor, which is multilinear annotation for a higher dimension. If there is a new data scientist or a new user who wants to learn or practice deep learning, If he starts with Caffe, it's going to be very complicated for him since he has to understand what is going on in the background in terms of memory, the processor, the GPU. TensorFlow and PyTorch are abstract — we just have to declare a tensor. You just have to declare your model, your layers, and so on. The biggest differences have to do with the User Interfaces.

You can run a TensorFlow model or a PyTorch model on a distributed solution or infrastructure. Also, the community of TensorFlow and PyTorch, it's very rich. The number of people that use Caffe is not really comparable to TensorFlow and PyTorch.

How was the initial setup?

The initial setup is complex, even in Python. We had to install the version that we were using manually and we had a bug that caused some issues. There is a lot of work involved in the initial setup, even when setting up a GPU. They need to make it easy for the developer to set it up, like TensorFlow, where it's just a single pipeline. They should make it easier for a new developer by including everything in a single package that doesn't require a lot of installation instructions.

It took me three days just to complete the installation process.

If you need post-deployment, it will be related to programming configuration or modifying code for a new requirement. 

What about the implementation team?

It really depends on the requirement. As of now, we don't have a strict plan in place.

What other advice do I have?

On a scale from one to ten, I would give Caffe a rating of seven.

If you're going to use this solution, then you have to learn C++. You need to understand how C++ works so that you'll have a better understanding of how the memory is handled and the resources are handled in C++. After that, you have to start learning Caffe step-by-step. Caffe is a new concept, especially the Blob. Caffe is based on Blob so you need to understand what that is and how it's implemented because, with Caffe, you have to make a transformation to fit that.

You need to understand all of this before you start. After that, you have to look at open-source solutions and their code and understand what they are doing and why they are doing it. In order to implement your own solution or to be comfortable using Caffe, you need to be able to read the code, the documentation, and everything before you begin. Someone with no background in Caffe, for example, someone who migrates from TensorFlow or PyTorch, that person will not understand anything because they're completely different. If you want to implement a deep learning model in TensorFlow, it can be done in roughly 10 lines, but with Caffe, it's going to be a completely new project. For these reasons, you need to understand C++ and the concept of Caffe in general.

Every day, a ton of papers and articles are published. They are not using Caffe, they are using either TensorFlow or PyTorch. To be honest, I recommend that people start with TensorFlow and PyTorch because I see them as the future; there is something great you can do with them — especially since they support mobile device implementation. If you are working with Caffe, you have to convert your model from Caffe to TensorFlow or PyTorch in order for it to be suitable for mobile applications.

Which deployment model are you using for this solution?

On-premises
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Gabir Yousef
Machine Learning Engineer at Upwork
Real User
Top 5
Easy to set up with great documentation and good stability
Pros and Cons
  • "Google is behind TensorFlow, and they provide excellent documentation. It's very thorough and very helpful."
  • "I know this is out of the scope of TensorFlow, however, every time I've sent a request, I had to renew the model into RAM and they didn't make that prediction or inference. This makes the point for the request that much longer. If they could provide anything to help in this part, it will be very great."

What is our primary use case?

I primarily used the solution for computer vision applications, for example, detection and segmentation, and OCR.

We used an architecture from a published paper. It was based on TensorFlow and we upgraded it and developed on it. I also worked on face verification and likeness detection. We are working on anti-spoofing detection. We did some things around face verification and likeness detection. I used TensorFlow specifically.

I've also used the solution to detect hands, tracking customers in the supermarkets, and using the solution for detecting the pickup and dropping of objects from shelf to basket in the supermarket.

Lately, I've been working on a project in Arabic that is designed to detect handwriting. I also use PyTorch to help with this task.

How has it helped my organization?

For one particular project, we did an extraction of the Arabic language from a crucial document, like an ID. We needed to capture the ID using the application so that the application sends the ID to the server. We needed to make an Egyptian ID detection on mobile. I built a simple commercial network to customize the ID and converted it into TensorFlow White and made some compositions to make it faster to run. We deployed it on the mobile. For this bot, there's full support in this area, which is great.

What is most valuable?

The solution is quite useful for production. It tends to provide for digital devices or mobile devices. You can deploy your model on Android or iOS. I did that before on Android. It provides TensorFlow GS or JavaScript to run TensorFlow applications in the browser. 

It's quite a valuable solution when we go to production.

Google is behind TensorFlow, and they provide excellent documentation. It's very thorough and very helpful. 

What needs improvement?

Overall, the solution has been quite helpful. I can't recall missing any features when I was using it.

I know this is out of the scope of TensorFlow, however, every time I've sent a request, I had to renew the model into RAM and they didn't make that prediction or inference. This makes the point for the request that much longer. If they could provide anything to help in this part, it will be very great.

What do I think about the stability of the solution?

The solution is quite stable. It's reliable. It doesn't crash or freeze. There are no bugs or glitches to deal with. We've been happy with the performance.

What do I think about the scalability of the solution?

The scalability of the solution is good. When it comes to TensorFlow (or PyTorch) you can train on multiple GPUs at the same time, and multiple machines at the same time, also. 

In TensorFlow, I didn't train on multiple GPUs, yet, however, I know it's very easy and straightforward. I've been through it. Scaling should be a problem for a company. If they want to scale, they can.

How are customer service and technical support?

I've never been in touch with technical support. I can't speak to their level of knowledge or how quickly they respond.

Which solution did I use previously and why did I switch?

I also use PyTorch and Amazon SageMaker.

Amazon Solution provides the how-to where we can use PyTorch and TensorFlow to train models on huge datasets on AWS end-user. They are complementing each other on a project.

How was the initial setup?

The entire implementation process is quite straightforward. It's not complex at all.

The deployment is very fast. You can have it up and running in five minutes. You just go and install the version you would like to use and you are done. It's all very simple.

I always go with the deployment with TensorFlow. I don't try to use PyTorch in this area. A year ago, when I was deploying a semantic segmentation model on the server, each time I sent a request that I need to reload the model input that ends.

What's my experience with pricing, setup cost, and licensing?

It's my understanding that the version we use is free. It doesn't cost any money.

What other advice do I have?

When we did the utilization applications, we were deploying on digital ocean servers. For the projects that I'm working on now, we are planning to deploy it on its own port attached to the robot. We haven't done it, yet. We are finishing the project right now. For deploying the solutions, I deploy them on the digital ocean. 

I'd recommend the solution. I'd also recommend users considering the solution do a bit of studying. There are some great courses on Coursera and there's a recent one called DeepLearning.AI that is extremely useful.

Overall, as I use the product pretty much everywhere, I would rate it at a ten out of ten.

Disclosure: I am a real user, and this review is based on my own experience and opinions.
Get our free report covering OpenVINO, IBM, and other competitors of PyTorch. Updated: January 2022.
565,304 professionals have used our research since 2012.