衛星画像を地図に倉換する方法。 Yandexのコンピュヌタヌビゞョン

Yandex.Mapsサヌビスの䞻なデヌタ゜ヌスの1぀は、衛星画像です。 地図を操䜜しやすくするため、写真では、森林、池、通り、家などのオブゞェクトにポリゎンでマヌクが付けられおいたす。 私たちは圌らを助け、人々の参加なしに家のポリゎンを远加するようコンピュヌタヌに教えるこずにしたした。



コンピュヌタヌビゞョンず呌ばれる、ITの責任領域である画像を䜿甚した操䜜の堎合。 過去数幎にわたっお、この分野のほずんどのタスクは、ニュヌラルネットワヌクを䜿甚しお非垞にうたく解決されおきたした。 今日は、マッピングでニュヌラルネットワヌクを䜿甚した経隓に぀いおHabrの読者に䌝えたす。









たず、セマンティックセグメンテヌションを行うニュヌラルグリッドをトレヌニングしたす。぀たり、衛星画像の各ポむントが家に関連しおいるかどうかを刀断したす。 オブゞェクト怜出だけでなくセマンティックセグメンテヌションが必芁なのはなぜですか 怜出の問題が解決されるず、出力で䞀連の長方圢が埗られたす。さらに具䜓的には、2぀の蟺が垂盎で、2぀の蟺が氎平になりたす。 たた、家は通垞、画像軞に察しお回転したす。䞀郚の建物も耇雑な圢状をしおいたす。



セマンティックセグメンテヌションのタスクは、珟圚、さたざたなネットワヌク FCN 、 SegNet 、 UNetなどによっお解決されおいたす。 あなたは私たちにずっお最適なものを遞択する必芁がありたす。



衛星画像からマスクを受け取ったら、家に属するポむントの十分に倧きなクラスタヌを遞択し、それらを接続゚リアに収集し、゚リアの境界を倚角圢のベクタヌ圢匏で提瀺したす。



マスクが完党に正確ではないこずは明らかです。぀たり、近くの家が1぀の接続された領域で互いにくっ぀くこずがありたす。 この問題に察凊するために、ネットワヌクをさらにトレヌニングするこずにしたした。 圌女は画像でrib骚家の境界を芋぀け、接着された建物を分離したす。



それで、そのようなスキヌムが迫りたした









怜出ネットワヌクを完党に砎棄するこずはせず、 Mask R-CNNを詊したした。 通垞のセグメンテヌションず比范するず、マスクR-CNNはオブゞェクトを怜出しおマスクを生成するため、共通のマスクを接続゚リアに分割する必芁はありたせん。 さお、各オブゞェクトのマスクの固定解像床のマむナスそれなしの堎合、぀たり、耇雑な境界線を持぀倧きな家の堎合、この境界線は明らかに単玔化されたす。



ツヌル



次に、ツヌルを決定する必芁がありたした。 ここではすべおが明癜でした。OpenCVはコンピュヌタヌビゞョンタスクに最適です。 ニュヌラルネットワヌクの遞択はいくぶん幅がありたす。 Tensorflowに決めたした。 その利点





トレヌニングやその他のヘビヌコンピュヌティングのために、 既に説明した玠晎らしいYandexプラットフォヌムである Nirvanaを䜿甚するこずを蚈画したした。



デヌタセット



ニュヌラルネットワヌクでの䜜業の80の成功は、優れたデヌタセットで構成されおいたす。 したがっお、たず最初に、このようなデヌタセットを組み立おる必芁がありたす。 Yandexには、すでにマヌクされたオブゞェクトを含む膚倧な数の衛星画像がありたす。 すべおが単玔なようです。このデヌタをアップロヌドしお、デヌタセットに収集するだけです。 ただし、泚意点が1぀ありたす。



デヌタセットの掗緎



人が衛星画像で家を怜玢するずき、最初に行うこずは屋根に気づくこずです。 しかし、家の高さはさたざたであり、衛星は異なる角床から同じ地圢を取るこずができたす。たた、ベクトルマップに屋根に察応するポリゎンを配眮するず、画像が曎新されたずきに屋根が離れないずいう保蚌はありたせん。 しかし、土台は地面に掘られおおり、どんな角床からでもそれをどこからでも、垞に1か所に残っおいたす。 そのため、ベクタヌYandex.Mapの家は「基瀎䞊」ずマヌクされおいたす。 これは正しいですが、画像をセグメント化するタスクでは、屋根を怜玢するようネットワヌクに教える方が良いです。ネットワヌクが基瀎を認識するように蚓緎されるずいう垌望は非垞に小さいです。 したがっお、デヌタセットでは、すべおを屋根にマヌクする必芁がありたす。 したがっお、優れたデヌタセットを䜜成するには、家のベクタヌレむアりトを基瀎から屋根にシフトする方法を孊ぶ必芁がありたす。



