器用貧乏の独り言

器用貧乏なおっさんが気の向くままに。

無料で使えるアノテーションツールlabelImgのインストール手順

◇前置き

機械学習モデルの開発・ファインチューニングを行う際には、アノテーションと呼ばれる作業が必要になることがあります。

今日は、labelimgという無料で利用出来るアノテーションツールのインストール方法を紹介します。

◇インストール手順

Pythonのインストール

labelimgを利用するためには、まずPythonのインストールが必要です。

Pythonがインストールされていない場合は、Pythonの公式サイトから最新版をダウンロードし、インストールしてください。

②Gitのクローン

次に、labelimgのリポジトリを手元のマシンにクローンします。
以下のコマンドを使って簡単にクローンできます。

git clone https://github.com/tzutalin/labelImg.gitabelImg.git

③必要なライブラリのインストール

labelimgが正常に動作するためには、いくつかのPythonライブラリが必要です。
コマンドラインで以下のコマンドを実行して、必要なライブラリをインストールしましょう。

cd labelImg
pip install pyqt5 lxml
pip install pyqt5 lxml

④labelimgの起動

ここまでの手順でlabelimgを起動する準備が整いました。
以下のコマンドでアプリケーションを起動できます。

python labelImg.py

◇最後に

いかがだったでしょうか?
昨今、Pythonを使って機械学習にチャレンジする方は多いと思います。
学習用データをアノテーションするためのツールもPythonには存在しています。

「物体検出とかやってみたいけどアノテーションの仕方が分からんなぁ」

工場のIoT導入がうまく進まない。原因はどこに?

◇前置き

皆さんはIoTという言葉を聞いたことがあるでしょうか?

私の勤め先では、「会社としてIoTを推進する!!」と経営層が張り切っているのですが、全然うまく進んでいません(笑)。

世の中的にも、工場のIoT化がうまくいかないケースは多いと聞きます。

今日は、「なぜうまくいかないのか?」について考えていきたいと思います。

◇IoTとは

IoTとは、Internet of Thingsの略称で日本語では「モノのインターネット」と略されることが多いです。

読んで字のごとく、「モノ」をインターネットにつなぐ技術のことです。

ここでいう「モノ」は、PCやサーバー等ではなく「従来はインターネット接続できなかったモノ」のことを指しています。

身近な例を挙げると「IoT家電」が分かりやすいかと思います。

エアコンやポット等の家電をインターネットに接続することで、スマートフォンで遠隔操作や監視をすることができます。

◇工場のIoT化とは

「工場をIoT化する」ということは「工場の生産設備をIoT化する」のと同義です。

生産設備にIoT対応のセンサーを設置して計測値をロギングできるようにしたり、ロギングした数値を使って設備の状態を見える化したりすることが、導入初期の取り組みには多いです。

人間がデータ取り・解析をしようとすると、膨大な時間と労力が必要になります。

IoT機器をうまく使うことが出来れば、膨大なデータを自動で採取・解析することが出来るので、設備の保全や改善にかかる工数を削減しつつ質の高い生産活動をすることが出来ます。

◇IoT化が失敗する原因


ここからが本題です。

なぜ工場のIoT化がうまくいかないのか?

「要件定義が出来ていないから」


これが全てだと思っています。

要は、「IoT機器を導入することで何を実現したいのか?」が明確に定義されていないことが失敗の主要因だということです。

目的を決めずに「なんか流行ってるから・・・」と適当にベンダーが提供するIoTツールを導入すると高確率で失敗します。

目的を決めずに導入したツールは誰も使わないからです。

導入途中で挫折してしまうケースも良くあります。

導入目的も分からずに進めていると「何をしたら良いのか?」「どこまでやったら完成なのか」「自分は今、何をしているのか?」となってしまいます。

IoT化は「手段」であって「目的」ではない。


これが理解できていない企業が、工場のIoT化に失敗しているのだと思います。

◇工場のIoT化を成功させるには


まずは、目標・目的を明確にすることでしょう。

そしてもう一つ、「IoTにこだわりすぎないこと」も大切だと思います。

IoT化はあくまでも「手段」の1つです。

目標・目的を定義した後、IoT化よりも適した手段があるのであれば、そちらを採用するべきです。

IoT化を前提に、「何ができるか」と考えているうちはうまくいかないだろうなぁ、と私は思っています。

◇最後に

IoTに限った話ではなく、「手段」と「目的」を混同してしまうと何事もうまく進みません。

どれだけ下っ端の我々から「まずは目的を決めましょう」と提案しても、偉いさん方から「なんでも良いからIoTをやるんや!」と言われてしまえば、どうしようもありません。

経営層やマネジメント層に、IT・ICT・IoT等に関する知識や学習意欲が無いことが、そもそもの原因では?と思ってしまう今日この頃です。

とはいえ、他人の考え方や価値観を変えるのは、ほぼ不可能です。

会社の経営が傾いても、他の会社から必要とされる人間でいられるよう、努力と勉強は続けていきたいですね。

HTTPとは?Web基盤を支える通信プロトコル

◇前置き

今回は、ウェブページ閲覧に欠かせない「HTTP(Hypertext Transfer Protocol)」について解説します。

HTTPは、私たちが日常的に使っているウェブブラウジングを可能にする通信プロトコルです。

◇HTTPの役割

HTTPは、ウェブサーバーとクライアント(通常はウェブブラウザ)の間でデータをやり取りする際に使用されるプロトコルです。

ユーザーがウェブページにアクセスしたり、フォームを送信したりする際に、クライアントとサーバー間で情報がやり取りされます。

HTTPは、テキストや画像、音声、ビデオなどの多様なメディアを転送するための基本的な仕組みを提供します。

◇HTTPリクエストとレスポンス

HTTPの通信は、リクエストとレスポンスのサイクルで成り立っています。

ユーザーがウェブページを開くと、ブラウザはHTTPリクエストを生成してウェブサーバーに送信します。

ウェブサーバーはリクエストを受け取り、適切な処理を行った後、HTTPレスポンスを生成してクライアントに返します。

このレスポンスには、要求されたウェブページのコンテンツやステータス情報が含まれています。

◇HTTPのバージョン

HTTPには複数のバージョンが存在します。

初期のHTTP/1.0から、より高速で効率的な通信を可能にするHTTP/2やHTTP/3などが登場しています。

これらのバージョンは、ウェブページの読み込み速度やセキュリティなど、さまざまな側面で改善をもたらしています。

◇最後に

HTTPは、私たちがインターネットを楽しむ上で欠かせない基盤技術です。

今後もウェブの進化とともにHTTPの改善が進むことでしょう。

新しい通信プロトコルやテクノロジーとの統合も進み、ますます高度なウェブ体験が提供されることが期待されています。

この記事も誰かの役に立つと嬉しいです。

FTPとは?ファイル転送の基本

◇前置き

今回は、コンピューターネットワークにおける重要な通信技術の1つである「FTP(File Transfer Protocol)」について紹介します。

FTPは、ファイルの転送に利用されるプロトコルであり、ネットワーク上でデータを安全かつ効率的に送受信するための仕組みです。

FTPの基本原則

FTPは、クライアントとサーバーの間でファイルを転送する際に使用されるプロトコルです。

クライアントはファイルを送信したいユーザー、サーバーはファイルを受け取る側のコンピュータを指します。

FTPの基本的な動作は、クライアントがサーバーに接続し、認証情報を提供してログインします。

ログインが成功すると、クライアントはファイルのアップロードやダウンロードなどの操作を行うことができます。

◇主な利用シーン

FTPは、ウェブサイトのファイルをアップロードする際や、リモートサーバー間でのデータ転送など、さまざまなシーンで利用されます。

また、大容量のファイルを送受信する際にも重宝されるため、企業間のデータ共有やバックアップ作業にも広く活用されています。

FTPのセキュリティ

FTPは元々セキュリティが弱いとされており、データが平文で送信されるため、第三者による盗聴のリスクがありました。

そのため、SFTP(Secure File Transfer Protocol)やFTP over SSL/TLSなどのセキュアなバリエーションが開発され、安全なデータ転送を実現することができるようになりました。

◇最後に

FTPは、ファイル転送の基本的な仕組みを提供する重要な通信技術です。

クライアントとサーバー間でデータを効率的にやり取りするための手段として、今でも広く利用されています。

セキュリティの向上に伴い、より安全な転送方法も広がっており、これからも進化が期待される技術です。

この記事も誰かの役に立つと嬉しいです。

【Python】scikit-learnで機械学習!線形回帰モデルの作成

◇前置き

今回は、Pythonの人気ライブラリであるscikit-learnを使用して、シンプルな線形回帰モデルを作成する方法をご紹介します。

線形回帰は、データの傾向を分析する際に便利な手法であり、機械学習の基本的なステップを学ぶのにも適しています。

◇線形回帰モデルの作成手順

①ライブラリのインポート

まずはじめに、scikit-learnとその他必要なライブラリをインポートします。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
②データの準備

今回は、仮想的なデータを生成して線形回帰モデルを作成します。

以下のコードで、入力変数(X)と目標変数(y)を生成します。

# データの生成
np.random.seed(0)
X = np.random.rand(100, 1)
y = 2 * X + 1 + np.random.rand(100, 1)
③データの分割

データをトレーニング用とテスト用に分割します。

これにより、モデルの性能評価がより正確に行えます。

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
④モデルの訓練

線形回帰モデルを定義し、トレーニング用のデータセットを用いてモデルを訓練します。

# モデルの定義
model = LinearRegression()

# モデルの訓練
model.fit(X_train, y_train)
⑤モデルの評価

テスト用のデータセットを用いてモデルの性能を評価します。

平均二乗誤差(MSE)を使用してモデルの予測精度を測定します。

# テストセットでの予測
y_pred = model.predict(X_test)

# 平均二乗誤差の計算
mse = np.mean((y_pred - y_test) ** 2)

# 結果の出力
print(f"平均二乗誤差: {mse:.2f}")

以上で、scikit-learnを使用してシンプルな線形回帰モデルを作成する手順が完了です。

◇最後に

本記事では、scikit-learnを活用して線形回帰モデルを作成する手順を紹介しました。

データの準備からモデルの訓練、評価までのステップを簡潔に説明しました。

このコードをベースにカスタマイズすることで様々な線形回帰モデルを作ることができます。

この記事も誰かの役に立つと嬉しいです。

【VBA】配列の使い方をサンプルコードで紹介!

◇前置き

今日は、Excel VBAで配列を活用する方法について紹介します。

配列は、大量のデータを効率的に処理するための強力なツールです。

サンプルコードを交えながら、具体的な事例を紹介します。

◇配列を使ったデータの平均値計算

データシートにたくさんの数値がある場合、通常はセルから値を取得して平均値を計算しますが、これは時間がかかります。

しかし、配列を使えば、一度に複数の値を読み込んで高速に平均値を計算できます。

Sub 配列を使った平均値計算()
    Dim dataRange As Range
    Dim dataArray() As Variant
    Dim sum As Double
    Dim average As Double
    Dim count As Long
    Dim cellValue As Variant

    Set dataRange = Range("A2:A1000") ' データが入っている範囲を指定
    dataArray = dataRange.Value      ' データを配列に一括読み込み

    count = 0
    sum = 0

    For Each cellValue In dataArray
        If IsNumeric(cellValue) Then
            sum = sum + cellValue
            count = count + 1
        End If
    Next cellValue

    If count > 0 Then
        average = sum / count
        MsgBox "平均値は: " & average
    Else
        MsgBox "データが見つかりませんでした。"
    End If
End Sub

◇配列を使ったデータの一括処理

データシートから値を読み込んで、配列に格納し、あとで一括で処理することも可能です。

以下の例では、データを配列に読み込み、2倍にしてシートに戻すシンプルな処理を行います。

