Wir werden die Informationen von Kaggle aktualisieren, der in der Vergangenheit teilgenommen hat. Hier werden wir die Daten von Planet: Amazonas aus dem Weltraum verstehen vorstellen und im Forum prominent diskutieren. Ich werde es abholen. Ich werde den Ansatz des Gewinners in einem anderen Artikel vorstellen.
Im Amazonasbecken gehen täglich große Mengen Wald verloren. Dies hat zu einer globalen Zerstörung des Ökosystems, zum Verlust von Siedlungen, zu Wetteränderungen und zu vielen anderen katastrophalen Folgen geführt. Durch die Digitalisierung der Zerstörung der Natur und der Invasion von Menschen in Wäldern können die Regierung und die lokalen Interessengruppen schnell und kostspielig auf solche Probleme reagieren. In diesem Wettbewerb wird es unter Verwendung von Satellitenfotos mit Auflösungen von 3 bis 5 US möglich sein, die Zerstörung kleiner Wälder und menschliche / zufällige Urteile zu beurteilen. Daher werden wir in diesem Wettbewerb die Bodenoberfläche anhand von Satellitenfotos kennzeichnen.
Die charakteristischen Punkte dieser Zeit sind wie folgt.
Der Bewertungsindex lautet diesmal F2-Punktzahl. F-Punktzahl wird im Allgemeinen für die Bewertung verwendet, aber die F2-Punktzahl ist ein Index mit einem größeren Rückrufgewicht als Precision. ist.
Diese Daten stammen von Amazon (Brasilien, Peru, Uruguay, Kolumbien, Venezuela, Gaiana, Bolivien, Es ist eine Satellitenaufnahme von (Ecuador). Jedes Foto hat eine oder mehrere Beschriftungen für drei Gruppen (1. Wetterbedingungen, 2. allgemeine Oberfläche, 3. seltene Oberfläche).
Im Folgenden werden wir jedes Etikett vorstellen.
Wolken sind die Haupthindernis in der Satellitenfotografie. Hier gibt es drei Arten von trüben Etiketten.
Hier sind sieben gebräuchliche Bezeichnungen.
Dies ist das Etikett mit den meisten Daten.
Etiketten mit Flüssen, Stauseen und sichelförmigen Seen, die die wichtigsten Merkmale des Amazonasbeckens sind.
Ein Etikett, das den Wohnort oder das Gebäude angibt. Umfasst von dicht besiedelten Gebieten bis hin zu ländlichen Dörfern. Die Kennzeichnung wird in kleineren Wohngebieten, in denen allein vor Ort gelebt wird, schwieriger.
Die Kennzeichnung von Kulturland für Nutzpflanzen ist eine wichtige Technik im Amazonasgebiet.
Mobiler Anbau ist ein Element von Ackerland und wird häufig von Einzelpersonen oder Familien in ländlichen Gebieten betrieben.
Bare Ground gilt für alle natürlich vorkommenden, baumlosen Gebiete, nicht für menschliche Einflüsse. Solche Gebiete kommen im Amazonasgebiet auf natürliche Weise vor und umfassen relativ kleine Gebiete wie das Pantanal Marsh und die Senard Arid Zone.
Es ist in einem Teil des mobilen Ackerlandes enthalten. Es zeigt eine dunkelbraune oder schwarze Farbe.
Ein Etikett, das Bereiche kennzeichnet, in denen teure Bäume gefällt wurden, z. B. Teakholz und Mahagoni. Erscheint als kurvenreiche, schlammige Straße neben einem kahlen braunen Fleck.
Ein natürliches Phänomen, das häufig im Amazonasgebiet auftritt.
Es gibt große traditionelle Minen im Amazonas.
Dies ist beim Kleinbergbau der Fall. Es kommt häufig in Gebieten vor, in denen Gold abgelagert wird, beispielsweise in den Andenhügeln. Dieser technische Bergbau ist häufig mit illegalen Aktivitäten verbunden und führt zur Erosion des umgebenden Bodens.
Ein natürliches Phänomen in der Andenregion, auch bekannt als Windslow. Lokale und plötzlich trockene kalte Winde wehen aus den Anden (starke und schnelle Winde über 100 MPH) und schlagen Bäume in großen tropischen Regenwäldern um.
Ich werde zwei Notizbücher vorstellen. 5.1. Ist Anokas EDA 5.2. Ist Philipp Schmidts EDA
Klicken Sie hier für das Original-Notizbuch Die Bildanalyse mit Satellitenbildern wurde seit einiger Zeit in vielen Wettbewerben beobachtet. Anscheinend ist es ein neuer Trend. Bei diesem Wettbewerb handelt es sich um ein Klassifizierungsproblem, bei dem für alle etwas ungewöhnlichen Bilder Mehrfachbeschriftungen erstellt werden. Daher werden wir hier kurz das Erscheinungsbild des Gesamtetiketts analysieren.
https://gist.github.com/TomHortons/d766738d4ce4bd564a96bbdd5529bfaa
Satellitenfotonummern und -etiketten werden in separaten Dateien bereitgestellt. Laden Sie sie und erstellen Sie ein Histogramm.
Wie in der ersten Dateneinführung erwähnt, sind das tropische Regenwaldetikett (primär) und das Wetterzustandsetikett (bewölkt, klar) am häufigsten. Da der Bewertungsindex diesmal F2 ist, betonen wir Rückruf. Die Herausforderung besteht darin, wie seltene geografische Bezeichnungen geschätzt werden können, während gängige geografische Bezeichnungen unterdrückt werden.
https://gist.github.com/TomHortons/68023b27e469bdb25e0249477ba9f123
Überprüfen Sie als Nächstes die Häufigkeit der Etikettenkombinationen. Im tropischen Hauptregenwald sollten beispielsweise Beschriftungen wie Mine, verbranntes Feld und Abblasen vorhanden sein. Auf diese Weise kann "Koexistenz" eine Information an sich sein.
Sie sehen, dass es eine Tendenz zu Kombinationen wie "Ackerland und Ackerland, Straßen", "Straßen und Wohngebiete, traditioneller Bergbau" gibt.
Dies ist das Original-Notizbuch. Jedes Element wird zerhackt und in gist hochgeladen. Wenn es also nicht funktioniert, kopieren Sie bitte den Code aus diesem Notizbuch.
from glob import glob
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from subprocess import check_output
import matplotlib.pyplot as plt
from scipy.stats import bernoulli
import seaborn as sns
print(check_output(["ls", "../input"]).decode("utf8"))
%matplotlib inline
df = pd.read_csv('../input/train_v2.csv')
image_paths = sorted(glob('../input/train-jpg/*.jpg'))[0:1000]
image_names = list(map(lambda row: row.split("/")[-1][:-4], image_paths))
image_names[0:10]
plt.figure(figsize=(12,8))
for i in range(6):
plt.subplot(2,3,i+1)
plt.imshow(plt.imread(image_paths[i]))
plt.title(str(df[df.image_name == image_names[i]].tags.values))
Anscheinend ist die Größe der Bilder alle gleich groß. Sie können sehen, dass jedes Bild mehrere Tags hat.
https://gist.github.com/TomHortons/d7e9dc9382f6fcd4763163e1a7db9f99
Der obige Code ist ein Beispielcode einer Person, die durch logistische Regression von Scikit Learn klassifiziert wurde. Bei der Datenvorverarbeitung ist das Schreiben etwas kompliziert. df sind die im vorherigen Beispiel gelesenen Bilddaten.
df['split_tags'] = df['tags'].map(lambda row: row.split(" "))
lb = MultiLabelBinarizer()
y = lb.fit_transform(df['split_tags'])
y = y[:n_samples]
X = np.squeeze(np.array([cv2.resize(plt.imread('../input/train-jpg/{}.jpg'.format(name)), (rescaled_dim, rescaled_dim), cv2.INTER_LINEAR).reshape(1, -1) for name in df.head(n_samples)['image_name'].values]))
X = MinMaxScaler().fit_transform(X)
Nachdem Sie die Trainingsdaten-Tags mit df ['tags']. Map (Lambda-Zeile: row.split ("")) zerlegt haben, vektorisieren Sie sie mit MultiLabel Binarizer. Ändern Sie die Größe des Bildes mit cv2.resize, passen Sie die Vektorgröße mit np.squeeze an und standardisieren Sie die Daten schließlich mit MinMaxScaler.
Das Ergebnis der Ausführung ist wie folgt.
Average F2 test score 0.6798866894323994
F2 test scores per tag:
[('primary', 0.96369809349699664),
('clear', 0.87778940027894004),
('cloudy', 0.60324825986078878),
('agriculture', 0.38493549729504789),
('road', 0.26332094175960347),
('partly_cloudy', 0.22288261515601782),
('water', 0.1915041782729805),
('habitation', 0.17467248908296948),
('cultivation', 0.054811205846528627),
('bare_ground', 0.032894736842105261),
('haze', 0.0090090090090090089),
('slash_burn', 0.0),
('conventional_mine', 0.0),
('selective_logging', 0.0),
('blow_down', 0.0),
('blooming', 0.0),
('artisinal_mine', 0.0)]
Seltene geografische Informationen werden fast gelöscht. Obwohl der F2-Wert 0,67 beträgt, sind die Trainingsdaten in Training und Test unterteilt, sodass die Verwendung der tatsächlichen Testdaten zu einem viel niedrigeren Wert führen sollte.
Bilddaten werden so wie sie sind gruppiert. https://gist.github.com/TomHortons/7786a01020de08ee4d14cfaee0ebe142 Entdecken Sie hierarchische Cluster, t-SNEs und Ausreißer.
Als Verfahren,
Hier ist das Ergebnis der Clusterbildung.
Eine andere Sache ist das Clustering mit t-SNE. Legen Sie die Entfernungsdaten des zuvor erstellten Bildes mit t-SNE in 3D ab und zeichnen Sie sie.
https://gist.github.com/TomHortons/da0094c11bf77108c41529cf515f78df
Wenn es ausgeführt wird, sieht es so aus.
[t-SNE] Computing pairwise distances...
[t-SNE] Computing 91 nearest neighbors...
[t-SNE] Computed conditional probabilities for sample 600 / 600
[t-SNE] Mean sigma: 2.026685
[t-SNE] Iteration 25: error = 0.9391028, gradient norm = 0.0111124
[t-SNE] Iteration 50: error = 0.8462010, gradient norm = 0.0094869
[t-SNE] Iteration 75: error = 0.6071504, gradient norm = 0.0019813
[t-SNE] Iteration 100: error = 0.5155882, gradient norm = 0.0052735
[t-SNE] KL divergence after 100 iterations with early exaggeration: 0.515588
[t-SNE] Iteration 125: error = 0.4028054, gradient norm = 0.0006756
[t-SNE] Iteration 125: gradient norm 0.000676. Finished.
[t-SNE] Error after 125 iterations: 0.515588
Wir werden nach Ausreißern aus den erstellten Entfernungsinformationen suchen. https://gist.github.com/TomHortons/3aec684789d64cc0631ad5834fa67222
maximally_dissimilar_image_idx = np.nanargmax(np.nanmean(sq_dists, axis=1))
Berechnen Sie einfach den durchschnittlichen Abstand zu den zuvor erstellten sq_dists und ermitteln Sie den Maximalwert (Minimalwert). Die linke Seite der Abbildung unten ist der maximale Abstand und die rechte Seite ist der minimale Abstand.
Der minimale Abstand bedeutet hier den kleinsten paarweisen Abstand aller Bilder, dh das durchschnittlichste Bild. Im Gegenteil, die maximale Entfernung ist ein seltenes Bild. Da die Entfernung jedoch einfach paarweise des Bildes berechnet wird, unterscheidet sie sich von "Seltenheit" in dem Sinne, dass es ungewöhnliche Strukturen und seltsam geformte Straßen gibt.
Schließlich wird das Ergebnis der Abbildung mit t-SNE im Bild dargestellt. https://gist.github.com/TomHortons/8afcf86ee53e073ad21b7d3d0eb4a9fa
5.2.4. NDVI (Normalized Difference Vegetation Index)
Wir verwenden häufig Satellitenfotos oder Luftbilder, die mit Drohnen aufgenommen wurden, um die Pflanzenaktivität zu quantifizieren. NDVI wird als allgemeiner Indikator verwendet und aus dem Verhältnis von R und GB in RGB berechnet.
Der NDVI wird anhand dieser Daten berechnet.
https://gist.github.com/TomHortons/8d3de37dee1dc7962abe1380f0ff0395
Die Berechnung des NDVI selbst ist sehr einfach und wird in einer Zeile abgeschlossen.
ndvis = [(img[:,:,3] - img[:,:,0])/((img[:,:,3] + img[:,:,0])) for img in imgs]
Danach können Sie ein Gefühl für die Atmosphäre bekommen, indem Sie NDVI-Bilder, standardisierte TIFF-Bilder und JPG-Bilder so anordnen, wie sie sind.
In NDVI ist nur der grüne Teil aktiviert.
Wenn Sie außerdem den NDVI für alle Bilder berechnen und den Durchschnittswert im Histogramm überprüfen, können Sie die Aktivitätsverteilung der Pflanze irgendwie erfassen.
import seaborn as sns
mndvis = np.nan_to_num([ndvi.mean() for ndvi in ndvis])
plt.figure(figsize=(12,8))
sns.distplot(mndvis)
plt.title('distribution of mean NDVIs')
Lassen Sie uns zum Schluss nach NDVI rangieren.
sorted_idcs = np.argsort(mndvis)
print(len(sorted_idcs))
plt.figure(figsize=(12,8))
plt.subplot(221)
plt.imshow(imgs[sorted_idcs[0]])
plt.subplot(222)
plt.imshow(imgs[sorted_idcs[50]])
plt.subplot(223)
plt.imshow(imgs[sorted_idcs[-30]])
plt.subplot(224)
plt.imshow(imgs[sorted_idcs[-11]])
Das weißliche Bild oben links ist ein trübes Bild mit einem negativen durchschnittlichen NDVI. Das standardisierte, rötlich aussehende Bild unten rechts ist das Bild des Waldes mit dem höchsten durchschnittlichen NDVI.
Recommended Posts