• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

YOLOv5を用いた物体検出

  • ルーティング
  • データベースの命名規則
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • 三目並べ – 3.勝敗がつくようにしよう
  • クリーンコード(Clean Code)
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • インフラストラクチャー(サーバー、コンポーネント、RAID)
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • YOLOv8を用いた物体検出
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • ファイル操作コマンド
  • グループとユーザー
  • 困った時に使うコマンド
  • 一般グループのユーザーとグループ
  • プライバシーポリシー
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • ファイル検索コマンド
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • データ分析基礎 – Part1
  • 三目並べ – 0.導入
  • テキスト処理
  • データベースへのデータロード
  • 機械学習概要1
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • ファイル管理
  • SSHを使用してホストOSからゲストOSに接続する
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • 機械学習概要2
  • データ分析基礎 – Part 2
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • フロントエンドのWeb開発について
  • ダイナミックルーティング
  • 三目並べ – 1.ゲーム盤を作ろう
  • 【Python入門】Python Numpy チュートリアル
  • Amazon EC2 インスタンスの初期設定をしよう
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • Apache NiFi Exercise
  • Apache NiFi データパイプライン基礎
  • Apache NiFiの環境設定
  • Apache Spark 基礎
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Apache Superset maptoolの使い方
  • Apache Superset 基礎
  • Apache Superset 概要と環境構築
  • Apache Zeppelin 基本機能
  • APIのデモンストレーション
  • Avinton Academy コンテンツガイド
  • AWS CLIをインストールしてコマンド操作しよう
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • CCNA
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • CISCO 1800ルータセットアップ
  • CSV import & export – Node.js, mySQL – 1
  • CSV import & export – Node.js, mySQL – 2
  • Docker Compose(Nginx + Flask + MySQL)演習
  • Docker Engineのubuntu上へのinstall
  • Docker 概要とセットアップ
  • Docker, Kubernetesの学び方について
  • Dockerコンテナイメージの最適化/ベストプラクティス
  • DockerとApacheを使ってWebサーバーを構築しよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • ESP32-CAMのサンプルアプリケーションを実行する
  • 01 – Sparkfun Inventor’s Kit の準備
  • 02 – Sparkfun Inventor’s KitでLチカ
  • 03 ポテンショメータでLEDの点滅間隔をアナログ入力する
  • 04 フォトレジスタで明るさに反応するシステムをつくる
  • 05 LCDに文字列を表示する
  • 06 – BME280とLCDを組み合わせて温度計をつくる
  • ESP32とArduino IDE/PlatfromIOでHello Worldアプリケーションの実行
  • ESP32と超音波センサー HC-SR04 で物体の距離を計測する
  • ESXi – Switchの追加とVLAN
  • ESXi – VyOS
  • ESXi – 小規模ネットワーク 構築
  • Gitとは
  • VS CodeでGitHub Copilotを設定する
  • VSCode リモート開発環境
  • GNS3のセットアップ
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • Linuxとは
  • NAT
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
  • OpenCVのテストプログラム
  • PacketTracerのセットアップ
  • Pandasによる構造化データ分析
  • PCからルータ、スイッチへのSSH接続設定
  • PostGIS exercise
  • PostgreSQL – Python – Apache – Bootstrap
  • MySQLとMySQL Workbench のセットアップ
  • PostgreSQL Setup
  • PostgreSQL – インデックスを利用したパフォーマンス改善方法
  • PostgreSQL – パーティショニングを利用したパフォーマンス改善方法
  • PostgreSQLによるデータ分析
  • postgreSQLへのshp fileのimport
  • Python2.7とOpenCVのインストール
  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • Pythonでデータベースを操作する
  • Pythonで画像を分類するプログラムを作成する
  • Pythonによるマルチスレッドプログラミング実践
  • Raspberry Pi 4B のセットアップ
  • Raspberry PiとBME280を使用して温度と湿度、気圧を読み取る
  • REDIS
  • Redux基礎 – 主要な概念と用語
  • Ruby on Rails を MySQLでセットアップ
  • Ruby on Railsによる簡単なウェブアプリケーション
  • SampleアプリケーションのKubernetes上へのデプロイ
  • Scala 基礎
  • scikit-learnとは
  • Spark SQL エクササイズ
  • SparkMLによるKaggle Titanic生存者予測
  • SparkMLによる住宅価格予測
  • SQL 便利な関数
  • Ubuntuの基本設定
  • uhubctlでUSBデバイスのオンオフをコントロール
  • Terraform入門 2 – Terraformのstate管理
  • Terraform入門 1 – TerraformでAWS上にEC2インスタンスを作成する
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • viエディタ
  • VLAN
  • VMware ESXi サーバー構築
  • Webアプリ開発に欠かせないGoogle Chrome DevToolsの基本
  • Windows Server 2012 R2 Hyper-V
  • YOLOv5を用いた物体検出
