質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1708閲覧

error: (-215:Assertion failed) m.dims >= 2

hsgru3

総合スコア22

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/11/09 03:29

前提・実現したいこと

ニューラルネットワークを用いた物体検出器をdarknetのyoloで作成しています。
訓練データの数が少ないと感じたのでincrease_picture.pyというプログラムでデータの水増しを行いたいのですがエラーが出てしまい困っています。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "increase_picture.py", line 102, in <module> trans_img.append( cv2.LUT(img_src, LUT)) cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:405: error: (-215:Assertion failed) m.dims >= 2 in function 'cv::Mat::Mat'

該当のソースコード

#!/usr/bin/env python # -*- coding: utf-8 -*- # # usage: ./increase_picture.py hogehoge.jpg # import cv2 import numpy as np import sys import os # ヒストグラム均一化 def equalizeHistRGB(src): RGB = cv2.split(src) Blue = RGB[0] Green = RGB[1] Red = RGB[2] for i in range(3): cv2.equalizeHist(RGB[i]) img_hist = cv2.merge([RGB[0],RGB[1], RGB[2]]) return img_hist # ガウシアンノイズ def addGaussianNoise(src): row,col,ch= src.shape mean = 0 var = 0.1 sigma = 15 gauss = np.random.normal(mean,sigma,(row,col,ch)) gauss = gauss.reshape(row,col,ch) noisy = src + gauss return noisy # salt&pepperノイズ def addSaltPepperNoise(src): row,col,ch = src.shape s_vs_p = 0.5 amount = 0.004 out = src.copy() # Salt mode num_salt = np.ceil(amount * src.size * s_vs_p) coords = [np.random.randint(0, i-1 , int(num_salt)) for i in src.shape] out[coords[:-1]] = (255,255,255) # Pepper mode num_pepper = np.ceil(amount* src.size * (1. - s_vs_p)) coords = [np.random.randint(0, i-1 , int(num_pepper)) for i in src.shape] out[coords[:-1]] = (0,0,0) return out if __name__ == '__main__': # ルックアップテーブルの生成 min_table = 50 max_table = 205 diff_table = max_table - min_table gamma1 = 0.75 gamma2 = 1.5 LUT_HC = np.arange(256, dtype = 'uint8' ) LUT_LC = np.arange(256, dtype = 'uint8' ) LUT_G1 = np.arange(256, dtype = 'uint8' ) LUT_G2 = np.arange(256, dtype = 'uint8' ) LUTs = [] # 平滑化用 average_square = (10,10) # ハイコントラストLUT作成 for i in range(0, min_table): LUT_HC[i] = 0 for i in range(min_table, max_table): LUT_HC[i] = 255 * (i - min_table) / diff_table for i in range(max_table, 255): LUT_HC[i] = 255 # その他LUT作成 for i in range(256): LUT_LC[i] = min_table + i * (diff_table) / 255 LUT_G1[i] = 255 * pow(float(i) / 255, 1.0 / gamma1) LUT_G2[i] = 255 * pow(float(i) / 255, 1.0 / gamma2) LUTs.append(LUT_HC) LUTs.append(LUT_LC) LUTs.append(LUT_G1) LUTs.append(LUT_G2) # 画像の読み込み img_src = cv2.imread(sys.argv[1], 1) trans_img = [] trans_img.append(img_src) # LUT変換 for i, LUT in enumerate(LUTs): trans_img.append( cv2.LUT(img_src, LUT)) # 平滑化 trans_img.append(cv2.blur(img_src, average_square)) # ヒストグラム均一化 trans_img.append(equalizeHistRGB(img_src)) # ノイズ付加 trans_img.append(addGaussianNoise(img_src)) trans_img.append(addSaltPepperNoise(img_src)) # 反転 flip_img = [] for img in trans_img: flip_img.append(cv2.flip(img, 1)) trans_img.extend(flip_img) # 保存 if not os.path.exists("trans_images"): os.mkdir("trans_images") base = os.path.splitext(os.path.basename(sys.argv[1]))[0] + "_" img_src.astype(np.float64) for i, img in enumerate(trans_img): # 比較用 # cv2.imwrite("trans_images/" + base + str(i) + ".jpg" ,cv2.hconcat([img_src.astype(np.float64), img.astype(np.float64)])) cv2.imwrite("trans_images/" + base + str(i) + ".jpg" ,img)

補足情報(FW/ツールのバージョンなど)

Python 3.5.6
opencv-python 3.4.3.18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/11/09 03:59

実行時のコマンドライン引数を提示ください
hsgru3

2018/11/09 04:05

increase_picture.pyと同じフォルダにimage(1).jpg~image(188).jpgをおいてcmdでpython increase_picture.py *.jpgとして実行いたしました。
guest

回答1

0

ベストアンサー

元ソースはdeeplearning_toolと思われますが、このツールは*.jpgというようなワイルドカード指定には対応していません。
python increase_picture.py image(1).jpgのように呼び出す必要があります。

ファイルが1~188まであるので、バッチファイルでループ呼出してもよいでしょうが
元ソースを直接forループでファイル名生成するように書き換えたほうが手っ取り早いと思います。

投稿2018/11/09 04:14

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hsgru3

2018/11/09 04:24

無事解決しました。素早く回答していただき助かりました。 回答の通りforループで書き換えようと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問