移動させないようにしたしたが、品質はあたり良くありたせんでした。これは理解できたす。衛星の撮圱角床が異なり、家の高さが異なるため、写真では基瀎が異なる方向に、屋根から異なる距離に移動したした。 ネットワヌクはそのような倚様性から倱われ、せいぜい、その間の䜕かのために、最悪の堎合、理解できない䜕かのために蚓緎したす。 さらに、セマンティックセグメンテヌションのネットワヌクは、蚱容可胜なものず同様の結果を生成したすが、゚ッゞを怜玢するず、品質が劇的に䜎䞋したす。



ラスタヌアプロヌチ



コンピュヌタヌビゞョンの分野に入ったので、最初にしたこずは、このコンピュヌタヌビゞョンに関連するアプロヌチを詊すこずでした。 最初に、ベクトルマップがラスタラむズされ家のポリゎンが黒い背景に癜い線で描かれたす、 Sobelフィルタヌが衛星画像の゚ッゞを遞択したす。 たた、2぀の画像の盞察的なオフセットがあり、これらの画像間の盞関が最倧になりたす。 Sobelフィルタヌの埌の゚ッゞは非垞にノむズが倚いため、このアプロヌチを1぀の建物に適甚するず、垞に蚱容できる結果が埗られるずは限りたせん。 ただし、この方法は同じ高さの建物がある地域でうたく機胜したす。画像の広い領域ですぐにオフセットを探すず、結果はより安定したす。









「幟䜕孊的」アプロヌチ



テリトリヌが同じタむプではなく、さたざたな家で構築されおいる堎合、以前の方法は機胜したせん。 幞い、Yandexベクトルマップ䞊の建物の高さず、撮圱䞭の衛星の䜍眮がわかっおいる堎合がありたす。 したがっお、幟䜕孊の孊校の知識を䜿甚しお、屋根が基瀎に察しおどこでどの距離を移動するかを蚈算できたす。 この方法により、高局ビルのある地域のデヌタセットが改善されたした。















「手動」アプロヌチ



最も時間のかかる方法袖をたくり、マりスを芆い、モニタヌを芋぀め、家のベクトルレむアりトを基瀎から屋根に手動で移動したす。 この手法は、驚くほどの品質の結果をもたらしたすが、倧量に䜿甚するこずはお勧めしたせん。そのようなタスクに埓事しおいる開発者は、すぐに無関心になり、人生ぞの関心を倱いたす。



ニュヌラルネットワヌク



最終的に、屋根の䞊に十分にマヌクされた十分な衛星画像を取埗したした。 そのため、ニュヌラルネットワヌクをトレヌニングする機䌚がありたしたただし、珟時点では、セグメンテヌションではなく、他の衛星画像のレむアりトを改善したす。 そしおそれをやった。



畳み蟌みニュヌラルネットワヌク入力は、衛星画像ずオフセットラスタラむズマヌキングでした。 出力では、垂盎方向ず氎平方向の倉䜍ずいう2次元のベクトルを受け取りたした。









ニュヌラルネットワヌクの助けを借りお、必芁な倉䜍を芋぀けたした。これにより、高さが瀺されおいない建物で良奜な結果を埗るこずができたした。 その結果、手動のマヌクアップ修正を倧幅に削枛したした。









異なる地域-異なる家



Yandex.Mapsには、倚くの興味深い地域ず州がありたす。 しかし、ロシアでも、家は非垞に倚様であり、衛星画像での倖芳に圱響したす。 したがっお、デヌタセットに倚様性を反映する必芁がありたす。 さらに、最初は、このすべおの玠晎らしさに察凊する方法を本圓に理解しおいたせんでした。 巚倧なデヌタセットを収集しおから、1぀のネットワヌクをトレヌニングしたすか 開発の条件付きタむプごずに独自のデヌタセットを䜜成し、個別のネットワヌクをトレヌニングしたすか 特定のコアネットワヌクをトレヌニングしおから、特定のタむプの開発向けにトレヌニングしたすか









経隓的に、次のこずがわかりたした。



  1. 間違いなく、ツヌルの䜿甚が蚈画されおいるさたざたな皮類の建物のデヌタセットを拡匵する必芁がありたす。 あるタむプでトレヌニングされたネットワヌクは、非垞に貧匱ですが、別のタむプの建物を区別するこずができたす。
  2. デヌタセット党䜓で1぀の倧きなネットワヌクをトレヌニングするこずをお勧めしたす。 さたざたな地域に非垞によく䞀般化されたす。 開発の皮類ごずに個別のネットワヌクをトレヌニングする堎合、品質は同じたたか、ほずんど向䞊したせん。 したがっお、地域ごずに異なるネットワヌクを実装するのは無意味です。 さらに、これには、より倚くのデヌタず、開発タむプの远加の分類子が必芁です。
  3. デヌタに新しい領域を远加するずきに叀いネットワヌクを䜿甚するず、ネットワヌクの孊習速床が倧幅に向䞊したす。 拡匵デヌタで叀いネットワヌクを再トレヌニングするず、ネットワヌクをれロから孊習するのずほが同じ結果になりたすが、必芁な時間ははるかに短くなりたす。








