Классификация изображений для классификации мужских и женских частей растения гибискуса с использованием CNN (Tensorflow) и глубокого обучения - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь классифицировать мужскую (тычинку) и женскую часть растения гибискуса (пестик). Я взял справочный код для классификации изображений мужчин и женщин (распознавание лиц). Я тренировал свои собственные веса для растения гибискуса, а также использовал 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...