# Training Tutorials

We have prepared several Jupyter notebook tutorials to illustrate how to train AI models in our ecosystem. You can find them
stored in the [ai-tutorials](https://github.com/luxonis/ai-tutorials/tree/main/training) repository on GitHub. The easiest way to
try them out is by using the [Google Collaboratory](https://colab.research.google.com/github/luxonis/ai-tutorials) where all the
notebooks are already loaded and prepared for running. Google Collaboratory allows you to use their fast GPU instances and, in
some cases, even using the Google TPU (depending on the dependencies of the training frameworks). Alternatively, you can run the
tutorials locally using your own resources.

We divide our tutorials into two groups: the ones using our Luxonis Train library and those using different training libraries
(also check [Ultralytics](https://docs.luxonis.com/software-v3/ai-inference/integrations/ultralytics.md) integration docs). Our
primary goal is to provide comprehensive tutorials covering the most common use cases for training neural networks for usage on
DepthAI devices. Our tutorials cover the following tasks:

### Classification

Image classification is the task of assigning a predefined label or category to an entire input image.

Luxonis Train Tutorials

 * [Bean Leaf Disease
   Classifier](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/train_classification_model.ipynb)

Other Tutorials

 * [Flower
   Classifier](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/image-classification/OpenVINO_OpenCV_OAK_Tensorflow_Image_Classification.ipynb)

### Object Detection

Object detection involves identifying and locating multiple objects within an image and providing bounding boxes around them.

Luxonis Train Tutorials

 * [Fruit Object
   Detector](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/train_detection_model.ipynb)
 * [Cat & Dog Object Detector with Automatic Image
   Labelling](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/train_detection_model_datadreamer.ipynb)

Other Tutorials

 * [YOLOv5](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/object-detection/YoloV5_training.ipynb)
 * [YOLOv6](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/object-detection/YoloV6_training.ipynb)
 * [YOLOv7](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/object-detection/YoloV7_training.ipynb)
 * [YOLOv8](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/object-detection/YoloV8_training.ipynb)

### Semantic Segmentation

Semantic segmentation involves classifying pixels in an image into a predefined category without distinguishing between separate
instances of the same class.

Luxonis Train Tutorials

 * [Pothole Segmentator with Synthetically Enlarged
   Dataset](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/train_semantic_segmentation_model_datadreamer.ipynb)
 * [Custom Leaf Segmentation
   Model](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/luxonis_train_custom_model.ipynb)

Other Tutorials

 * [DeepLab V3
   Plus](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/semantic-segmentation/DeepLabV3plus_MNV2.ipynb)

### Instance Segmentation

Instance segmentation extends semantic segmentation by distinguishing between individual instances of the same object class and
providing a pixel-wise mask for each one.

Luxonis Train Tutorials

 * [Crack Instance
   Segmentation](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/train_instance_segmentation_model.ipynb)

Other Tutorials

 * [YOLOv11 Instance
   Segmentation](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/instance-segmentation/yolo11_instance_segmentation_training.ipynb)

### Instace Pose

Instance pose detection combines object detection and keypoint detection by localizing individual objects and predicting keypoints
for each instance separately.

Other Tutorials

 * [YOLOv11 Instance
   Pose](https://colab.research.google.com/github/luxonis/ai-tutorials/blob/main/training/others/pose-estimation/yolo11_pose_estimation_training.ipynb)