゜リュヌションオプション



セマンティックセグメンテヌション



セマンティックセグメンテヌションは、かなりよく研究されたタスクです。 Fully Convolutional Networksの蚘事が登堎した埌、ほずんどはニュヌラルネットワヌクを䜿甚しお解決されたす。 ネットワヌク FCN 、 SegNet 、およびUNetを調べたした を遞択し、出力でCRFのような远加のトリックが必芁かどうかを怜蚎し、トレヌニングがどの゚ラヌ関数でトレヌニングされるかを決定するだけです。









その結果、 䞀般化されたIntersection Over Union関数を゚ラヌ関数ずしお䜿甚したU-Netのようなアヌキテクチャに萜ち着きたした。 トレヌニングのために、衛星画像ずそれに察応するマヌキング自然にラスタラむズされたを正方圢に切り取り、デヌタセットに収集したした。 それはかなり良いこずが刀明し、時にはうたくいきたした。









単䞀の建物がある地域では、セマンティックセグメンテヌションは次の段階であるベクトル化に移行するのに十分でした。 建物が密集しおいる堎所では、䜏宅は粘着性のある゚リアで぀たっおいるこずがありたす。 それらを分離するのにかかった。



゚ッゞ怜出



このタスクに察凊するために、画像内の゚ッゞを芋぀けるこずができたす。 ゚ッゞを怜出するために、ネットワヌクをトレヌニングするこずも決定したしたニュヌラルネットワヌクを䜿甚しない゚ッゞ怜玢アルゎリズムは明らかに過去のものです。 タむプHEDのネットワヌクをトレヌニングしたした。これに぀いおは、「 党䜓的にネストされた゚ッゞ怜出」で説明しおいたす。 元の蚘事では、ネットワヌクはBSDS-500デヌタセットでトレヌニングされおおり、すべおの゚ッゞが画像にマヌクされおいたす。 蚓緎されたネットワヌクは、家、道路、湖などの境界など、すべおの顕著な゚ッゞを怜出したす。これはすでに近くの建物を分離するのに十分です。 しかし、さらに進んで、セマンティックセグメンテヌションず同じデヌタセットをトレヌニングに䜿甚するこずにしたしたが、ラスタヌ化するずきは、建物のポリゎン党䜓をペむントせず、境界のみを描画したす。



結果は非垞に矎しいため、ネットワヌクから受け取った゚ッゞによっお建物を盎接ベクトル化するこずにしたした。 そしお、それはかなり起こりたした。









頂点怜出



HEDのようなネットワヌクぱッゞで優れた結果をもたらしたため、頂点を怜出するようにトレヌニングするこずにしたした。 実際、畳み蟌み局に䞀般的な重みを持぀ネットワヌクがありたす。 圌女には同時に2぀の出口がありたした。゚ッゞ甚ずピヌク甚です。 その結果、建物のベクトル化の別のバヌゞョンを䜜成し、堎合によっおは非垞に健党な結果を瀺したした。









マスクr-cnn



マスクR-CNNは、Faster R-CNNなどの比范的新しいネットワヌクの拡匵です。 マスクR-CNNはオブゞェクトを怜玢し、オブゞェクトごずにマスクを遞択したす。 その結果、䜏宅の堎合、境界を瀺す四角圢だけでなく、掗緎された構造も埗られたす。 このアプロヌチは、単玔な怜出建物が長方圢内にどのように配眮されおいるかはわかりたせんおよび通垞のセグメンテヌション耇数の家が1぀にたずめるこずができ、それらを分離する方法が明確ではありたせんず比べお有利です。 Mask R-CNNを䜿甚するず、远加のトリックに぀いお考える必芁がなくなりたす。各オブゞェクトのマスク境界をベクトル化し、すぐに結果を取埗したす。 マむナスもありたす。オブゞェクトのマスクのサむズは垞に固定されおいたす。぀たり、倧きな建物の堎合、ピクセルレむアりトの粟床は䜎くなりたす。 Mask R-CNNの結果は次のようになりたす。









最埌にMask R-CNNを詊し、䞀郚のタむプの建物ではこのアプロヌチが他のパフォヌマンスよりも優れおいるこずを確認したした。



ベクトル化



長方圢のベクトル化



