Kaggle'da Hayatta Kalma: Amazon Yağmur Ormanı

Leifeng.com'un basını: Bu makalenin kaynağı biliniyor, yazar Liu Sicong, Leifeng.com'un izniyle yeniden basıldı.

Herkese merhaba, ben Stron Grylls ve size dünyanın en rekabetçi oyunlarından bazılarında altın madalyayı nasıl kazanacağınızı göstereceğim. Bir aylık rekabet zorluklarıyla karşılaşacağım Bu yarışmalarda doğru hayatta kalma becerileri olmadan bronz madalya bile alamazsınız. Bu sefer Amazon yağmur ormanına geldim.

Takım arkadaşlarımla bu yağmur ormanına girdiğimizde, üç ay süren yarış iki aydır devam ediyordu, köşeyi geçip arkadan yetişmek kolay olmadı. Oyunun sonunda Public Leaderboard'da birincilik ve Private Leaderboard'da altıncı oldu ve altın madalya kazandık. Bu süreçte, bir dizi basit ve etkili prosedür tasarladık ve kullandık ve ayrıca biraz garip bazı teknikler keşfettik.

Bu prosedür setini kullanarak, yüzün üzerinde Genel Liderlik Tablosunda, oyunun sonuna kadar altın madalya bölgesine kadar başladık, birkaç gün boyunca Açık Liderlik Tablosunun tepesinde, bariz bir direnç olmadan. Bu makalede, sadece sürecin kendisini tanıtmakla kalmayacağım, aynı zamanda bu süreci oluşturmak için fikirlerimizi de paylaşacağım, böylece onu okuduktan sonra, bir dahaki sefere yeni bir sorunla karşılaştığınızda nasıl başlayacağınızı bileceksiniz.

Makalenin sonunda, oyunun son gecemizin çılgınlığı ve heyecanı, sonuçların açıklandığı zamanki tuhaflık, sükunet sonrası analiz ve nihayet büyük rastlantısallığa yenik düşme hikayesinden de bahsedeceğim.

içindekiler:

1. Yağmur ormanlarının ilk keşfi: Genel Bakış ve Veriler

2. İzler ve araçlar: Tartışma alanı (Tartışma) ve Çekirdek alanı

3. Macera başlıyor: çözümlerin planlanması ve seçimi

4. Çalışma, mücadele, sonuçlar ve büyük rastgelelik

5. Takım üyesi tanıtımı

1. Yağmur ormanını keşfedin: Genel Bakış ve Veriler

Maceranın ilk adımı problemin tanımını ve verinin şeklini bulmaktır.Bu kısım daha külfetli gibi gözükse de uzağa gitmek ve tuzağa düşmekten kaçınmak istiyorsanız bu adım çabaya değer, bu yüzden lütfen herkesi Sabırla bir göz atın. Bu yarışmaya daha önce katıldıysanız, bu bölümü atlayabilirsiniz.

Önce bu yarışmanın başlığına bir göz atalım:

  • Gezegen: Amazon'u Uzaydan Anlamak

  • Amazon yağmur ormanlarında insan ayak izini takip etmek için uydu verilerini kullanın

Çevirmek

  • Gezegen (yarışmaya ev sahipliği yapan kuruluşun adı): Amazon'u uzaydan anlamak

  • Amazon yağmur ormanlarında insan ayak izlerini takip etmek için uydu verilerini kullanın

Görünüşe göre bu Amazon yağmur ormanı ile ilgili bir uydu görüntüsü yarışması.Sorunu daha iyi anlamak için yarışmanın Genel Bakış ve Veri bölümlerini okumamız gerekiyor.

1.1 Açıklama

Genel Bakış'ın Açıklama kısmı bize organizatörün niyetini anlatıyor: Amazon yağmur ormanlarındaki çeşitli değişiklikleri uydu görüntülerinden izlemek olduğu ortaya çıktı, böylece yerel yönetimler ve kuruluşlar Amazon yağmur ormanını daha iyi koruyabilir. Ne bulduğuma bakın. Bu Genel Bakışın sonunda resmi ipython not defteri koduna bir bağlantı var:

Dokümanlar ile verileri kullanmaya başlayın!

Bu ipython not defteri, veri okuma, keşif ve korelasyon analizi de dahil olmak üzere pek çok bilgiye sahiptir; bunlar bize verilere dair kabaca temel bir fikir verebilir ve daha fazla analiz için indirilebilir, bu da çok fazla çaba harcamadan tasarruf sağlayabilir. Yetkili böyle bir not defteri sağlamazsa, Çekirdek alanındaki bazı kişiler genellikle kendilerine ait bazı analizler göndereceklerdir. Değilse, bu adımı kendi başınıza yapmanız en iyisidir çünkü bu, sonraki kararlar için bilgi sağlayabilir.

1.2 Veriler

Ardından Genel Bakış'ın geri kalanını atlayabilir ve Veri bölümüne gidebiliriz. Veri bölümü genellikle veri indirme ve açıklama sağlar, önce indirilecek verileri tıklayın ve ardından açıklamayı dikkatlice okuyun. Eğitim setinde yaklaşık 40.000 resim ve test setinde yaklaşık 60.000 resim bulunmaktadır. Veri açıklaması, verilerin bileşimini ve etiketin kaynağını içerir. Önce bu resme bir göz atabiliriz:

Bu yarışmadaki her bir görüntü örneği 256 * 256 pikseldir ve her pikselin genişliği, yaklaşık 3,7 m olan zemin genişliğine karşılık gelir. O zaman her örneğin jpg ve tif olmak üzere iki formatı vardır. Tif'in normal RGB kanalından bir tane daha kızılötesi kanalı var gibi görünüyor, bu yararlı olabilir.

4 hava durumu kategorisi, 7 ortak genel kategori ve 6 nadir genel kategori dahil olmak üzere 17 veri etiketi kategorisi vardır.

Hava durumu kategorileri şunları içerir: Clear, Partly Couldy, Couldy, Haze. Couldy olduğu sürece, başka hiçbir kategori olmayacak (çünkü bulut tarafından kaplanıyor ve hiçbir şey görülemiyor).

Yaygın genel kategoriler şunlardır: Birincil Yağmur Ormanı, Su (Nehirler ve Göller), Yaşam Alanı, Tarım, Yol, Yetiştirme, Çıplak Zemin.

Nadir genel kategoriler şunları içerir: Kesme ve Yakma, Seçmeli Tomruklama, Çiçek Açma, Konvansiyonel Madencilik, "Artisinal" Madencilik, Blöf.

