Pycharm не использует мой графический процессор при запуске алгоритма Yolo2 - PullRequest
0 голосов
/ 11 апреля 2020

Я безуспешно пытался использовать мою видеокарту для обучения и обработки изображений для распознавания объектов. Я использовал Pycharm в качестве IDE и сделал все необходимые настройки для своей системной среды. Я бегу на Windows 10 . Я установил Cuda Tookit 9.0 и cuDNN для версии. Я также установил tenorflow-GPU 1.13.1 с помощью Conda. В моем проекте у меня установлены tenorflow 1.13.1 и tenorflow-gpu 1.13.1. Я пытался запустить алгоритм без tenorflow, используя только тензор-gpu, но выполнение выдает ошибку. Моя видеокарта и GT 625M. Я показываю изображения конфигурации моей среды и основные коды, которые я использую. Мне бы понравилось решение, которое решило бы мою проблему, так как я потратил более 5 дней на тренировку с чуть менее чем 200 изображениями, и я уверен, что при использовании графического процессора это займет не более нескольких часов.

1- код обработки

from darkflow.net.build import TFNet
#opções do treino
options = {"model": "cfg/yolo-new.cfg", 
           "load": "bin/yolo.weights",
           "batch": 1,
           "epoch": 100,
           "gpu": 1.0,
           "train": True,
           "annotation": "DataSet-Part/_DataSetNovo_Annotation/",
           "dataset": "DataSet-Part/_DataSetNovo_Image/"}
#configurando a rede com as opções
tfnet = TFNet(options)
#treino
tfnet.train()

2 - код распознавания изображений

#importar biblioteca numpy
import numpy as np
#importa biblioteca da rede
from darkflow.net.build import TFNet
#importar opencv
import cv2

#função para criar o retangulo 
def boxing(original_img , predictions):
    newImage = np.copy(original_img)
    #cria um box pra cada objeto detectado
    for result in predictions:
        top_x = result['topleft']['x']
        top_y = result['topleft']['y']

        btm_x = result['bottomright']['x']
        btm_y = result['bottomright']['y']

        confidence = result['confidence']
        label = result['label'] + " " + str(round(confidence, 3))
        #se for maior que 30% mostra
        if confidence > 0.3:
            #desenha o retangulo
            newImage = cv2.rectangle(newImage, (top_x, top_y), (btm_x, btm_y), (255,0,0), 6)
            #escreve o texto
            newImage = cv2.putText(newImage, label, (top_x, top_y-5), cv2.FONT_HERSHEY_SIMPLEX , 1, (28, 28, 28), 2, cv2.LINE_AA)
            cv2.imwrite("C:/Users/davin/source/repos/Yolo 3/darkflow-master/Novas Imagens/"+"novaImage.jpg", newImage)
    return newImage

#opções para carregar o modelo
options = {"model": "cfg/yolo-new.cfg",
           "load": -1,
           "gpu": 1.0}
#configura a rede com as opções
tfnet2 = TFNet(options)
#carrega a rede
tfnet2.load_from_ckpt()
#Le a imagem
original_img = cv2.imread("sample_img/8.jpg")
#Reconhece objetos na imagem
results = tfnet2.return_predict(original_img)
if results:
        print("\nResults---------------------------------------------------")
        #Para cada objeto reconhecido printa o nome e com qual confiança
        for y in range(0, len(results)):
            print("Label:%s\tConfidence:%f"%(results[y]['label'], results[y]['confidence']))

#mostra imagem
cv2.imshow('image',boxing(original_img, results))
cv2.waitKey(0)
cv2.destroyAllWindows()

3 - код для распознавания с веб-камеры

#importar biblioteca numpy
import numpy as np
#importa biblioteca da rede
from darkflow.net.build import TFNet
#importar opencv
import cv2

#função para criar o retangulo 
def boxing(original_img , predictions):
    newImage = np.copy(original_img)
    #cria um box pra cada objeto detectado
    for result in predictions:
        top_x = result['topleft']['x']
        top_y = result['topleft']['y']

        btm_x = result['bottomright']['x']
        btm_y = result['bottomright']['y']

        confidence = result['confidence']
        label = result['label'] + " " + str(round(confidence, 3))
        #se for maior que 30% mostra
        if confidence > 0.3:
            #desenha o retangulo
            newImage = cv2.rectangle(newImage, (top_x, top_y), (btm_x, btm_y), (255,0,0), 6)
            #escreve o texto
            newImage = cv2.putText(newImage, label, (top_x, top_y-5), cv2.FONT_HERSHEY_COMPLEX_SMALL , 3, (0, 230, 0), 1, cv2.LINE_AA)

    return newImage

#opções para carregar o modelo
options = {"model": "cfg/yolo-new.cfg",
          "load": -1,
          "gpu": 1.0}
#configura a rede com as opções
tfnet2 = TFNet(options)
#carrega a rede
tfnet2.load_from_ckpt()
#Captura video
cam = cv2.VideoCapture(0)

#Cria janela chamada YOLO
cv2.namedWindow("Yolo")
while True:
   #Lê frame
   ret, frame = cam.read()
   #Reconhece objetos no frame  
   results = tfnet2.return_predict(frame)
   if results:
       print("\nResults---------------------------------------------------")
       for y in range(0, len(results)):
           #Para cada objeto reconhecido printa o nome e com qual confiança
           print("Label:%s\tConfidence:%f"%(results[y]['label'], results[y]['confidence']))
   #mostra imagem
   cv2.imshow('YoloV3',boxing(frame, results))

 #Se não encontra frame
   if not ret:
       break
   k = cv2.waitKey(1)
   #Se Clicar no Esc fecha
   if k%256 == 27:
       print("Escape hit, closing...")
       break
#Libera os recursos de software e hardware da câmera
cam.release()
#Destroi a janela
cv2.destroyAllWindows()

4 - My плита

My video card

5 - Cuda

Cuda 9.0

6 - cuDNN

cuDNN

7 - Pycharm

tensorflow-gpu in pycharm

Процесс идет нормально, но мой графический процессор остается неиспользованным.

Process

GPU Use

...