たった 2 つの Python 関数を使用して完全なコンピューター ビジョン アプリケーションを数分で作成する方法
#翻訳者| Li Rui
校閲者| Chonglou
#Thisこの記事は、コンピュータ ビジョン アプリケーションの基本要件の簡単な紹介から始まります。次に、組み込みコンピューター ビジョンのサーバーレス開発エクスペリエンスを提供するオープン ソース フレームワークである Pipeless について詳しく紹介します。最後に、いくつかの Python 関数とモデルを使用して単純なオブジェクト検出アプリケーションを作成および実行する方法を示す詳細なステップバイステップ ガイドが提供されます。コンピュータ ビジョン アプリケーションの作成
「コンピュータ ビジョン」を説明する 1 つの方法は、それを「カメラとアルゴリズム テクノロジを使用して、画像認識と処理の分野を実行します。」ただし、この単純な定義では、人々の概念の理解が完全には満たされない可能性があります。したがって、コンピューター ビジョン アプリケーションを構築するプロセスをより深く理解するには、各サブシステムが実装する必要がある機能を考慮する必要があります。 コンピューター ビジョン アプリケーションを構築するプロセスには、画像取得、画像処理、特徴抽出、オブジェクト認識、意思決定など、いくつかの重要な手順が含まれます。まず、カメラまたは他の画像取得デバイスを通じて画像データが取得されます。その後、画像は、さらなる分析のためのノイズ除去、強調、セグメンテーションなどの操作を含むアルゴリズムを使用して処理されます。特徴抽出段階で、システムは
などの画像内の主要な特徴を識別します。60 fps のビデオ ストリームをリアルタイムで処理するには、各フレームを 16 フレーム以内に処理する必要があります。ミリ秒。これは通常、マルチスレッドおよびマルチ処理プロセスを通じて実現されます。場合によっては、フレーム処理を確実に高速化するために、前のフレームが完了する前に次のフレームの処理を開始することが必要になる場合もあります。
人工知能モデルの場合、幸いなことに、現在では優れたオープンソース モデルが多数利用できるため、ほとんどの場合、独自のモデルを最初から開発する必要はなく、パラメータを微調整するだけで済みます。特定のユースケースを満たすため。これらのモデルはすべてのフレームで推論を実行し、オブジェクト検出、セグメンテーション、姿勢推定などのタスクを実行します。
•推論ランタイム: 推論ランタイムは、モデルをロードし、利用可能なさまざまなデバイス (GPU または CPU) 上で効率的に実行する責任があります。
推論プロセス中にモデルを迅速に実行できるようにするには、GPU の使用が不可欠です。 GPU は、特に大量の数学演算を処理する場合に、CPU よりも桁違いに多くの並列演算を処理できます。フレームを処理するときは、フレームが配置されるメモリの場所を考慮する必要があり、GPU メモリまたは CPU メモリ (RAM) に格納することを選択できます。ただし、これら 2 つの異なるメモリ間でフレームをコピーすると、特にフレーム サイズが大きい場合、動作が遅くなる可能性があります。これは、より効率的なモデル推論プロセスを実現するには、メモリの選択とデータ転送のオーバーヘッドを比較検討する必要があることも意味します。
マルチメディア パイプラインは、データ ソースからビデオ ストリームを取得し、フレームに分割して、モデルへの入力として使用する一連のコンポーネントです。場合によっては、これらのコンポーネントは、転送のためにビデオ ストリームを変更および再構築することもできます。これらのコンポーネントはビデオ データの処理において重要な役割を果たし、ビデオ ストリームが効率的に送信および処理されることを保証します。
• ビデオ ストリーム管理: 開発者は、アプリケーションがビデオ ストリームの中断、再接続、ビデオ ストリームの動的追加と削除、複数のビデオ ストリームの同時処理などに耐えられるようにしたい場合があります。
これらのシステムはすべて作成するか、プロジェクトに組み込む必要があるため、コードを保守する必要があります。ただし、直面する問題は、アプリケーション固有ではなく、実際のケース固有のコードを囲むサブシステムを大量のコードを保守することになることです。
Pipeless フレームワーク
上記のすべてを最初から構築することを避けるために、代わりに Pipeless フレームワークを使用できます。これはコンピューター ビジョン用のオープン ソース フレームワークであり、ケース固有の機能を許可し、その他の処理も可能です。
Pipeless フレームワークは、アプリケーションのロジックを「ステージ」に分割し、その 1 つは単一モデルのマイクロアプリケーションのようなものです。ステージには、前処理、前処理された入力を使用した推論の実行、およびアクション用のモデル出力の後処理が含まれます。その後、複数のモデルを使用する場合でも、好きなだけステージを連鎖させて完全なアプリケーションを構成できます。
各ステージのロジックを提供するには、アプリケーション固有のコード関数を追加するだけで、必要に応じて Pipeless がその関数の呼び出しを処理します。このため、Pipeless は、組み込みコンピューター ビジョンにサーバーのような開発エクスペリエンスを提供し、追加のサブシステムの必要性を気にせずにいくつかの機能を提供するフレームワークと考えることができます。
Pipeless のもう 1 つの重要な機能は、CLI または REST API を介してビデオ ストリームを動的に追加、削除、更新することでビデオ ストリーム処理を自動化できることです。ビデオ ストリームの処理をいつ再開するか、エラー後に再開するかどうかなどを示す再開ポリシーを指定することもできます。
最後に、Pipeless フレームワークをデプロイするには、パイプレス フレームワークをインストールし、クラウド コンピューティング仮想マシンやコンテナ化モード、または Nvidia Jetson などのエッジ デバイスで直接、任意のデバイス上でコード関数を使用して実行するだけです。ラズベリーなどミドル。 次に、Pipeless フレームワークを使用して単純なオブジェクト検出アプリケーションを作成する方法を詳しく説明します。 。 #最初はインストールです。インストール スクリプトを使用すると、インストールが非常に簡単になります。 次に、プロジェクトを作成する必要があります。 Pipeless プロジェクトは、ステージを含むディレクトリです。各ステージはサブディレクトリ内にあり、各サブディレクトリ内にフック (特定のコード関数) を含むファイルが作成されます。各ステージ フォルダーに指定された名前は、後でビデオ ストリームに対してそのステージを実行するときに、パイプレス ボックスに指定する必要があるステージ名です。 ここで、空のテンプレートは CLI にディレクトリを作成するだけを指示します。テンプレートが提供されていない場合、CLI はステージを作成するためのいくつかの質問を表示します。インタラクティブに。 上で述べたように、プロジェクトにフェーズを追加する必要があります。次のコマンドを使用して、GitHub からステージの例をダウンロードします: これにより、ステージ ディレクトリ onnx-yolo が作成されます。アプリケーション機能が含まれています。 次に、各ステージ ファイルの内容 (アプリケーション フック) を確認します。 これは、フレームとシーンを受け入れる関数 (フック) を定義する pre-process.py ファイルです。この関数は、モデルが予期する形式と一致するように、RGB フレームを受信する入力データを準備するためにいくつかの操作を実行します。このデータは、Pipeless がモデルに渡すデータである Frame_data['interence_input'] に追加されます。 使用するパイプレス推論ランタイム (この場合は ONNX ランタイム) を示す process.json ファイルもあります。ロードする必要があるモデルと、使用する実行プロバイダー (CPU、CUDA、TensorRT など) などのオプションのパラメーターの一部を見つけます。 最後に、post-process.py ファイルは、pre-process.py の関数と同様の関数を定義します。今回は、Pipeless が Frame_data["inference_output"] に保存する推論出力を受け入れ、その出力を境界ボックスに解析する操作を実行します。その後、フレーム上に境界ボックスを描画し、最後に変更されたフレームをframe_data['modified']に割り当てます。このようにして、Pipeless は提供されたビデオ ストリームを転送しますが、境界ボックスを含む変更されたフレームが含まれます。 最後のステップは、Pipeless を起動してビデオ ストリームを提供することです。 Pipeless を開始するには、my-project ディレクトリで次のコマンドを実行するだけです: 実行すると、Web カメラ (v4l2) からのビデオ ストリームが提供されます。 、出力を画面に直接表示します。ビデオストリームが順番に実行するステージのリストを提供する必要があることに注意してください。この例では、それは単なる onnx-yolo 段階です: コンピューター ビジョン アプリケーションの作成は A多くの要素やサブシステムを実装する必要があるため、タスクは複雑です。 Pipeless のようなフレームワークを使用すると、立ち上げて実行するのに数分しかかからないため、特定のユースケース向けのコードの作成に集中できます。さらに、パイプレス「ステージ」は再利用性が高く、メンテナンスが容易であるため、メンテナンスが容易になり、非常に迅速に反復できます。 Pipeless の開発に参加したい場合は、GitHub リポジトリを通じて参加できます。 元のタイトル: Create a Complete Computer Vision App in Minutes With Just Two Python Functions、著者: Miguel Angel Cabrera リンク: https://www.php.cn/link/e26dbb5b1843bf566ea7ec757f3325c4オブジェクト検出アプリケーションの作成
Curl https://raw.githubusercontent.com/pipeless-ai/pipeless/main/install.sh | bash
pipeless init my-project --template emptycd my-project
wget -O - https://github.com/pipeless-ai/pipeless/archive/main.tar.gz | tar -xz --strip=2 "pipeless-main/examples/onnx-yolo"
def hook(frame_data, context):frame = frame_data["original"].view()yolo_input_shape = (640, 640, 3) # h,w,cframe = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)frame = resize_rgb_frame(frame, yolo_input_shape)frame = cv2.normalize(frame, None, 0.0, 1.0, cv2.NORM_MINMAX)frame = np.transpose(frame, axes=(2,0,1)) # Convert to c,h,winference_inputs = frame.astype("float32")frame_data['inference_input'] = inference_inputs... (some other auxiliar functions that we call from the hook function)
{ "runtime": "onnx","model_uri": "https://pipeless-public.s3.eu-west-3.amazonaws.com/yolov8n.onnx","inference_params": { "execution_provider": "tensorrt" }}
def hook(frame_data, _):frame = frame_data['original']model_output = frame_data['inference_output']yolo_input_shape = (640, 640, 3) # h,w,cboxes, scores, class_ids = parse_yolo_output(model_output, frame.shape, yolo_input_shape)class_labels = [yolo_classes[id] for id in class_ids]for i in range(len(boxes)):draw_bbox(frame, boxes[i], class_labels[i], scores[i])frame_data['modified'] = frame... (some other auxiliar functions that we call from the hook function)
pipeless start --stages-dir .
pipeless add stream --input-uri "v4l2" --output-uri "screen" --frame-path "onnx-yolo"
結論
以上がたった 2 つの Python 関数を使用して完全なコンピューター ビジョン アプリケーションを数分で作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

