https://github.com/pierluigiferrari/ssd_keras からコードを実行するときのTensorflow/Kerasでは、推定器:ssd300_evaluationを使用します。このエラーを受け取りました。
畳み込みアルゴリズムの取得に失敗しました。これはおそらく、cuDNNの初期化に失敗したためです。したがって、上記の警告ログメッセージが出力されているかどうかを確認してください。
これは未解決の質問に非常に似ています: Google Colab Error:Failed to get convolution algorithm。これはおそらくcuDNNの初期化に失敗したためです
私が実行している問題で:
python:3.6.4。
Tensorflowバージョン:1.12.0。
Kerasバージョン:2.2.4。
CUDA:V10.0。
cuDNN:V7.4.1.5。
NVIDIA GeForce GTX 1080。
また、私は走った:
import tensorflow as tf
with tf.device('/gpu:0'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
with tf.Session() as sess:
print (sess.run(c))
エラーや問題はありません。
最小限の例は次のとおりです。
from keras import backend as K
from keras.models import load_model
from keras.optimizers import Adam
from scipy.misc import imread
import numpy as np
from matplotlib import pyplot as plt
from models.keras_ssd300 import ssd_300
from keras_loss_function.keras_ssd_loss import SSDLoss
from keras_layers.keras_layer_AnchorBoxes import AnchorBoxes
from keras_layers.keras_layer_DecodeDetections import DecodeDetections
from keras_layers.keras_layer_DecodeDetectionsFast import DecodeDetectionsFast
from keras_layers.keras_layer_L2Normalization import L2Normalization
from data_generator.object_detection_2d_data_generator import DataGenerator
from eval_utils.average_precision_evaluator import Evaluator
import tensorflow as tf
%matplotlib inline
import keras
keras.__version__
# Set a few configuration parameters.
img_height = 300
img_width = 300
n_classes = 20
model_mode = 'inference'
K.clear_session() # Clear previous models from memory.
model = ssd_300(image_size=(img_height, img_width, 3),
n_classes=n_classes,
mode=model_mode,
l2_regularization=0.0005,
scales=[0.1, 0.2, 0.37, 0.54, 0.71, 0.88, 1.05], # The scales
for MS COCO [0.07, 0.15, 0.33, 0.51, 0.69, 0.87, 1.05]
aspect_ratios_per_layer=[[1.0, 2.0, 0.5],
[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
[1.0, 2.0, 0.5, 3.0, 1.0/3.0],
[1.0, 2.0, 0.5],
[1.0, 2.0, 0.5]],
two_boxes_for_ar1=True,
steps=[8, 16, 32, 64, 100, 300],
offsets=[0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
clip_boxes=False,
variances=[0.1, 0.1, 0.2, 0.2],
normalize_coords=True,
subtract_mean=[123, 117, 104],
swap_channels=[2, 1, 0],
confidence_thresh=0.01,
iou_threshold=0.45,
top_k=200,
nms_max_output_size=400)
# 2: Load the trained weights into the model.
# TODO: Set the path of the trained weights.
weights_path = 'C:/Users/USAgData/TF SSD
Keras/weights/VGG_VOC0712Plus_SSD_300x300_iter_240000.h5'
model.load_weights(weights_path, by_name=True)
# 3: Compile the model so that Keras won't complain the next time you load it.
adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
ssd_loss = SSDLoss(neg_pos_ratio=3, alpha=1.0)
model.compile(optimizer=adam, loss=ssd_loss.compute_loss)
dataset = DataGenerator()
# TODO: Set the paths to the dataset here.
dir= "C:/Users/USAgData/TF SSD Keras/VOC/VOCtest_06-Nov-2007/VOCdevkit/VOC2007/"
Pascal_VOC_dataset_images_dir = dir+ 'JPEGImages'
Pascal_VOC_dataset_annotations_dir = dir + 'Annotations/'
Pascal_VOC_dataset_image_set_filename = dir+'ImageSets/Main/test.txt'
# The XML parser needs to now what object class names to look for and in which order to map them to integers.
classes = ['background',
'aeroplane', 'bicycle', 'bird', 'boat',
'bottle', 'bus', 'car', 'cat',
'chair', 'cow', 'diningtable', 'dog',
'horse', 'motorbike', 'person', 'pottedplant',
'sheep', 'sofa', 'train', 'tvmonitor']
dataset.parse_xml(images_dirs=[Pascal_VOC_dataset_images_dir],
image_set_filenames=[Pascal_VOC_dataset_image_set_filename],
annotations_dirs=[Pascal_VOC_dataset_annotations_dir],
classes=classes,
include_classes='all',
exclude_truncated=False,
exclude_difficult=False,
ret=False)
evaluator = Evaluator(model=model,
n_classes=n_classes,
data_generator=dataset,
model_mode=model_mode)
results = evaluator(img_height=img_height,
img_width=img_width,
batch_size=8,
data_generator_mode='resize',
round_confidences=False,
matching_iou_threshold=0.5,
border_pixels='include',
sorting_algorithm='quicksort',
average_precision_mode='sample',
num_recall_points=11,
ignore_neutral_boxes=True,
return_precisions=True,
return_recalls=True,
return_average_precisions=True,
verbose=True)
このエラーが発生したので、システムからすべてのCUDAおよびcuDNNバージョンをアンインストールして修正しました。次に、CUDA Toolkit 9.(パッチなし)とCUDA 9.0のcuDNN v7.4.1をインストールしました。
このエラーメッセージは、次の3つの理由で、さまざまなソリューションで見られました。
私は定期的にこのエラーを回避するために、pythonプロセスをシャットダウンし、~/.nv
ディレクトリ(Linuxでは、rm -rf ~/.nv
)、およびPythonプロセスを再起動します。これがなぜ機能するのか正確にはわかりません。おそらく、2つ目のオプションに少なくとも部分的に関連しています。
このエラーは、グラフィックカードのRAMが不足している場合にも表示されます。 nvidia GPUを使用すると、nvidia-smi
。これにより、GPU RAM使用中の量(6025MiB / 6086MiB
ほぼ限界に達している場合)、GPU RAMを使用しているプロセスのリスト。
RAMが不足している場合は、プロセスを再起動して(RAMを解放する必要があります)、メモリをあまり使用しないアプローチをとる必要があります。いくつかのオプションがあります:
import keras
import tensorflow as tf
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9
keras.backend.tensorflow_backend.set_session(tf.Session(config=config))
上記の項目と一緒に使用しないと、モデルの評価が遅くなる可能性があります。おそらく、割り当てた少量のメモリに収まるように大きなデータセットを交換する必要があるからです。
同様のモデルが機能したことがない場合、VRAMが不足していませんandキャッシュがクリーンであるため、戻って設定しますCUDA + TensorFlowで利用可能な最良のインストールガイドを使用-NVIDIA/CUDAサイトの指示ではなく https://www.tensorflow.org/install/gp の指示に従うことで最も成功しました。
問題は、テンソルフロー1.10.xの新しいバージョンとcudnn 7.0.5およびcuda 9.0のバージョンの非互換性にあります。最も簡単な修正は、テンソルフローを1.8.0にダウングレードすることです
pip install --upgrade tensorflow-gpu == 1.8.0
1)GPUを使用する他のすべてのノートブックを閉じます
2)TF 2.0のニーズ cuDNN SDK (> = 7.4.1)
「bin」フォルダーへのパスを抽出して「環境変数/システム変数/パス」に追加します:「D:\ Programs\x64\Nvidia\cudnn\bin」
私の場合、.jsonおよび.h5ファイルからモデルを直接ロードし、特定の入力の出力を予測しようとすると、このエラーが発生しました。したがって、このようなことを行う前に、mndでサンプルモデルをトレーニングしてみました。これにより、cudNNを初期化でき、
この問題は、cuDNNの互換性のないバージョンがある場合にも発生する可能性があります。condaでTensorflowをインストールした場合、condaはTensorflowのインストール中にCUDAとcuDNNもインストールするためです。
解決策は、Tensorflowをpipでインストールし、CUDAとcuDNNをcondaなしで別々にインストールすることです。 CUDA 10.0.130およびcuDNN 7.4.1( テスト済みの構成 )がある場合、
pip install tensorflow-gpu==1.13.1
私はこの問題に一週間苦労していました。その理由は非常にばかげていました。トレーニングには高解像度の写真を使用しました。
うまくいけば、これで誰かの時間を節約できます:)
TF2.0にアップグレードした後、この問題が発生しました。次のエラーが発生し始めました:
outputs = tf.nn.conv2d(images, filters, strides=1, padding="SAME")
Ubuntu 16.04.6 LTS(Azure datascience VM)とTensorFlow 2.0を使用しています。このTensorFlow GPU命令の命令ごとにアップグレードされます ページ 。これで問題は解決しました。ところで、apt-get update/installsの束と私はそれらすべてを実行しました。