Title: I'm writing a book on Deep Learning and Convolutional Neural Networks (and I need your advice). - PyImageSearch

URL Source: https://pyimagesearch.com/2016/12/12/im-writing-a-book-on-deep-learning-and-convolutional-neural-networks-and-i-need-your-advice/

Published Time: 2016-12-12T15:00:22+00:00

Markdown Content:
![Image 1: dl_book_announcement_header](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20500%20440'%3E%3C/svg%3E)

You may have heard me mention it in a passing comment on the PyImageSearch blog…

Maybe I even hinted at it in a 1-on-1 email…

Or perhaps you simply saw the writing on the wall due to the recent uptick in Deep Learning/Neural Network tutorials here on the blog…

**But I’m here today to tell you that the rumors are true:**

I am writing a new book on _**Deep Learning**_ with a focus on:

*   _**Neural Networks and Machine Learning.**_
*   _**Convolutional Neural Networks (CNNs).**_
*   _**Object detection/localization with Deep Learning.**_
*   _**Training large-scale (ImageNet-level) networks.**_
*   _**Hands-on implementation using the Python programming language and the Keras + mxnet libraries.**_

As you can see, this book will mainly focus on Deep Learning in the context of _image classification and understanding._ While there are many facets of Deep Learning, I feel more qualified (and most capable of) writing a Deep Learning book _specific_ to Convolutional Neural Networks and image classification (and therefore the relation to computer vision in general).

_**But before I can publish the book, I need your help first…**_

To start, I haven’t finalized the name of the book yet. I’ll be sending an email with a survey to nail down the book title next week, so if you’re interested in helping name the book, _stay tuned for this email._

After the book is named, I’ll be launching a Kickstarter campaign in _**mid-January 2017**_ to finish funding the Deep Learning book.

Once the funding is complete, I _fully intend_ on having the book _completed_ and _published_ by _**Summer/Autumn 2017**_.

To learn more about the upcoming Deep Learning + Convolutional Neural Network + Image Classification book, and more importantly, _**lend your opinion to help shape the future of the book**_, keep reading.

Every year I take a 3-day “retreat” of sorts.

I venture out to a National Park in the western part of the United States (normally somewhere in Utah, Arizona, or Nevada).

I sit by myself along the peaks of _Angels Landing_, _The Subway_, or even _Observation Point_ totally disconnected:

![Image 2: Figure 1: Sitting on top of Observation Point, contemplating life, existence...and what to put in the upcoming Deep Learning book.](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20600%20450'%3E%3C/svg%3E)

**Figure 1:** Sitting on top of Observation Point, contemplating life, existence…_and what to put in the upcoming Deep Learning book._

Besides the clothes on my back, my hiking gear, and a supply of food and water I’m essentially “naked” — I don’t bring my laptop, iPad, or anything electronic (besides a cellphone, turned off, and safely waterproofed and buried in my bag for emergency purposes).

I sit there overlooking the majestic views with only two “natural” resources: _my pen and notebook._

About 6 months ago I took one of these 3-day retreats and spent _hours_ enraptured in thought, pondering what topics I should cover in this upcoming Deep Learning + Image Classification book.

_**These days were some of the most fruitful, productive periods of my life.**_

After only 3 days of hiking I had over 60+ pages of notes in my notebook.

As soon as I got home from the trip I _immediately_ broke ground on the book.

I started writing code.

Gathering results.

And I’m now pleased to say that I’ve coded over _70% of the projects_ and gathered over _60% of the results_ required to put this Deep Learning + Convolutional Neural Network book together…

_**…but I need your help to get the rest of the way there.**_

Any successful writer, entrepreneur, or business owner (especially in a highly technical field) will tell you the importance of sharing what you’re doing/building with your audience so they can provide you with feedback, input, and insights.

The _last_ thing you would want to do is write a book (or build a product) that no one wants.

I’m no different.

**In order to make this Deep Learning book a success, _I need your help._**

In the following section I’ve included a rough sketch of what I plan to cover in this Deep Learning book.

This sketch is by no means finalized, but it _does_ reflect what I think is important to review in a book focusing on Deep Learning, Convolutional Neural Networks, and Image Classification.

Take a look at this list of topics, then be sure to send me an email, [shoot me a message](https://pyimagesearch.com/contact/), or reply in the comments form at the bottom of this post with your feedback/suggestions.

### What is going to be covered in this Deep Learning + Convolutional Neural Network book?

My general plan for this upcoming Deep Learning book is to focus primarily on Convolutional Neural Networks (CNNs) and image classification/understanding using the Python programming language.

This book will be _very detailed_, including academic citations and references to current state-of-the-art work, while at the same time being _super practical_ and _hands-on_ (with lots of code) in the same style as the rest of the PyImageSearch blog. All code examples will be done in Python using either [Keras](https://keras.io/) or the [mxnet](http://mxnet.io/) library.

While there are many facets of Deep Learning, my primary area of expertise lies within computer vision and image classification — thus I think it’s important that I write what I know about.

When it comes to structuring the Deep Learning book, I’ll be breaking the book into “tiers”, just like I do for _[Practical Python and OpenCV](https://pyimagesearch.com/practical-python-opencv/)_.

By breaking the book into tiers I’ll be able to allow you (the reader) to select the tier that best fits your needs and budget.

This means that if you’re just getting started with Deep learning you’ll be able to afford one of the cheaper bundles to help you get up to speed.

And if you already have experience in the Deep Learning world (or if you simply want the _complete package_) and want to learn more advanced, scalable techniques, then you’ll be able to go for one of the higher tier bundles as well.

I haven’t fully fleshed out where the “line” will be drawn separating each of the tiers/bundles (although I have a pretty good idea), but below you can find a list of the topics I plan on covering in the book.

If you have any suggestions for additional topics to be covered, _**please send me an email, leave a comment on this blog post, or [shoot me a message](https://pyimagesearch.com/contact/).**_

### Deep Learning + Convolutional Neural Network book topics

As promised, here is a rough outline of the topics I plan to cover inside this Deep Learning + Convolutional Neural Network book.

If you have a suggestion of a topic to cover, just a leave a comment on this post or [shoot me a message](https://pyimagesearch.com/contact/) and I’ll see if we can make it happen!

#### **Machine Learning Basics**

*   Learn how to setup and configure your development environment to study Deep Learning.
*   Understand image basics, including coordinate systems; width, height, depth;, and aspect ratios.
*   Review popular image datasets used to benchmark Machine Learning, Deep Learning, and Convolutional Neural Networks algorithms.
*   Form a solid understanding of machine learning basics, including:
    *   The simple k-NN classifier.
    *   Parameterized learning (i.e., “learning from data):
        *   Data and feature vectors.
        *   Understanding scoring functions.
        *   How loss functions work.
        *   Defining weight matrices and bias vectors (and how they facilitate learning).
    *   Basic optimization methods (i.e., how “learning” is actually done) via:
        *   Gradient descent.
        *   Stochastic Gradient Descent (SGD).

#### Neural Network Basics

*   Discover feedforward neural network architectures.
*   Implement the classic Perceptron algorithm by hand.
    *   Use the Perceptron algorithm to learn actual _functions_ (and understand the limitations of the Perceptron algorithm).
*   Take an **_in-depth dive_** into the _**Backpropagation algorithm**_.
    *   Implement Backpropagation by hand using Python + NumPy.
    *   Utilize a worksheet to help you practice this critical algorithm.
*   Grasp multi-layer networks (and train them from scratch).
*   Implement neural networks both _by hand_ and with the _[Keras library](https://keras.io/)_.

#### Introduction to Convolutional Neural Networks

*   Understand convolutions (and why they are so much easier to grasp than they seem).
*   Study Convolutional Neural Networks (what they are used for, why we use them, etc.).
*   Review the building blocks of Convolutional Neural Networks, including:
    *   Convolutional layers
    *   Activation layers
    *   Pooling layers
    *   Batch Normalization
    *   Dropout
    *   _…etc._
*   Discover common network architecture patterns you can use to design architectures of your own with minimal frustration and headaches.
*   Utilize out-of-the-box CNNs for classification that are _pre-trained_ and ready to be applied to your own images/image datasets (VGG16, VGG19, ResNet50, etc.).
*   Train your first Convolutional Neural Network from scratch.
*   Save and load your own network models from disk.
*   Checkpoint your models to spot high performing epochs/restart training.
*   Learn how to spot underfitting and overfitting, allowing you to correct for them and improve your classification accuracy.
*   Utilize decay and learning rate schedulers.
*   Train the classic LeNet architecture from scratch to recognize handwritten digits.

#### **Work With Your Own Datasets**

*   Learn how to gather your own training images.
*   Discover how to annotate and label your dataset.
*   Train a Convolutional Neural Network on top of your dataset.
*   Evaluate the accuracy of your model.
*   _…all of this explained by demonstrating how to gather, annotate, and train a CNN to break image captchas._

#### Advanced Convolutional Neural Networks

*   Discover how to use _transfer learning_ to:
    *   Treat pre-trained networks as feature extractors to obtain high classification accuracy with little effort.
    *   Utilize fine-tuning to boost the accuracy of pre-trained networks.
    *   Apply data augmentation to increase network classification accuracy _without_ gathering more training data.
*   Understand rank-1 and rank-5 accuracy (and how we use them to measure the classification power of a given network).
*   Explore how _network ensembles_ can be used to increase classification accuracy simply by training multiple networks.
*   Discover my optimal pathway for applying Deep Learning techniques to maximize classification accuracy (and which order to apply these techniques in to achieve greatest effectiveness).

#### Scaling to Large Image Datasets

*   Learn how to convert an image dataset from raw images on disk to HDF5 format, making networks easier (and faster) to train.
*   Implement the _VGGNet architecture_ (and variants of).
*   Hand-code the _AlexNet architecture_ and use it to:
    *   Train a network on the [Kaggle Dogs vs. Cats challenge](https://www.kaggle.com/c/dogs-vs-cats).
    *   Claim a position in the top-25 leaderboard with minimal effort.
*   Utilize image cropping for an easy way to boost accuracy on your test set.
*   Explore more advanced optimization algorithms, including:
    *   RMSprop
    *   Adagrad
    *   Adadelta
    *   Adam
    *   Adamax
    *   Nadam
    *   _…and how to fine-tune SGD parameters._

#### Object Detection and Localization using Deep Learning

*   Utilize naive image pyramids and sliding windows for object detection.
*   Train your own [YOLO detector](http://pjreddie.com/darknet/yolo/) for recognizing objects in images/video streams in real-time.

#### ImageNet: Large Scale Visual Recognition Challenge

*   Discover what the _massive_ ImageNet (1,000 category) dataset is and _why_ it’s considered the _de-facto_ image classification challenge to benchmark algorithms.
*   Obtain and convert the ImageNet dataset into a format suitable for training.
*   Learn how to utilize multiple GPUs to train your networks in parallel, greatly reducing training time.
*   Find out how to train the AlexNet and VGGNet architectures on ImageNet.
*   Apply the SqueezeNet architecture to ImageNet to obtain a (high accuracy) model, fully deployable to smaller devices such as the Raspberry Pi.

#### **ImageNet: Tips and Tricks**

*   Save weeks (and even months) of training time by **discovering learning rate schedulers _that actually work._**
*   Spot overfitting on ImageNet and catch it _before_ you waste hours (or even days) watching your validation accuracy stall.
*   Learn how to restart training from saved epochs, lower learning rates, and boost accuracy.
*   Unlock the same techniques deep learning pros use to tune hyperparameters to their networks.

#### Case Studies

*   Train a network to predict the gender and age from people in images using Deep Learning techniques.
*   Automatically classify the _make_ and _model_ of a car using Convolutional Neural Networks.
*   Determine (and correct) image orientation using pre-trained CNNs.

### So, what do you think?

As you can see, this is shaping up to be _quite_ the Deep Learning + Convolutional Neural Network + Image Classification book.

If you have any feedback or suggestions on topics that should (or even should not) be covered, please feel free to [contact me](https://pyimagesearch.com/contact/) or leave a comment at the bottom of this blog post.

### Why a Kickstarter campaign?

I’ll have more details on the upcoming Kickstarter campaign for the new Deep Learning book in the next couple of weeks, but since I know I’ll be getting asked that question now, I wanted to say a few words about it.

First, I love Kickstarter campaigns.

They are a _fantastic_ way to spread the word about a project beyond your own audience (this is _especially true_ if the project is successfully funded).

Secondly, I already have experience running a Kickstarter campaign.

Perhaps not many readers know this, but the [PyImageSearch Gurus course](https://pyimagesearch.com/pyimagesearch-gurus/) was originally funded by a [Kickstarter campaign back in 2015](https://www.kickstarter.com/projects/1186001332/pyimagesearch-gurus-become-a-computer-vision-openc/).

Without this Kickstarter campaign I would have not had the funds necessary to dedicate my time to writing, licensing course software, and putting the entire course experience together.

**In the context of this deep learning book, I’ll be running a Kickstarter campaign to raise funding for (additional) GPU instances in the Amazon EC2 ecosystem.**

I already have my [NVIDIA DIGITS DevBox](https://pyimagesearch.com/2016/06/06/hands-on-with-the-nvidia-digits-devbox-for-deep-learning/) which has been running around the clock performing experiments and gathering results for nearly 6 months — _but at the end of the day, it’s still only one machine._

The _more_ GPU instances I have running the _faster_ I can gather results which therefore allows me to publish the Deep Learning book _quicker_.

These GPU instances are also not cheap.

The px.8xlarge (8 GPUs) and p2.16xlarge (16 GPUs) on Amazon EC2 clock in at $7.20 and $14.40 per hour, respectively.

I want to stress the point that as a reader of this book you _will not_ have to utilize high end GPUs _or_ be expected to have access them.

The basic chapters of this book will easily be able to run on your CPU while the more advanced chapters can utilize more commodity-based GPUs.

Instead, the point of me using the higher tier GPU instances in the EC2 ecosystem is that I’ll be able to publish the Deep Learning book faster (and more importantly, _get it in your hands quicker_).

Interested in learning more?
----------------------------

To stay in the loop regarding this upcoming Deep Learning + Convolutional Neural Network book, please click the following button and enter your email address:

[Keep me in the loop!](#)

Along with book updates, I’ll also be sending a short survey to help **_name the book_** within the next week, so be sure to keep an eye on your inbox — **I really need your input!**

Keep in mind: I am writing this book for _you._
-----------------------------------------------

I want to wrap up this post by saying that I am writing this Deep Learning book for YOU.

If you see any topics that you would like to be included in the book, please email me, [send me a message](https://pyimagesearch.com/contact/), or post in the comments section below.

I cannot guarantee that I’ll be able to accommodate all (or even most) of the requests/suggestions, but I will do my absolute best to consider all opinions and suggestions to help make this the **_BEST_** deep learning book available today.

Keep an eye on your inbox for the book title survey, otherwise I will be back in early January with the finalized details on the Kickstarter campaign and book topics list.

![Image 3](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20410%20567'%3E%3C/svg%3E)

#### Join the PyImageSearch Newsletter and Grab My FREE 17-page Resource Guide PDF

Enter your email address below to **join the PyImageSearch Newsletter** and **download my FREE 17-page Resource Guide PDF** on Computer Vision, OpenCV, and Deep Learning.