mysqlダウンロードファイルは破損していますが、どうすればよいですか?残念ながら、MySQLをダウンロードすると、ファイルの破損に遭遇できます。最近は本当に簡単ではありません!この記事では、誰もが迂回を避けることができるように、この問題を解決する方法について説明します。それを読んだ後、損傷したMySQLインストールパッケージを修復するだけでなく、将来の行き詰まりを避けるために、ダウンロードとインストールプロセスをより深く理解することもできます。最初に、ファイルのダウンロードが破損した理由について話しましょう。これには多くの理由があります。ネットワークの問題は犯人です。ダウンロードプロセスの中断とネットワーク内の不安定性は、ファイル腐敗につながる可能性があります。ダウンロードソース自体にも問題があります。サーバーファイル自体が壊れており、もちろんダウンロードすると壊れています。さらに、いくつかのウイルス対策ソフトウェアの過度の「情熱的な」スキャンもファイルの破損を引き起こす可能性があります。診断問題:ファイルが本当に破損しているかどうかを判断します

MySQLのインストール障害の主な理由は次のとおりです。1。許可の問題、管理者として実行するか、SUDOコマンドを使用する必要があります。 2。依存関係が欠落しており、関連する開発パッケージをインストールする必要があります。 3.ポート競合では、ポート3306を占めるプログラムを閉じるか、構成ファイルを変更する必要があります。 4.インストールパッケージが破損しているため、整合性をダウンロードして検証する必要があります。 5.環境変数は誤って構成されており、環境変数はオペレーティングシステムに従って正しく構成する必要があります。これらの問題を解決し、各ステップを慎重に確認して、MySQLを正常にインストールします。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

