ChatGPTを使用して安全ヘルメット着用検出プロジェクトを完全に自動的に開発する

ChatGPTを使用して安全ヘルメット着用検出プロジェクトを完全に自動的に開発する

こんにちは、みんな。

今日は、ChatGPT を使用して安全ヘルメットの着用検出を開発する方法を紹介します。コードはすべて GPT4 で書かれています。

まず、ChatGPT の役割を設定し、完了するタスクを伝え、ChatGPT に詳細な手順を実行させます。

写真

データの準備と注釈付け、モデルの選択と設計からモデルの展開まで、ChatGPT は非常に具体的で詳細かつ実行可能な手順を提供します。

ここでは、主にデータの準備とモデル選択のトレーニングに焦点を当てます。

自分でデータを収集してラベル付けするのが時間と手間がかかる場合は、ChatGPT に依頼して、既存のリソースがあるかどうかを調べることができます。

写真

彼は私たちのためにデータセットを直接見つけてくれたわけではありませんが、KaggleやGitHubなど、リソースを検索できるWebサイトを提供してくれました。

Kaggle と GitHub で検索したところ、すでにラベル付けされたデータセットを見つけることができました。最終的に、Kaggle のデータセットを選択しました。

写真

データセットには、ヘルメットを着用している状態とヘルメットを着用していない状態の 2 つのカテゴリが含まれており、注釈ファイルは PASCAL 形式です。

写真

データセットをダウンロードし、ChatGPTにアノテーションファイルを解析するコードを書かせ、元の画像にアノテーション結果を描画させます。

写真

コードは正しいです。入力ファイルのパスを変更するだけで、直接実行してマークされた検出ボックスを確認できます。

 import cv2 import xml.etree.ElementTree as ET import random # 随机生成一个颜色def random_color(): return (0, random.randint(0, 255), random.randint(0, 255)) # 读取PASCAL VOC格式的XML标注文件def read_annotations(xml_file): tree = ET.parse(xml_file) root = tree.getroot() boxes = [] for obj in root.iter('object'): name = obj.find('name').text xmlbox = obj.find('bndbox') x1 = int(xmlbox.find('xmin').text) y1 = int(xmlbox.find('ymin').text) x2 = int(xmlbox.find('xmax').text) y2 = int(xmlbox.find('ymax').text) boxes.append([name, x1, y1, x2, y2]) return boxes # 读取图片image_path = "./archive (1)/images/BikesHelmets38.png" # 更改为你的图片路径image = cv2.imread(image_path) # 读取标注xml_path = "./archive (1)/annotations/BikesHelmets38.xml" # 更改为你的XML文件路径annotations = read_annotations(xml_path) # 在图片上画出标注框for annotation in annotations: name, x1, y1, x2, y2 = annotation color = random_color() cv2.rectangle(image, (x1, y1), (x2, y2), color, 2) cv2.putText(image, name, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1) # 显示图片cv2.imshow('Annotated Image', image) cv2.waitKey(0) cv2.destroyAllWindows()

写真

このデータセットを使って、ChatGPTで適切なモデルを選択することができます。

写真

写真

いくつかの比較を行った後、ChatGPT は最終的に YOLO を選択しました。

ただし、データセットのアノテーション ファイルは PASCAL 形式であるため、ChatGPT で YOLO 形式に変換する必要もあります。

写真

スペースを節約するため、コードは掲載しません。ここで、ChatGPT は変換の例として 1 つのファイルのみを使用します。また、ChatGPT にディレクトリをトラバースしてバッチ変換を実行するプログラムを作成させることもできます。

この時点で、データセットは完全に準備されており、残っているのは ChatGPT モデルをトレーニングすることだけです。

写真

当初、ChatGPT は YOLO ネットワーク アーキテクチャを自分で作成していました。彼がそれを十分に理解できず、バグのデバッグに私が丸一日同行しなければならないかもしれないと考えました。そこで、オープンソース ソリューションに変更するように依頼し、YOLOv5 を選択しました。

依存関係をインストールし、yaml ファイルを構成し、トレーニング コマンドを 3 つのステップで実行します。

ChatGPT に事前にカテゴリの数を伝えなかったため、生成された YAML 設定ファイルのデフォルト カテゴリは 1 になっています。これは、自社の業務に合わせて柔軟に調整できます。

トレーニングコマンドに問題はありません。事前トレーニング済みモデルとして yolov5s モデルを使用します。コマンドを実行すると、yolov5s.pt が自動的にダウンロードされます。すでにダウンロードしている場合は、--weights パラメータでローカルの重みファイルを追加できます。

モデルのトレーニングが完了したら、トレーニング結果を表示できます。

写真

最後に、ChatGPT に推論コードを生成させて適用します。

写真

写真

ChatGPT によって生成されたコードは基本的にそのまま使用できますが、より効率的に使用するには、ディープラーニングに関する知識を理解する必要があります。そうしないと、エラーが報告された後、それを直接 ChatGPT に投稿すると、どんどん道を踏み外してしまう可能性が高くなります。

<<: 

>>:  ChatGPTでユーザーは何をするのでしょうか?プログラミングは30%を占めています。数千万人のユーザーを分析すると答えが見つかります

推薦する

目から鱗!ヘルスケアと自動車業界における AI の興味深い応用例 11 選

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

...

...

データ分析の知識: 相関分析アルゴリズム Apriori

以前、ショッピングバスケット分析についての記事を書きました。その中で、C5.0 と Apriori ...

...

AIが「エッジ」に必要である理由

インテリジェンスは急速に増加しており、今日では、新しい生成型人工知能 (gen-AI) と機械学習 ...

文字の組み合わせをソートするJavaアルゴリズム

Java の文字の組み合わせソートは、特に難しい問題ではありません。ブルートフォースとグラフ理論 (...

Panda Eats SMS: 機械学習に基づく新しいスパムフィルタリングアプリ

[[212334]]モバイル インターネット時代に生きる技術オタクとして、私は嫌がらせのテキスト メ...

集中治療室における人工知能の未来

他の業界と同様に、ヘルスケアにおける AI の応用と議論は幅広く行われています。 AIはすでに診断の...

MetaHuman の効果は素晴らしいです!しかし、メタバースだけを考えると、パターンは少し小さくなります。

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

フードデリバリー広告向け大規模ディープラーニングモデルのエンジニアリング実践

著者: Yajie Yingliang、Chen Long 他導入美団のフードデリバリー事業が成長を...

KuaishouとNVIDIAが提携し、業界最先端のGPUコンピューティングインフラストラクチャを展開

1日あたり2億人以上のアクティブユーザーを抱える快手には、130億本以上の短編動画が蓄積されており、...

TensorFlow から Theano まで: 7 つのディープラーニング フレームワークの水平比較

ディープラーニング プロジェクトを開始する前に、適切なフレームワークを選択することが非常に重要です。...

固有値分解から共分散行列へ: PCA アルゴリズムの詳細な分析と実装

この記事では、まず固有ベクトルと行列との関係を簡潔かつ明確に紹介し、次にそれを基に共分散行列と主成分...