Home Avintonアカデミー YOLOv5を用いた物体検出
yolov5

このタスクでは、物体検出モデルYOLOv5を活用して、犬の検出を行います。

このコンテンツはVirtual box上のUbuntu OSでの作業を想定しています。まだ環境構築が済んでいない場合はUbuntuの基本設定のコンテンツを参考にセットアップをして下さい。

物体検出とは

物体検出とは、画像や動画の中から物体を検知する技術のことです。
物体検出は、画像や動画の中に特定の物体が確認された場合に位置や種類、個数を特定することができます。
製造業の外観検査、医療や建設業などに利用されることが多い技術で、身近な例では、スマホのカメラ、自動運転における歩行者の検知などにも利用されています。

YOLOv5 とは

YOLO(You Only Look Once)とは処理速度が他のモデルより高速な物体検出アルゴリズムの1つです。

YOLOには様々なバージョンがあり、現在では、YOLOv1〜v7まであります。(2022年10月時点)

本コンテンツで使用するYOLOv5は、処理速度、精度が高くバランスの良いモデルで、Pythonのオープンソース機械学習ライブラリのPyTorchを使用しています。

データセット

1. 画像の取得

Dog_images.zip こちらの100枚の犬の画像をダウンロード後、zipファイルを解凍します。

imagesフォルダとlabelsフォルダを作成し、ダウンロードした画像をimagesフォルダに格納してください。

YOLOv5を用いた物体検出

※今回はkaggleからデータセットをダウンロードしたものを活用しますが、皆さんは検出したいものを決めてネット等から集めたものを使用しても構いません。

*Kaggleとは:企業とデータサイエンティストをつなぐ為のプラットフォームです。企業や大学がデータサイエンスに関する課題を出して、参加者が構築するモデルの精度を競い合うコンペティションが開かれています。

データ取得元:Kaggle Animal Faces

LabelImg インストール

1.インストールの仕方

Ubuntu Linuxの場合

1
2
pip3 install labelImg
labelImg

それができない場合は、

1
2
3
4
5
6
sudo apt-get install pyqt5-dev-tools
git clone https://github.com/heartexlabs/labelImg.git
cd labelImg
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
python3 labelImg.py

その他OSの方はこちらをご覧ください

2.labelImgの使用方法

GIF動画を参考にラベル付けを行ってください。

 

 

1. ダウンロードした画像を含むディレクトリを開く
2. 保存先を変更するを選択し、Lablesディレクトリを指定する
3. 指定されたラベル名を使うをチェックし、ラベル名を入力(今回はdog)
4. 表示を選択し、自動で保存するを選択
5. PascalVOCをYOLOに変更
5. 犬を四角で囲う
6. 次の画像へ

※ショートカットキー

1
2
3
W: 短形を作成
A: 戻る
D: 進む

ラベル付けを行うと、以下のようにlabelsフォルダに.txtファイルが格納されます

YOLOv5を用いた物体検出

注意

classes.txtには、オブジェクトのクラス番号が記載されています。
検出するオブジェクトは1つだけなので、触れる必要はありません。

ラベル付けが終わったら、classes.txtは削除するか、異なる場所においてください。学習するときにエラーが出る可能性があります。

訓練データと検証データ

ラベル付けが終わったら、以下のようなディレクトリ構造を作成します。

訓練データと検証データを以下のようにランダムに振り分けるプログラムを作成してください。

以下の割合で分割します。

1
train : 8 , valid :2

例

Image(100枚) : train:80枚 valid:20枚

label(100枚) : train:80枚 valid:20枚