Genel kategori, nehirler, yollar, tarım arazileri, maden üsleri vb. Dahil olmak üzere ormanda görünen çeşitli manzaraları tanımlar.

Aşağıda, kategori bilgilerinin kırmızı yazı tipiyle işaretlendiği örneklerin bazı örnek resimleri verilmiştir:

Yetkili ayrıca, bu kategorilerin açıklamalarını ve ilgili haber raporlarını da ekledi. Kategorilerin açıklamaları, görevi anlamaya yardımcı olmak için en iyi şekilde okunur. Başlangıçta her kategorinin anlamını ve özelliklerini analiz ettik, ancak sonunda araştırdığımız çözüm, özel olarak farklı kategorileri ele almadı. Bunu söyledikten sonra, bir dahaki sefere yeni bir sorunla karşılaştığımızda, yine de onu analiz etmeye çalışacağız.

Teorik olarak, her resmin bir hava durumu sınıfı ve birkaç ortak sınıfı vardır, bu nedenle bu bir Çoklu Etiket problemidir. Bunlar arasında, nadir ortak sınıflar nispeten azdır ve yaklaşık 40.000 örnekteki bazı sınıflar 100'den bile azdır. Son gönderimde, yaklaşık 40.000'i Genel Liderlik Tablosunun puan hesaplaması için ve 20.000'i Özel Liderlik Tablosunun puan hesaplaması için kullanılan yaklaşık 60.000 örnek etiket içeren bir csv dosyası sunmamız gerekiyor.

Yetkili ayrıca verilerin kitle kaynak kullanımı platformunda açıklandığını, bu nedenle bazı yanlış etiketler içereceğini belirtti, çünkü bazı görüntüler kitle kaynaklı çalışanlar bir yana, kuruluşlarındaki uzmanlar için net değil, bu yüzden farkında olmalıyız Bu gürültülü bir veri kümesidir. Son oyun sonuçları da bunu doğruladı, çünkü en yüksek 63 puanın tümü% 93.0 ile% 93.3 arasında ve% 94'ü bile geçemezler. Buradaki puan ne anlama geliyor? Lütfen sonraki bölüme bakın.

1.3 Değerlendirme Endeksi (Değerlendirme)

Sorunun şeklini anladıktan sonra geri dönüp Genel Bakış'ın geri kalanını okuyabiliriz. Değerlendirme bize bu sefer değerlendirme indeksinin her örneğin F2 skorunun ortalama değeri olduğunu söyler.F2 skorunun tanımı aşağıdaki gibidir

p, kesinliktir (kesinliktir), yani tahmin ettiğimiz sınıfın oranının etikette göründüğü anlamına gelir; r, geri çağırmadır (geri çağırma), yani etikette görünen sınıfın oranının bizim tarafımızdan tahmin edildiği anlamına gelir. F2 skoru göreceli olarak geri çağırma oranını tercih eder, bu nedenle daha belirsiz olduğunda, biraz daha doğru tahmin etmek yerine biraz daha fazla tahmin yapmak daha iyi olabilir.

1.4 Ödül ve Zaman Çizelgesi

Bu yarışmada birincilik ödülü 30.000 ABD doları, ikincisi 20.000 ABD doları ve üçüncüsü 10.000 ABD dolarıdır. Zillow'un bir milyon doları kadar şaşırtıcı olmasa da, aynı zamanda çok fazla para.

Oyun 20 Nisan'da başladı ve 13 Temmuz katılım ve takım çalışması için son tarih oldu. Genel olarak konuşursak, birkaç küçük ortakla rekabet ediyor olsanız bile, takıma çok erken katılmak için acele etmeyin, çünkü her takımın günde yalnızca sabit sayıda gönderimi vardır. Eğer takıma katılmazsanız, herkes birden fazla gönderi fırsatı elde edebilir. , Bu, programın ilk keşfi için çok kullanışlıdır.

Buna ek olarak, 13 Temmuz aynı zamanda eğitim öncesi model bildirimleri için son tarih, çünkü görüntü yarışmaları genellikle ImageNet'te önceden eğitilmiş modeller kullanıyor.Adalet adına, herkes tartışma forumunda ilan etmek için yalnızca yapışkan bir gönderi kullanabilir. Oyuncunun kullandığı antrenman öncesi modeli antrenman öncesi modelde değilse, son teslim tarihinden önce postaya bilinçli olarak bir ifade eklemelisiniz, aksi takdirde hile olarak kabul edilecektir.

Maç 20 Temmuz saat 23:59 UTC'de sona erdi.Çin'de bizim için bu, Avrupa halkıyla son gün sabah 8'e kadar sprint yapmamız gerektiği anlamına geliyor.

2. İzler ve araçlar: Tartışma alanı (Tartışma) ve Çekirdek alanı

Tecrübeli bir keşif gezisi üyesi, seleflerinin bıraktığı bilgileri kullanmakta iyi olmalıdır. Ekibimizde sık sık tartışma panolarını kullanmada iyi, iyi mühendislik becerilerine sahip, zamanı ve enerjisi olan bir kişinin gümüş madalya alma olasılığının yüksek olması gerektiği söylenir. Tartışma alanı, bazı resmi duyurular ve diğer takımlardan bazı deneyim paylaşımlarını içerir.Kernel alanı, kamuya açık bazı kodlar içerir. Bunlar, katılan tüm ekipler tarafından paylaşılan bilgilerdir.Acemi ve geç gelecek bir ekip için, ondan yeterli bilgi almak iyi bir başlangıç sağlayabilir.

Ek olarak, genellikle gözden kaçan bir nokta, sona eren diğer benzer oyunların da bu oyun için pek çok yararlı bilgi içermesidir. Örneğin, bu yarışma, uydu görüntülerinin çok etiketli bir sınıflandırma yarışmasıdır.Daha sonra, diğer uydu görüntüsü yarışmalarının veya görüntü veya çok etiketli sınıflandırma yarışmalarının bilgileri bu yarışma için faydalı olacaktır.Bu yarışmaların tartışma alanları genellikle bizim için faydalı olacak çok sayıda mükemmel çözüm içerir. Tasarım planı yardımcı olacaktır.

Dikkat edilmesi gereken son şey, tartışma alanındaki yorumların mutlaka doğru olmamasıdır.Kernel alanındaki kodda da bazı hatalar olabilir.Örneğin, bu yarışmadaki bazı takımlar kod oluşturmak için hatalı bir gönderim kullandı ve hepsi sonunda sekiz veya dokuz yüz kaybetti. İsim, sahne çok kanlı.