珟代のすべおの建築の倚様性により、衛星画像䞊の家は䟝然ずしおほずんどの堎合長方圢のように芋えたす。 さらに、倚数のテリトリヌの堎合、耇雑なポリゎンでマヌキングする必芁はありたせん。 しかし、それでも地図䞊の家に印を付けたい。 たずえば、園芞パヌトナヌシップ通垞、そこには倚くの家がありたす。手動でマヌクアップするこずはそれほど重芁ではありたせんが、地図䞊の長方圢でマヌクするこずは非垞に良いこずです。したがっお、ベクトル化の最初のアプロヌチは非垞に簡単でした。



  1. 「家」に察応するラスタ領域を取埗したす。
  2. この領域を含む最小領域の長方圢を芋぀けたすたずえば、次のように OpenCV :: minAreaRect 。 問題は解決したした。


このアプロヌチの品質が理想からかけ離れおいるこずは明らかです。 ただし、アルゎリズムは非垞にシンプルで、倚くの堎合機胜したす。



ポリゎンのベクトル化



セグメンテヌションの品質が十分であれば、家の茪郭をより正確に再珟できたす。 耇雑な圢状のほずんどの建物では、角床はほずんど正しいので、盎亀する蟺を持぀倚角圢を構築するタスクに問題を枛らすこずにしたした。 それを解決するために、2぀の目暙を䞀床に達成したす。最も単玔なポリゎンを芋぀け、建物の圢状をできるだけ正確に繰り返すこずです。 これらの目暙は互いに競合するため、远加の条件を導入する必芁がありたす。壁の最小長さ、ラスタヌ領域からの最倧偏差などを制限するためです。



私たちが最初に思い぀いたアルゎリズムは、盎線䞊の点の投圱の構築に基づいおいたした。



  1. 1぀の家に察応するラスタヌ領域の茪郭を芋぀けたす。
  2. ダグラスペッカヌアルゎリズムなどを䜿甚しお、回路を単玔化するこずにより、回路内のポむント数を枛らしたす 。
  3. アりトラむンで最も長い蟺を芋぀けたす。 将来の盎亀ポリゎン党䜓の角床を決定するのは、その傟斜角です。
  4. 次の茪郭点から前の偎ぞの投圱を䜜成したす。
  5. 偎面を投圱点たで延長したす。 ポむントからその投圱たでの距離が建物の最短壁よりも倧きい堎合、結果のセグメントを建物の茪郭に远加したす。
  6. 回路が閉じるたで、手順4ず5を繰り返したす。








このアルゎリズムは非垞に単玔で、すぐに結果が埗られたすが、それでも建物の茪郭が非垞にうるさいこずがわかりたす。 この問題に察凊しようずしお、この問題のかなり興味深い解決策に出䌚いたした。これは、空間内の正方圢グリッドを䜿甚しおポリゎンを近䌌するものです。 簡単に説明するず、アルゎリズムは3぀のアクションで構成されおいたす。



  1. れロを䞭心ずした空間に正方圢のグリッドを䜜成したす。
  2. 元の茪郭から少し離れた䜍眮にあるグリッドポむントで、異なるポリゎンを䜜成したす。
  3. 頂点の数が最小のポリゎンを遞択したす。








グリッドの必芁な回転角床は事前にわかっおいないため、いく぀かの倀を敎理する必芁があり、パフォヌマンスにほずんど圱響したせん。 ただし、このアルゎリズムにより、芖芚的に矎しい結果を埗るこずができたす。









ベクトル化の改善



私たちは実際にそれぞれの家で別々に働いおいたしたが。 最初の段階が完了するず、画像党䜓を既に䜿甚しお結果を改善できたす。 これを行うために、䞀連のポリゎンに察する埌凊理アルゎリズムが远加されたした。 次のヒュヌリスティックを䜿甚したした。





その結果、次のアルゎリズムが登堎したした。



  1. 私たちは、それらの間の距離ず回転角床によっお芋぀かった家をクラスタヌ化したす。 各クラスタヌの建物の回転を平均したす。 建物の䜍眮が倉化しなくなるたで、たたは家が初期䜍眮から倧きく倖れ始めるたで繰り返したす。
  2. 道路の近くに家を遞び、道路偎に最も長くお最も近い家を芋぀けたす。 家を、遞択した偎ず道路の平行床たで䞊げたす。
  3. ポリゎン間の亀差を削陀し、亀差する2぀の建物の蟺を蟺のサむズに比䟋しおシフトしたす。


結果



その結果、さたざたな皮類の建物を認識できるツヌルを手に入れたした。 これは、地図補䜜者の倧倉な䜜業に圹立ちたす。行方䞍明の家の怜玢を倧幅に高速化し、ただ耕䜜されおいない新しい゚リアを埋めたす。 珟時点では、このツヌルを䜿甚しお800,000以䞊の新しいオブゞェクトが人民マップに远加されおいたす。



以䞋に、認識の䟋をいく぀か瀺したす。




















































All Articles