- 1 名前:デフォルトの名無しさん [2011/04/04(月) 14:56:41.07 ]
- 画像処理プログラミングについて質問、議論を行うスレッドです
・画像処理について素人同士で大激論 ・初学者の質問に対してやさしく(的を外れた)解答を与える ・その道の玄人も大歓迎 前スレ 画像処理 その12 hibari.2ch.net/test/read.cgi/tech/1247100724/
- 386 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 13:20:54.10 ]
- 【プログラミング部】 PHPが100倍速で動くようになったぞー
awabi.2ch.net/test/read.cgi/poverty/1327050821/
- 387 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 14:30:27.22 ]
- >>385
データ数が奇数という事は、奇数x奇数だな。寧ろ、判り易いじゃないか。 012 345 678 ↓ 567 801 234 偶数だとこんな感じ。 0123 4567 89ab cdef ↓ 6789 abcd ef01 2345
- 388 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 14:33:27.52 ]
- いけね、それぞれ
867 201 534 と ab89 efcd 2301 6745 だったw
- 389 名前:デフォルトの名無しさん [2012/01/21(土) 15:34:31.76 ]
- >>388
ありがとございます 5x5ならどうなりますか? 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o
- 390 名前:389 [2012/01/21(土) 15:37:55.80 ]
- i j f g h
n o k l m 3 4 0 1 2 8 9 5 6 7 d e a b c であってます?
- 391 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:06:00.84 ]
- >>390
いんじゃね? 要は、元のパターンをタイリングしてパターン半分ずらした状態なんだから。
- 392 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 14:32:18.63 ]
- 圧縮した状態でも、座標を指定すればその画素値を取得出来るようなフォーマットってあるのでしょうか?
あるとしたら圧縮率は悪くなのでしょうが。 メモリに出来るだけ溜めこんで、出来るだけ高速に画像処理をするという矛盾したことをやりたいと思っています。 64bitOSにしてメモリ大量に詰むのが一番でしょうが、もしもありましたらお願いします。
- 393 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 14:50:22.64 ]
- >>392
ないない。 あるとしたら、ってそれはもう非圧縮っていう。 なんかのライブラリ挟んでそういう風に見せることは出来るだろうけど
- 394 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 14:55:40.49 ]
- 私はそんなフォーマットわからない。
けど、もし同じことをしようとしたら画像処理途中のグレイスケールや2値画像でメモリにおいとくかな。 どんな用途なんだろう 複数のハイスピードカメラで学習画像をマッチングさせるのかな
- 395 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:27:13.69 ]
- 画像の特性にもよるかなぁ。
画像処理というよりバイナリのメモリ圧縮と探索の話になるが。
- 396 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:54:10.21 ]
- カラーなら色空間変換で茶を濁すとか (当然不可逆
R8G8B8(24bit) → Y8U4V4(16 bit) 等
- 397 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 15:58:46.16 ]
- >>392
そもそもそれは画像なの? 特徴点抽出した結果とか輪郭線抽出した結果とかなら、別な有効な手段もあるんだけど。
- 398 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 17:13:30.56 ]
- >>393
ですよねー。 >>394 せいぜい余分なデータを省くくらいですよね。 CoaXPressをフルに使った映像をリアルタイムで各種画像処理しながら動画保存するのですが 画像処理に同一動画の前の画像を利用する処理があるので、全部メモリに溜めこめないかなと。
- 399 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 20:36:24.25 ]
- >>398
アクセスパターン次第じゃね? ランダムアクセスじゃなきゃフォーマット設計すればできそう。
- 400 名前:デフォルトの名無しさん mailto:sage [2012/01/26(木) 15:05:55.69 ]
- JPEGは8x8で符号化してるから画素単位までとは行かなくても
その周辺を含む領域でなら復号出来るだろ 可逆にしたって、ブロック単位でやればいいだけじゃね 圧縮率は下がるだろうが
- 401 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 18:11:39.59 ]
- OpenCVなどで日本語文字列を描画するのに
なんかいいライブラリありませんか?
- 402 名前:デフォルトの名無しさん [2012/02/01(水) 18:43:34.61 ]
- いくつもある画像変換ソフトって設定でサンプリング?1:1:1みたいのとかJPG圧縮率90%とか合わせても変換後のサイズが全然違うのなんで?
- 403 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 18:45:49.05 ]
- 内部アルゴリズムの違いだろ
- 404 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:08:35.74 ]
- フィルタ処理とか特徴点検出とか諸々の画像処理の基本的なアルゴリズムはわかっているんだけど、
高速動作のための実践的な実装を学ぶのにいい本はない?
- 405 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:57:50.76 ]
- >>404
高速動作する実践的な実装のコードや 数値計算やHPCの本を読めばいいのでは
- 406 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 09:31:57.49 ]
- >>404
急がば回れ。 一般的な高速化のアルゴリズムやデータ構造(部分計算、DP、木など)や画像処理とは 直接の関係の無い分野のアルゴリズム(文字列処理や人工知能)に詳しくなっていると、 画像処理でもアイデアがいくらでも湧いてくる。 そのうち循環畳み込み演算を膨大な回数繰り返す処理をfft/ifftを使った処理と比較して 3桁高速化するなんてこともできるようになる。
- 407 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 13:55:04.41 ]
- 私も406と同じ意見。
アルゴリズムをもっと勉強してブレイクスルーを考えるのがはやいと思う。 普通の高速化なんて目じゃないほどはやくなるよ。 普通の高速化ならopenMPとかソートアルゴリズムの本なんかがオススメかな。結局計算しなくていいとこをいかに早くみつけるかが肝
- 408 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 14:09:36.28 ]
- >>404
私偉そうに高速化どうこういってますが、最近SURF特徴点抽出方法覚えたてで高速化に苦戦してます。 2つの画像の128次元ユークリッドベクトルの距離が近いものを探す処理で全部の線を比較するダメダメ処理しかわかりません。 一緒にがんがりましょう
- 409 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 21:19:51.55 ]
- そんな簡単にブレークスルーできてたらノーベル賞取りまくりやわ。ええ加減にしとけよ
- 410 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 01:33:02.72 ]
- アルゴリズム自体は固定で実装上の細かい最適化テクニックってことなら
Intelが出してる最適化リファレンス・マニュアルだな。
- 411 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 02:22:36.88 ]
- SIFTなんてガウシアンの畳み込み何回もやるから凄い重いけど実装の工夫だけで超高速にできるもんなんだろうか
- 412 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 04:22:00.26 ]
- パワープレイになりますけれども
CUDAで超並列マルチスッドレとか
- 413 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 16:41:48.44 ]
- マシンパワーに頼った実装ってなんかつまらないな
- 414 名前:デフォルトの名無しさん [2012/02/04(土) 20:06:53.47 ]
- マシンパワーを引き出すのも面白いぞ
- 415 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 21:37:39.20 ]
- だからって16bitCPUで32bit使ったり、32bitCPUで16bit扱うのはマヌケだろう?
グラフィック分野では、CPUやGPUの実装に合わせてゴリゴリ書いて パフォーマンスを叩き出すのが昔からの慣例。
- 416 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 23:00:30.46 ]
- 最適化ってその時々の中流機で速いことに意味があると思う
ハードを追加することが前提ならいくらでも金かけりゃいいってことになってつまらん
- 417 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 23:13:43.23 ]
- ハードを追加することでコンスタントに処理速度が上がってく段階になると、
さすがにプログラマとしてはつまらなくなると思う でも、例えばシングルコアがマルチコアになったとか、 複数のマシンをLANで繋いで負荷を分散できるようになったとか、 GPUが計算に使えるようになったとか、 CPUがCellに変わったとか そういう劇的な変化時におけるパワープレイは、それはそれで面白い その環境に最適化する場合の考え方ががらっと変わるからな パワープレイの方法を間違うと本来の力が全然が出せないし
- 418 名前:デフォルトの名無しさん [2012/02/04(土) 23:16:59.74 ]
- >>417
>ハードを追加することでコンスタントに処理速度が上がってく段階になると、 >さすがにプログラマとしてはつまらなくなると思う 処理速度に余裕ができた分、新しいアルゴリズムを追加できるように なるんだから面白くなるんじゃないの
- 419 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 23:46:23.11 ]
- >>418
人によって段階をどう捉えるかは違うけど、私は次のような段階を考える 1. 様々なアルゴリズムを考え、実験し、検証する(計算上の仮想実験も含む) 2. ハードが変化し、1のアルゴリズムで実用的になるものも現れる 3. ハードの追加によってコンスタントに処理速度が上がってく この段階で私がプログラマとして最も面白いと感じるのは 1 の段階 次に面白いのは 2 の段階だが、これはどちらかと言うと、 1 のアルゴリズムが使えるようになったおかげで可能になった 他の処理の実装などが面白い 3 の段階になると、処理速度が上がることが分かっているから、 単なる作業と確認でしかなくなる 確かにこの段階でも 2 の様なことは起きるのだが、 ワクワク感やドキドキ感は無いな
- 420 名前:デフォルトの名無しさん [2012/02/04(土) 23:51:17.93 ]
- いや、だから、3の段階に達したらまた別の
アルゴリズムを考える1に戻ればいいじゃん 処理速度に余裕ができたんだから新しいアルゴリズムを追加できるんだよ
- 421 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 00:18:39.70 ]
- >>420
> いや、だから、3の段階に達したらまた別の > アルゴリズムを考える1に戻ればいいじゃん 全くその通り どうも言い方が悪かったみたいだ あるひとつの方法に関して、その実装が ハードを追加することでコンスタントに処理速度が上がってく段階になると、 その環境でその方法を使い続けることはプログラマとしてはつまらなくなる (仕事としては、こちらの方が圧倒的に多いが)
- 422 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 00:39:57.52 ]
- >>421
いや、違うか 何て言えば良いのかな・・・ 目標 --> 達成 --> 目標 --> 達成・・・というプロセスが続いていくわけだが、 ハードを追加することでコンスタントに処理速度が上がってく段階というのは、 その目標を達成するのにハードの追加で事足りてしまう段階だ >>419 の 1 の段階は目標を達成するための行為であり、そこで複数の方法を考える その方法は 2 の段階で実用になるものもあるだろうし、そこで新たな課題が出ることもある しかし、3の段階になると、その方法を使ってあとはマシンパワーを上げていくだけになる 要求に対して足りないパワーを補うだけ 例えばサーバーやコアの数を増やしたり、メモリを増やしたり この段階では、この方法に関してはもうプログラマ(私)があれこれ模索することもなくなり、 プログラム的にはほとんどメンテだけの状態に入る 何が言いたいのかというと、>>413 はつまらんと言うが、 3 と違って 2 の段階でマシンパワーに頼るのはスゲー面白いだろ、と言うこと ほとんどスレチだからもう終わる、長々とすまんかった
- 423 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 03:54:10.98 ]
- 既存の画像処理をOpenCLで並列化なんてのはおもしろいぞ。
画像処理はほとんど反復処理だから劇的に高速化する。
- 424 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 04:42:11.21 ]
- 元々が糞プログラムじゃない限り劇的にはならないよ
- 425 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 08:10:58.82 ]
- 無知乙
ハードウェアの性能が何桁違うと思っているんだ
- 426 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 09:52:01.29 ]
- 最近は何桁も違わないよ
- 427 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 11:47:31.03 ]
- GPUとかFPGA使って高速化したっていう発表は学会でもあるけど、フーン当たり前じゃんって反応だな
既存のアルゴリズムを複数スレッドに分けるだけじゃなくて、マルチコアを前提とした新しいアルゴリズムでないと感動しないな
- 428 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 11:50:11.65 ]
- フーン。
- 429 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 12:00:10.26 ]
- >>427
へー
- 430 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 12:03:23.32 ]
- 感動って無知だからできるんだぜ。
- 431 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 18:35:00.12 ]
- ハードによる高速化はシングルスレッドものと比較して早いって言ってるだけで
マルチスレッドCPUで真面目に記述したものとは大差ないんだよな それとCPUのシングルとマルチでの比較だけど マルチだとどうしても制御構造で無駄な処理が大量に入り込むから シングルでMMXとか使った場合と比較しても大差ないんだよな CPUのコア数が数十とかにでもならない限りは恩恵は実感出来ないだろうな
- 432 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 19:16:35.65 ]
- SSE ならまだしも、MMX って古代技術だろ
今の時代 MMX の恩恵が受けられる分野って何がある?
- 433 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 19:33:58.25 ]
- たぶんSIMD拡張全般を指して言ってる?
- 434 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:16:11.16 ]
- MMXじゃなくてMMXとかって書いてあるだろ
日本語読めない人なのか?
- 435 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:27:06.92 ]
- >>434
だから、その中には MMX も含まれてるんだろ? シングルでMMX使った場合と比較しても大差ない場合もあるんだろ?
- 436 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 20:49:39.87 ]
- 一番わかり易い例を出せば
シングルスレッドで画像処理をする場合はたいていメモリポインタは加算演算だけで 現在のピクセルデータの場所を計算出来る しかしマルチスレッドでやろうとするとピクセル毎に乗算でポインタを計算しないと出来ない アルゴリズム的な総計算回数ではシングルのほうが圧倒的に高速なんだよな
- 437 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:18:04.03 ]
- >>436
画像の一部に処理を施すのなら、どちらにしても アドレスは (ベースアドレス + x + y * ピッチ) で計算する必要があると思うが それに、そもそも今時かけ算が足し算の2倍時間がかかるなんてことは無いんだから、 マルチコアの環境ならマルチスレッドにして同時に計算した方が速い場合の方が 圧倒的に多いと思うぞ 輪郭摘出しかり、グレースケール化しかり、ノイズ除去しかり・・・
- 438 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:37:49.20 ]
- >>437
>ベースアドレス + x + y * ピッチ 足し算と掛け算が同じ処理時間だと過程してもこの式を見る限り4倍ですが?
- 439 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:47:39.87 ]
- >>438
おまえの言ってる意味が分からない。コード書いたことないだろ。
- 440 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 21:51:09.74 ]
- >>439
ほとんどの画像処理は1次元の概念だけで処理出来る だから1ピクセルにつきポインタ加算を1度すればいいだけ
- 441 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 22:16:47.17 ]
- >>440
言ってる意味が分からない。おまえ画像処理したことないだろ。
- 442 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 22:24:24.94 ]
- ノイズリダクションというよくあるフィルターを考えても1ピクセルだけで処理すとかないし。
100歩譲って全ピクセルなめるだけと仮定しても、 2スレッドに分けたときそれぞれのベースアドレスが変わるだけで、 どっちのスレッドでも、ポインタをインクリメントするだけ。 なにが4倍なのか本当に意味が分からない。
- 443 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:05:33.38 ]
- >>442
ノイズリダクションも全8方向の1時限的相対位置を加減算するだけでデータ位置が特定出来る
- 444 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:14:40.65 ]
- もともと掛け算命令のない8ビットCPUの頃からアドレス計算は加減算と論理演算で計算してる。
ベースアドレス + x + y * ピッチなんてのは人間の理解用だ。 そもそもx86のアドレッシングは強力だ。アドレっシングで遅くなるとかほんと意味不明。 はっきりいって画像処理なんていう並列しやすい処理は、 スレッドが二つになれば速度は倍近く早くなる。
- 445 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:19:37.83 ]
- だからこそスレッド数を増やすだけのGPU実装を最適化というのは夢が無いよ
- 446 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:32:15.18 ]
- >>438
お前さ、簡単なグレースケール化でいいから、 シングルスレッドと、マルチコア+マルチスレッドの両方をプログラムしてみて、 処理速度を計測してみなよ
- 447 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:37:38.86 ]
- GPU内部で死ぬほど並列化していて、しかもそれがプログラマブルだというのに
それを使わないほうが夢があるとかどうかしてる。 楽してGPGPUライブラリ使えよ。
- 448 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:44:02.87 ]
- これから画像処理の最適化が盛り上がりそうなのってスマートフォンじゃん
NEONベースの最適化ってどれくらい効果あんの?
- 449 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 23:52:59.78 ]
- >>446
9600GTでさんざんやったが結局CPUと変わらないという結論に達した CPUでのマルチスレッド化もやってみたが 区画を複数に分割してもそれぞれの境界をうまく相互作用させないといけない 単純にシングルでやるみたいな加算でループ一発とは行かないんだよ だから2コアでやってみたが結果は変わらない 4個なら多少は早いかもしれないが多少だろうな
- 450 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:00:24.29 ]
- >>449
CPUでのマルチスレッド化をやっても上手く行かなかった原因が > 区画を複数に分割してもそれぞれの境界をうまく相互作用させないといけない であり、また >>436 だと結論づけたのか 分析力が欠乏していると言わざるをえない、仕事仲間じゃなくて本当に良かった では、他の人たちが画像処理のマルチスレッド化で成功しているのを見て、お前はどう思う? 魔法でも使ってると思ってるのか?
- 451 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:03:29.85 ]
- >>431
まずSIMDとマルチスレッドは同時に使えるわけだが GPUはメモリの転送でかなりのオーバーヘッドがあるから グレースケールのような単純処理だとほとんど変わらないけ 大きいガウシアンフィルタのような転送するデータ量に対して計算が多い処理ならかなり速くなるぞ
- 452 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:05:17.93 ]
- >>450
何も成功してる例なんてないって だからSIMDを使ったシングルが一番効率がいい 速度と作りやすさのバランスでね 早くなったと言ってるのは最適化されてないプログラムと比較して言ってるか CPUはスペック低くしてハードだけ高スペックにしてるとかそんなもん 詐欺だよ詐欺
- 453 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:06:03.66 ]
- >>451
だからマルチスレッドのアルゴリズムが高コストになるから意味ないってw
- 454 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:36:35.56 ]
- >>452
例えば Adobe Lightroom がマルチコア環境で処理が速くなるのは、 シングルコア環境時は拙いコードが走っていたり、 CPUはスペック低くしてハードだけ高スペックにしてる環境での比較だからなのか?
- 455 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 00:52:22.64 ]
- >>449
ありえね〜www 100%おまえのバグだろw
- 456 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:04:47.31 ]
- アセンブラの知識が不足しまくってんだろうな。
どういう処理にコストがかかるとか全然分かってないのだろう。 境界をうまく相互作用と言ってる時点で設計が間違ってる。 無駄な分岐判定でストールしまくってるコード書いてるんだろ?
- 457 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:11:57.79 ]
- この流れだとGPU凄いよ派と大したことない派で簡単なコード公表するしか決着つかないんじゃね?
2値化くらいの簡単な処理なら表にできないもんかね
- 458 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:17:06.29 ]
- >>454
使ったことがないから知らないが早くなるのか? 明らかに見ただけで分かるくらい劇的か? 単に画像処理とは無関係なUI関係が早くなってるだけじゃなく? >>456 だいたいグレースケールみたいに単純な処理はむしろマイノリティだろう 例えばラベリング処理とかどうする?
- 459 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:30:40.18 ]
- >>457
そのくらい単純だとメモリアクセスやディスクIOが律速になりそう
- 460 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:30:51.41 ]
- >>457
簡単すぎる処理だと、たんなるメモリ速度のベンチマークになるだけ。 それなりに複雑な処理やらせないと駄目。
- 461 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:41:23.67 ]
- 複雑な処理になるとピクセル情報を判定タスクという単位にしてスタックにためていって
各スレッドはスタックから順次取り出して判定処理をしてタスクを追加するという作業を繰り返すことになる スタックの排他制御での時間ロスが発生する メモリも膨大に食うし 遅い
- 462 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:45:00.77 ]
- なぜ排他制御がいる?
マルチスレッドでは同期コストが一番高いというのに。 基本を無視して設計し杉。 同期が頻発するところは分けてはいけない。鉄則です。
- 463 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:47:33.21 ]
- スタックを複数スレッドで共有とか狂気w
- 464 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:47:50.08 ]
- >>462
>同期が頻発するところは分けてはいけない。鉄則です。 そんなこといったら画像処理のほとんどは並列化出来ないってことだから 言ってる通り、マルチスレッドの恩恵はない
- 465 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:50:15.89 ]
- 意味不明。全くの逆で画像処理のほとんどは並列化可能。
そもそもGPUはバケモノじみた並列化をした実装になってる。これをどう説明するのか。 いくらなんでも素人過ぎる。
- 466 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 01:55:41.29 ]
- そんな事よりマンガミーヤのリニューアル版作れる人が居ない事のほうが問題
- 467 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 02:10:11.56 ]
- 高速化出来るのはもともと高速な分野だけ
- 468 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 02:25:04.14 ]
- カメラ画像解析プログラムを良くかくけど、並列計算してくれるライブラリー(IPPとかIPL,MP)に処理を投げるとかなり速くなるよ。
ただ主にはやくなるのは画像取得や画面描写のところだね 二値化→オープニング→ラベリング とか処理結果を引き継いで処理していくのはなかなか並列計算しにくいかな
- 469 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 07:23:18.71 ]
- >>458
全く違う、目に見えて速くなる それはそうと > 単に画像処理とは無関係なUI関係が早くなってるだけじゃなく? こう思った理由が気になる マルチコア+マルチスレッドで速くなるという話で、 なんで画像処理とは無関係なUI関係が速くなると思ったのだ? お前はマルチスレッドでUI関係が速くなるライブラリでも自作してたのか? 今時UI関係が速くなるという状況がよく分からんのだが そもそも、お前の言う「UI関係」って何だ?
- 470 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 09:02:03.08 ]
- >>463
461が1ピクセルごとにタスク切って同期化してるならアホとしか言えんが Producer-Consumerでキューなりスタックなりがいるのは当たり前だろ
- 471 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 12:20:37.71 ]
- GPUのレンダリングパイプイランの実装がどうなってるか理解してるか?
同期というのは、同時にアクセスする可能性がある設計になってるから必要なんだよ。 もしそういう設計ならその設計は既に間違ってんだよ。 Producer-Consumerとか言ってる時点で設計が間違ってる。 画像処理で採用するパターンではない。
- 472 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:10:38.39 ]
- >>470はスレッドプールみたいなモノの事を言いたかったんじゃないの?
- 473 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:11:48.78 ]
- ていうのは嘘で、タスクキューみたいなやつ。
- 474 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 13:13:09.51 ]
- というわけでさようなら!
- 475 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:06:06.63 ]
- 同期するようなのは並列化出来ないってのが本来の主張であって
なぜなら画像処理の大部分は同期処理が必須という前提があるからね 「同期を伴うものを並列化するのは設計の時点で間違い」という主張は意味不明なんだけど
- 476 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:09:32.98 ]
- なにを言ってる意味が分からない。
- 477 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:19:34.09 ]
- >>475
同期処理が必須の画像処理と、並列化できる画像処理 10個くらいそれぞれ箇条書きで書いてみなよ (10個も思いつかんかも知れんが) 認識が間違ってたらみんなで指摘し合えば良い
- 478 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 20:06:10.38 ]
- >>477
高速化出来るのは単純な微積分問題だけ つまりぼかしやグレースケールやらといったフィルタ系の CPUでも十分実用レベルだろってものだけ 同期が必要になるのは オブジェクト検出、ラベリング、パターンマッチなど 一番高速化したいものたち
- 479 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 21:41:08.71 ]
- どうも、処理全体を一つの大きな塊と考え、
それを等分しようとしてできないと言っているような感じがする
- 480 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 22:15:02.97 ]
- >>478
君が同期が必要だと思っているその3つは全て並列処理することで高速化可能 それぞれ一例を挙げると・・・ オブジェクト検出は検出したいオブジェクトのサイズがだいたい分かっていれば、 画像を分割して、それぞれでオブジェクト検出を並列にできる 検出したいオブジェクトが分割の境界にまたがる恐れがあるのなら、 単に分割するのではなく、オブジェクトのサイズを考慮してオーバーラップさせればいい (この方法はオブジェクトに対して画像サイズが小さいと効果が無いが) ラベリングは行毎に横方向にスキャンし上の行との関連を調べながら行うのなら、 画像を何行かずつに分けてそれぞれ並列にラベリングし、 最後に境界線の上下の繋がりを調べれば良い パターンマッチも、ある程度絞った候補を最後に総当たりして、 それぞれとのマッチング度合いを測るところで並列処理できる ランダムな数値が並んでいる1次元配列に特定の数値が入ってるかを調べる処理が マルチスレッドで高速処理できるのと「概念的には」同じだ この部分を並列化することで高速化できるから、 その前のある程度絞る部分も検査基準を下げて高速化の恩恵が受けられる
- 481 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:46:15.31 ]
- GPU意味ない派がシングルコアAVXでGPU並の速度出せば納得するけどね
ラベリングでもテンプレートマッチングでも何でもいいけど
- 482 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:02:57.93 ]
- 並列処理もまともに設計できない馬鹿素人を相手にするのはもう止めときましょう。
建設的ではない。
- 483 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 00:55:53.73 ]
- >>480
条件が限られすぎ 一部分だけ並列化したって労力の割に効果はほとんどない >>481 GPUが早いかどうやって話はしてない 無駄なプログラムを書く労力を使ってまでして得るような速度ではないという話 >>482 まともに設計しないといけない時点で思想自体が馬鹿なんだと気がつこう
- 484 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 01:32:59.67 ]
- オーダー減らないと意味ない派の研究者と20%も高速化すれば御の字の技術者が争ってたりしないか?
- 485 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:23:06.33 ]
- >>483
> 条件が限られすぎ オブジェクトのサイズがだいたい分かっていればの部分か? 普通は何のオブジェクトを抽出するか設計する段階で、 画像のサイズに対するオブジェクトのサイズの割合は だいたい適正値の範囲を決めておくものだが、君は決めないのか? 定点カメラで車の交通量を測る場合然り、 デジカメで被写体の顔を認識する場合然り > 一部分だけ並列化したって労力の割に効果はほとんどない その一部は全体のボトルネックになっている部分だったりする 君は当然「>>480 と同じ方法」で実験してみて、 でもそれほど処理速度が出なかったんだよね 分析した結果どこがボトルネックになってたと結論づけた?
- 486 名前:デフォルトの名無しさん [2012/02/08(水) 05:57:38.34 ]
- 馬鹿は黙ってろ
|

|