Q&A
Processing speed is a matter of life and death for image processing applications, and I've heard that OpenCV4 is already compatible with GPU execution, but when will GOOGLE COLAB support OpenCV4?
=====================
実行速度は画像処理のアプリにとって非常に重要で、GOOGLE COLABはいつGPU処理に対応するOpenCV4以上をサポートすることになるのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答5件
#1
総合スコア7597
投稿2023/02/14 05:06
編集2023/02/14 06:31google colabで
python
1import cv2 2print(cv2.getBuildInformation())
を実行したら「OpenCL: YES」なので、
ビルドしたOpenCVを動かしてみた
を参考に試してみました
コードは、下記の「検証用コード」から修正し、「ランタイムのタイプ」を「GPU」にして実行します
「OpenCVの画像処理をGPU(CUDA)で高速化する」を読んでresizeをマルチコア対応するお話。
また、入力画像は、下記の「len_std.jpg」(256x256カラー)です
画像認識
下記を実行したら、「CPU = 8.074358057975768[msec]」くらいでした
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.imread("len_std.jpg") 11 12### Run with CPU 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("CPU = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
下記を実行したら、「OpenCL = 0.7466637849807739[msec]」くらいでした
8.074358057975768 / 0.7466637849807739 ≒ 11倍の高速化
(効果は実行時に割り当てられるgpuの機種等によって変わると思います)
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.UMat(cv2.imread("len_std.jpg")) 11 12### Run with OpenCL 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("OpenCL = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
#2
総合スコア7597
投稿2023/02/14 06:45
総合スコア7597
投稿2023/02/14 05:06
編集2023/02/14 06:31
google colabで
python
1import cv2 2print(cv2.getBuildInformation())
を実行したら「OpenCL: YES」なので、
ビルドしたOpenCVを動かしてみた
を参考に試してみました
コードは、下記の「検証用コード」から修正し、「ランタイムのタイプ」を「GPU」にして実行します
「OpenCVの画像処理をGPU(CUDA)で高速化する」を読んでresizeをマルチコア対応するお話。
また、入力画像は、下記の「len_std.jpg」(256x256カラー)です
画像認識
下記を実行したら、「CPU = 8.074358057975768[msec]」くらいでした
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.imread("len_std.jpg") 11 12### Run with CPU 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("CPU = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
下記を実行したら、「OpenCL = 0.7466637849807739[msec]」くらいでした
8.074358057975768 / 0.7466637849807739 ≒ 11倍の高速化
(効果は実行時に割り当てられるgpuの機種等によって変わると思います)
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.UMat(cv2.imread("len_std.jpg")) 11 12### Run with OpenCL 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("OpenCL = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
最適な Colab のプランを選択する
の一番左の「Pay As You Go」を購入して、「ランタイムのタイプを変更」で「GPU」を選んで、「GPUクラス」で「プレミアム」を選ぶと、「OpenCL = 0.5429462671279908[msec]」くらいになりました
8.074358057975768 / 0.5429462671279908 ≒ 15倍の高速化
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#3
面白い解決法有難うございます。
これからやってみようと思います。
ただ、OpenCLが出ましたので、どこがOpenCLでしょうか。
またどうぞ宜しくお願い致します。
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#4
総合スコア7597
投稿2023/02/14 08:21
編集2023/02/15 06:37総合スコア315
投稿2023/02/14 08:07
面白い解決法有難うございます。
これからやってみようと思います。
ただ、OpenCLが出ましたので、どこがOpenCLでしょうか。
またどうぞ宜しくお願い致します。
どこがOpenCL
総合スコア7597
投稿2023/02/14 05:06
編集2023/02/14 06:31
google colabで
python
1import cv2 2print(cv2.getBuildInformation())
を実行したら「OpenCL: YES」なので、
ビルドしたOpenCVを動かしてみた
を参考に試してみました
コードは、下記の「検証用コード」から修正し、「ランタイムのタイプ」を「GPU」にして実行します
「OpenCVの画像処理をGPU(CUDA)で高速化する」を読んでresizeをマルチコア対応するお話。
また、入力画像は、下記の「len_std.jpg」(256x256カラー)です
画像認識
下記を実行したら、「CPU = 8.074358057975768[msec]」くらいでした
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.imread("len_std.jpg") 11 12### Run with CPU 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("CPU = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
下記を実行したら、「OpenCL = 0.7466637849807739[msec]」くらいでした
8.074358057975768 / 0.7466637849807739 ≒ 11倍の高速化
(効果は実行時に割り当てられるgpuの機種等によって変わると思います)
python
1import sys 2import time 3import cv2 4 5### VALUES 6NUM_REPEAT = 10000 7 8### Read source image 9#img_src = cv2.imread("lena.jpg") 10img_src = cv2.UMat(cv2.imread("len_std.jpg")) 11 12### Run with OpenCL 13time_start = time.time() 14for i in range (NUM_REPEAT): 15 #img_dst = cv2.resize(img_src, (300, 300)) 16 img_dst = cv2.resize(img_src, (3840, 2160)) 17time_end = time.time() 18print ("OpenCL = {0}".format((time_end - time_start) * 1000 / NUM_REPEAT) + "[msec]")
ビルドしたOpenCVを動かしてみた
の「Pythonから呼んでみた」に、
「OpenCLを動かすにはUMatというMat互換のクラスを使うだけで大丈夫っぽい。」
とあります
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
の16〜22ページも参考になると思います
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
#5
有難うございます!
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
Q&A
解決済
htmlのformのsubmitが効かない
回答1
クリップ0
更新
2023/06/07
Q&A
解決済
Stable Diffusionで突然gradioが起動しなくなってしまいました。
回答1
クリップ0
更新
2023/05/25
Q&A
解決済
Google CloudのOAuthを使用したPythonメール送信での認証エラー(535)の解決方法が知りたい
回答1
クリップ0
更新
2023/05/29
Q&A
解決済
javaのResultSet.get~が端数処理する
回答1
クリップ0
更新
2023/06/06
Q&A
解決済
php:apacheでautoindex_moduleが有効にならない?
回答1
クリップ0
更新
2023/05/31
Q&A
解決済
【Flutter】IOSでは問題ないのだが、Androidエミュレータ用にビルドをするとエラーが出てしまう
回答1
クリップ0
更新
2023/06/07
Q&A
解決済
pythonのcshogiライブラリをfreeBSDにインストールする方法
回答1
クリップ0
更新
2023/06/01
同じタグがついた質問を見る
Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。
OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。