Directory Structure

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dataset_name/
├── train
│   ├── images
│   │   ├── train0.jpg
│   │   └── train1.jpg
│   └── labels
│       ├── train0.txt
│       └── train1.txt
└── valid
    ├── images
    │   ├── valid0.jpg
    │   └── valid1.jpg
    └── labels
        ├── valid0.txt
        └── valid1.txt

YOLOv5環境構築

ここからは学習フェーズになります。
開発環境はローカルでも良いのですが、GPUを使いたいのでGoogle Colaboratory を使用することにします。

virtualbox上でdriveとcolabratoryを開く。

1. 画像データをGoogle Driveにアップロード

virtualbox上でドライブを開き、先程アップロードしたデータセットをアップロードする

2. colabratoryのランタイムというタブをクリックします。

YOLOv5を用いた物体検出

3. ランタイムタイプの変更をクリックします。

YOLOv5を用いた物体検出

 

4. GPUを選択し、保存する

YOLOv5を用いた物体検出

5. ドライブをマウント

まず、セルに以下のコードを入力してください。
これは、Googleドライブにアップロードした画像データを使いたいためGoogleドライブをマントしています。

1
2
3
from google.colab import drive
drive.mount('/content/drive')
%cd "Google ドライブ内のパス"

6.YOLOv5環境構築

YOLOv5をクローンします。 セルに次のコードを入力して実行します。

1
2
3
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt

7. 左側にYOLOv5フォルダが現れたら成功です。

YOLOv5を用いた物体検出

8. データセット

下記のコマンドを使用してドライブにアップロードした画像を/content/drive/MyDrive/yolov5下に置に移動させましょう。

1
mv "folder path" /content/drive/MyDrive/yolov5

そうすると以下の用になります

YOLOv5を用いた物体検出

9. yamlファイル作成

下記のコマンドを使用して/content/drive/MyDrive/yolov5下に data.yaml を作成しましょう

1
touch data.yaml

そして、data.yamlの中身は以下のようにします。

data.yaml

1
2
3
4
5
train: /content/drive/MyDrive/yolov5/フォルダ名/train #学習の画像のパス
val: /content/drive/MyDrive/yolov5/フォルダ名/valid  #検証用画像のパス
 
nc: 1 # クラスの数
names: [ 'dog' ] # クラス名

YOLOv5実行

YOLOv5(Training)

以下のコマンドはあくまでサンプルです。今回は、yolov5sという学習済みのモデルを使用します

1
python3 train.py --img 640 --batch 16 --epochs 100 --data "yaml file path" --weights yolov5s.pt

YOLOv5(Inference)

先ほど学習させたモデルを活用して推論を行いましょう。

その前に、推論で行うためのテスト画像を用意しておきましょう。
用意するのが難しい場合は、検証用画像を使用しましょう。

–weight: 先ほど学習させたモデルを指定します。

1
python detect.py --source "test image file path" --weights best.pt

下記のような推論結果が出たら成功です。

YOLOv5を用いた物体検出

チャレンジ問題

1. 複数の物体を検出しましょう

2. 精度(mAP)を向上させましょう

あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

採用情報

採用情報

採用情報

Categories

  • 相互学習
  • 採用
  • 社員インタビュー
  • 学習&資格取得
  • 技術解説
  • イベント告知
  • 学内説明会&講義
  • 産学連携
  • 就職活動
  • イベントレポート
  • その他
  • 技術ブログ&インタビュー
  • mainpage
  • New Graduates Interviews
  • 中途エンジニア
  • カテゴリーなし
  • ニュースリリース&イベント

Avinton SDGs

SDGsへの貢献

Search

タグ

5G albumentations Apache AvintonAcacemy Avinton データプラットフォーム Digital Transformation DQN Fintech Flutter IoT IoT James Cauchi Kunernetes LTE MVI試験 PostgreSQL Predictive Maintenance Ruby Rust SE Society 5.0 TensorFlow インターン インターンシップ クラウトネイティブ サーバークラスター スマート農業 セミナー データ データオーグメンテーション(Data Augmentation) データ解析 ファンダフルリレーマラソン ベンチャー モブワーク 企業説明会 哲学 大学&専門学校 大学&専門学校 学習 教育 機械学習 環境構築 田中 研之輔 研究開発 講義
© 2023 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan