Last updated: 2026年1月
Accord.NET代替:VisioForge .Net SDKへの移行ガイド
アーカイブされたAccord.NETをモダンな.NET 6-10代替に置き換え
Accord.NET(Accord.Video、Accord.Vision、Accord.MachineLearning)からモダンな.NET 6-10代替へ移行するC#開発者向け
なぜAccord.NETを置き換えるのか?
Accord.NETは2015年にAForge.NETのソースコードを統合し、機械学習、統計、追加のコンピュータビジョンアルゴリズムで拡張しました。このプロジェクトは現在GitHubでアーカイブされ、アクティブなメンテナンスは行われていません。.NET 6-10向けのAccord.NETの代替や置き換えを探している場合、このガイドはすべての移行パスをカバーしています。
| リスク | 影響 |
|---|---|
| プロジェクトがアーカイブ済み | バグ修正、セキュリティパッチ、アップデートなし |
| レガシー.NET | .NET Frameworkのみ — .NET 6、8、9、10のサポートなし |
| 古いML | ML.NET、TensorFlow.NET、ONNX Runtimeより前のもの |
| AForgeビデオコード | ビデオキャプチャに同じ放棄されたAForge.Videoの内部コード |
| Windowsのみ | DirectShowベースのビデオ、クロスプラットフォームサポートなし |
| セキュリティ | 画像/ビデオ処理における未修正の脆弱性 |
移行戦略
Accord.NETは3つの領域をカバーしていました。それぞれ異なるモダンなスタックに移行します:
| Accord.NETの領域 | モダンな代替 |
|---|---|
| ビデオキャプチャ(Accord.Video) | VisioForge Video Capture SDK .Net |
| コンピュータビジョン(Accord.Vision、Accord.Imaging) | VisioForge .Net SDK(組み込みOpenCV 4.11 / DLib検出器)またはスタンドアロンOpenCvSharp |
| 機械学習(Accord.MachineLearning、Accord.Neuro) | ML.NETまたはONNX Runtime |
ビデオキャプチャの移行:Accord.Video → VisioForge
Accord.Videoは基本的にAForge.Videoにわずかな追加を加えたものです。Accord.NETの`VideoCaptureDevice`、`MJPEGStream`、`ScreenCaptureStream`を使用している場合、.NET 6-10でのモダンなC#ウェブカメラキャプチャ、RTSPストリーミング、画面録画のためにVisioForge Video Capture SDKに置き換えてください。
クラスマッピング
| Accord.Videoクラス | VisioForge代替 |
|---|---|
| `VideoCaptureDevice` | `VideoCaptureCoreX` + `VideoCaptureDeviceSourceSettings` |
| `MJPEGStream` | `VideoCaptureCoreX` + `RTSPSourceSettings` |
| `ScreenCaptureStream` | `VideoCaptureCoreX` + `ScreenCaptureSourceSettings` |
| `FileVideoSource` | `MediaPlayerCoreX`または`VideoEditCoreX` |
| `NewFrameEventArgs` | `OnVideoFrameBuffer`イベント |
C#ビデオキャプチャの例
Accord.NET — ウェブカメラキャプチャ(移行前)
C#var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
var videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
videoSource.NewFrame += (s, e) =>
{
pictureBox.Image = (Bitmap)e.Frame.Clone();
};
videoSource.Start();VisioForge — ウェブカメラキャプチャ(移行後)
C#var capture = new VideoCaptureCoreX(videoView);
var devices = await DeviceEnumerator.Shared.VideoSourcesAsync();
capture.Video_Source = new VideoCaptureDeviceSourceSettings(devices[0]);
capture.Outputs_Add(new MP4Output("recording.mp4"), true);
await capture.StartAsync();コンピュータビジョンの移行:Accord.Vision → VisioForge / OpenCvSharp
VisioForge .Net SDKには、OpenCV 4.11とDLibを活用した組み込みコンピュータビジョンブロックが含まれています。これらはVisioForgeメディアパイプラインに直接統合されます — 手動のフレーム変換や外部ライブラリは不要です。ビデオパイプライン外でのスタンドアロン画像処理には、OpenCvSharpを直接使用できます。
クラスマッピング
| Accord.Vision機能 | VisioForge組み込み | スタンドアロンOpenCvSharp |
|---|---|---|
| `HaarObjectDetector`(顔検出) | `CVFaceDetectBlock` — 目/鼻/口検出付きHaarカスケード、顔ぼかし/ピクセル化 | `CascadeClassifier` |
| `HaarObjectDetector`(顔検出、DNN) | `CVFaceDetectBlock` — Caffe SSDモデル、信頼度フィルタリング、GPU高速化 | DNNモジュール |
| `HaarObjectDetector`(顔検出、DLib) | `CVFaceDetectBlock`(CVD) — DLib HOG+SVM正面顔検出器 | — |
| `MotionDetector` | `CVMotionCellsBlock` — オブジェクトトラッキング付きMOG2背景差分 | `BackgroundSubtractorMOG2` |
| `BlobCounter` | `CVMotionCellsBlock` — ブロブトラッキング、輪郭検出、車両カウント | `Cv2.FindContours()` + `Cv2.ConnectedComponents()` |
| `HistogramsOfOrientedGradients`(HOG) | `CVFaceDetectBlock` — HOG+SVM人物検出 | `HOGDescriptor` |
| `CannyEdgeDetector` | `CameraCoveredDetector` — Cannyベースのレンズ遮蔽検出 | `Cv2.Canny()` |
| `SpeededUpRobustFeatures`(SURF) | — | `SIFT.Create()`(SURFは特許取得済み、SIFTまたはORBを使用) |
| `HoughLineTransformation` | — | `Cv2.HoughLinesP()` |
| テンプレートマッチング | — | `Cv2.MatchTemplate()` |
組み込みプライバシー機能
VisioForge検出器には組み込みのプライバシー処理が含まれています — 追加コード不要:
- ✓顔ぼかし — 検出された顔領域にガウシアンぼかしを適用
- ✓顔ピクセル化 — 顔領域のブロックピクセル化
- ✓領域キャッシュ — フレーム間での滑らかな結果(設定可能なキャッシュサイズ)
C#顔検出の例
Accord.NET — 顔検出(移行前)
C#var detector = new HaarObjectDetector(
new HaarCascade(HaarCascade.FaceHaarCascadePath));
detector.MinSize = new Size(30, 30);
Rectangle[] faces = detector.ProcessFrame(bitmap);VisioForge — Haarカスケード顔検出(移行後)
C#var settings = new CVFaceDetectSettings
{
DetectFrontalFace = true,
DetectEyes = true,
DetectNose = true,
DetectMouth = true,
MinFaceSize = new Size(30, 30),
ScaleFactor = 1.1,
DrawEnabled = true
};
var detector = new CVFaceDetectBlock(settings);
// Add to a MediaBlocks pipeline or use standaloneVisioForge — DNN顔検出器(高精度、GPUサポート)
C#var settings = new CVFaceDetectSettings
{
Confidence = 0.25,
DrawEnabled = true,
BlurFaces = true // built-in privacy blur
};
var detector = new CVFaceDetectBlock(settings);VisioForge — DLib顔検出器
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
MinFaceSize = new Size(30, 30)
};
var detector = new CVFaceDetectBlock(settings);スタンドアロンOpenCvSharp(代替)
C#using var cascade = new CascadeClassifier("haarcascade_frontalface_default.xml");
using var mat = Cv2.ImRead("image.jpg");
using var gray = new Mat();
Cv2.CvtColor(mat, gray, ColorConversionCodes.BGR2GRAY);
var faces = cascade.DetectMultiScale(gray, 1.1, 3, 0, new Size(30, 30));C#歩行者検出の例
Accord.NET — HOG歩行者検出(移行前)
C#var hog = new HistogramsOfOrientedGradients();
double[] features = hog.ProcessImage(bitmap);
// Manual SVM classification neededVisioForge — 歩行者検出(移行後)
C#var settings = new CVFaceDetectSettings
{
DrawEnabled = true,
VideoScale = 1.0,
FramesToSkip = 2
};
var detector = new CVFaceDetectBlock(settings);C#モーション検出の例
Accord.NET — モーション検出(移行前)
C#var detector = new MotionDetector(
new TwoFramesDifferenceDetector(),
new BlobCountingObjectsProcessing());
double motionLevel = detector.ProcessFrame(bitmap);VisioForge — オブジェクト/モーション検出(移行後)
C#var settings = new CVMotionCellsSettings
{
DrawEnabled = true
};
var detector = new CVMotionCellsBlock(settings);
// MOG2 background subtraction with automatic object tracking and ID assignment機械学習の移行:Accord.MachineLearning → ML.NET
ビデオ処理中のディープラーニング推論のために、VisioForgeは組み込みDNN顔検出(`CVFaceDetectBlock`)、歩行者検出(`CVFaceDetectBlock`)、オブジェクトトラッキング(`CVMotionCellsBlock`)を提供します。カスタムモデルの場合は、フレームコールバックでONNX Runtimeを統合してください。
MLクラスマッピング
| Accord.ML機能 | ML.NET代替 |
|---|---|
| `SupportVectorMachine` | `SdcaMaximumEntropy`または`LinearSvm` |
| `DecisionTree` | `FastTree`または`FastForest` |
| `KMeans` | `KMeansTrainer` |
| `NaiveBayes` | `NaiveBayes`(ML.NET) |
| `NeuralNetwork`(Accord.Neuro) | ONNX RuntimeまたはTensorFlow.NET |
| `PrincipalComponentAnalysis` | `PrincipalComponentAnalysis`(ML.NET contrib) |
移行チェックリスト
- Accord.NETの使用状況を監査 — どの領域(ビデオ、ビジョン、ML)が使用されているか特定する
- ビデオキャプチャ → VisioForge Video Capture SDK NuGetパッケージをインストール
- コンピュータビジョン → VisioForge組み込み検出器(顔、歩行者、オブジェクト、車両カウント)を使用するか、スタンドアロン使用のためにOpenCvSharp4をインストール
- 機械学習 → ML.NETまたはONNX Runtime NuGetパッケージをインストール
- ビデオソースクラスを置き換え — 上記のマッピングテーブルを参照
- ビジョンアルゴリズムを置き換え — VisioForge MediaBlocksを使用するかOpenCvSharp相当に移植
- MLモデルを置き換え — ML.NETで再トレーニングまたはONNXにエクスポート
- Accord NuGetパッケージを削除 — 依存関係をクリーンアップ
- モダンな.NETをターゲット — .NET 6-10
- クロスプラットフォームテスト — VisioForgeとOpenCvSharpはどちらもWindows、macOS、Linuxをサポート
移行後に得られるもの
| 項目 | Accord.NET | 移行後 |
|---|---|---|
| ステータス | アーカイブ済み | アクティブな開発(すべての代替) |
| フレームワーク | .NET Framework | .NET 6-10 |
| ビデオキャプチャ | 基本的なAForge内部コード | エフェクト、ストリーミング、録画付きプロフェッショナルSDK |
| コンピュータビジョン | 古いアルゴリズム | VisioForge組み込み検出器 + 完全なOpenCV 4.11(2500+アルゴリズム) |
| 機械学習 | 基本的なアルゴリズム | ML.NET + ONNX(本番レベル) |
| 顔検出 | 基本的なHaarのみ | Haar + DNN(Caffe SSD)+ DLib HOG、ぼかし/ピクセル化付き |
| オブジェクト検出 | 基本的なブロブカウンター | MOG2背景差分 + ID付きトラッキング |
| 歩行者検出 | 手動HOG+SVM | 組み込み1行歩行者検出器 |
| ディープラーニング | なし | ONNX Runtime、TensorFlow.NET |
| プラットフォーム | Windowsのみ | Windows、macOS、Linux、iOS、Android |
| オーディオエフェクト | なし | 40+(EQ、リバーブ、コーラス、3D) |
| GPU高速化 | なし | CUDA(OpenCvSharp)、GPUエフェクト(VisioForge) |