Sub 配列を使った一括処理()
    Dim dataRange As Range
    Dim dataArray() As Variant
    Dim resultArray() As Variant
    Dim i As Long

    Set dataRange = Range("A2:A1000") ' データが入っている範囲を指定
    dataArray = dataRange.Value      ' データを配列に一括読み込み

    ReDim resultArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2))

    For i = 1 To UBound(dataArray, 1)
        ' 2倍にして結果をresultArrayに格納
        resultArray(i, 1) = dataArray(i, 1) * 2
    Next i

    ' 結果をシートに一括出力
    Range("B2").Resize(UBound(resultArray, 1), UBound(resultArray, 2)).Value = resultArray
End Sub

◇配列を使った複数条件のフィルタリング

特定の条件に合致するデータだけを抽出する場合も、配列を使って効率的に処理できます。

以下の例では、特定の条件を満たすデータだけを別のシートに抽出します。

Sub 配列を使ったデータフィルタリング()
    Dim dataRange As Range
    Dim dataArray() As Variant
    Dim filteredArray() As Variant
    Dim i As Long
    Dim j As Long
    Dim condition As Double

    Set dataRange = Range("A2:C1000") ' データが入っている範囲を指定
    dataArray = dataRange.Value      ' データを配列に一括読み込み

    ReDim filteredArray(1 To UBound(dataArray, 1), 1 To UBound(dataArray, 2))

    condition = 100 ' 100より大きいデータだけを抽出

    j = 1
    For i = 1 To UBound(dataArray, 1)
        If dataArray(i, 3) > condition Then
            ' 条件に合致するデータをfilteredArrayに格納
            filteredArray(j, 1) = dataArray(i, 1)
            filteredArray(j, 2) = dataArray(i, 2)
            filteredArray(j, 3) = dataArray(i, 3)
            j = j + 1
        End If
    Next i

    ' 結果を別のシートに一括出力
    Sheets("フィルタリング結果").Range("A2").Resize(j - 1, UBound(dataArray, 2)).Value = filteredArray
End Sub

◇最後に

これらのサンプルコードをベースに様々なデータ処理をおこなうことができます。

データ数が少ないと配列の有難みを感じづらいのですが、データ数が膨大になってくると配列の有用性がよく分かります。

この記事も誰かの役に立つと嬉しいです。

【VBA】初心者におすすめ!コピペで使える簡単マクロ

◇前置き

今日は、便利なExcel VBAマクロをサンプルコード付きで3つ紹介します。

それぞれのマクロは、Excelのワークシート上で実行することを想定しています。

◇データの整形マクロ

このマクロは、選択した範囲のデータを整形します。

空白行や不要なスペースを削除して、データをきれいに整えます。

Sub 整形マクロ()
    Dim rng As Range
    Set rng = Selection ' 選択範囲を取得
    
    ' 空白行を削除
    rng.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
    
    ' スペースをトリム
    rng.Replace " ", "", xlPart
End Sub

◇重複データの削除マクロ

このマクロは、選択した範囲から重複した行を削除します。

重複データを一掃して、データの品質を向上させます。

Sub 重複削除マクロ()
    Dim rng As Range
    Set rng = Selection ' 選択範囲を取得
    
    ' 重複行を削除
    rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub

◇データのグラフ化マクロ

このマクロは、選択したデータを折れ線グラフでグラフ化します。

データの傾向やパターンを視覚的に把握するのに便利です。

Sub グラフ化マクロ()
    Dim chartSheet As Chart
    Dim dataRange As Range
    
    Set dataRange = Selection ' 選択範囲を取得
    
    ' 新しいチャートシートを作成
    Set chartSheet = Charts.Add
    
    ' チャートにデータを追加
    With chartSheet
        .ChartType = xlLine ' 折れ線グラフを設定
        .SetSourceData Source:=dataRange
        .HasTitle = True
        .ChartTitle.Text = "データグラフ"
    End With
End Sub

◇最後に

紹介したサンプルコードをExcelVBAエディタに貼り付け、マクロを実行するとそれぞれの機能が実行されます。

これらのマクロを活用店応用することで、Excelの作業がよりスムーズになり、作業効率の向上が期待出来ます。

この記事も誰かの役に立つと嬉しいです。