input: Write a python function to load a Caffe model, read an image, create a blob, pass it through the model, get the breed name corresponding to the highest probability, and label the image with the breed name.
  assert detect_breed('Labradoodle.jpg', "detector.prototxt", "detector.caffemodel", classes) == 'Labradoodle'
  assert detect_breed('GoldenRetriever.jpg', "detector.prototxt", "detector.caffemodel", classes) == 'Golden Retriever'
  assert detect_breed('Poodle.jpg', "detector.prototxt", "detector.caffemodel", classes) == 'Poodle'
output: def detect_breed(image_path, prototxt, model, classes):
      import cv2
      import numpy as np
      import caffe
      
      # Load the model
      net = caffe.Net(prototxt, model, caffe.TEST)
      
      # Read the image
      image = cv2.imread(image_path)
      
      # Preprocess the image: Resize and mean subtraction
      blob = cv2.dnn.blobFromImage(cv2.resize(image, (224, 224)), 1.0, (224, 224), (104, 117, 123))
      
      # Set the input blob for the network
      net.setInput(blob)
      
      # Perform forward pass to get the output
      output = net.forward()
      
      # Get the class with the highest probability
      class_index = np.argmax(output)
      breed_name = classes[class_index]
      
      # Label the image with the breed name
      label = f"Breed: {breed_name}"
      cv2.putText(image, label, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)
      
      # Save the labeled image (optional)
      cv2.imwrite('labeled_' + image_path, image)
      
      return breed_name