MySQLは開始を拒否しましたか?パニックにならないでください、チェックしてみましょう!多くの友人は、MySQLのインストール後にサービスを開始できないことを発見し、彼らはとても不安でした!心配しないでください、この記事はあなたがそれを落ち着いて対処し、その背後にある首謀者を見つけるためにあなたを連れて行きます!それを読んだ後、あなたはこの問題を解決するだけでなく、MySQLサービスの理解と問題のトラブルシューティングのためのあなたのアイデアを改善し、より強力なデータベース管理者になることができます! MySQLサービスは開始に失敗し、単純な構成エラーから複雑なシステムの問題に至るまで、多くの理由があります。最も一般的な側面から始めましょう。基本知識:サービススタートアッププロセスMYSQLサービススタートアップの簡単な説明。簡単に言えば、オペレーティングシステムはMySQL関連のファイルをロードし、MySQLデーモンを起動します。これには構成が含まれます

MySQLは、基本的なデータストレージと管理のためにネットワーク接続なしで実行できます。ただし、他のシステムとのやり取り、リモートアクセス、または複製やクラスタリングなどの高度な機能を使用するには、ネットワーク接続が必要です。さらに、セキュリティ対策(ファイアウォールなど)、パフォーマンスの最適化(適切なネットワーク接続を選択)、およびデータバックアップは、インターネットに接続するために重要です。
