上記のコースで、経験豊富な Web 開発者である Alon Burg と出会い、偶然にも同じような興味を持っていました。そこで、そのような製品を実現するために、私たちはいくつかの目標を設定しました。
上記の目標を考慮して、私たちはブレインストーミングを行いました。
私たちの最初のアイデアは、医療分野が当初の意図に非常に近いため、医療プロジェクトから始めることでした。また、医療分野にはディープラーニングの機会がまだたくさんあると信じていました(そして今でも信じています)。しかし、これはデータに簡単にアクセスできる必要があるというデータ収集の原則に違反することになることを認識しています。したがって、次善の策として背景除去を行うことにしました。 背景の削除作業は、人間が手作業で行う場合や、Photoshop や PowerPoint などのツールの助けを借りて行う場合、非常に簡単です。ただし、完全に自動化された背景除去は困難な作業です。そして、私たちの理解によれば、背景除去タスクで非常に優れた結果を達成できる製品は現在ありませんが、いくつかのメーカーがすでにそれを試しています。 そこで疑問になるのが、どのような背景を排除する必要があるのかということです。これは非常に重要な質問です。モデルが具体的であるほど(たとえば、オブジェクト、角度などの詳細な仕様がある)、セグメンテーションの効果は高くなります。当初、私たちは範囲をかなり広く定義しました。つまり、一般的な背景除去ツールは、あらゆる種類の画像の前景と背景を自動的に識別できるというものでした。しかし、最初のモデルをトレーニングした後、特定の画像セットに重点を置いた方が、より良い結果が得られることに気付きました。そのため、ポートレートや自撮りタイプの写真に重点を置くことにしました。 背景除去の例 自撮り画像には、目立つ焦点の合った前景(1 人以上の「人物」)があり、背景とオブジェクト(顔と上半身)を適切に分離し、比較的安定した角度を維持できます。 これらの基本的な仮定を行った後、私たちは理論的研究、コード実装、そして何時間にもわたるモデルトレーニングの旅を開始し、ワンクリックで簡単に背景を削除できるサービスを作成しました。この作業で最も重要な部分はモデルのトレーニングですが、モデルを正しく展開することの重要性を過小評価することはできません。さらに、現在の最先端のセグメンテーション モデルは、分類モデル (SqueezeNet など) ほどコンパクトではありません。また、サーバーとブラウザの展開オプションも積極的に確認しました。 当社の製品展開プロセスについて詳しく知りたい場合は、それぞれサーバーとクライアントの観点からプロジェクトを紹介する次の 2 つの記事を読むことをお勧めします。 モデルとそのトレーニング プロセスを理解したいだけの場合は、読み進めてください。 セマンティックセグメンテーション ディープラーニングやコンピュータービジョンのさまざまな技術について考え始めると、背景除去に最も適した技術はセマンティックセグメンテーションであることが明らかになります。 もちろん、ディープ ディテクターによるセグメンテーションなどの他の戦略もありますが、これは私たちにとってはまだ十分に成熟していないようです。 セマンティックセグメンテーションはよく知られたコンピュータービジョンタスクであり、画像分類やオブジェクト検出とともにコンピュータービジョン分野の 3 大課題の 1 つとして挙げられています。セグメンテーション プロセスは、画像内の各ピクセルを画像内の特定のオブジェクト カテゴリに分類することと見なすことができるため、セグメンテーションは実際には分類タスクでもあります。画像の分類や検出とは異なり、セマンティックセグメンテーションは画像の「理解」を真に実証します。単に「画像に猫がいる」ということを示すのではなく、画像内のどこに猫がいるのか、また猫が占める領域をピクセルレベルで直接的に示しているからです。 では、セグメンテーションはどのように実現されるのでしょうか?これをよりよく理解するために、この分野における初期の研究をいくつか見てみましょう。 最も初期のアイデアは、VGG や Alexnet などの初期の分類ネットワークを採用することでした。 VGG は 2014 年の画像分類タスクにおける最も先進的なモデルであり、そのシンプルで明確なネットワーク構造により、今日でも非常に有用です。 VGG ネットワークの初期のレイヤーでは、分類するオブジェクトの周囲で高いアクティベーションが発生し、より深いレイヤーではアクティベーションがさらに強くなります。ただし、これらのアクティベーションの性質は、プーリング操作が繰り返されるため、比較的粗くなります。この基本的な理解があれば、分類用にトレーニングされたモデルは、いくつかの調整を行った後、画像内のオブジェクトの検索やセグメント化にも適用できると推測できます。 セマンティックセグメンテーションに関する初期の結果は、分類アルゴリズムとともに現れました。この記事では、VGG によって達成されたいくつかのセグメンテーション結果を紹介しますが、その結果は比較的大まかです。
後者のネットワークの結果: これらの結果は、元の空間特性を維持しながら、完全に接続されたレイヤーを元の形状に変換することからのみ得られます。上記の例では、768*1024 の画像を VGG に入力し、24*32*1000 のレイヤーを取得します。ここで、24*32 は画像のプールされたバージョンであり、1000 はセグメンテーション結果を導き出すことができる Image-net カテゴリの数を指します。 スムーズな予測を実現するために、研究者は単純な双線形アップサンプリング レイヤーを使用しました。 FCN の論文では、研究者らは上記の方法をさらに改良しました。より多くの特徴の解釈を得るためにいくつかのレイヤーを接続し、アップサンプリング レートに応じて FCN-32、FCN-16、FCN-8 と名付けられました。 レイヤー間にスキップ接続を追加すると、予測子は元の画像からより細かい詳細を取得できるようになります。さらにトレーニングを行えば、結果がさらに改善される可能性があります。 この技術自体は以前考えられていたほど悪くはなく、セマンティックセグメンテーションにおけるディープラーニングの可能性を示しています。 FCN処理結果、論文からの画像 FCN はセマンティック セグメンテーションの新しい世界への扉を開き、研究者はこのタスクのためにさまざまなネットワーク構造を試しました。しかし、基本的な考え方は同じです。既知の構造、アップサンプリング、ネットワーク層間の接続のスキップを使用します。これらの技術は、新しいモデルでもまだ一般的です。 セマンティック セグメンテーションの開発に関する詳しい情報は、以下の投稿でご覧いただけます。
さらに、ほとんどのセマンティック セグメンテーション メソッドがエンコーダー/デコーダー アーキテクチャ モードを維持していることに気付いたかもしれません。 プロジェクトに戻る 調査を行った後、私たちは FCN と Unet の 3 つのモデルに注目しました。その中でも、Tiramisu は非常に深いエンコード/デコードアーキテクチャを採用しています。 Mask-RCNN についてもいくつかアイデアがありましたが、それを実装するのはこのプロジェクトの範囲外だと思われました。 FCN はパフォーマンスが悪かったため、最初に廃棄されました。他の 2 つのモデルの結果は非常に良好です。Tiramisu と Unet の主な利点は、コンパクトなモデルと高速な計算です。実装の点では、Unet は実装が非常に簡単で (Keras を使用)、Tiramisu も実装できます。また、Jeremy Howard のディープラーニング コースの最後の講義から Tiramisu 実装コードも使用しました。 2 つの候補モデルが保持されたら、次のステップに進み、モデルのトレーニングを開始します。ティラミス モデルを初めて試したとき、画像内のシャープなエッジを捉える能力により、驚くべき結果に驚きました。一方、Unet は十分ではないようで、その結果は残念なものでした。 データ どのモデルを選択すればよいか大まかにわかったので、適切なトレーニング データを探し始めることができます。セグメンテーション モデルのトレーニングに使用されるデータは、分類や検出に使用されるデータほど一般的ではありません。実際、画像セグメンテーションに最もよく使用されるデータセットは、90 のカテゴリと約 80,000 枚の画像を含む COCO、20 のカテゴリと 11,000 枚の画像を含む VOC Pascal、そして最近リリースされた ADE20K です。 最終的に、私たちが関心のある「人物」カテゴリの画像が多数含まれている COCO データセットを使用することを選択しました。 製品が達成するタスクを考慮すると、タスクに最も関連性の高いデータセットの部分のみを使用するか、より一般的なデータを使用するかを検討する必要があります。一方では、より多くの画像とカテゴリを含むより一般的なデータセットを使用することで、モデルはより多くのシナリオとより難しい画像を処理できるようになります。他方では、一晩で 15 万枚の画像をトレーニングすることができました。したがって、COCO データセット全体を使用してモデルをトレーニングすると、一晩のセッション中に、平均して各画像が約 2 回使用されます。したがって、より合理化されたデータの一部を使用すると、モデルのトレーニングに役立ち、さらにモデルの焦点が絞られます。 言及する価値のあるもう 1 つの点は、Tiramisu モデルが元々 CamVid データセットでトレーニングされたことです。このデータセットにはいくつかの欠陥がありますが、最も重要なのは、その画像コンテンツが非常に単調であることです。すべての画像が道路と車です。このようなデータセット(人が含まれていても)から学習しても、最終的な目標には役立たないことは容易に理解できると思います。そのため、少し検討した後、私たちはあきらめて代わりに COCO を使用することを選択しました。 CamVidデータセットの例 COCO データセットには非常にシンプルでわかりやすい API が付属しており、これにより、各画像にどのオブジェクトが含まれているかを正確に知ることができます (90 個の定義済みカテゴリに従って)。 いくつかの実験を行った後、データセットを縮小することにしました。まず、人物が写っている画像を選択しましたが、その数は 40,000 枚でした。その後、人が多すぎる画像を削除し続け、1 人または 2 人の画像のみを残しました。これらの画像は、当社の製品目標に最も合致していたためです。最終的には、画像内の領域の 20% から 70% が人物としてマークされている画像のみを残し、背景の人物が小さすぎる画像や奇妙なものが含まれている画像は削除し続けました。最終的に、合理化されたデータセットには 11,000 枚の画像が含まれ、これは現段階では十分であると考えています。 左: 良い例、中央: 要素が多すぎる、右: オブジェクト本体が小さすぎる ティラミスモデル 前述のように、私たちはジェレミー・ハワードのコースでティラミス モデルについて学びました。 「100 層ティラミス」という正式名称からして巨大なモデルであると思われるかもしれませんが、実際には非常に経済的で、パラメータ数はわずか 900 万です。一方、VGG16 には 1 億 3000 万を超えるパラメータがあります。 Tiramisu モデルは、DensNet の設計を参考に提案されました。 DensNet は、すべてのレイヤーが相互に接続された、最近提案された画像分類モデルです。さらに、Tiramisu はアップサンプリング レイヤーにスキップ接続を追加しますが、これは Unet と同じです。 覚えておられると思いますが、このアーキテクチャは、分類アーキテクチャ、アップサンプリング、スキップ接続を使用して改良するという、FCN が提案したアイデアと一致しています。 ティラミスの一般的な構造 DenseNet モデルは ResNet モデルの自然な進化と見ることができますが、レイヤー間の関係を「記憶」するのではなく、DenseNet はモデル内のすべてのレイヤーを記憶します。これらの接続は高速道路接続と呼ばれます。これにより、フィルターの数が急増し、「成長率」として定義されます。ティラミスの成長率は 16 なので、フィルター数が 1072 のレイヤーに達するまで、各レイヤーに 16 個の新しいフィルターを追加する必要があります。モデル名が「100 層ティラミス」なので、1600 層を予想するかもしれませんが、アップサンプリング レイヤーによってフィルターの数が減ります。 初期フィルターがモデル全体に積み重ねられた Densenet モデルのスケッチ 電車 私たちは、元の論文で説明されているように、標準クロスエントロピー、学習率 1e-3 および小さな減衰値を持つ RMSProp オプティマイザーを使用してモデルをトレーニングしました。縮小された 11,000 枚の画像セットを、70% のトレーニング セット、20% の検証セット、10% のテスト セットに分割しました。以下に示すすべての画像はテスト セットからのものです。 トレーニング プロセスを論文と一致させるために、エポック サイズを 500 枚の画像ごとに設定しました。これにより、より多くのデータでトレーニングするにつれて結果が改善されるため、モデルを定期的に保存できます (元の論文で使用された CamVid データセットには 1,000 枚未満の画像が含まれています)。 さらに、論文では 12 のカテゴリが使用されているのに対し、私たちは背景と人物の 2 つのカテゴリのみをトレーニングします。最初は COCO カテゴリでのトレーニングを試みましたが、トレーニングにはあまり役立たないことがわかりました。 データの問題 データセットの欠陥により、モデルのパフォーマンスが低下します。
動物、胴体、物を持つ
元画像と大まかな実データ 結果 私たちの結果は非常に有望ですが、いくつか欠点もあります。テスト セットで IoU 84.6 を達成しましたが、現在の最先端技術は 85 です。この数値 (IoU) は、データセットやカテゴリによって変動するため、扱いが難しいです。住宅や道路など、一部のカテゴリは本質的にセグメント化が容易です。多くのモデルは簡単に IoU 90 を達成できます。その他のより難しいカテゴリには、木や人などがあり、ほとんどのモデルでは IoU 60 しか達成できません。この難しさを測るために、私たちはネットワークが単一のカテゴリと限られた種類の写真に焦点を絞れるように支援します。 結果はまだ「生産準備完了」ではないと感じていますが、約 50% の写真で良好な結果が得られたので、ここで立ち止まって結果について話し合うのに良いタイミングです。 ここにいくつかの良い例を挙げます。 左から右へ: 画像、実際のデータ、出力結果(テスト セットから) デバッグとログ ニューラル ネットワークのトレーニングの重要な部分はデバッグです。ニューラル ネットワークのトレーニングを開始するのは非常に簡単です。ネットワークにデータを入力してトレーニングを開始し、最後に出力を確認するだけです。しかし、ネットワーク トレーニングの各ステップに従うことが非常に重要であることがわかったので、各ステップで結果を確認するためのツールを独自に作成しました。 以下に、よくある課題と、それに対処するために私たちが講じる手順を示します。
以下は、パラメータの調整と追加のトレーニングを伴うモデルの改善の例です。 検証セットで最高の IoU を達成したモデルを保存します (Keras はこれを非常に簡単にする優れたコールバック関数を提供します)。
起こり得るコード エラーの通常のデバッグに加えて、モデルのエラーが「予測可能」であることにも気付きました。たとえば、通常の胴体を超えて体の部分を「カット」したり、胴体を不必要に延長したり、照明が不十分だったり、写真の品質が低かったり、写真に細部が多すぎたりすることなどです。これらの問題の一部は、さまざまなデータセットから特定の画像を追加することで解決されましたが、その他の問題は解決が必要な課題として残っています。次のバージョンでは結果を改善するために、「ハード」画像専用の拡張を使用してモデルをトレーニングします。 データセットの問題についてはすでに説明しました。それでは、このモデルが直面している課題のいくつかを見てみましょう。
衣服と「穴掘り」 3. 照明— 写真では照明が不十分で画像がぼやけているのはよくあることですが、COCO データセットではそれほど一般的ではありません。したがって、標準的な難易度のモデルを使用して処理できる画像よりも難しい画像には対応できません。この問題は、より多くのデータを取得するか、データを拡張する (データ拡張) ことによって解決できます。 照明不足の例 未来 さらなるトレーニング トレーニング データは 300 エポック以上トレーニングされ、その後モデルは過剰適合し始めました。私たちの結果はすでに公開されたスコアに非常に近かったため、データ拡張の基本的な手法を適用する機会がありませんでした。 トレーニングに使用される入力画像は、224 * 224 に均一にサイズ変更されます。さらに、より多くのデータと高解像度の画像 (COCO 画像の元のサイズは約 600 * 1000) を使用してモデルをトレーニングすると、最終結果の改善にも役立ちます。 CRFおよびその他の機能強化 ある段階で、一部の結果にエッジの周りにノイズがあることが分かりました。この問題を改善するには、CRF モデルを使用できます。このブログでは、CRF の簡単な使用例を紹介します。 しかし、この方法は、結果が比較的粗い場合にのみ役立つため、私たちの仕事にはあまり役立ちません。 マット このような結果は達成できましたが、実際のセグメンテーションにおいてはまだ十分完璧ではありません。髪の毛、繊細な衣服、木の枝、その他の繊細な品々は、血によって決して分離されることはありません。実際、この非常に細かいセグメンテーション タスクはマッティングと呼ばれ、別の課題を定義します。以下は、今年初めに NVIDIA カンファレンスで発表された、最新のマット加工技術のサンプルです。 切り抜き例、入力にはTrimapが含まれる マッティング タスクは、入力に元の画像だけでなくトライマップも含まれるため、他の画像関連のタスクとは異なります。三重マップは画像のエッジのアウトラインを参照するため、「半教師あり」問題になります。 切り抜き、つまりセグメント化された画像を 3 枚使用していくつかの実験を実行しましたが、有意義な結果は得られませんでした。 もう 1 つの問題は、使用できるトレーニング データセットが不足していることです。 要約する 冒頭で述べたように、私たちの目標は有意義なディープラーニング製品を開発することです。 Alon の投稿からわかるように、展開は比較的簡単かつ迅速です。一方、モデルのトレーニングは最も難しい部分です。特に、一晩のトレーニング セッションが必要で、慎重な計画、デバッグ、結果のログ記録が必要な場合はなおさらです。 新しいことの研究と試行と、モデルのトレーニングと改善の間でバランスを取るのは簡単な作業ではないことがわかりました。ディープラーニングでは、常に、最適なモデルや自分にとって最も効果的なモデルがどこかに隠れていて、あと 1 回 Google 検索するか、もう 1 つの論文を読むだけで、そのモデルにたどり着くことができると感じています。しかし実際には、実際の改善は、元のモデルからさらに少し「絞り出す」ことによって実現されます。そして、上で述べたように、私たちはまだ改善の余地があると感じています。 |
<<: ビッグニュース!人工知能における新たなブレークスルー! Google ストリートビューを使って住民の投票傾向を調べてみましょう。
>>: 現時点では、ディープラーニング以外の実装方法を模索する必要がある。
まず、全体的な技術システム構造の観点から見ると、ビッグデータは人工知能やブロックチェーン技術と密接に...
編集者注: この記事はNetEase Intelligenceからのものです。翻訳|: NetEas...
[[257228]] 【新知能紹介】中国内外の科学者71人が共同で、検査結果を検知し、医師と同じくら...
インターネットとモバイルインターネット時代の「ビジネスモデルの革新」がもたらす投資配当は、マクロ経済...
[51CTO.com からのオリジナル記事] Long Short-Term Memory Netw...
AI技術はここ数年で進歩しており、データセンターを含む多くの業界で導入されています。たとえば、Goo...
01 ROS入門多くの初心者は、ロボットのオペレーティングシステムと聞いて、「オペレーティングシス...
1 「急に悲しくなりました。私のハンサムな顔の価値はたったの50セントだったんです!」昨日、あるニュ...
2021年8月5日、百度アポロの新世代自動運転ミニバス「アポロII」が広州市黄埔で正式に公開されまし...
インテリジェント レコメンデーションは、ビジネス ニーズを満たすビッグ データと人工知能テクノロジに...
アルゴリズムによる推奨が普及している今日の世界では、あなたよりもあなたのことをよく知っているのは、あ...
序文ここ数年、ニューラルネットワークを中心とした人工知能技術は、さまざまな種類のデータを深く掘り下げ...
[[441503]] 【グローバルネットワークテクノロジー記者 王楠】AIといえば、まず何を思い浮...