Я пытаюсь классифицировать мужскую (тычинку) и женскую часть растения гибискуса (пестик). Я взял справочный код для классификации изображений мужчин и женщин (распознавание лиц). Я тренировал свои собственные веса для растения гибискуса, а также использовал CNN для классификации и создал файл .model для 2 классов (мужская часть и женская часть). Однако код предназначен для обнаружения лиц, а не для cv.detect_random_object()
Как мне изменить этот код для случайных объектов? Приведенный ниже код представляет собой python файл для обнаружения объектов. У меня есть собственный обученный файл .weights и .model на моем жестком диске. Приносим искренние извинения за случайное копирование и вставку кода.
# import necessary packages
from keras.preprocessing.image import img_to_array
from keras.models import load_model
from keras.utils import get_file
import numpy as np
import argparse
import cv2
import os
import cvlib as cv
from cvlib.object_detection import draw_bbox
# handle command line arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,help="path to input image")
ap.add_argument('-c', '--config', required=True,help = 'path to yolo config file')
ap.add_argument('-w', '--weights', required=True,help = 'path to yolo pre-trained weights')
args = ap.parse_args()
# download pre-trained model file (one-time download)
##dwnld_link "https://github.com/arunponnusamy/cvlib/releases/download/v0.2.0/gender_detection.model"
##model_path = get_file("gender_detection.model", dwnld_link,
## cache_subdir="pre-trained", cache_dir=os.getcwd())
##image = 'E:/object-detection-opencv-master/test_1.jpg'#notice where's the path you set
config = 'C:\\Users\Mahesh\tiny-yolo-voc-1c.cfg'
weights = 'C:\\Users\Mahesh\yolov3.weights'
classes = 'C:\\Users\Mahesh\labels.txt'
# read input image
image = cv2.imread(args.image)
if image is None:
print("Could not read input image")
exit()
# load pre-trained model
model = load_model('C:\\Users\Mahesh\Desktop\Tensor\plantgender_detection.model')
# detect faces in the image
##face, confidence = cv.detect_face(image)
bbox, label, conf = cv.detect_common_objects(image)
classes = ['male part','female part']
output_image = draw_bbox(image, bbox, label, conf)
# loop through detected faces
#for idx, f in enumerate(face):
# get corner points of face rectangle
## (startX, startY) = f[0], f[1]
## (endX, endY) = f[2], f[3]
# draw rectangle over face
# cv2.rectangle(image, (startX,startY), (endX,endY), (0,255,0), 2)
# crop the detected face region
# face_crop = np.copy(image[startY:endY,startX:endX])
# preprocessing for gender detection model
#face_crop = cv2.resize(face_crop, (96,96))
#face_crop = face_crop.astype("float") / 255.0
#face_crop = img_to_array(face_crop)
#face_crop = np.expand_dims(face_crop, axis=0)
# apply gender detection on face
#conf = model.predict(face_crop)[0]
# print(conf)
#print(classes)
# get label with max accuracy
#idx = np.argmax(conf)
#label = classes[idx]
# label = "{}: {:.2f}%".format(label, conf[idx] * 100)
# Y = startY - 10 if startY - 10 > 10 else startY + 10
# write label and confidence above face rectangle
#cv2.putText(image, label, (startX, Y), cv2.FONT_HERSHEY_SIMPLEX,
# 0.7, (0, 255, 0), 2)
# display output
cv2.imshow("gender detection", image)
# press any key to close window
cv2.waitKey()
# save output
cv2.imwrite("gender_detection.jpg", image)
# release resources
cv2.destroyAllWindows()