Yarışma sırasında tartışma alanından edindiğimiz bazı faydalı bilgiler aşağıdaki gibidir:

  • Tif görüntü verisi RGB kanalına ek olarak kızılötesi kanalı da içerir.Bu bilginin etkiyi arttırmak için kullanılması mantıklıdır ancak tam tersine tartışma forumundaki kişiler bunu kullandıktan sonra daha da kötüleştiğini söylediler.Bunun nedeni bazı resimlerdeki kızılötesi olabilir. Kanal ve RGB kanalı kademeli. Bu yüzden oyunun sonunda, tif'in kızılötesi kanalını kullanmak için sadece biraz denedik ve çok fazla zaman kaybetmedik.

  • Diğer takımlar tarafından hangi ön eğitim modelleri kullanılabilir ve her modelin genel performansı Bu bize faydalı bir referans sağlar.Örneğin, nispeten küçük ölçekli bazı modelleri (ResNet18, ResNet34 gibi) denedikten sonra, bunları düşündük Model yeterlidir, model ne kadar büyük ve karmaşık olursa olsun, gereğinden fazla uygun olabilir, ancak tartışma alanından, büyük modelin hala bariz avantajlara sahip olduğunu görebiliriz, bu da bizi bu ağır ResNet152, DenseNet161, vs.'yi çalıştırmak için çok zaman harcamaya teşvik eder. Önceden eğitilmiş model.

  • Diğer benzer yarışmaların tartışma alanlarından, yüksek skorlu takımların genellikle özellikle karmaşık Ensemble yöntemini kullanmadıklarını veya hatta basit torbalama ve istifleme (aşağıda açıklanmıştır) kullanmadıklarını görebiliriz, bu nedenle bekarlar için daha fazla enerji harcıyoruz Modelin ayarlanması. Gerçekler, oyunun sonlarında bile yeni piyasaya sürülen bazı daha iyi tekli modellerin olduğunu kanıtladı, bu da Ensemble sonrası etkimizi hızlı bir şekilde yaparak Public Learderboard'da ilk üçe ve hatta bir numaraya koştu.

  • 3. Sefer başlar: çözüm planlama ve seçim

    Yukarıdaki hazırlıklar sizi bir ila iki gün sürebilir, ancak bıçağı keskinleştirir ve yanlışlıkla odun keserseniz, yolculuğumuza başlamak için neredeyse hazırız.

    3.1 BCE Loss eğitimi ve F2-Score eşiği ayarı

    Yukarıda bahsedildiği gibi, bu yarışmanın sorunu Çok Etiketli (çok etiketli) bir sınıflandırma problemidir. Değerlendirme endeksi F2 Skorudur, ancak F2 Skoru doğrudan optimize edilebilecek bir değer değildir, bu nedenle benimsediğimiz yöntem şudur:

  • Her çıktı Sigmoid katmanına bağlanır ve her sınıfın olasılığı İkili Çapraz Entropi Kaybı optimizasyonu kullanılarak ayrı ayrı tahmin edilir. Bu aslında çok etiketli sınıflandırma problemleri için ortak bir rutindir ve esas olan her sınıf için bağımsız olarak ikili sınıflandırma öğrenimi yapmaktır. Farklı sınıflar arasında karşılıklı bağımlılıklar olabilse de, bu bağımlılıkların temeldeki parametrelerin paylaşılmasıyla dolaylı olarak uygulanabileceğini varsayıyoruz.

  • Yukarıdaki iki sınıflandırma görevini eğitirken, pozitif ve negatif örneklerin sayısındaki dengesizlik nedeniyle, tahmin için iki sınıflandırmanın eşiği olarak doğrudan p = 0.5'i kullanamayız. Bunun yerine, genel F2-Skorunu yapmak için her sınıf için uygun bir eşik aramamız gerekir. maksimum. Spesifik olarak, her kategorinin eşiğinde açgözlülükle kaba kuvvet araması yapmak için tartışma forumunda yayınlanan bir planı kabul ettik. Mantık aşağıdaki gibidir:

  • Bu kesinlikle en uygun çözüm değil, ancak yeterince iyi. Hesaplamayı hızlandırmak için GPU'yu kullanmak için tartışma alanındaki kodu optimize etmemize ve rastgele başlangıç değeri, rastgele optimizasyon sıralaması ve ardından en iyinin rastgele seçimi, adım boyutu ayarlama, evrimsel hesaplama araması vb. Gibi yöntemleri denemiş olsak da, bunların hepsi gönderimlerin sayısı nedeniyle Kısıtlamanın test etmek için zamanı yoktu.

    Bununla birlikte, eğitim hedefi olarak BCE Kaybını kullanmamıza rağmen, aslında, BCE Kaybı daha düşük olur, ancak F2-Skoru daha yüksek olmayabilir.Modelin eşleştirilebilecek bazı örneklerin olasılığını öngördüğünü hayal edin. Daha meşgul olun, BCE Kaybı azalacak, ancak F2-Skoru hala aynı.

    Bu noktayı neden vurgulamalıyız? Bir takım arkadaşı Ensemble yöntemini keşfederken, BCE Kaybının iyi olmadığını görünce pes etti.Daha sonra, başka bir takım arkadaşı aynı Ensemble yöntemini yeniden uyguladı ve F2-Score'a baktı, ancak etkinin olağanüstü olduğunu gördü! Bu nedenle, son değerlendirme indeksine değil de sadece Kayıp'a bakarsanız, yanlış kararlar vermek ve faydalı çözümleri gözden kaçırmak kolaydır.Bu, diğer sorunlar için de geçerlidir.

    Buna ek olarak, tartışma forumundaki bazı kişiler de F2 Puanını doğrudan optimize etmek için bir yöntemden bahsetti.Kısıtlı süre nedeniyle denemek için zamanımız olmadı.

    3.2 Eğitim seti ve doğrulama setinin bölünmesi

    Başlangıçta, resmi eğitim verileri (Tren Verileri) bir eğitim setine (Tren Seti) ve bir doğrulama setine (Doğrulama Seti) veya K-Katlamalı Çapraz Doğrulama için K bölümlerine eşit olarak bölünmüştür. Önemli olan, rastgele bölünmenin sonuçlarının ekip içinde ve programlar arasında paylaşılması gerektiğidir. Aksi takdirde, bu modeli eğitmek için kullanılan K-katlama bölümü, model eğitimi için kullanılan K-katlama bölümünden farklıdır, Aralarındaki avantaj ve dezavantajları kesin olarak nasıl karşılaştırabiliriz? Ve bu aynı zamanda sonraki veri analizi ve modellerinin Topluluğuna (entegrasyonuna) hazırlanmak içindir.

    Bu sefer verileri doğrulama seti olarak bir katı ve diğer dört katı eğitim seti olarak kullanarak eşit olarak beş kısma (0-4 numaralı) böldük. Beş kombinasyon vardır. Daha sonra ilk planın araştırılması sırasında yalnızca bir kombinasyon kullanılır, örneğin doğrulama seti olarak 0. kat, eğitim seti olarak 1-4 kat kullanılır.

    Model belirlendikten sonra, tüm verileri eğitim için kullanmak istiyorsak, her biri bir modeli eğitmek için dört kat kullanan (aşağıdaki şekildeki dört gri bloğa karşılık gelen) ve kalan bir katlamayı doğrulama olarak kullanan beş kombinasyon kullanabiliriz. Set tahmini (aşağıdaki şekilde 5 mavi bloğa karşılık gelir), beş kombinasyonu geçtikten sonra, her bir katlama için doğrulama setinin tahmin sonuçlarını alabiliriz (aşağıdaki şekilde 5 mavi bloğa karşılık gelir), Çünkü bu doğrulama sonuçları, kendileri üzerinde eğitilmemiş modellerden tahmin edilmektedir. , Tüm eğitim setinin (aşağıdaki şekilde mavi uzun bloğa karşılık gelen) doğrulama sonuçlarını içeren beş doğrulama kıvrımının sonucunu birlikte kat dışı olarak adlandırıyoruz. Kat dışı eşik ayarlamasıyla elde edilen F2 Skoru, modelin yeteneğini daha iyi temsil edebilir ve modelin genelleme performansını gerçekten yansıtabilir. Birden fazla modelin kat dışı da şu şekilde kullanılabilir: Entegre öğrenmenin ikinci aşamasının girdisi.

    Yukarıdaki 5 kombinasyon üzerinde 5 eğitim yaptık.Test sırasında 5 modelimiz var.Her model test setini bir kez tahmin ettikten sonra 5 olasılık matrisi elde ediyoruz.Her olasılık matrisinin şekli (test seti Örnek sayısı x 17). Doğrudan beş olasılık matrisinin ortalamasını alabilir ve iki sınıflı tahminler yapabiliriz veya iki sınıflı tahminleri ayrı ayrı yapabilir ve ardından nihai çok sınıflı tahmin sonuçlarını elde etmek için oy kullanabiliriz. Bu sonuç aslında daha doğru ve daha kararlı olacak olan tüm 5 kat eğitim verilerini kullanır.

    Tabii ki, sadece tüm verileri kullanmak istiyorsanız, daha kolay yol, tüm eğitim setini bu modelle çalıştırmak ve ardından test setinde tahminler yapmak için eğitimli modeli kullanmaktır. Ancak bu ikinci yöntemi benimsemedik. İlk olarak, tüm eğitim örnekleri model tarafından "görüldü". Ek doğrulama setleri olmadan genelleme performansını değerlendirmek zor; ikincisi, birinci yöntemde, 5 modelin tahmin sonuçları, daha kararlı olacak basit bir Ensemble haline getirildi.

    Kat sayısı arttıkça, eğitim ve doğrulama için daha fazla bilgi işlem gücü ve zaman gerekir.Soruna ve kendi bilgi işlem gücünüze bağlı olarak bir değiş tokuş yapmak en iyisidir.

    3.3 Derin öğrenme veya geleneksel yöntemler

    İnceleme yoluyla, Kaggle imaj yarışmasının artık temelde derin öğrenme yöntemlerinin hakim olduğunu görebiliriz. Bazı detaylarda hala geleneksel yöntemlere yer olmasına rağmen, CNN (Convolutional Neural Network) hala ana yapıdır.

    3.4 Çerçeve Seçimi ve Model Hayvanat Bahçesi

    Daha önce ağırlıklı olarak TensorFlow kullanmış olsam da, PyTorch tarafından sağlanan Model Hayvanat Bahçesi'nin kullanımı çok uygun, kod nispeten hafif ve takımdaki kişi sayısı daha fazla olacak, bu yüzden sonunda PyTorch'u bu rekabet için ana çerçeve olarak benimsedik - ekip hariç İçeride belli bir sapkınlıkla, kendisi için verimli bir DataLoader yazmak için TensorFlow'u kullandı.

    PyTorch'un Model Hayvanat Bahçesi, AlexNet, VGG, Inception v3, SqueezeNet, ResNet, DenseNet ve diğer mimariler için önceden eğitilmiş model parametreleri sağlar. Hala bu modellerin yeterli olmadığını düşündük, bu yüzden Inception v4 ve Inception Res v2'yi (Tensorflow-Model-Zoo.torch | GitHub) TensorFlow'dan geçirdik. Yazık ki, bu iki model muhtemelen "normal kanallardan" geçmediği için, "kaçakçılıktan" geldiler, muhtemelen bir şeyler ters gitti ... Kısacası, eğitim sonuçları karmakarışıktı ve kararlı bir şekilde pes ettiler. Burada herkesi gerçekleri desteklemeye çağırıyoruz.

    PyTorch belgesi, ImageNet'teki farklı modellerin İlk 1 ve İlk 5 hata oranlarını sağlar. Bu modellerin yeteneklerini kabaca görebilirsiniz, ancak bu, oyundaki performanslarıyla olumlu bir şekilde ilişkili olmasa da.

    Yarışmamızda ResNet en iyi performansı gösterdi ve DenseNet bunu yakından takip etti. Bu tesadüf değil. Göz alıcı bir ortak noktaları var, yani ResNet'in iki yönlü üst üste binme kullandığı ve Densenet'in çok yollu ekleme olduğu alttan üste Skip-Connection var. Neden önemlidir? Birincisinin, Skip-Connection'ın aşırı uydurmayı önlemek için modelin karmaşıklığını uyarlamalı olarak ayarlayabileceğine ve ikincisinin 17 sınıf tarafından kullanılan görüntü özelliği seviyelerinin farklı olmasından kaynaklandığına inanıyoruz. Örneğin, Cloudy altta yatan doku özelliklerine karşı daha önyargılı ve Su ve Yol daha fazla Üst düzey semantiğe doğru eğilir ve Skip-Connection, düzinelerce ağ katmanının dönüşümüne dalmadan düşük düzeyli özellikleri daha yüksek bir düzeye çıkarmaya yardımcı olur.

    Daha zayıf olanlar VGG ve Inception v3 ve en zayıfları SqueezeNet ve AlexNet'tir. TensorFlow'dan Inception v4 ve Inception Res v2'ye geçiş temelde bir araya gelmiyor, yine herkesi orijinali desteklemeye çağırıyorum.

    3.5 Ön eğitim veya rastgele başlatma

    ResNet-18'in hafif modeli üzerinde eğitim için ilk olarak eğitim öncesi parametreleri (Önceden eğitilmiş) ve rastgele başlatma parametrelerini (Sıfırdan) denedik ve rastgele başlatılan modelin yakınsama hızının önceden eğitilmiş modelden daha yavaş olduğunu bulduk. Yaklaşık on kat, nihai yakınsama sonucu da daha kötüdür. Bazı ekip arkadaşları da bazı ağ mimarilerini kendileri tasarlamaya çalıştı, ancak sonuçlar önceden eğitilmiş modellerden çok daha düşüktü.

    Bu deney dalgasını yaptıktan sonra, Model Hayvanat Bahçesi'ni çalıştırmanın bu yarışma için ana yöntem olacağından muhtemelen eminiz. Ağ yapısını kendimiz tasarlamak kadar heyecan verici gelmiyor ama üzerinde bazı sihirli değişiklikler de yapabiliriz Büyülü değişikliklerden sonra, beklenmedik iyileştirmeler de yaptık.Ayrıntılar için bir sonraki bölüme bakın.

    3.6 Ön eğitim modelinin kullanımı ve değiştirilmesi

    Önceden eğitilmiş modelleri kullanırken dikkat edin.PyTorch belgeleri, bu modellerin 224x224 görüntü üzerinde önceden eğitildiğini ve görüntülerin normalleştirilmesi ve belirli bir ortalama değer çıkarılması, belirli bir varyansa bölünmesi ve ardından Modeli girin. Modelin önceden eğitilmiş bilgileri en iyi şekilde kullanmasını istiyorsanız, giriş resimlerimiz için de aynısını yapmalısınız.

    Bununla birlikte, modelin girdi gereksinimi 224x224 olmasına rağmen, bazı modeller (ResNet, DenseNet gibi) evrişimli katmanın sonunda Global Ortalama Havuzlamaya bağlanacak ve her kanalın Özellik Haritasının ortalaması alınacak, böylece giriş görüntü boyutu ne kadar büyük olursa olsun, Global Ortalama Havuzlamadan sonra, Özellik Haritasının boyutu 1x1 olacaktır, bu nedenle doğrudan teoride kullanılabilir.

    Bununla birlikte, PyTorch eğitim öncesi model evrişimli katmanının gerçek bir Global Ortalama Havuzlama değil, 7x7 sabit boyutlu Ortalama Havuzlama kullanması burada bir tuzak vardır. Diğer boyutların haritalarını girmek için, bu katmanı AdaptiveAvgPool ile değiştirmeli ve çıktı boyutunu 1 olarak ayarlamalıyız, böylece önceki katmanın özellik haritasının boyutu ne olursa olsun, sonuç boyutu 1x1 olacaktır.

    Tabii ki, 1x1'in aynı anda çok küçük olması ve çok fazla bilginin kaybolması mümkündür, bu nedenle AdaptiveAvgPool çıktı boyutunu 2 veya 3 olarak ayarlayabiliriz, böylece çıktı boyutunu 2x2 ve 3x3 yapabiliriz, bu da daha fazlasını tutma avantajına sahiptir. Bilgi. Bunu eşleştirmek için, arkadaki tam olarak bağlı katmanın tamamının boyutunun değiştirilmesi gerekir. Daha sonra bu değişikliği Densenet ve ResNet'te denedik ve iyi sonuçlar elde ettik.

    Yukarıdakiler ResNet ve DenseNet içindir ve VGG gibi modeller için, Özellik Haritası doğrudan Düzleştirilir (düzleştirilir) ve ardından tamamen bağlanır.Aşağıdaki önceden eğitilmiş, tam bağlantılı katman bilgilerini kullanmak istiyorsak, yalnızca Giriş resmi 224x224 olarak ölçeklendirilmiştir.

    Havuzlama çıktı boyutunu değiştirmenin yanı sıra, başarıyla denenen başka bir sihirli değişiklik de tamamen bağlı katmanla ilgilidir. ImageNet modelinin son katmanı 1000 türdür ve ihtiyacımız olan şey 17 tür çıktıdır.Geçmişte yaygın uygulama, son tam bağlı katmanı 17 çıkış boyutuna sahip yeni bir tam bağlı katmanla değiştirmek ve ardından yeniden başlatmaktı. Parametreler.

    Bununla birlikte, iki takım arkadaşımız tembel oldukları için daha iyi bir yol buldular; bu, önceden eğitilmiş modelin 1000 boyutlu çıktısının hemen ardından 1000x17 tam bağlı bir katmanı doğrudan bağlamaktır. İyi çalışmasının sebebinin, tamamen bağlı katmanın eğitim öncesi bilgilerinin ek olarak saklanması olduğunu tahmin ediyoruz.

    Ek olarak, bazı takım arkadaşları bu oyundaki resimlerin çoğunun önceden eğitilmiş model tarafından çimen gibi ImageNet kategorileri olarak tanınabileceğinden endişe ediyorlar, bu nedenle temelde 1000 boyuttan sadece birkaçını etkinleştirebilir ki bu çok seyrek olacaktır.Bu aslında doğru olmalı. Olumsuz eğitim. Bu şüpheye yanıt olarak, eğitim öncesi modele çok sayıda oyun resmi girdik ve bunların 1000 kategoride tahmin edilen olasılık değerlerinin seyrek olmadığını, dolayısıyla sorun olmaması gerektiğini gördük. Bununla birlikte, bu yeni yaklaşım sadece bu yarışma görevi için etkili olabilir.Diğer görevler için, ilk önce tamamen bağlı olan son katmanı değiştirmeyi denemeniz veya tümünün rastgele başlatılması önerilir, çünkü genel olarak konuşursak, son katman aktarılabilir. Daha beter.

    Tamamen bağlı katmana Batchnorm ve Dropout'un nasıl ekleneceğine gelince, bu kişisel seçime bağlıdır.Bu görevin önemli bir etkisi olmadığını ve çoğu modelin bunları daha sonra eklemediğini gördük.

    Veri bölümünü incelediğimizde, dört hava durumu kategorisinden yalnızca birinin olacağını bilebiliriz, bu da bize bu dört kategoriyi Sigmoid katmanı yerine bir Softmax katmanını bağlamak için ayrı ayrı kullanmayı düşündürür, böylece dört kategori Olasılıkların toplamı 1'dir ve tahmin yapılırken yalnızca en yüksek olasılığa sahip hava kategorisi tahmin edilir. Ancak bunun gerçek etkisi iyi değil çünkü yukarıda bu yarışmanın değerlendirme endeksinin F2-Score olduğunu belirtmiştik ve doğruluk oranı yerine daha yüksek bir hatırlama oranına sahip olmayı umuyoruz. En yüksek iki hava durumu kategorisi çok yakınsa, o zaman Bunların birlikte pozitif olacağı tahmin ediliyor, bunlardan biri kesinlikle yanlış tahmin etse de, genellikle iyi bir anlaşma olan daha yüksek bir F2-Skoru elde etmek mümkün olabilir.

    3.7 Öğrenme Hızı ve Toplu İş Boyutu

    Modelin eğitimi ile ilgili olarak, Adam'ı optimize edici olarak kullanıyoruz, çünkü öğrenme hızına belirli bir düzeyde uyarlanabilir ince ayar, hızlı yakınsama ve bazı küçük sınıf güncellemelerine uygun. 1e-2, 1e-3, 1e-4, 1e-5 ve çeşitli aralıkları denedikten sonra, kabaca 1e-4'ün iyi bir başlangıç öğrenme oranı olduğunu belirledik. Daha sonra, farklı modeller için başlangıç öğrenme oranını ayarlayacağız. Esas olarak Parti Boyutundaki orantısal değişiklik nedeniyle, bu değeri 2, 4 kat ile çarpmak veya 2, 4 katına bölmektir.

    Parti Boyutumuz, GPU'nun kurulup kurulamayacağına bağlı olarak 32 ile 128 arasındadır. Bazen bazı deneyler için Parti Boyutunu 32'ye düşürürüz.

    3.8 Veri Büyütme

    Görüntü rekabetinin en önemli noktalarından biri veri geliştirmedir Neden veri geliştirme yapıyoruz?

    Eğitim modelimiz, orijinal numunenin dağılımına uymak içindir, ancak eğitim setinin örnek sayısı ve çeşitliliği, gerçek dağıtımı iyi temsil etmiyorsa, eğitim setine fazla uyma eğilimindedir. Veri geliştirme, insan önceliklerini kullanır ve aşırı uyumu azaltmak için önemli bir yöntem olan orijinal numune dağıtımına yeni numune noktaları eklemeye çalışır.

    Veri geliştirme için numune noktalarının orijinal dağılımındaki değişiklik aralığını genişletmemek en iyisi olduğuna dikkat etmek önemlidir.Örneğin, eğitim setinin ve test setinin aydınlatma dağılımı çok tekdüzedir ve aydınlatma değişikliğinin veri iyileştirmesi gerekli değildir, çünkü bu sadece yeni uydurmayı artıracaktır Eğitim setinin zorluğu, test setinin genelleme performansını nispeten az geliştirmektedir. Ek olarak, yeni eklenen örnek noktalarının orijinal örnek noktalarından oldukça farklı olması daha iyidir.Yeni bir örnek olduğunu söylemek için birkaç pikseli değiştiremezsiniz.Bu değişiklik temelde çoğu model için ihmal edilebilir.

    Bazı yaygın görüntü verisi geliştirme yöntemleri şunlardır:

    • Parlaklık, doygunluk ve kontrastta rastgele değişiklikler

    • Rastgele Kırpma

    • Rastgele Yeniden Boyutlandırma

    • Yatay / Dikey Filp

    • Rotasyon

    • Bulanıklaştırma (Bulanıklaştırma)

    • Gauss Gürültüsü

    Bu uydu görüntüsü tanıma görevi için, en iyi veri geliştirme yöntemi nedir? Açıkça döndürün ve çevirin. Spesifik olarak, iki temsil elde etmek için önce bu veri kümesinin bir resmini yatay olarak çeviririz ve ardından bir resmin sekiz temsilini elde etmek için 0 derece, 90 derece, 180 derece ve 270 derece döndürme ile işbirliği yaparız. İnsan perspektifinden bakıldığında yeni resim ve orijinal resim aynı dağılıma aittir ve etiket hiçbir şekilde değişmemelidir.Evrişimli bir sinir ağı için 8 farklı resimdir. Örneğin, aşağıdaki resim belirli bir resmin sekiz yönünü göstermektedir: Bunlara bakarak hangi resmin orijinal resim olduğuna karar veremiyoruz, ama tabii ki aynı etikete sahipler.

    Diğer veri geliştirme yöntemlerinin kullanımı o kadar kolay değildir. Birkaç analiz seçelim:

    • Parlaklık, doygunluk ve kontrast rastgele değişir: Bu oyunun veri setinde, hakem resimlerin nispeten iyi bir şekilde ön işlemesini gerçekleştirmiştir ve parlaklık, doygunluk ve kontrast dalgalanmaları nispeten küçüktür, bu nedenle bu özelliklerdeki verileri geliştirecek hiçbir şey yoktur. yarar.

    • Rastgele yakınlaştırma: Genel Bakış ve Veriler bölümlerinde gördüğümüz bilgileri hatırlıyor musunuz? Bu resimlerdeki bir piksel yaklaşık 3,7 metre genişliğindedir ve çok fazla dalgalanmamalıdır, bu nedenle rasgele ölçeklemenin hemen iyileştirme etkisi olmayacaktır.

    • Rastgele kırpma: Bazı resimlerin, yan taraftaki küçük bir bulut nedeniyle kısmen bulutlu olarak etiketlendiğini gözlemledik. Bulut rastgele kırpılırsa, kesilebilir, ancak etiket hala kısmen bulutludur, bu da açıkça bir hataya neden olur Örnekleri etiketlemek zararlıdır ancak yararlı değildir. Aynı örnek, rastgele kırpma yönteminin bu görev için uygun olmadığını belirten başka kategorilerde de görüldü.

    Bu işlemler yapıldıktan sonra, yeni görüntü orijinal örneğin dağıtımını genişletecektir, bu nedenle bu veri geliştirmelerinin önceliği çevirme ve döndürme önceliğine sahip olmayacaktır. Nihai çözümde sadece döndürme ve çevirme kullandık. Diğer veri geliştirmelerinin tamamen etkisiz olduğu anlamına gelmez, ancak getirdikleri faydalar, döndürme ve çevirme ile karşılaştırıldığında o kadar doğrudan değildir.

    3.9 Geliştirilmiş veri seti ve eğitim yineleme sayısı

    Genel uygulamaya göre, veri geliştirme süreci, tüm eğitim setini bir Epoch one Epoch eğitmektir ve her seferinde girdi örnekleri üzerinde rastgele veri geliştirme yapılır.Bu aynı zamanda bu yarışmadaki çoğu takımın uygulamasıdır.

    Bununla birlikte, bir modeli eğitmek için gereken süreyi önemli ölçüde azaltan ve ilk program yinelememizin hızını artıran farklı bir yaklaşım benimsedik. Öncelikle şu iki noktaya dikkat ediyoruz:

    • 90 derecenin çoğunun dönüşü ve çevrilmesi, sekiz durumun tümünde kolayca geçebilir, bu nedenle örnek boyutu yalnızca sekiz kat genişletilir; tersine, aydınlatma, doygunluk ve kontrast gibi sürekli veri geliştirme, örnekleri önceden tahmin etmeyi zorlaştırır Miktarın katlara çıkarılması mantıklıdır, bu nedenle eğitim sürecinde sürekli ve rastgele bir şekilde artırılmalıdır.

    • Model, ikinci veya üçüncü kez iyi öğrenmiş bir örnek görürse, örneğe aşırı sığabilir ve doğrulama setinin Kaybı artırmasına neden olabilir.

    Bu yüzden örnekleri sekiz yönde önceden oluşturduk, eğitim setini sekiz kez genişlettik ve rastgele karıştırdık ve sonra bu örnekler yalnızca bir kez eğitildi ve sonra durduruldu, bu da yalnızca bir Epoch çalıştırmaya eşdeğerdir (tabii ki burada bir Epoch'un süresi eşittir Başlangıçta sekiz Epoch). Bunu yaptıktan sonra her numunenin 8 yönünün model tarafından sadece bir kez görülmesi ve modele fazla uyum şansı verilmemesi sağlanmış ve bu da çok zaman kazandırmaktadır. Normal rastgele geliştirme yöntemini izlerseniz, 8 yönü de rastgele hale getirmeden önce uzun bir süre beklemeniz gerekebilir. Bundan önce, model aynı numunenin aynı yönünü birçok kez görecek ve bu da zaman kaybına ve artmasına neden olacaktır. Aşırı uyum riski.

    Genişletilmiş geliştirilmiş eğitim setinde eğitim için Adam optimizer'ı kullanarak, tüm geliştirilmiş eğitim setinden sonra modelin optimal seviyeye yakın bir seviyeye yakınlaştığını ve ardından eğitime devam ettiğini ve doğrulama setinin ters yönde yakınsamaya veya artmaya başlayacağını gözlemliyoruz. Ayrıca, "yalnızca bir kez tarama" fikrimizin kabaca doğru olduğunu da destekler. Ancak, bazı takım arkadaşları hala yalnızca taramadan memnun değiller, bu nedenle aşağıdaki iyileştirmeler var.

    3.10 Öğrenme oranını 50 kat azaltın ve eğitim setini tekrar deneyin

    Kayıp birleştiğinde, eğitime devam etmek için öğrenme oranını düşürmek, derin öğrenme için yaygın bir püf noktasıdır. Yukarıda yaptığımız gibi eğitim setinden geçmek, bazı örneklerin ancak modelin erken aşamada hala çok kararsız olduğu ve iyi öğrenilemediği durumlarda görülmesine neden olacaktır. Bu yüzden eğitim setini tekrar geçmek için öğrenme oranını düşürmeyi de düşündük. İlk başta, öğrenme oranını 10 kat düşürmek olan yaygın uygulamayı denedik, ancak yine de çok hızlı bir şekilde aşırı sığacağını gördük, bu yüzden pes ettik. Daha sonrasına kadar, ekibimizdeki bir kişi öğrenme oranını 50 veya 100 kat azaltmaya çalıştı, böylece model ikinci eğitim setini geçtiğinde, daha önce öğrenilmemiş örnekleri görmek için ikinci bir şans vardı ve bu böyle olmayacaktı çünkü İyi öğrenilmiş örnekler üzerinde aşırı eğitim, etkiyi biraz iyileştiren aşırı uydurmaya neden olur.

    O andan itibaren oyunun sonuna kadar, eğitim setini bir kez geçmek için başlangıç öğrenme oranını kullanmak ve daha sonra ikinci kez eğitmek için öğrenme oranını 50 kat azaltmak olan bu yöntemi kullandık, toplam eğitim süresi orijinal 2 x 8 = 16'ya eşittir. Epoch, aksine tartışma forumunda, diğer ekiplerin geleneksel veri geliştirme yöntemlerini benimsediğini ve 20 veya 30 Epoch çalıştırmaları gerektiğini görüyoruz. Dolayısıyla bu yöntem, model yineleme ve program doğrulama süresinden büyük ölçüde tasarruf sağlar.

    Bu yüzden bazen yöntem işe yaramadığı için değil, ancak yeterince çalışmıyorsun.

    3.11 Test Süresi Arttırma (TTA / Test Süresi Arttırma)

    Yukarıda eğitim sırasında veri artırmanın nasıl kullanılacağından bahsetmiştik, ancak test zamanı veri artırma (TTA) da tahmin etkisini büyük ölçüde artırabilir. Spesifik yöntem de nispeten basittir.Sekiz tahmin edilen olasılığı elde etmek için bir numunenin sekiz yönünün tamamını tahmin edebilir ve ardından sekiz olasılığın doğrudan ortalamasını alabilir veya nihai sonucu elde etmek için tahmin edilen sınıf etiketi oylamasını kullanabiliriz. Birkaç test turundan sonra, ortalama bir plan belirledik çünkü etkisi daha iyi.

    3.12 Test Veri Kümesinin F2 Puanı Eşik Araması

    Test setimizin F2 eşiği araştırılır ve kat dışı doğrulama tahmin sonuçlarında seçilir. Doğrulama seti için, sonuçları her numune için sekiz yönde tahmin ediyor ve ardından bunları 320.000 numuneden oluşan bir doğrulama setine ekliyoruz. Bu sette arama yaparak elde edilen eşik değerinin, sekiz yönün tahmin sonuçlarının ortalamasının 40.000 örnek olduğu doğrulama setinde arama yapılarak elde edilen eşik değerinden daha iyi genelleme performansına sahip olduğunu gözlemledik.

    Genel olarak, bir eşik ararken kullanılan örnek sayısı ne kadar fazla olursa, bu eşiğin genelleme performansının o kadar iyi olacağını gözlemledik Küçük numuneler için, bu eşiğin fazla uydurulması kolaydır. Yalnızca bir örnek olduğunda, F2 Puanını 1.0 yapmak için bir eşik kümesini kolayca bulabileceğimizi hayal edin.

    Eşiği ayarlamanın başka bir yolu, kat dışı doğrulama ayarında tahmin edilen sınıf sayısının etiketlerinin sayısıyla aynı olmasını sağlamaktır. Bu yaklaşımı denemedik çünkü tahmin ettiğimiz her sınıfın oranları etiketteki oranlara çok yakındı.

    3.13 Sonuçların saklanması, kaydedilmesi ve analizi

    Bu noktada kabaca tek model için eğitim sürecimizi tanıttım Ensemble'ı (model entegrasyonu) tanıtmaya başlamadan önce yine de sonuç saklama, kayıt ve analizin önemini tanıtmak ve vurgulamak istiyorum.

    Sonuçların depolanması, kaydedilmesi ve analizi, acemilerin kolayca görmezden gelebileceği bir bağlantıdır.Başlangıçta buna dikkat etmezseniz, daha fazla model olduğunda kafanız karışacaktır.

    Aşağıdakiler yarışmamızda kaydedilen değerlerdir:

    • Model hiperparametreleri: eğitim öncesi model türü, model değişiklikleri, girdi görüntü boyutu, veri geliştirme türü, parti boyutu, öğrenme hızı, yineleme sayısı, vb .;

    • Değerlendirme sonuçları: K-kat, her katın Kaybını, her katın ortalamasını ve varyansını, tüm kat dışının Kaybı ve F2 skorunu, tamamlanan TTA'nın F2 skorunu, Genel Liderlik Tablosunun F2 skorunu, vb.

    out-of-foldF2-ScorePublic LeaderboarrdF2-ScoreF2-Scoreout-of-fold F2-Score F2-ScorePublic Leaderboard

    submission

    3.14 EnsembleAverage BaggingBagging Ensemble selectionAttention Stacking

    Ensemble EnsembleKaggle Top 1%(Ensemble)

  • Average Bagging

  • Bagging Ensemble Selection

  • StackingStackingLogistic RegressionRrige RegressionAttention Stacking

  • Ensemble x 1717

    Ensemble

  • Average Bagging

  • Bagging Ensemble SelectionSelection

  • Stacking

  • Logistic RegressionRigde Regression

    Biz ona diyoruz Attention Stacking Softmax1AttentionAttention Stacking

    StackingStackingF2-Scoreearly stopping

    • out-of-foldout-of-fold

    • out-of-foldAttention Stacking1Attention Stacking

    4.

    Quora Question PairsKaggleKaggle Top 1%KagglePlanet: Understanding the Amazon from SpaceQuora Question Pairs

    4.1

    Public LB

    Ensemble

    BaggingPublic LBPublic LB

    0.933960.93421Public LB

    4.2

    KyleIDPrivate LB

    ZFTurboGrandMasterKaggleStanislav SemenovTeam NamePublic LBRussian BearsChinese Panda / Chinse Dragon / Make China Great AgainPrivate LBZFTurboTricktrickZFTurbo

    team-amazon-forestHeng CherKeng

    UrucuKaggleGilberto Titericz JuniorPublic LBPrivate LB

    Clear Sky

    bestfittingbest fittingPublic LBPrivate LBbest fitting

    4.3

    EnsembleEnsemble

    5SubmissionEnsemblePublic LBSubmission12

    Russian Bears0.933200.933480.93348

    Ensemble0.93348git commitEnsemble

    git logensemble570.93449Public LB64Ensemble

    SubmissionRussian BearsSubmissionSubmission

    Urucu0.93444Public LB 0.93440+

    8Private LBSubmissionPublic LB0.934300.934500.0002Private LBSubmission0.0015BreakfastPirateTop 10%Public LBPrivate LBKaggle

    Submission

    • Public LB Score Private LB Score

    • EnsembleSubmissionKaggleSubmissionPrivate LBSubmission

    Ensemble3ResNet50ResNet101ResNet152

    6F2-Score0.93322Private LBbestfittingSubmission 0.93318Submission4Submission2

    Public LBPrivate LB0.001

    Private LBbestfittingPublic LBPrivate LBShake upF2-Score0.001-0.0025Public LB0.0005-0.001

    Data

    bestfittingSubmissionPublic LBSubmissionSubmission

    5.

    6CISSYSU CISLab

    @LossF2-ScoreEnsembleEnsembleAttention StackingF2-Score

    @ChingKitWongKBagging Ensemble SelectionAttention StackingF2-Score

    @ 50F2-ScoreGPUEnsembleF2-Scoreearly stoppingAttention StackingF2-Score

    @Rigde RegressionStacking

    @LeaderboardF2-Score

    @ResnetDenseNetPoolingAmazon

    8 Aralık'ta sergilenen "Padington Bear 2" Çin sınırlı sayıda posterleri "ısıtmaya açılacak"
    önceki
    Erkek tanrı Yılbaşı günü bir sürpriz yapıyor Parıldayan gülüşünün sırrını bilmek ister misiniz?
    Sonraki
    Bekar köpekleri kötüye kullanmayın, lütfen Yeni Yıl Arifesinde şefkat göstermenin yolunu doğru şekilde başlatın
    Yaşlılar sokakta domuz eti satar ve vatandaşlara sosis doldurmayı öğretir: emekle para kazanın ve asla "utangaç" hissetmeyin
    Yabancı basında 2018'in en popüler 20 cep telefonu hakkında yorum yapıldı. Bunlardan ilki aslında Redmi Note 5 Pro.
    Tanınmış araba modeli oyun markası Hot Wheels, "Mario Racing" temalı oyuncakları piyasaya sürecek
    Üç boyutlu tarama müzesi, merakınızı köşede tatmin edin
    "Breaking Bad" in 10. yıl dönümünü kutlarken, Lao Bai Xiaofen ile "zehirli pirinç" pişirme fırsatınız var.
    Sıcak su, titreyene kadar yıkanamayacak kadar kısa mı? Bu işe yaramaz gazlı su ısıtıcısı
    Hengshan County, şehir medeniyetinin "penceresini" parlatmak için Batı Yüksek Hızlı Tren İstasyonunda yolcu taşımacılığı düzenini düzeltme konusunda uzmanlaşmıştır.
    Paylaş | Laser SLAM Vs Visual SLAM
    "Ali babası" dağılmak üzere, 40 milyar dolarlık Ali hissesi nereye akacak? | Titanyum Medya Derinliği
    Derinlik | Devlerin peşinde olduğu göz izleme teknolojisi ne olabilir?
    "Şeytan Kedi Efsanesi" posterin "Bayram Açılışı" versiyonunu ortaya koyuyor, Tang Hanedanlığının serbest el çizimini sergilemek için sekiz figür bir araya geliyor
    To Top